{
  "id": "95eaf25e08713140b2de04060722e630",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.17",
  "solcLongVersion": "0.8.17+commit.8df45f5f",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/dnsregistrar/DNSClaimChecker.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport \"../dnssec-oracle/DNSSEC.sol\";\nimport \"../dnssec-oracle/BytesUtils.sol\";\nimport \"../dnssec-oracle/RRUtils.sol\";\nimport \"@ensdomains/buffer/contracts/Buffer.sol\";\n\nlibrary DNSClaimChecker {\n    using BytesUtils for bytes;\n    using RRUtils for *;\n    using Buffer for Buffer.buffer;\n\n    uint16 constant CLASS_INET = 1;\n    uint16 constant TYPE_TXT = 16;\n\n    function getOwnerAddress(bytes memory name, bytes memory data)\n        internal\n        pure\n        returns (address, bool)\n    {\n        // Add \"_ens.\" to the front of the name.\n        Buffer.buffer memory buf;\n        buf.init(name.length + 5);\n        buf.append(\"\\x04_ens\");\n        buf.append(name);\n\n        for (\n            RRUtils.RRIterator memory iter = data.iterateRRs(0);\n            !iter.done();\n            iter.next()\n        ) {\n            bool found;\n            address addr;\n            (addr, found) = parseRR(data, iter.rdataOffset);\n            if (found) {\n                return (addr, true);\n            }\n        }\n\n        return (address(0x0), false);\n    }\n\n    function parseRR(bytes memory rdata, uint256 idx)\n        internal\n        pure\n        returns (address, bool)\n    {\n        while (idx < rdata.length) {\n            uint256 len = rdata.readUint8(idx);\n            idx += 1;\n\n            bool found;\n            address addr;\n            (addr, found) = parseString(rdata, idx, len);\n\n            if (found) return (addr, true);\n            idx += len;\n        }\n\n        return (address(0x0), false);\n    }\n\n    function parseString(\n        bytes memory str,\n        uint256 idx,\n        uint256 len\n    ) internal pure returns (address, bool) {\n        // TODO: More robust parsing that handles whitespace and multiple key/value pairs\n        if (str.readUint32(idx) != 0x613d3078) return (address(0x0), false); // 0x613d3078 == 'a=0x'\n        if (len < 44) return (address(0x0), false);\n        return hexToAddress(str, idx + 4);\n    }\n\n    function hexToAddress(bytes memory str, uint256 idx)\n        internal\n        pure\n        returns (address, bool)\n    {\n        if (str.length - idx < 40) return (address(0x0), false);\n        uint256 ret = 0;\n        for (uint256 i = idx; i < idx + 40; i++) {\n            ret <<= 4;\n            uint256 x = str.readUint8(i);\n            if (x >= 48 && x < 58) {\n                ret |= x - 48;\n            } else if (x >= 65 && x < 71) {\n                ret |= x - 55;\n            } else if (x >= 97 && x < 103) {\n                ret |= x - 87;\n            } else {\n                return (address(0x0), false);\n            }\n        }\n        return (address(uint160(ret)), true);\n    }\n}\n"
      },
      "contracts/dnssec-oracle/DNSSEC.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\npragma experimental ABIEncoderV2;\n\nabstract contract DNSSEC {\n    bytes public anchors;\n\n    struct RRSetWithSignature {\n        bytes rrset;\n        bytes sig;\n    }\n\n    event AlgorithmUpdated(uint8 id, address addr);\n    event DigestUpdated(uint8 id, address addr);\n\n    function verifyRRSet(RRSetWithSignature[] memory input)\n        external\n        view\n        virtual\n        returns (bytes memory rrs, uint32 inception);\n\n    function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\n        public\n        view\n        virtual\n        returns (bytes memory rrs, uint32 inception);\n}\n"
      },
      "contracts/dnssec-oracle/BytesUtils.sol": {
        "content": "pragma solidity ^0.8.4;\n\nlibrary BytesUtils {\n    /*\n     * @dev Returns the keccak-256 hash of a byte range.\n     * @param self The byte string to hash.\n     * @param offset The position to start hashing at.\n     * @param len The number of bytes to hash.\n     * @return The hash of the byte range.\n     */\n    function keccak(\n        bytes memory self,\n        uint256 offset,\n        uint256 len\n    ) internal pure returns (bytes32 ret) {\n        require(offset + len <= self.length);\n        assembly {\n            ret := keccak256(add(add(self, 32), offset), len)\n        }\n    }\n\n    /*\n     * @dev Returns a positive number if `other` comes lexicographically after\n     *      `self`, a negative number if it comes before, or zero if the\n     *      contents of the two bytes are equal.\n     * @param self The first bytes to compare.\n     * @param other The second bytes to compare.\n     * @return The result of the comparison.\n     */\n    function compare(bytes memory self, bytes memory other)\n        internal\n        pure\n        returns (int256)\n    {\n        return compare(self, 0, self.length, other, 0, other.length);\n    }\n\n    /*\n     * @dev Returns a positive number if `other` comes lexicographically after\n     *      `self`, a negative number if it comes before, or zero if the\n     *      contents of the two bytes are equal. Comparison is done per-rune,\n     *      on unicode codepoints.\n     * @param self The first bytes to compare.\n     * @param offset The offset of self.\n     * @param len    The length of self.\n     * @param other The second bytes to compare.\n     * @param otheroffset The offset of the other string.\n     * @param otherlen    The length of the other string.\n     * @return The result of the comparison.\n     */\n    function compare(\n        bytes memory self,\n        uint256 offset,\n        uint256 len,\n        bytes memory other,\n        uint256 otheroffset,\n        uint256 otherlen\n    ) internal pure returns (int256) {\n        uint256 shortest = len;\n        if (otherlen < len) shortest = otherlen;\n\n        uint256 selfptr;\n        uint256 otherptr;\n\n        assembly {\n            selfptr := add(self, add(offset, 32))\n            otherptr := add(other, add(otheroffset, 32))\n        }\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\n            uint256 a;\n            uint256 b;\n            assembly {\n                a := mload(selfptr)\n                b := mload(otherptr)\n            }\n            if (a != b) {\n                // Mask out irrelevant bytes and check again\n                uint256 mask;\n                if (shortest > 32) {\n                    mask = type(uint256).max;\n                } else {\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\n                }\n                int256 diff = int256(a & mask) - int256(b & mask);\n                if (diff != 0) return diff;\n            }\n            selfptr += 32;\n            otherptr += 32;\n        }\n\n        return int256(len) - int256(otherlen);\n    }\n\n    /*\n     * @dev Returns true if the two byte ranges are equal.\n     * @param self The first byte range to compare.\n     * @param offset The offset into the first byte range.\n     * @param other The second byte range to compare.\n     * @param otherOffset The offset into the second byte range.\n     * @param len The number of bytes to compare\n     * @return True if the byte ranges are equal, false otherwise.\n     */\n    function equals(\n        bytes memory self,\n        uint256 offset,\n        bytes memory other,\n        uint256 otherOffset,\n        uint256 len\n    ) internal pure returns (bool) {\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\n    }\n\n    /*\n     * @dev Returns true if the two byte ranges are equal with offsets.\n     * @param self The first byte range to compare.\n     * @param offset The offset into the first byte range.\n     * @param other The second byte range to compare.\n     * @param otherOffset The offset into the second byte range.\n     * @return True if the byte ranges are equal, false otherwise.\n     */\n    function equals(\n        bytes memory self,\n        uint256 offset,\n        bytes memory other,\n        uint256 otherOffset\n    ) internal pure returns (bool) {\n        return\n            keccak(self, offset, self.length - offset) ==\n            keccak(other, otherOffset, other.length - otherOffset);\n    }\n\n    /*\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\n     *      they are equal.\n     * @param self The first byte range to compare.\n     * @param offset The offset into the first byte range.\n     * @param other The second byte range to compare.\n     * @return True if the byte ranges are equal, false otherwise.\n     */\n    function equals(\n        bytes memory self,\n        uint256 offset,\n        bytes memory other\n    ) internal pure returns (bool) {\n        return\n            self.length >= offset + other.length &&\n            equals(self, offset, other, 0, other.length);\n    }\n\n    /*\n     * @dev Returns true if the two byte ranges are equal.\n     * @param self The first byte range to compare.\n     * @param other The second byte range to compare.\n     * @return True if the byte ranges are equal, false otherwise.\n     */\n    function equals(bytes memory self, bytes memory other)\n        internal\n        pure\n        returns (bool)\n    {\n        return\n            self.length == other.length &&\n            equals(self, 0, other, 0, self.length);\n    }\n\n    /*\n     * @dev Returns the 8-bit number at the specified index of self.\n     * @param self The byte string.\n     * @param idx The index into the bytes\n     * @return The specified 8 bits of the string, interpreted as an integer.\n     */\n    function readUint8(bytes memory self, uint256 idx)\n        internal\n        pure\n        returns (uint8 ret)\n    {\n        return uint8(self[idx]);\n    }\n\n    /*\n     * @dev Returns the 16-bit number at the specified index of self.\n     * @param self The byte string.\n     * @param idx The index into the bytes\n     * @return The specified 16 bits of the string, interpreted as an integer.\n     */\n    function readUint16(bytes memory self, uint256 idx)\n        internal\n        pure\n        returns (uint16 ret)\n    {\n        require(idx + 2 <= self.length);\n        assembly {\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n        }\n    }\n\n    /*\n     * @dev Returns the 32-bit number at the specified index of self.\n     * @param self The byte string.\n     * @param idx The index into the bytes\n     * @return The specified 32 bits of the string, interpreted as an integer.\n     */\n    function readUint32(bytes memory self, uint256 idx)\n        internal\n        pure\n        returns (uint32 ret)\n    {\n        require(idx + 4 <= self.length);\n        assembly {\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n        }\n    }\n\n    /*\n     * @dev Returns the 32 byte value at the specified index of self.\n     * @param self The byte string.\n     * @param idx The index into the bytes\n     * @return The specified 32 bytes of the string.\n     */\n    function readBytes32(bytes memory self, uint256 idx)\n        internal\n        pure\n        returns (bytes32 ret)\n    {\n        require(idx + 32 <= self.length);\n        assembly {\n            ret := mload(add(add(self, 32), idx))\n        }\n    }\n\n    /*\n     * @dev Returns the 32 byte value at the specified index of self.\n     * @param self The byte string.\n     * @param idx The index into the bytes\n     * @return The specified 32 bytes of the string.\n     */\n    function readBytes20(bytes memory self, uint256 idx)\n        internal\n        pure\n        returns (bytes20 ret)\n    {\n        require(idx + 20 <= self.length);\n        assembly {\n            ret := and(\n                mload(add(add(self, 32), idx)),\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\n            )\n        }\n    }\n\n    /*\n     * @dev Returns the n byte value at the specified index of self.\n     * @param self The byte string.\n     * @param idx The index into the bytes.\n     * @param len The number of bytes.\n     * @return The specified 32 bytes of the string.\n     */\n    function readBytesN(\n        bytes memory self,\n        uint256 idx,\n        uint256 len\n    ) internal pure returns (bytes32 ret) {\n        require(len <= 32);\n        require(idx + len <= self.length);\n        assembly {\n            let mask := not(sub(exp(256, sub(32, len)), 1))\n            ret := and(mload(add(add(self, 32), idx)), mask)\n        }\n    }\n\n    function memcpy(\n        uint256 dest,\n        uint256 src,\n        uint256 len\n    ) private pure {\n        // Copy word-length chunks while possible\n        for (; len >= 32; len -= 32) {\n            assembly {\n                mstore(dest, mload(src))\n            }\n            dest += 32;\n            src += 32;\n        }\n\n        // Copy remaining bytes\n        unchecked {\n            uint256 mask = (256**(32 - len)) - 1;\n            assembly {\n                let srcpart := and(mload(src), not(mask))\n                let destpart := and(mload(dest), mask)\n                mstore(dest, or(destpart, srcpart))\n            }\n        }\n    }\n\n    /*\n     * @dev Copies a substring into a new byte string.\n     * @param self The byte string to copy from.\n     * @param offset The offset to start copying at.\n     * @param len The number of bytes to copy.\n     */\n    function substring(\n        bytes memory self,\n        uint256 offset,\n        uint256 len\n    ) internal pure returns (bytes memory) {\n        require(offset + len <= self.length);\n\n        bytes memory ret = new bytes(len);\n        uint256 dest;\n        uint256 src;\n\n        assembly {\n            dest := add(ret, 32)\n            src := add(add(self, 32), offset)\n        }\n        memcpy(dest, src, len);\n\n        return ret;\n    }\n\n    // Maps characters from 0x30 to 0x7A to their base32 values.\n    // 0xFF represents invalid characters in that range.\n    bytes constant base32HexTable =\n        hex\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\";\n\n    /**\n     * @dev Decodes unpadded base32 data of up to one word in length.\n     * @param self The data to decode.\n     * @param off Offset into the string to start at.\n     * @param len Number of characters to decode.\n     * @return The decoded data, left aligned.\n     */\n    function base32HexDecodeWord(\n        bytes memory self,\n        uint256 off,\n        uint256 len\n    ) internal pure returns (bytes32) {\n        require(len <= 52);\n\n        uint256 ret = 0;\n        uint8 decoded;\n        for (uint256 i = 0; i < len; i++) {\n            bytes1 char = self[off + i];\n            require(char >= 0x30 && char <= 0x7A);\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\n            require(decoded <= 0x20);\n            if (i == len - 1) {\n                break;\n            }\n            ret = (ret << 5) | decoded;\n        }\n\n        uint256 bitlen = len * 5;\n        if (len % 8 == 0) {\n            // Multiple of 8 characters, no padding\n            ret = (ret << 5) | decoded;\n        } else if (len % 8 == 2) {\n            // Two extra characters - 1 byte\n            ret = (ret << 3) | (decoded >> 2);\n            bitlen -= 2;\n        } else if (len % 8 == 4) {\n            // Four extra characters - 2 bytes\n            ret = (ret << 1) | (decoded >> 4);\n            bitlen -= 4;\n        } else if (len % 8 == 5) {\n            // Five extra characters - 3 bytes\n            ret = (ret << 4) | (decoded >> 1);\n            bitlen -= 1;\n        } else if (len % 8 == 7) {\n            // Seven extra characters - 4 bytes\n            ret = (ret << 2) | (decoded >> 3);\n            bitlen -= 3;\n        } else {\n            revert();\n        }\n\n        return bytes32(ret << (256 - bitlen));\n    }\n\n    /**\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\n     * @param self The string to search\n     * @param off The offset to start searching at\n     * @param len The number of bytes to search\n     * @param needle The byte to search for\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\n     */\n    function find(\n        bytes memory self,\n        uint256 off,\n        uint256 len,\n        bytes1 needle\n    ) internal pure returns (uint256) {\n        for (uint256 idx = off; idx < off + len; idx++) {\n            if (self[idx] == needle) {\n                return idx;\n            }\n        }\n        return type(uint256).max;\n    }\n}\n"
      },
      "contracts/dnssec-oracle/RRUtils.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"./BytesUtils.sol\";\nimport \"@ensdomains/buffer/contracts/Buffer.sol\";\n\n/**\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\n */\nlibrary RRUtils {\n    using BytesUtils for *;\n    using Buffer for *;\n\n    /**\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n     * @param self The byte array to read a name from.\n     * @param offset The offset to start reading at.\n     * @return The length of the DNS name at 'offset', in bytes.\n     */\n    function nameLength(bytes memory self, uint256 offset)\n        internal\n        pure\n        returns (uint256)\n    {\n        uint256 idx = offset;\n        while (true) {\n            assert(idx < self.length);\n            uint256 labelLen = self.readUint8(idx);\n            idx += labelLen + 1;\n            if (labelLen == 0) {\n                break;\n            }\n        }\n        return idx - offset;\n    }\n\n    /**\n     * @dev Returns a DNS format name at the specified offset of self.\n     * @param self The byte array to read a name from.\n     * @param offset The offset to start reading at.\n     * @return ret The name.\n     */\n    function readName(bytes memory self, uint256 offset)\n        internal\n        pure\n        returns (bytes memory ret)\n    {\n        uint256 len = nameLength(self, offset);\n        return self.substring(offset, len);\n    }\n\n    /**\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n     * @param self The byte array to read a name from.\n     * @param offset The offset to start reading at.\n     * @return The number of labels in the DNS name at 'offset', in bytes.\n     */\n    function labelCount(bytes memory self, uint256 offset)\n        internal\n        pure\n        returns (uint256)\n    {\n        uint256 count = 0;\n        while (true) {\n            assert(offset < self.length);\n            uint256 labelLen = self.readUint8(offset);\n            offset += labelLen + 1;\n            if (labelLen == 0) {\n                break;\n            }\n            count += 1;\n        }\n        return count;\n    }\n\n    uint256 constant RRSIG_TYPE = 0;\n    uint256 constant RRSIG_ALGORITHM = 2;\n    uint256 constant RRSIG_LABELS = 3;\n    uint256 constant RRSIG_TTL = 4;\n    uint256 constant RRSIG_EXPIRATION = 8;\n    uint256 constant RRSIG_INCEPTION = 12;\n    uint256 constant RRSIG_KEY_TAG = 16;\n    uint256 constant RRSIG_SIGNER_NAME = 18;\n\n    struct SignedSet {\n        uint16 typeCovered;\n        uint8 algorithm;\n        uint8 labels;\n        uint32 ttl;\n        uint32 expiration;\n        uint32 inception;\n        uint16 keytag;\n        bytes signerName;\n        bytes data;\n        bytes name;\n    }\n\n    function readSignedSet(bytes memory data)\n        internal\n        pure\n        returns (SignedSet memory self)\n    {\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\n        self.labels = data.readUint8(RRSIG_LABELS);\n        self.ttl = data.readUint32(RRSIG_TTL);\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\n        self.inception = data.readUint32(RRSIG_INCEPTION);\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\n        self.data = data.substring(\n            RRSIG_SIGNER_NAME + self.signerName.length,\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\n        );\n    }\n\n    function rrs(SignedSet memory rrset)\n        internal\n        pure\n        returns (RRIterator memory)\n    {\n        return iterateRRs(rrset.data, 0);\n    }\n\n    /**\n     * @dev An iterator over resource records.\n     */\n    struct RRIterator {\n        bytes data;\n        uint256 offset;\n        uint16 dnstype;\n        uint16 class;\n        uint32 ttl;\n        uint256 rdataOffset;\n        uint256 nextOffset;\n    }\n\n    /**\n     * @dev Begins iterating over resource records.\n     * @param self The byte string to read from.\n     * @param offset The offset to start reading at.\n     * @return ret An iterator object.\n     */\n    function iterateRRs(bytes memory self, uint256 offset)\n        internal\n        pure\n        returns (RRIterator memory ret)\n    {\n        ret.data = self;\n        ret.nextOffset = offset;\n        next(ret);\n    }\n\n    /**\n     * @dev Returns true iff there are more RRs to iterate.\n     * @param iter The iterator to check.\n     * @return True iff the iterator has finished.\n     */\n    function done(RRIterator memory iter) internal pure returns (bool) {\n        return iter.offset >= iter.data.length;\n    }\n\n    /**\n     * @dev Moves the iterator to the next resource record.\n     * @param iter The iterator to advance.\n     */\n    function next(RRIterator memory iter) internal pure {\n        iter.offset = iter.nextOffset;\n        if (iter.offset >= iter.data.length) {\n            return;\n        }\n\n        // Skip the name\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\n\n        // Read type, class, and ttl\n        iter.dnstype = iter.data.readUint16(off);\n        off += 2;\n        iter.class = iter.data.readUint16(off);\n        off += 2;\n        iter.ttl = iter.data.readUint32(off);\n        off += 4;\n\n        // Read the rdata\n        uint256 rdataLength = iter.data.readUint16(off);\n        off += 2;\n        iter.rdataOffset = off;\n        iter.nextOffset = off + rdataLength;\n    }\n\n    /**\n     * @dev Returns the name of the current record.\n     * @param iter The iterator.\n     * @return A new bytes object containing the owner name from the RR.\n     */\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\n        return\n            iter.data.substring(\n                iter.offset,\n                nameLength(iter.data, iter.offset)\n            );\n    }\n\n    /**\n     * @dev Returns the rdata portion of the current record.\n     * @param iter The iterator.\n     * @return A new bytes object containing the RR's RDATA.\n     */\n    function rdata(RRIterator memory iter)\n        internal\n        pure\n        returns (bytes memory)\n    {\n        return\n            iter.data.substring(\n                iter.rdataOffset,\n                iter.nextOffset - iter.rdataOffset\n            );\n    }\n\n    uint256 constant DNSKEY_FLAGS = 0;\n    uint256 constant DNSKEY_PROTOCOL = 2;\n    uint256 constant DNSKEY_ALGORITHM = 3;\n    uint256 constant DNSKEY_PUBKEY = 4;\n\n    struct DNSKEY {\n        uint16 flags;\n        uint8 protocol;\n        uint8 algorithm;\n        bytes publicKey;\n    }\n\n    function readDNSKEY(\n        bytes memory data,\n        uint256 offset,\n        uint256 length\n    ) internal pure returns (DNSKEY memory self) {\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\n        self.publicKey = data.substring(\n            offset + DNSKEY_PUBKEY,\n            length - DNSKEY_PUBKEY\n        );\n    }\n\n    uint256 constant DS_KEY_TAG = 0;\n    uint256 constant DS_ALGORITHM = 2;\n    uint256 constant DS_DIGEST_TYPE = 3;\n    uint256 constant DS_DIGEST = 4;\n\n    struct DS {\n        uint16 keytag;\n        uint8 algorithm;\n        uint8 digestType;\n        bytes digest;\n    }\n\n    function readDS(\n        bytes memory data,\n        uint256 offset,\n        uint256 length\n    ) internal pure returns (DS memory self) {\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\n    }\n\n    function compareNames(bytes memory self, bytes memory other)\n        internal\n        pure\n        returns (int256)\n    {\n        if (self.equals(other)) {\n            return 0;\n        }\n\n        uint256 off;\n        uint256 otheroff;\n        uint256 prevoff;\n        uint256 otherprevoff;\n        uint256 counts = labelCount(self, 0);\n        uint256 othercounts = labelCount(other, 0);\n\n        // Keep removing labels from the front of the name until both names are equal length\n        while (counts > othercounts) {\n            prevoff = off;\n            off = progress(self, off);\n            counts--;\n        }\n\n        while (othercounts > counts) {\n            otherprevoff = otheroff;\n            otheroff = progress(other, otheroff);\n            othercounts--;\n        }\n\n        // Compare the last nonequal labels to each other\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\n            prevoff = off;\n            off = progress(self, off);\n            otherprevoff = otheroff;\n            otheroff = progress(other, otheroff);\n            counts -= 1;\n        }\n\n        if (off == 0) {\n            return -1;\n        }\n        if (otheroff == 0) {\n            return 1;\n        }\n\n        return\n            self.compare(\n                prevoff + 1,\n                self.readUint8(prevoff),\n                other,\n                otherprevoff + 1,\n                other.readUint8(otherprevoff)\n            );\n    }\n\n    /**\n     * @dev Compares two serial numbers using RFC1982 serial number math.\n     */\n    function serialNumberGte(uint32 i1, uint32 i2)\n        internal\n        pure\n        returns (bool)\n    {\n        return int32(i1) - int32(i2) >= 0;\n    }\n\n    function progress(bytes memory body, uint256 off)\n        internal\n        pure\n        returns (uint256)\n    {\n        return off + 1 + body.readUint8(off);\n    }\n\n    /**\n     * @dev Computes the keytag for a chunk of data.\n     * @param data The data to compute a keytag for.\n     * @return The computed key tag.\n     */\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\n        /* This function probably deserves some explanation.\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\n         *\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\n         *         uint ac;\n         *         for (uint i = 0; i < data.length; i++) {\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\n         *         }\n         *         return uint16(ac + (ac >> 16));\n         *     }\n         *\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\n         * large words work in our favour.\n         *\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\n         * effectively summing 16 different numbers with each EVM ADD opcode.\n         *\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\n         * and the remaining sums can be done just on ac1.\n         */\n        unchecked {\n            require(data.length <= 8192, \"Long keys not permitted\");\n            uint256 ac1;\n            uint256 ac2;\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\n                uint256 word;\n                assembly {\n                    word := mload(add(add(data, 32), i))\n                }\n                if (i + 32 > data.length) {\n                    uint256 unused = 256 - (data.length - i) * 8;\n                    word = (word >> unused) << unused;\n                }\n                ac1 +=\n                    (word &\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\n                    8;\n                ac2 += (word &\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\n            }\n            ac1 =\n                (ac1 &\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\n                ((ac1 &\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\n                    16);\n            ac2 =\n                (ac2 &\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\n                ((ac2 &\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\n                    16);\n            ac1 = (ac1 << 8) + ac2;\n            ac1 =\n                (ac1 &\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\n                ((ac1 &\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\n                    32);\n            ac1 =\n                (ac1 &\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\n                ((ac1 &\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\n                    64);\n            ac1 =\n                (ac1 &\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\n                (ac1 >> 128);\n            ac1 += (ac1 >> 16) & 0xFFFF;\n            return uint16(ac1);\n        }\n    }\n}\n"
      },
      "@ensdomains/buffer/contracts/Buffer.sol": {
        "content": "pragma solidity ^0.8.4;\n\n/**\n* @dev A library for working with mutable byte buffers in Solidity.\n*\n* Byte buffers are mutable and expandable, and provide a variety of primitives\n* for writing to them. At any time you can fetch a bytes object containing the\n* current contents of the buffer. The bytes object should not be stored between\n* operations, as it may change due to resizing of the buffer.\n*/\nlibrary Buffer {\n    /**\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\n    *      a capacity. The capacity may be longer than the current value, in\n    *      which case it can be extended without the need to allocate more memory.\n    */\n    struct buffer {\n        bytes buf;\n        uint capacity;\n    }\n\n    /**\n    * @dev Initializes a buffer with an initial capacity.\n    * @param buf The buffer to initialize.\n    * @param capacity The number of bytes of space to allocate the buffer.\n    * @return The buffer, for chaining.\n    */\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\n        if (capacity % 32 != 0) {\n            capacity += 32 - (capacity % 32);\n        }\n        // Allocate space for the buffer data\n        buf.capacity = capacity;\n        assembly {\n            let ptr := mload(0x40)\n            mstore(buf, ptr)\n            mstore(ptr, 0)\n            mstore(0x40, add(32, add(ptr, capacity)))\n        }\n        return buf;\n    }\n\n    /**\n    * @dev Initializes a new buffer from an existing bytes object.\n    *      Changes to the buffer may mutate the original value.\n    * @param b The bytes object to initialize the buffer with.\n    * @return A new buffer.\n    */\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\n        buffer memory buf;\n        buf.buf = b;\n        buf.capacity = b.length;\n        return buf;\n    }\n\n    function resize(buffer memory buf, uint capacity) private pure {\n        bytes memory oldbuf = buf.buf;\n        init(buf, capacity);\n        append(buf, oldbuf);\n    }\n\n    function max(uint a, uint b) private pure returns(uint) {\n        if (a > b) {\n            return a;\n        }\n        return b;\n    }\n\n    /**\n    * @dev Sets buffer length to 0.\n    * @param buf The buffer to truncate.\n    * @return The original buffer, for chaining..\n    */\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\n        assembly {\n            let bufptr := mload(buf)\n            mstore(bufptr, 0)\n        }\n        return buf;\n    }\n\n    /**\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\n    *      the capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param off The start offset to write to.\n    * @param data The data to append.\n    * @param len The number of bytes to copy.\n    * @return The original buffer, for chaining.\n    */\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\n        require(len <= data.length);\n\n        if (off + len > buf.capacity) {\n            resize(buf, max(buf.capacity, len + off) * 2);\n        }\n\n        uint dest;\n        uint src;\n        assembly {\n            // Memory address of the buffer data\n            let bufptr := mload(buf)\n            // Length of existing buffer data\n            let buflen := mload(bufptr)\n            // Start address = buffer address + offset + sizeof(buffer length)\n            dest := add(add(bufptr, 32), off)\n            // Update buffer length if we're extending it\n            if gt(add(len, off), buflen) {\n                mstore(bufptr, add(len, off))\n            }\n            src := add(data, 32)\n        }\n\n        // Copy word-length chunks while possible\n        for (; len >= 32; len -= 32) {\n            assembly {\n                mstore(dest, mload(src))\n            }\n            dest += 32;\n            src += 32;\n        }\n\n        // Copy remaining bytes\n        unchecked {\n            uint mask = (256 ** (32 - len)) - 1;\n            assembly {\n                let srcpart := and(mload(src), not(mask))\n                let destpart := and(mload(dest), mask)\n                mstore(dest, or(destpart, srcpart))\n            }\n        }\n\n        return buf;\n    }\n\n    /**\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\n    *      the capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param data The data to append.\n    * @param len The number of bytes to copy.\n    * @return The original buffer, for chaining.\n    */\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\n        return write(buf, buf.buf.length, data, len);\n    }\n\n    /**\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\n    *      the capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param data The data to append.\n    * @return The original buffer, for chaining.\n    */\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\n        return write(buf, buf.buf.length, data, data.length);\n    }\n\n    /**\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\n    *      capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param off The offset to write the byte at.\n    * @param data The data to append.\n    * @return The original buffer, for chaining.\n    */\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\n        if (off >= buf.capacity) {\n            resize(buf, buf.capacity * 2);\n        }\n\n        assembly {\n            // Memory address of the buffer data\n            let bufptr := mload(buf)\n            // Length of existing buffer data\n            let buflen := mload(bufptr)\n            // Address = buffer address + sizeof(buffer length) + off\n            let dest := add(add(bufptr, off), 32)\n            mstore8(dest, data)\n            // Update buffer length if we extended it\n            if eq(off, buflen) {\n                mstore(bufptr, add(buflen, 1))\n            }\n        }\n        return buf;\n    }\n\n    /**\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\n    *      capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param data The data to append.\n    * @return The original buffer, for chaining.\n    */\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\n        return writeUint8(buf, buf.buf.length, data);\n    }\n\n    /**\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\n    *      exceed the capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param off The offset to write at.\n    * @param data The data to append.\n    * @param len The number of bytes to write (left-aligned).\n    * @return The original buffer, for chaining.\n    */\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\n        if (len + off > buf.capacity) {\n            resize(buf, (len + off) * 2);\n        }\n\n        unchecked {\n            uint mask = (256 ** len) - 1;\n            // Right-align data\n            data = data >> (8 * (32 - len));\n            assembly {\n                // Memory address of the buffer data\n                let bufptr := mload(buf)\n                // Address = buffer address + sizeof(buffer length) + off + len\n                let dest := add(add(bufptr, off), len)\n                mstore(dest, or(and(mload(dest), not(mask)), data))\n                // Update buffer length if we extended it\n                if gt(add(off, len), mload(bufptr)) {\n                    mstore(bufptr, add(off, len))\n                }\n            }\n        }\n        return buf;\n    }\n\n    /**\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\n    *      capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param off The offset to write at.\n    * @param data The data to append.\n    * @return The original buffer, for chaining.\n    */\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\n        return write(buf, off, bytes32(data), 20);\n    }\n\n    /**\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\n    *      the capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param data The data to append.\n    * @return The original buffer, for chhaining.\n    */\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\n        return write(buf, buf.buf.length, bytes32(data), 20);\n    }\n\n    /**\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\n    *      the capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param data The data to append.\n    * @return The original buffer, for chaining.\n    */\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\n        return write(buf, buf.buf.length, data, 32);\n    }\n\n    /**\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\n    *      the capacity of the buffer.\n    * @param buf The buffer to append to.\n    * @param off The offset to write at.\n    * @param data The data to append.\n    * @param len The number of bytes to write (right-aligned).\n    * @return The original buffer, for chaining.\n    */\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\n        if (len + off > buf.capacity) {\n            resize(buf, (len + off) * 2);\n        }\n\n        uint mask = (256 ** len) - 1;\n        assembly {\n            // Memory address of the buffer data\n            let bufptr := mload(buf)\n            // Address = buffer address + off + sizeof(buffer length) + len\n            let dest := add(add(bufptr, off), len)\n            mstore(dest, or(and(mload(dest), not(mask)), data))\n            // Update buffer length if we extended it\n            if gt(add(off, len), mload(bufptr)) {\n                mstore(bufptr, add(off, len))\n            }\n        }\n        return buf;\n    }\n\n    /**\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\n     * exceed the capacity of the buffer.\n     * @param buf The buffer to append to.\n     * @param data The data to append.\n     * @return The original buffer.\n     */\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\n        return writeInt(buf, buf.buf.length, data, len);\n    }\n}\n"
      },
      "contracts/dnsregistrar/DNSRegistrar.sol": {
        "content": "//SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.4;\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport \"@ensdomains/buffer/contracts/Buffer.sol\";\nimport \"../dnssec-oracle/BytesUtils.sol\";\nimport \"../dnssec-oracle/DNSSEC.sol\";\nimport \"../dnssec-oracle/RRUtils.sol\";\nimport \"../registry/ENSRegistry.sol\";\nimport \"../root/Root.sol\";\nimport \"../resolvers/profiles/AddrResolver.sol\";\nimport \"./DNSClaimChecker.sol\";\nimport \"./PublicSuffixList.sol\";\nimport \"./IDNSRegistrar.sol\";\n\n/**\n * @dev An ENS registrar that allows the owner of a DNS name to claim the\n *      corresponding name in ENS.\n */\n// TODO: Record inception time of any claimed name, so old proofs can't be used to revert changes to a name.\ncontract DNSRegistrar is IDNSRegistrar, IERC165 {\n    using BytesUtils for bytes;\n    using Buffer for Buffer.buffer;\n    using RRUtils for *;\n\n    ENS public immutable ens;\n    DNSSEC public immutable oracle;\n    PublicSuffixList public suffixes;\n    // A mapping of the most recent signatures seen for each claimed domain.\n    mapping(bytes32 => uint32) public inceptions;\n\n    error NoOwnerRecordFound();\n    error StaleProof();\n\n    struct OwnerRecord {\n        bytes name;\n        address owner;\n        address resolver;\n        uint64 ttl;\n    }\n\n    event Claim(\n        bytes32 indexed node,\n        address indexed owner,\n        bytes dnsname,\n        uint32 inception\n    );\n    event NewOracle(address oracle);\n    event NewPublicSuffixList(address suffixes);\n\n    constructor(\n        DNSSEC _dnssec,\n        PublicSuffixList _suffixes,\n        ENS _ens\n    ) {\n        oracle = _dnssec;\n        emit NewOracle(address(oracle));\n        suffixes = _suffixes;\n        emit NewPublicSuffixList(address(suffixes));\n        ens = _ens;\n    }\n\n    /**\n     * @dev This contract's owner-only functions can be invoked by the owner of the ENS root.\n     */\n    modifier onlyOwner() {\n        Root root = Root(ens.owner(bytes32(0)));\n        address owner = root.owner();\n        require(msg.sender == owner);\n        _;\n    }\n\n    function setPublicSuffixList(PublicSuffixList _suffixes) public onlyOwner {\n        suffixes = _suffixes;\n        emit NewPublicSuffixList(address(suffixes));\n    }\n\n    /**\n     * @dev Submits proofs to the DNSSEC oracle, then claims a name using those proofs.\n     * @param name The name to claim, in DNS wire format.\n     * @param input A chain of signed DNS RRSETs ending with a text record.\n     */\n    function proveAndClaim(\n        bytes memory name,\n        DNSSEC.RRSetWithSignature[] memory input\n    ) public override {\n        (bytes32 rootNode, bytes32 labelHash, address addr) = _claim(\n            name,\n            input\n        );\n        ens.setSubnodeOwner(rootNode, labelHash, addr);\n    }\n\n    function proveAndClaimWithResolver(\n        bytes memory name,\n        DNSSEC.RRSetWithSignature[] memory input,\n        address resolver,\n        address addr\n    ) public override {\n        (bytes32 rootNode, bytes32 labelHash, address owner) = _claim(\n            name,\n            input\n        );\n        require(\n            msg.sender == owner,\n            \"Only owner can call proveAndClaimWithResolver\"\n        );\n        if (addr != address(0)) {\n            require(\n                resolver != address(0),\n                \"Cannot set addr if resolver is not set\"\n            );\n            // Set ourselves as the owner so we can set a record on the resolver\n            ens.setSubnodeRecord(\n                rootNode,\n                labelHash,\n                address(this),\n                resolver,\n                0\n            );\n            bytes32 node = keccak256(abi.encodePacked(rootNode, labelHash));\n            // Set the resolver record\n            AddrResolver(resolver).setAddr(node, addr);\n            // Transfer the record to the owner\n            ens.setOwner(node, owner);\n        } else {\n            ens.setSubnodeRecord(rootNode, labelHash, owner, resolver, 0);\n        }\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        external\n        pure\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IERC165).interfaceId ||\n            interfaceID == type(IDNSRegistrar).interfaceId;\n    }\n\n    function _claim(bytes memory name, DNSSEC.RRSetWithSignature[] memory input)\n        internal\n        returns (\n            bytes32 parentNode,\n            bytes32 labelHash,\n            address addr\n        )\n    {\n        (bytes memory data, uint32 inception) = oracle.verifyRRSet(input);\n\n        // Get the first label\n        uint256 labelLen = name.readUint8(0);\n        labelHash = name.keccak(1, labelLen);\n\n        // Parent name must be in the public suffix list.\n        bytes memory parentName = name.substring(\n            labelLen + 1,\n            name.length - labelLen - 1\n        );\n        require(\n            suffixes.isPublicSuffix(parentName),\n            \"Parent name must be a public suffix\"\n        );\n\n        // Make sure the parent name is enabled\n        parentNode = enableNode(parentName, 0);\n\n        bytes32 node = keccak256(abi.encodePacked(parentNode, labelHash));\n        if (!RRUtils.serialNumberGte(inception, inceptions[node])) {\n            revert StaleProof();\n        }\n        inceptions[node] = inception;\n\n        (addr, ) = DNSClaimChecker.getOwnerAddress(name, data);\n\n        emit Claim(node, addr, name, inception);\n    }\n\n    function enableNode(bytes memory domain, uint256 offset)\n        internal\n        returns (bytes32 node)\n    {\n        uint256 len = domain.readUint8(offset);\n        if (len == 0) {\n            return bytes32(0);\n        }\n\n        bytes32 parentNode = enableNode(domain, offset + len + 1);\n        bytes32 label = domain.keccak(offset + 1, len);\n        node = keccak256(abi.encodePacked(parentNode, label));\n        address owner = ens.owner(node);\n        require(\n            owner == address(0) || owner == address(this),\n            \"Cannot enable a name owned by someone else\"\n        );\n        if (owner != address(this)) {\n            if (parentNode == bytes32(0)) {\n                Root root = Root(ens.owner(bytes32(0)));\n                root.setSubnodeOwner(label, address(this));\n            } else {\n                ens.setSubnodeOwner(parentNode, label, address(this));\n            }\n        }\n        return node;\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"
      },
      "contracts/registry/ENSRegistry.sol": {
        "content": "pragma solidity >=0.8.4;\n\nimport \"./ENS.sol\";\n\n/**\n * The ENS registry contract.\n */\ncontract ENSRegistry is ENS {\n    struct Record {\n        address owner;\n        address resolver;\n        uint64 ttl;\n    }\n\n    mapping(bytes32 => Record) records;\n    mapping(address => mapping(address => bool)) operators;\n\n    // Permits modifications only by the owner of the specified node.\n    modifier authorised(bytes32 node) {\n        address owner = records[node].owner;\n        require(owner == msg.sender || operators[owner][msg.sender]);\n        _;\n    }\n\n    /**\n     * @dev Constructs a new ENS registry.\n     */\n    constructor() public {\n        records[0x0].owner = msg.sender;\n    }\n\n    /**\n     * @dev Sets the record for a node.\n     * @param node The node to update.\n     * @param owner The address of the new owner.\n     * @param resolver The address of the resolver.\n     * @param ttl The TTL in seconds.\n     */\n    function setRecord(\n        bytes32 node,\n        address owner,\n        address resolver,\n        uint64 ttl\n    ) external virtual override {\n        setOwner(node, owner);\n        _setResolverAndTTL(node, resolver, ttl);\n    }\n\n    /**\n     * @dev Sets the record for a subnode.\n     * @param node The parent node.\n     * @param label The hash of the label specifying the subnode.\n     * @param owner The address of the new owner.\n     * @param resolver The address of the resolver.\n     * @param ttl The TTL in seconds.\n     */\n    function setSubnodeRecord(\n        bytes32 node,\n        bytes32 label,\n        address owner,\n        address resolver,\n        uint64 ttl\n    ) external virtual override {\n        bytes32 subnode = setSubnodeOwner(node, label, owner);\n        _setResolverAndTTL(subnode, resolver, ttl);\n    }\n\n    /**\n     * @dev Transfers ownership of a node to a new address. May only be called by the current owner of the node.\n     * @param node The node to transfer ownership of.\n     * @param owner The address of the new owner.\n     */\n    function setOwner(bytes32 node, address owner)\n        public\n        virtual\n        override\n        authorised(node)\n    {\n        _setOwner(node, owner);\n        emit Transfer(node, owner);\n    }\n\n    /**\n     * @dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\n     * @param node The parent node.\n     * @param label The hash of the label specifying the subnode.\n     * @param owner The address of the new owner.\n     */\n    function setSubnodeOwner(\n        bytes32 node,\n        bytes32 label,\n        address owner\n    ) public virtual override authorised(node) returns (bytes32) {\n        bytes32 subnode = keccak256(abi.encodePacked(node, label));\n        _setOwner(subnode, owner);\n        emit NewOwner(node, label, owner);\n        return subnode;\n    }\n\n    /**\n     * @dev Sets the resolver address for the specified node.\n     * @param node The node to update.\n     * @param resolver The address of the resolver.\n     */\n    function setResolver(bytes32 node, address resolver)\n        public\n        virtual\n        override\n        authorised(node)\n    {\n        emit NewResolver(node, resolver);\n        records[node].resolver = resolver;\n    }\n\n    /**\n     * @dev Sets the TTL for the specified node.\n     * @param node The node to update.\n     * @param ttl The TTL in seconds.\n     */\n    function setTTL(bytes32 node, uint64 ttl)\n        public\n        virtual\n        override\n        authorised(node)\n    {\n        emit NewTTL(node, ttl);\n        records[node].ttl = ttl;\n    }\n\n    /**\n     * @dev Enable or disable approval for a third party (\"operator\") to manage\n     *  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\n     * @param operator Address to add to the set of authorized operators.\n     * @param approved True if the operator is approved, false to revoke approval.\n     */\n    function setApprovalForAll(address operator, bool approved)\n        external\n        virtual\n        override\n    {\n        operators[msg.sender][operator] = approved;\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    /**\n     * @dev Returns the address that owns the specified node.\n     * @param node The specified node.\n     * @return address of the owner.\n     */\n    function owner(bytes32 node)\n        public\n        view\n        virtual\n        override\n        returns (address)\n    {\n        address addr = records[node].owner;\n        if (addr == address(this)) {\n            return address(0x0);\n        }\n\n        return addr;\n    }\n\n    /**\n     * @dev Returns the address of the resolver for the specified node.\n     * @param node The specified node.\n     * @return address of the resolver.\n     */\n    function resolver(bytes32 node)\n        public\n        view\n        virtual\n        override\n        returns (address)\n    {\n        return records[node].resolver;\n    }\n\n    /**\n     * @dev Returns the TTL of a node, and any records associated with it.\n     * @param node The specified node.\n     * @return ttl of the node.\n     */\n    function ttl(bytes32 node) public view virtual override returns (uint64) {\n        return records[node].ttl;\n    }\n\n    /**\n     * @dev Returns whether a record has been imported to the registry.\n     * @param node The specified node.\n     * @return Bool if record exists\n     */\n    function recordExists(bytes32 node)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return records[node].owner != address(0x0);\n    }\n\n    /**\n     * @dev Query if an address is an authorized operator for another address.\n     * @param owner The address that owns the records.\n     * @param operator The address that acts on behalf of the owner.\n     * @return True if `operator` is an approved operator for `owner`, false otherwise.\n     */\n    function isApprovedForAll(address owner, address operator)\n        external\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return operators[owner][operator];\n    }\n\n    function _setOwner(bytes32 node, address owner) internal virtual {\n        records[node].owner = owner;\n    }\n\n    function _setResolverAndTTL(\n        bytes32 node,\n        address resolver,\n        uint64 ttl\n    ) internal {\n        if (resolver != records[node].resolver) {\n            records[node].resolver = resolver;\n            emit NewResolver(node, resolver);\n        }\n\n        if (ttl != records[node].ttl) {\n            records[node].ttl = ttl;\n            emit NewTTL(node, ttl);\n        }\n    }\n}\n"
      },
      "contracts/root/Root.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"../registry/ENS.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"./Controllable.sol\";\n\ncontract Root is Ownable, Controllable {\n    bytes32 private constant ROOT_NODE = bytes32(0);\n\n    bytes4 private constant INTERFACE_META_ID =\n        bytes4(keccak256(\"supportsInterface(bytes4)\"));\n\n    event TLDLocked(bytes32 indexed label);\n\n    ENS public ens;\n    mapping(bytes32 => bool) public locked;\n\n    constructor(ENS _ens) public {\n        ens = _ens;\n    }\n\n    function setSubnodeOwner(bytes32 label, address owner)\n        external\n        onlyController\n    {\n        require(!locked[label]);\n        ens.setSubnodeOwner(ROOT_NODE, label, owner);\n    }\n\n    function setResolver(address resolver) external onlyOwner {\n        ens.setResolver(ROOT_NODE, resolver);\n    }\n\n    function lock(bytes32 label) external onlyOwner {\n        emit TLDLocked(label);\n        locked[label] = true;\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        external\n        pure\n        returns (bool)\n    {\n        return interfaceID == INTERFACE_META_ID;\n    }\n}\n"
      },
      "contracts/resolvers/profiles/AddrResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"../ResolverBase.sol\";\nimport \"./IAddrResolver.sol\";\nimport \"./IAddressResolver.sol\";\n\nabstract contract AddrResolver is\n    IAddrResolver,\n    IAddressResolver,\n    ResolverBase\n{\n    uint256 private constant COIN_TYPE_ETH = 60;\n\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_addresses;\n\n    /**\n     * Sets the address associated with an ENS node.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param a The address to set.\n     */\n    function setAddr(bytes32 node, address a)\n        external\n        virtual\n        authorised(node)\n    {\n        setAddr(node, COIN_TYPE_ETH, addressToBytes(a));\n    }\n\n    /**\n     * Returns the address associated with an ENS node.\n     * @param node The ENS node to query.\n     * @return The associated address.\n     */\n    function addr(bytes32 node)\n        public\n        view\n        virtual\n        override\n        returns (address payable)\n    {\n        bytes memory a = addr(node, COIN_TYPE_ETH);\n        if (a.length == 0) {\n            return payable(0);\n        }\n        return bytesToAddress(a);\n    }\n\n    function setAddr(\n        bytes32 node,\n        uint256 coinType,\n        bytes memory a\n    ) public virtual authorised(node) {\n        emit AddressChanged(node, coinType, a);\n        if (coinType == COIN_TYPE_ETH) {\n            emit AddrChanged(node, bytesToAddress(a));\n        }\n        versionable_addresses[recordVersions[node]][node][coinType] = a;\n    }\n\n    function addr(bytes32 node, uint256 coinType)\n        public\n        view\n        virtual\n        override\n        returns (bytes memory)\n    {\n        return versionable_addresses[recordVersions[node]][node][coinType];\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IAddrResolver).interfaceId ||\n            interfaceID == type(IAddressResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n\n    function bytesToAddress(bytes memory b)\n        internal\n        pure\n        returns (address payable a)\n    {\n        require(b.length == 20);\n        assembly {\n            a := div(mload(add(b, 32)), exp(256, 12))\n        }\n    }\n\n    function addressToBytes(address a) internal pure returns (bytes memory b) {\n        b = new bytes(20);\n        assembly {\n            mstore(add(b, 32), mul(a, exp(256, 12)))\n        }\n    }\n}\n"
      },
      "contracts/dnsregistrar/PublicSuffixList.sol": {
        "content": "pragma solidity ^0.8.4;\n\ninterface PublicSuffixList {\n    function isPublicSuffix(bytes calldata name) external view returns (bool);\n}\n"
      },
      "contracts/dnsregistrar/IDNSRegistrar.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport \"../dnssec-oracle/DNSSEC.sol\";\n\ninterface IDNSRegistrar {\n    function proveAndClaim(\n        bytes memory name,\n        DNSSEC.RRSetWithSignature[] memory input\n    ) external;\n\n    function proveAndClaimWithResolver(\n        bytes memory name,\n        DNSSEC.RRSetWithSignature[] memory input,\n        address resolver,\n        address addr\n    ) external;\n}\n"
      },
      "contracts/registry/ENS.sol": {
        "content": "pragma solidity >=0.8.4;\n\ninterface ENS {\n    // Logged when the owner of a node assigns a new owner to a subnode.\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\n\n    // Logged when the owner of a node transfers ownership to a new account.\n    event Transfer(bytes32 indexed node, address owner);\n\n    // Logged when the resolver for a node changes.\n    event NewResolver(bytes32 indexed node, address resolver);\n\n    // Logged when the TTL of a node changes\n    event NewTTL(bytes32 indexed node, uint64 ttl);\n\n    // Logged when an operator is added or removed.\n    event ApprovalForAll(\n        address indexed owner,\n        address indexed operator,\n        bool approved\n    );\n\n    function setRecord(\n        bytes32 node,\n        address owner,\n        address resolver,\n        uint64 ttl\n    ) external;\n\n    function setSubnodeRecord(\n        bytes32 node,\n        bytes32 label,\n        address owner,\n        address resolver,\n        uint64 ttl\n    ) external;\n\n    function setSubnodeOwner(\n        bytes32 node,\n        bytes32 label,\n        address owner\n    ) external returns (bytes32);\n\n    function setResolver(bytes32 node, address resolver) external;\n\n    function setOwner(bytes32 node, address owner) external;\n\n    function setTTL(bytes32 node, uint64 ttl) external;\n\n    function setApprovalForAll(address operator, bool approved) external;\n\n    function owner(bytes32 node) external view returns (address);\n\n    function resolver(bytes32 node) external view returns (address);\n\n    function ttl(bytes32 node) external view returns (uint64);\n\n    function recordExists(bytes32 node) external view returns (bool);\n\n    function isApprovedForAll(address owner, address operator)\n        external\n        view\n        returns (bool);\n}\n"
      },
      "@openzeppelin/contracts/access/Ownable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor() {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"
      },
      "contracts/root/Controllable.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract Controllable is Ownable {\n    mapping(address => bool) public controllers;\n\n    event ControllerChanged(address indexed controller, bool enabled);\n\n    modifier onlyController() {\n        require(\n            controllers[msg.sender],\n            \"Controllable: Caller is not a controller\"\n        );\n        _;\n    }\n\n    function setController(address controller, bool enabled) public onlyOwner {\n        controllers[controller] = enabled;\n        emit ControllerChanged(controller, enabled);\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"
      },
      "contracts/resolvers/ResolverBase.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"./profiles/IVersionableResolver.sol\";\n\nabstract contract ResolverBase is ERC165, IVersionableResolver {\n    mapping(bytes32 => uint64) public recordVersions;\n\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\n\n    modifier authorised(bytes32 node) {\n        require(isAuthorised(node));\n        _;\n    }\n\n    /**\n     * Increments the record version associated with an ENS node.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     */\n    function clearRecords(bytes32 node) public virtual authorised(node) {\n        recordVersions[node]++;\n        emit VersionChanged(node, recordVersions[node]);\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IVersionableResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/profiles/IAddrResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\n/**\n * Interface for the legacy (ETH-only) addr function.\n */\ninterface IAddrResolver {\n    event AddrChanged(bytes32 indexed node, address a);\n\n    /**\n     * Returns the address associated with an ENS node.\n     * @param node The ENS node to query.\n     * @return The associated address.\n     */\n    function addr(bytes32 node) external view returns (address payable);\n}\n"
      },
      "contracts/resolvers/profiles/IAddressResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\n/**\n * Interface for the new (multicoin) addr function.\n */\ninterface IAddressResolver {\n    event AddressChanged(\n        bytes32 indexed node,\n        uint256 coinType,\n        bytes newAddress\n    );\n\n    function addr(bytes32 node, uint256 coinType)\n        external\n        view\n        returns (bytes memory);\n}\n"
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"
      },
      "contracts/resolvers/profiles/IVersionableResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\ninterface IVersionableResolver {\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\n\n    function recordVersions(bytes32 node) external view returns (uint64);\n}\n"
      },
      "contracts/dnssec-oracle/DNSSECImpl.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\npragma experimental ABIEncoderV2;\n\nimport \"./Owned.sol\";\nimport \"./BytesUtils.sol\";\nimport \"./RRUtils.sol\";\nimport \"./DNSSEC.sol\";\nimport \"./algorithms/Algorithm.sol\";\nimport \"./digests/Digest.sol\";\nimport \"@ensdomains/buffer/contracts/Buffer.sol\";\n\n/*\n * @dev An oracle contract that verifies and stores DNSSEC-validated DNS records.\n */\ncontract DNSSECImpl is DNSSEC, Owned {\n    using Buffer for Buffer.buffer;\n    using BytesUtils for bytes;\n    using RRUtils for *;\n\n    uint16 constant DNSCLASS_IN = 1;\n\n    uint16 constant DNSTYPE_DS = 43;\n    uint16 constant DNSTYPE_DNSKEY = 48;\n\n    uint256 constant DNSKEY_FLAG_ZONEKEY = 0x100;\n\n    error InvalidLabelCount(bytes name, uint256 labelsExpected);\n    error SignatureNotValidYet(uint32 inception, uint32 now);\n    error SignatureExpired(uint32 expiration, uint32 now);\n    error InvalidClass(uint16 class);\n    error InvalidRRSet();\n    error SignatureTypeMismatch(uint16 rrsetType, uint16 sigType);\n    error InvalidSignerName(bytes rrsetName, bytes signerName);\n    error InvalidProofType(uint16 proofType);\n    error ProofNameMismatch(bytes signerName, bytes proofName);\n    error NoMatchingProof(bytes signerName);\n\n    mapping(uint8 => Algorithm) public algorithms;\n    mapping(uint8 => Digest) public digests;\n\n    /**\n     * @dev Constructor.\n     * @param _anchors The binary format RR entries for the root DS records.\n     */\n    constructor(bytes memory _anchors) {\n        // Insert the 'trust anchors' - the key hashes that start the chain\n        // of trust for all other records.\n        anchors = _anchors;\n    }\n\n    /**\n     * @dev Sets the contract address for a signature verification algorithm.\n     *      Callable only by the owner.\n     * @param id The algorithm ID\n     * @param algo The address of the algorithm contract.\n     */\n    function setAlgorithm(uint8 id, Algorithm algo) public owner_only {\n        algorithms[id] = algo;\n        emit AlgorithmUpdated(id, address(algo));\n    }\n\n    /**\n     * @dev Sets the contract address for a digest verification algorithm.\n     *      Callable only by the owner.\n     * @param id The digest ID\n     * @param digest The address of the digest contract.\n     */\n    function setDigest(uint8 id, Digest digest) public owner_only {\n        digests[id] = digest;\n        emit DigestUpdated(id, address(digest));\n    }\n\n    /**\n     * @dev Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.\n     *      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.\n     * @param input A list of signed RRSets.\n     * @return rrs The RRData from the last RRSet in the chain.\n     * @return inception The inception time of the signed record set.\n     */\n    function verifyRRSet(RRSetWithSignature[] memory input)\n        external\n        view\n        virtual\n        override\n        returns (bytes memory rrs, uint32 inception)\n    {\n        return verifyRRSet(input, block.timestamp);\n    }\n\n    /**\n     * @dev Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.\n     *      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.\n     * @param input A list of signed RRSets.\n     * @param now The Unix timestamp to validate the records at.\n     * @return rrs The RRData from the last RRSet in the chain.\n     * @return inception The inception time of the signed record set.\n     */\n    function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\n        public\n        view\n        virtual\n        override\n        returns (bytes memory rrs, uint32 inception)\n    {\n        bytes memory proof = anchors;\n        for (uint256 i = 0; i < input.length; i++) {\n            RRUtils.SignedSet memory rrset = validateSignedSet(\n                input[i],\n                proof,\n                now\n            );\n            proof = rrset.data;\n            inception = rrset.inception;\n        }\n        return (proof, inception);\n    }\n\n    /**\n     * @dev Validates an RRSet against the already trusted RR provided in `proof`.\n     *\n     * @param input The signed RR set. This is in the format described in section\n     *        5.3.2 of RFC4035: The RRDATA section from the RRSIG without the signature\n     *        data, followed by a series of canonicalised RR records that the signature\n     *        applies to.\n     * @param proof The DNSKEY or DS to validate the signature against.\n     * @param now The current timestamp.\n     */\n    function validateSignedSet(\n        RRSetWithSignature memory input,\n        bytes memory proof,\n        uint256 now\n    ) internal view returns (RRUtils.SignedSet memory rrset) {\n        rrset = input.rrset.readSignedSet();\n\n        // Do some basic checks on the RRs and extract the name\n        bytes memory name = validateRRs(rrset, rrset.typeCovered);\n        if (name.labelCount(0) != rrset.labels) {\n            revert InvalidLabelCount(name, rrset.labels);\n        }\n        rrset.name = name;\n\n        // All comparisons involving the Signature Expiration and\n        // Inception fields MUST use \"serial number arithmetic\", as\n        // defined in RFC 1982\n\n        // o  The validator's notion of the current time MUST be less than or\n        //    equal to the time listed in the RRSIG RR's Expiration field.\n        if (!RRUtils.serialNumberGte(rrset.expiration, uint32(now))) {\n            revert SignatureExpired(rrset.expiration, uint32(now));\n        }\n\n        // o  The validator's notion of the current time MUST be greater than or\n        //    equal to the time listed in the RRSIG RR's Inception field.\n        if (!RRUtils.serialNumberGte(uint32(now), rrset.inception)) {\n            revert SignatureNotValidYet(rrset.inception, uint32(now));\n        }\n\n        // Validate the signature\n        verifySignature(name, rrset, input, proof);\n\n        return rrset;\n    }\n\n    /**\n     * @dev Validates a set of RRs.\n     * @param rrset The RR set.\n     * @param typecovered The type covered by the RRSIG record.\n     */\n    function validateRRs(RRUtils.SignedSet memory rrset, uint16 typecovered)\n        internal\n        pure\n        returns (bytes memory name)\n    {\n        // Iterate over all the RRs\n        for (\n            RRUtils.RRIterator memory iter = rrset.rrs();\n            !iter.done();\n            iter.next()\n        ) {\n            // We only support class IN (Internet)\n            if (iter.class != DNSCLASS_IN) {\n                revert InvalidClass(iter.class);\n            }\n\n            if (name.length == 0) {\n                name = iter.name();\n            } else {\n                // Name must be the same on all RRs. We do things this way to avoid copying the name\n                // repeatedly.\n                if (\n                    name.length != iter.data.nameLength(iter.offset) ||\n                    !name.equals(0, iter.data, iter.offset, name.length)\n                ) {\n                    revert InvalidRRSet();\n                }\n            }\n\n            // o  The RRSIG RR's Type Covered field MUST equal the RRset's type.\n            if (iter.dnstype != typecovered) {\n                revert SignatureTypeMismatch(iter.dnstype, typecovered);\n            }\n        }\n    }\n\n    /**\n     * @dev Performs signature verification.\n     *\n     * Throws or reverts if unable to verify the record.\n     *\n     * @param name The name of the RRSIG record, in DNS label-sequence format.\n     * @param data The original data to verify.\n     * @param proof A DS or DNSKEY record that's already verified by the oracle.\n     */\n    function verifySignature(\n        bytes memory name,\n        RRUtils.SignedSet memory rrset,\n        RRSetWithSignature memory data,\n        bytes memory proof\n    ) internal view {\n        // o  The RRSIG RR's Signer's Name field MUST be the name of the zone\n        //    that contains the RRset.\n        if (\n            rrset.signerName.length > name.length ||\n            !rrset.signerName.equals(\n                0,\n                name,\n                name.length - rrset.signerName.length\n            )\n        ) {\n            revert InvalidSignerName(name, rrset.signerName);\n        }\n\n        RRUtils.RRIterator memory proofRR = proof.iterateRRs(0);\n        // Check the proof\n        if (proofRR.dnstype == DNSTYPE_DS) {\n            verifyWithDS(rrset, data, proofRR);\n        } else if (proofRR.dnstype == DNSTYPE_DNSKEY) {\n            verifyWithKnownKey(rrset, data, proofRR);\n        } else {\n            revert InvalidProofType(proofRR.dnstype);\n        }\n    }\n\n    /**\n     * @dev Attempts to verify a signed RRSET against an already known public key.\n     * @param rrset The signed set to verify.\n     * @param data The original data the signed set was read from.\n     * @param proof The serialized DS or DNSKEY record to use as proof.\n     */\n    function verifyWithKnownKey(\n        RRUtils.SignedSet memory rrset,\n        RRSetWithSignature memory data,\n        RRUtils.RRIterator memory proof\n    ) internal view {\n        // Check the DNSKEY's owner name matches the signer name on the RRSIG\n        for (; !proof.done(); proof.next()) {\n            bytes memory proofName = proof.name();\n            if (!proofName.equals(rrset.signerName)) {\n                revert ProofNameMismatch(rrset.signerName, proofName);\n            }\n\n            bytes memory keyrdata = proof.rdata();\n            RRUtils.DNSKEY memory dnskey = keyrdata.readDNSKEY(\n                0,\n                keyrdata.length\n            );\n            if (verifySignatureWithKey(dnskey, keyrdata, rrset, data)) {\n                return;\n            }\n        }\n        revert NoMatchingProof(rrset.signerName);\n    }\n\n    /**\n     * @dev Attempts to verify some data using a provided key and a signature.\n     * @param dnskey The dns key record to verify the signature with.\n     * @param rrset The signed RRSET being verified.\n     * @param data The original data `rrset` was decoded from.\n     * @return True iff the key verifies the signature.\n     */\n    function verifySignatureWithKey(\n        RRUtils.DNSKEY memory dnskey,\n        bytes memory keyrdata,\n        RRUtils.SignedSet memory rrset,\n        RRSetWithSignature memory data\n    ) internal view returns (bool) {\n        // TODO: Check key isn't expired, unless updating key itself\n\n        // The Protocol Field MUST have value 3 (RFC4034 2.1.2)\n        if (dnskey.protocol != 3) {\n            return false;\n        }\n\n        // o The RRSIG RR's Signer's Name, Algorithm, and Key Tag fields MUST\n        //   match the owner name, algorithm, and key tag for some DNSKEY RR in\n        //   the zone's apex DNSKEY RRset.\n        if (dnskey.algorithm != rrset.algorithm) {\n            return false;\n        }\n        uint16 computedkeytag = keyrdata.computeKeytag();\n        if (computedkeytag != rrset.keytag) {\n            return false;\n        }\n\n        // o The matching DNSKEY RR MUST be present in the zone's apex DNSKEY\n        //   RRset, and MUST have the Zone Flag bit (DNSKEY RDATA Flag bit 7)\n        //   set.\n        if (dnskey.flags & DNSKEY_FLAG_ZONEKEY == 0) {\n            return false;\n        }\n\n        return\n            algorithms[dnskey.algorithm].verify(keyrdata, data.rrset, data.sig);\n    }\n\n    /**\n     * @dev Attempts to verify a signed RRSET against an already known hash. This function assumes\n     *      that the record\n     * @param rrset The signed set to verify.\n     * @param data The original data the signed set was read from.\n     * @param proof The serialized DS or DNSKEY record to use as proof.\n     */\n    function verifyWithDS(\n        RRUtils.SignedSet memory rrset,\n        RRSetWithSignature memory data,\n        RRUtils.RRIterator memory proof\n    ) internal view {\n        for (\n            RRUtils.RRIterator memory iter = rrset.rrs();\n            !iter.done();\n            iter.next()\n        ) {\n            if (iter.dnstype != DNSTYPE_DNSKEY) {\n                revert InvalidProofType(iter.dnstype);\n            }\n\n            bytes memory keyrdata = iter.rdata();\n            RRUtils.DNSKEY memory dnskey = keyrdata.readDNSKEY(\n                0,\n                keyrdata.length\n            );\n            if (verifySignatureWithKey(dnskey, keyrdata, rrset, data)) {\n                // It's self-signed - look for a DS record to verify it.\n                if (\n                    verifyKeyWithDS(rrset.signerName, proof, dnskey, keyrdata)\n                ) {\n                    return;\n                }\n            }\n        }\n        revert NoMatchingProof(rrset.signerName);\n    }\n\n    /**\n     * @dev Attempts to verify a key using DS records.\n     * @param keyname The DNS name of the key, in DNS label-sequence format.\n     * @param dsrrs The DS records to use in verification.\n     * @param dnskey The dnskey to verify.\n     * @param keyrdata The RDATA section of the key.\n     * @return True if a DS record verifies this key.\n     */\n    function verifyKeyWithDS(\n        bytes memory keyname,\n        RRUtils.RRIterator memory dsrrs,\n        RRUtils.DNSKEY memory dnskey,\n        bytes memory keyrdata\n    ) internal view returns (bool) {\n        uint16 keytag = keyrdata.computeKeytag();\n        for (; !dsrrs.done(); dsrrs.next()) {\n            bytes memory proofName = dsrrs.name();\n            if (!proofName.equals(keyname)) {\n                revert ProofNameMismatch(keyname, proofName);\n            }\n\n            RRUtils.DS memory ds = dsrrs.data.readDS(\n                dsrrs.rdataOffset,\n                dsrrs.nextOffset - dsrrs.rdataOffset\n            );\n            if (ds.keytag != keytag) {\n                continue;\n            }\n            if (ds.algorithm != dnskey.algorithm) {\n                continue;\n            }\n\n            Buffer.buffer memory buf;\n            buf.init(keyname.length + keyrdata.length);\n            buf.append(keyname);\n            buf.append(keyrdata);\n            if (verifyDSHash(ds.digestType, buf.buf, ds.digest)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    /**\n     * @dev Attempts to verify a DS record's hash value against some data.\n     * @param digesttype The digest ID from the DS record.\n     * @param data The data to digest.\n     * @param digest The digest data to check against.\n     * @return True iff the digest matches.\n     */\n    function verifyDSHash(\n        uint8 digesttype,\n        bytes memory data,\n        bytes memory digest\n    ) internal view returns (bool) {\n        if (address(digests[digesttype]) == address(0)) {\n            return false;\n        }\n        return digests[digesttype].verify(data, digest);\n    }\n}\n"
      },
      "contracts/dnssec-oracle/Owned.sol": {
        "content": "pragma solidity ^0.8.4;\n\n/**\n * @dev Contract mixin for 'owned' contracts.\n */\ncontract Owned {\n    address public owner;\n\n    modifier owner_only() {\n        require(msg.sender == owner);\n        _;\n    }\n\n    constructor() public {\n        owner = msg.sender;\n    }\n\n    function setOwner(address newOwner) public owner_only {\n        owner = newOwner;\n    }\n}\n"
      },
      "contracts/dnssec-oracle/algorithms/Algorithm.sol": {
        "content": "pragma solidity ^0.8.4;\n\n/**\n * @dev An interface for contracts implementing a DNSSEC (signing) algorithm.\n */\ninterface Algorithm {\n    /**\n     * @dev Verifies a signature.\n     * @param key The public key to verify with.\n     * @param data The signed data to verify.\n     * @param signature The signature to verify.\n     * @return True iff the signature is valid.\n     */\n    function verify(\n        bytes calldata key,\n        bytes calldata data,\n        bytes calldata signature\n    ) external view virtual returns (bool);\n}\n"
      },
      "contracts/dnssec-oracle/digests/Digest.sol": {
        "content": "pragma solidity ^0.8.4;\n\n/**\n * @dev An interface for contracts implementing a DNSSEC digest.\n */\ninterface Digest {\n    /**\n     * @dev Verifies a cryptographic hash.\n     * @param data The data to hash.\n     * @param hash The hash to compare to.\n     * @return True iff the hashed data matches the provided hash value.\n     */\n    function verify(bytes calldata data, bytes calldata hash)\n        external\n        pure\n        virtual\n        returns (bool);\n}\n"
      },
      "test/dnssec-oracle/TestRRUtils.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"../../contracts/dnssec-oracle/RRUtils.sol\";\nimport \"../../contracts/dnssec-oracle/BytesUtils.sol\";\n\ncontract TestRRUtils {\n  using BytesUtils for *;\n  using RRUtils for *;\n\n  uint16 constant DNSTYPE_A = 1;\n  uint16 constant DNSTYPE_CNAME = 5;\n  uint16 constant DNSTYPE_MX = 15;\n  uint16 constant DNSTYPE_TEXT = 16;\n  uint16 constant DNSTYPE_RRSIG = 46;\n  uint16 constant DNSTYPE_TYPE1234 = 1234;\n\n  function testNameLength() public pure {\n    require(hex'00'.nameLength(0) == 1, \"nameLength('.') == 1\");\n    require(hex'0361626300'.nameLength(4) == 1, \"nameLength('.') == 1\");\n    require(hex'0361626300'.nameLength(0) == 5, \"nameLength('abc.') == 5\");\n  }\n\n  function testLabelCount() public pure {\n    require(hex'00'.labelCount(0) == 0, \"labelCount('.') == 0\");\n    require(hex'016100'.labelCount(0) == 1, \"labelCount('a.') == 1\");\n    require(hex'016201610000'.labelCount(0) == 2, \"labelCount('b.a.') == 2\");\n    require(hex'066574686c61620378797a00'.labelCount(6 +1) == 1, \"nameLength('(bthlab).xyz.') == 6\");\n  }\n\n  function testIterateRRs() public pure {\n    // a. IN A 3600 127.0.0.1\n    // b.a. IN A 3600 192.168.1.1\n    bytes memory rrs = hex'0161000001000100000e1000047400000101620161000001000100000e100004c0a80101';\n    bytes[2] memory names = [bytes(hex'016100'), bytes(hex'0162016100')];\n    bytes[2] memory rdatas = [bytes(hex'74000001'), bytes(hex'c0a80101')];\n    uint i = 0;\n    for(RRUtils.RRIterator memory iter = rrs.iterateRRs(0); !iter.done(); iter.next()) {\n      require(uint(iter.dnstype) == 1, \"Type matches\");\n      require(uint(iter.class) == 1, \"Class matches\");\n      require(uint(iter.ttl) == 3600, \"TTL matches\");\n      require(keccak256(iter.name()) == keccak256(names[i]), \"Name matches\");\n      require(keccak256(iter.rdata()) == keccak256(rdatas[i]), \"Rdata matches\");\n      i++;\n    }\n    require(i == 2, \"Expected 2 records\");\n  }\n\n  // Canonical ordering https://tools.ietf.org/html/rfc4034#section-6.1\n  function testCompareNames() public pure {\n    bytes memory bthLabXyz = hex'066274686c61620378797a00';\n    bytes memory ethLabXyz = hex'066574686c61620378797a00';\n    bytes memory xyz = hex'0378797a00';\n    bytes memory a_b_c  = hex'01610162016300';\n    bytes memory b_b_c  = hex'01620162016300';\n    bytes memory c      = hex'016300';\n    bytes memory d      = hex'016400';\n    bytes memory a_d_c  = hex'01610164016300';\n    bytes memory b_a_c  = hex'01620161016300';\n    bytes memory ab_c_d = hex'0261620163016400';\n    bytes memory a_c_d  = hex'01610163016400';\n\n    require(hex'0301616100'.compareNames(hex'0302616200') <  0,  \"label lengths are correctly checked\");\n    require(a_b_c.compareNames(c)      >  0,  \"one name has a difference of >1 label to with the same root name\");\n    require(a_b_c.compareNames(d)      <  0, \"one name has a difference of >1 label to with different root name\");\n    require(a_b_c.compareNames(a_d_c)  <  0, \"two names start the same but have differences in later labels\");\n    require(a_b_c.compareNames(b_a_c)  >  0, \"the first label sorts later, but the first label sorts earlier\");\n    require(ab_c_d.compareNames(a_c_d) >  0, \"two names where the first label on one is a prefix of the first label on the other\");\n    require(a_b_c.compareNames(b_b_c)  <  0, \"two names where the first label on one is a prefix of the first label on the other\");\n    require(xyz.compareNames(ethLabXyz) < 0, \"xyz comes before ethLab.xyz\");\n    require(bthLabXyz.compareNames(ethLabXyz) < 0, \"bthLab.xyz comes before ethLab.xyz\");\n    require(bthLabXyz.compareNames(bthLabXyz) == 0, \"bthLab.xyz and bthLab.xyz are the same\");\n    require(ethLabXyz.compareNames(bthLabXyz) >  0, \"ethLab.xyz comes after bethLab.xyz\");\n    require(bthLabXyz.compareNames(xyz)       >  0, \"bthLab.xyz comes after xyz\");\n  }\n\n  function testSerialNumberGt() public pure {\n    require(RRUtils.serialNumberGte(1, 0), \"1 >= 0\");\n    require(!RRUtils.serialNumberGte(0, 1), \"!(0 <= 1)\");\n    require(RRUtils.serialNumberGte(0, 0xFFFFFFFF), \"0 >= 0xFFFFFFFF\");\n    require(!RRUtils.serialNumberGte(0xFFFFFFFF, 0), \"!(0 <= 0xFFFFFFFF)\");\n    require(RRUtils.serialNumberGte(0x11111111, 0xAAAAAAAA), \"0x11111111 >= 0xAAAAAAAA\");\n    require(RRUtils.serialNumberGte(1, 1), \"1 >= 1\");\n  }\n\n  function testKeyTag() public view {\n    require(hex'0101030803010001a80020a95566ba42e886bb804cda84e47ef56dbd7aec612615552cec906d2116d0ef207028c51554144dfeafe7c7cb8f005dd18234133ac0710a81182ce1fd14ad2283bc83435f9df2f6313251931a176df0da51e54f42e604860dfb359580250f559cc543c4ffd51cbe3de8cfd06719237f9fc47ee729da06835fa452e825e9a18ebc2ecbcf563474652c33cf56a9033bcdf5d973121797ec8089041b6e03a1b72d0a735b984e03687309332324f27c2dba85e9db15e83a0143382e974b0621c18e625ecec907577d9e7bade95241a81ebbe8a901d4d3276e40b114c0a2e6fc38d19c2e6aab02644b2813f575fc21601e0dee49cd9ee96a43103e524d62873d'.computeKeytag() == 19036, \"Invalid keytag\");\n    require(hex'010003050440000003ba2fa05a75e173bede89eb71831ab14035f2408ad09df4d8dc8f8f72e8f13506feaddf7b04cb14958b82966e3420562302c4002bc4fd088432e160519bb14dae82443850c1423e06085710b5caf070d46b7ba7e481414f6a5fe225fdca984c959091645d0cf1c9a1a313d7e7fb7ba60b967b71a65f8cef2c3768e11b081c8fcf'.computeKeytag() == 21693, \"Invalid keytag (2)\");\n    require(hex'0100030503010001bfa54c38d909fabb0f937d70d775ba0df4c0badb09707d995249406950407a621c794c68b186b15dbf8f9f9ea231e9f96414ccda4eceb50b17a9ac6c4bd4b95da04849e96ee791578b703bc9ae184fb1794bac792a0787f693a40f19f523ee6dbd3599dbaaa9a50437926ecf6438845d1d49448962524f2a1a7a36b3a0a1eca3'.computeKeytag() == 33630);\n    require(hex'0101030803010001acffb409bcc939f831f7a1e5ec88f7a59255ec53040be432027390a4ce896d6f9086f3c5e177fbfe118163aaec7af1462c47945944c4e2c026be5e98bbcded25978272e1e3e079c5094d573f0e83c92f02b32d3513b1550b826929c80dd0f92cac966d17769fd5867b647c3f38029abdc48152eb8f207159ecc5d232c7c1537c79f4b7ac28ff11682f21681bf6d6aba555032bf6f9f036beb2aaa5b3778d6eebfba6bf9ea191be4ab0caea759e2f773a1f9029c73ecb8d5735b9321db085f1b8e2d8038fe2941992548cee0d67dd4547e11dd63af9c9fc1c5466fb684cf009d7197c2cf79e792ab501e6a8a1ca519af2cb9b5f6367e94c0d47502451357be1b5'.computeKeytag() == 20326, \"Invalid keytag (3)\");\n  }\n}"
      },
      "test/dnssec-oracle/TestBytesUtils.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"../../contracts/dnssec-oracle/RRUtils.sol\";\nimport \"../../contracts/dnssec-oracle/BytesUtils.sol\";\n\ncontract TestBytesUtils {\n  using BytesUtils for *;\n\n  function testKeccak() public pure {\n    require(\"\".keccak(0, 0) == bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470), \"Incorrect hash of empty string\");\n    require(\"foo\".keccak(0, 3) == bytes32(0x41b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d), \"Incorrect hash of 'foo'\");\n    require(\"foo\".keccak(0, 0) == bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470), \"Incorrect hash of empty string\");\n  }\n\n  function testEquals() public pure {\n    require(\"hello\".equals(\"hello\") == true, \"String equality\");\n    require(\"hello\".equals(\"goodbye\") == false, \"String inequality\");\n    require(\"hello\".equals(1, \"ello\") == true, \"Substring to string equality\");\n    require(\"hello\".equals(1, \"jello\", 1, 4) == true, \"Substring to substring equality\");\n    require(\"zhello\".equals(1, \"abchello\", 3) == true,   \"Compare different value with multiple length\");\n  }\n\n  function testComparePartial() public pure {\n    require(\"xax\".compare(1, 1, \"xxbxx\", 2, 1)   < 0 == true,  \"Compare same length\");\n    require(\"xax\".compare(1, 1, \"xxabxx\", 2, 2)  < 0 == true,  \"Compare different length\");\n    require(\"xax\".compare(1, 1, \"xxaxx\", 2, 1)  == 0 == true,  \"Compare same with different offset\");\n  }\n\n  function testCompare() public pure {\n    require(\"a\".compare(\"a\")  == 0 == true,  \"Compare equal\");\n    require(\"a\".compare(\"b\")   < 0 == true,   \"Compare different value with same length\");\n    require(\"b\".compare(\"a\")   > 0 == true,   \"Compare different value with same length\");\n    require(\"aa\".compare(\"ab\") < 0 == true,   \"Compare different value with multiple length\");\n    require(\"a\".compare(\"aa\")  < 0 == true,   \"Compare different value with different length\");\n    require(\"aa\".compare(\"a\")  > 0 == true,   \"Compare different value with different length\");\n    bytes memory longChar = \"1234567890123456789012345678901234\";\n    require(longChar.compare(longChar) == 0 == true,   \"Compares more than 32 bytes char\");\n    bytes memory otherLongChar = \"2234567890123456789012345678901234\";\n    require(longChar.compare(otherLongChar) < 0 == true,   \"Compare long char with difference at start\");\n  }\n\n  function testSubstring() public pure {\n    require(keccak256(bytes(\"hello\".substring(0, 0))) == keccak256(bytes(\"\")), \"Copy 0 bytes\");\n    require(keccak256(bytes(\"hello\".substring(0, 4))) == keccak256(bytes(\"hell\")), \"Copy substring\");\n    require(keccak256(bytes(\"hello\".substring(1, 4))) == keccak256(bytes(\"ello\")), \"Copy substring\");\n    require(keccak256(bytes(\"hello\".substring(0, 5))) == keccak256(bytes(\"hello\")), \"Copy whole string\");\n  }\n\n  function testReadUint8() public pure {\n    require(uint(\"a\".readUint8(0)) == 0x61, \"a == 0x61\");\n    require(uint(\"ba\".readUint8(1)) == 0x61, \"a == 0x61\");\n  }\n\n  function testReadUint16() public pure {\n    require(uint(\"abc\".readUint16(1)) == 0x6263, \"Read uint 16\");\n  }\n\n  function testReadUint32() public pure {\n    require(uint(\"abcde\".readUint32(1)) == 0x62636465, \"Read uint 32\");\n  }\n\n  function testReadBytes20() public pure {\n    require(bytes32(\"abcdefghijklmnopqrstuv\".readBytes20(1)) == bytes32(0x62636465666768696a6b6c6d6e6f707172737475000000000000000000000000), \"readBytes20\");\n  }\n\n  function testReadBytes32() public pure {\n    require(\"0123456789abcdef0123456789abcdef\".readBytes32(0) == bytes32(0x3031323334353637383961626364656630313233343536373839616263646566), \"readBytes32\");\n  }\n\n  function testBase32HexDecodeWord() public pure {\n    require(\"C4\".base32HexDecodeWord(0, 2) == bytes32(bytes1(\"a\")), \"Decode 'a'\");\n    require(\"C5GG\".base32HexDecodeWord(0, 4) == bytes32(bytes2(\"aa\")), \"Decode 'aa'\");\n    require(\"C5GM2\".base32HexDecodeWord(0, 5) == bytes32(bytes3(\"aaa\")), \"Decode 'aaa'\");\n    require(\"C5GM2O8\".base32HexDecodeWord(0, 7) == bytes32(bytes4(\"aaaa\")), \"Decode 'aaaa'\");\n    require(\"C5GM2OB1\".base32HexDecodeWord(0, 8) == bytes32(bytes5(\"aaaaa\")), \"Decode 'aaaaa'\");\n    require(\"c5gm2Ob1\".base32HexDecodeWord(0, 8) == bytes32(bytes5(\"aaaaa\")), \"Decode 'aaaaa' lowercase\");\n    require(\"C5H66P35CPJMGQBADDM6QRJFE1ON4SRKELR7EU3PF8\".base32HexDecodeWord(0, 42) == bytes32(bytes26(\"abcdefghijklmnopqrstuvwxyz\")), \"Decode alphabet\");\n    require(\"c5h66p35cpjmgqbaddm6qrjfe1on4srkelr7eu3pf8\".base32HexDecodeWord(0, 42) == bytes32(bytes26(\"abcdefghijklmnopqrstuvwxyz\")), \"Decode alphabet lowercase\");\n    require(\"C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GG\".base32HexDecodeWord(0, 52) == bytes32(\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"), \"Decode 32*'a'\");\n    require(\" bst4hlje7r0o8c8p4o8q582lm0ejmiqt\\x07matoken\\x03xyz\\x00\".base32HexDecodeWord(1, 32) == bytes32(hex\"5f3a48d66e3ec18431192611a2a055b01d3b4b5d\"), \"Decode real bytes32hex\");\n  }\n}"
      },
      "contracts/dnssec-oracle/digests/SHA256Digest.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"./Digest.sol\";\nimport \"../BytesUtils.sol\";\n\n/**\n * @dev Implements the DNSSEC SHA256 digest.\n */\ncontract SHA256Digest is Digest {\n    using BytesUtils for *;\n\n    function verify(bytes calldata data, bytes calldata hash)\n        external\n        pure\n        override\n        returns (bool)\n    {\n        require(hash.length == 32, \"Invalid sha256 hash length\");\n        return sha256(data) == hash.readBytes32(0);\n    }\n}\n"
      },
      "contracts/dnssec-oracle/digests/SHA1Digest.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"./Digest.sol\";\nimport \"../BytesUtils.sol\";\nimport \"@ensdomains/solsha1/contracts/SHA1.sol\";\n\n/**\n * @dev Implements the DNSSEC SHA1 digest.\n */\ncontract SHA1Digest is Digest {\n    using BytesUtils for *;\n\n    function verify(bytes calldata data, bytes calldata hash)\n        external\n        pure\n        override\n        returns (bool)\n    {\n        require(hash.length == 20, \"Invalid sha1 hash length\");\n        bytes32 expected = hash.readBytes20(0);\n        bytes20 computed = SHA1.sha1(data);\n        return expected == computed;\n    }\n}\n"
      },
      "@ensdomains/solsha1/contracts/SHA1.sol": {
        "content": "pragma solidity ^0.8.4;\n\nlibrary SHA1 {\n    event Debug(bytes32 x);\n\n    function sha1(bytes memory data) internal pure returns(bytes20 ret) {\n        assembly {\n            // Get a safe scratch location\n            let scratch := mload(0x40)\n\n            // Get the data length, and point data at the first byte\n            let len := mload(data)\n            data := add(data, 32)\n\n            // Find the length after padding\n            let totallen := add(and(add(len, 1), 0xFFFFFFFFFFFFFFC0), 64)\n            switch lt(sub(totallen, len), 9)\n            case 1 { totallen := add(totallen, 64) }\n\n            let h := 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0\n\n            function readword(ptr, off, count) -> result {\n                result := 0\n                if lt(off, count) {\n                    result := mload(add(ptr, off))\n                    count := sub(count, off)\n                    if lt(count, 32) {\n                        let mask := not(sub(exp(256, sub(32, count)), 1))\n                        result := and(result, mask)\n                    }\n                }\n            }\n\n            for { let i := 0 } lt(i, totallen) { i := add(i, 64) } {\n                mstore(scratch, readword(data, i, len))\n                mstore(add(scratch, 32), readword(data, add(i, 32), len))\n\n                // If we loaded the last byte, store the terminator byte\n                switch lt(sub(len, i), 64)\n                case 1 { mstore8(add(scratch, sub(len, i)), 0x80) }\n\n                // If this is the last block, store the length\n                switch eq(i, sub(totallen, 64))\n                case 1 { mstore(add(scratch, 32), or(mload(add(scratch, 32)), mul(len, 8))) }\n\n                // Expand the 16 32-bit words into 80\n                for { let j := 64 } lt(j, 128) { j := add(j, 12) } {\n                    let temp := xor(xor(mload(add(scratch, sub(j, 12))), mload(add(scratch, sub(j, 32)))), xor(mload(add(scratch, sub(j, 56))), mload(add(scratch, sub(j, 64)))))\n                    temp := or(and(mul(temp, 2), 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE), and(div(temp, 0x80000000), 0x0000000100000001000000010000000100000001000000010000000100000001))\n                    mstore(add(scratch, j), temp)\n                }\n                for { let j := 128 } lt(j, 320) { j := add(j, 24) } {\n                    let temp := xor(xor(mload(add(scratch, sub(j, 24))), mload(add(scratch, sub(j, 64)))), xor(mload(add(scratch, sub(j, 112))), mload(add(scratch, sub(j, 128)))))\n                    temp := or(and(mul(temp, 4), 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC), and(div(temp, 0x40000000), 0x0000000300000003000000030000000300000003000000030000000300000003))\n                    mstore(add(scratch, j), temp)\n                }\n\n                let x := h\n                let f := 0\n                let k := 0\n                for { let j := 0 } lt(j, 80) { j := add(j, 1) } {\n                    switch div(j, 20)\n                    case 0 {\n                        // f = d xor (b and (c xor d))\n                        f := xor(div(x, 0x100000000000000000000), div(x, 0x10000000000))\n                        f := and(div(x, 0x1000000000000000000000000000000), f)\n                        f := xor(div(x, 0x10000000000), f)\n                        k := 0x5A827999\n                    }\n                    case 1{\n                        // f = b xor c xor d\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n                        f := xor(div(x, 0x10000000000), f)\n                        k := 0x6ED9EBA1\n                    }\n                    case 2 {\n                        // f = (b and c) or (d and (b or c))\n                        f := or(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n                        f := and(div(x, 0x10000000000), f)\n                        f := or(and(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000)), f)\n                        k := 0x8F1BBCDC\n                    }\n                    case 3 {\n                        // f = b xor c xor d\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n                        f := xor(div(x, 0x10000000000), f)\n                        k := 0xCA62C1D6\n                    }\n                    // temp = (a leftrotate 5) + f + e + k + w[i]\n                    let temp := and(div(x, 0x80000000000000000000000000000000000000000000000), 0x1F)\n                    temp := or(and(div(x, 0x800000000000000000000000000000000000000), 0xFFFFFFE0), temp)\n                    temp := add(f, temp)\n                    temp := add(and(x, 0xFFFFFFFF), temp)\n                    temp := add(k, temp)\n                    temp := add(div(mload(add(scratch, mul(j, 4))), 0x100000000000000000000000000000000000000000000000000000000), temp)\n                    x := or(div(x, 0x10000000000), mul(temp, 0x10000000000000000000000000000000000000000))\n                    x := or(and(x, 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF), mul(or(and(div(x, 0x4000000000000), 0xC0000000), and(div(x, 0x400000000000000000000), 0x3FFFFFFF)), 0x100000000000000000000))\n                }\n\n                h := and(add(h, x), 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF)\n            }\n            ret := mul(or(or(or(or(and(div(h, 0x100000000), 0xFFFFFFFF00000000000000000000000000000000), and(div(h, 0x1000000), 0xFFFFFFFF000000000000000000000000)), and(div(h, 0x10000), 0xFFFFFFFF0000000000000000)), and(div(h, 0x100), 0xFFFFFFFF00000000)), and(h, 0xFFFFFFFF)), 0x1000000000000000000000000)\n        }\n    }\n}\n"
      },
      "contracts/dnssec-oracle/algorithms/RSASHA1Algorithm.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"./Algorithm.sol\";\nimport \"../BytesUtils.sol\";\nimport \"./RSAVerify.sol\";\nimport \"@ensdomains/solsha1/contracts/SHA1.sol\";\n\n/**\n * @dev Implements the DNSSEC RSASHA1 algorithm.\n */\ncontract RSASHA1Algorithm is Algorithm {\n    using BytesUtils for *;\n\n    function verify(\n        bytes calldata key,\n        bytes calldata data,\n        bytes calldata sig\n    ) external view override returns (bool) {\n        bytes memory exponent;\n        bytes memory modulus;\n\n        uint16 exponentLen = uint16(key.readUint8(4));\n        if (exponentLen != 0) {\n            exponent = key.substring(5, exponentLen);\n            modulus = key.substring(\n                exponentLen + 5,\n                key.length - exponentLen - 5\n            );\n        } else {\n            exponentLen = key.readUint16(5);\n            exponent = key.substring(7, exponentLen);\n            modulus = key.substring(\n                exponentLen + 7,\n                key.length - exponentLen - 7\n            );\n        }\n\n        // Recover the message from the signature\n        bool ok;\n        bytes memory result;\n        (ok, result) = RSAVerify.rsarecover(modulus, exponent, sig);\n\n        // Verify it ends with the hash of our data\n        return ok && SHA1.sha1(data) == result.readBytes20(result.length - 20);\n    }\n}\n"
      },
      "contracts/dnssec-oracle/algorithms/RSAVerify.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"../BytesUtils.sol\";\nimport \"./ModexpPrecompile.sol\";\n\nlibrary RSAVerify {\n    /**\n     * @dev Recovers the input data from an RSA signature, returning the result in S.\n     * @param N The RSA public modulus.\n     * @param E The RSA public exponent.\n     * @param S The signature to recover.\n     * @return True if the recovery succeeded.\n     */\n    function rsarecover(\n        bytes memory N,\n        bytes memory E,\n        bytes memory S\n    ) internal view returns (bool, bytes memory) {\n        return ModexpPrecompile.modexp(S, E, N);\n    }\n}\n"
      },
      "contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol": {
        "content": "pragma solidity ^0.8.4;\n\nlibrary ModexpPrecompile {\n    /**\n     * @dev Computes (base ^ exponent) % modulus over big numbers.\n     */\n    function modexp(\n        bytes memory base,\n        bytes memory exponent,\n        bytes memory modulus\n    ) internal view returns (bool success, bytes memory output) {\n        bytes memory input = abi.encodePacked(\n            uint256(base.length),\n            uint256(exponent.length),\n            uint256(modulus.length),\n            base,\n            exponent,\n            modulus\n        );\n\n        output = new bytes(modulus.length);\n\n        assembly {\n            success := staticcall(\n                gas(),\n                5,\n                add(input, 32),\n                mload(input),\n                add(output, 32),\n                mload(modulus)\n            )\n        }\n    }\n}\n"
      },
      "contracts/dnssec-oracle/algorithms/RSASHA256Algorithm.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"./Algorithm.sol\";\nimport \"../BytesUtils.sol\";\nimport \"./RSAVerify.sol\";\n\n/**\n * @dev Implements the DNSSEC RSASHA256 algorithm.\n */\ncontract RSASHA256Algorithm is Algorithm {\n    using BytesUtils for *;\n\n    function verify(\n        bytes calldata key,\n        bytes calldata data,\n        bytes calldata sig\n    ) external view override returns (bool) {\n        bytes memory exponent;\n        bytes memory modulus;\n\n        uint16 exponentLen = uint16(key.readUint8(4));\n        if (exponentLen != 0) {\n            exponent = key.substring(5, exponentLen);\n            modulus = key.substring(\n                exponentLen + 5,\n                key.length - exponentLen - 5\n            );\n        } else {\n            exponentLen = key.readUint16(5);\n            exponent = key.substring(7, exponentLen);\n            modulus = key.substring(\n                exponentLen + 7,\n                key.length - exponentLen - 7\n            );\n        }\n\n        // Recover the message from the signature\n        bool ok;\n        bytes memory result;\n        (ok, result) = RSAVerify.rsarecover(modulus, exponent, sig);\n\n        // Verify it ends with the hash of our data\n        return ok && sha256(data) == result.readBytes32(result.length - 32);\n    }\n}\n"
      },
      "contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"./Algorithm.sol\";\nimport \"./EllipticCurve.sol\";\nimport \"../BytesUtils.sol\";\n\ncontract P256SHA256Algorithm is Algorithm, EllipticCurve {\n    using BytesUtils for *;\n\n    /**\n     * @dev Verifies a signature.\n     * @param key The public key to verify with.\n     * @param data The signed data to verify.\n     * @param signature The signature to verify.\n     * @return True iff the signature is valid.\n     */\n    function verify(\n        bytes calldata key,\n        bytes calldata data,\n        bytes calldata signature\n    ) external view override returns (bool) {\n        return\n            validateSignature(\n                sha256(data),\n                parseSignature(signature),\n                parseKey(key)\n            );\n    }\n\n    function parseSignature(bytes memory data)\n        internal\n        pure\n        returns (uint256[2] memory)\n    {\n        require(data.length == 64, \"Invalid p256 signature length\");\n        return [uint256(data.readBytes32(0)), uint256(data.readBytes32(32))];\n    }\n\n    function parseKey(bytes memory data)\n        internal\n        pure\n        returns (uint256[2] memory)\n    {\n        require(data.length == 68, \"Invalid p256 key length\");\n        return [uint256(data.readBytes32(4)), uint256(data.readBytes32(36))];\n    }\n}\n"
      },
      "contracts/dnssec-oracle/algorithms/EllipticCurve.sol": {
        "content": "pragma solidity ^0.8.4;\n\n/**\n * @title   EllipticCurve\n *\n * @author  Tilman Drerup;\n *\n * @notice  Implements elliptic curve math; Parametrized for SECP256R1.\n *\n *          Includes components of code by Andreas Olofsson, Alexander Vlasov\n *          (https://github.com/BANKEX/CurveArithmetics), and Avi Asayag\n *          (https://github.com/orbs-network/elliptic-curve-solidity)\n *\n *          Source: https://github.com/tdrerup/elliptic-curve-solidity\n *\n * @dev     NOTE: To disambiguate public keys when verifying signatures, activate\n *          condition 'rs[1] > lowSmax' in validateSignature().\n */\ncontract EllipticCurve {\n    // Set parameters for curve.\n    uint256 constant a =\n        0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC;\n    uint256 constant b =\n        0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B;\n    uint256 constant gx =\n        0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296;\n    uint256 constant gy =\n        0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5;\n    uint256 constant p =\n        0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\n    uint256 constant n =\n        0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551;\n\n    uint256 constant lowSmax =\n        0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0;\n\n    /**\n     * @dev Inverse of u in the field of modulo m.\n     */\n    function inverseMod(uint256 u, uint256 m) internal pure returns (uint256) {\n        unchecked {\n            if (u == 0 || u == m || m == 0) return 0;\n            if (u > m) u = u % m;\n\n            int256 t1;\n            int256 t2 = 1;\n            uint256 r1 = m;\n            uint256 r2 = u;\n            uint256 q;\n\n            while (r2 != 0) {\n                q = r1 / r2;\n                (t1, t2, r1, r2) = (t2, t1 - int256(q) * t2, r2, r1 - q * r2);\n            }\n\n            if (t1 < 0) return (m - uint256(-t1));\n\n            return uint256(t1);\n        }\n    }\n\n    /**\n     * @dev Transform affine coordinates into projective coordinates.\n     */\n    function toProjectivePoint(uint256 x0, uint256 y0)\n        internal\n        pure\n        returns (uint256[3] memory P)\n    {\n        P[2] = addmod(0, 1, p);\n        P[0] = mulmod(x0, P[2], p);\n        P[1] = mulmod(y0, P[2], p);\n    }\n\n    /**\n     * @dev Add two points in affine coordinates and return projective point.\n     */\n    function addAndReturnProjectivePoint(\n        uint256 x1,\n        uint256 y1,\n        uint256 x2,\n        uint256 y2\n    ) internal pure returns (uint256[3] memory P) {\n        uint256 x;\n        uint256 y;\n        (x, y) = add(x1, y1, x2, y2);\n        P = toProjectivePoint(x, y);\n    }\n\n    /**\n     * @dev Transform from projective to affine coordinates.\n     */\n    function toAffinePoint(\n        uint256 x0,\n        uint256 y0,\n        uint256 z0\n    ) internal pure returns (uint256 x1, uint256 y1) {\n        uint256 z0Inv;\n        z0Inv = inverseMod(z0, p);\n        x1 = mulmod(x0, z0Inv, p);\n        y1 = mulmod(y0, z0Inv, p);\n    }\n\n    /**\n     * @dev Return the zero curve in projective coordinates.\n     */\n    function zeroProj()\n        internal\n        pure\n        returns (\n            uint256 x,\n            uint256 y,\n            uint256 z\n        )\n    {\n        return (0, 1, 0);\n    }\n\n    /**\n     * @dev Return the zero curve in affine coordinates.\n     */\n    function zeroAffine() internal pure returns (uint256 x, uint256 y) {\n        return (0, 0);\n    }\n\n    /**\n     * @dev Check if the curve is the zero curve.\n     */\n    function isZeroCurve(uint256 x0, uint256 y0)\n        internal\n        pure\n        returns (bool isZero)\n    {\n        if (x0 == 0 && y0 == 0) {\n            return true;\n        }\n        return false;\n    }\n\n    /**\n     * @dev Check if a point in affine coordinates is on the curve.\n     */\n    function isOnCurve(uint256 x, uint256 y) internal pure returns (bool) {\n        if (0 == x || x == p || 0 == y || y == p) {\n            return false;\n        }\n\n        uint256 LHS = mulmod(y, y, p); // y^2\n        uint256 RHS = mulmod(mulmod(x, x, p), x, p); // x^3\n\n        if (a != 0) {\n            RHS = addmod(RHS, mulmod(x, a, p), p); // x^3 + a*x\n        }\n        if (b != 0) {\n            RHS = addmod(RHS, b, p); // x^3 + a*x + b\n        }\n\n        return LHS == RHS;\n    }\n\n    /**\n     * @dev Double an elliptic curve point in projective coordinates. See\n     * https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates\n     */\n    function twiceProj(\n        uint256 x0,\n        uint256 y0,\n        uint256 z0\n    )\n        internal\n        pure\n        returns (\n            uint256 x1,\n            uint256 y1,\n            uint256 z1\n        )\n    {\n        uint256 t;\n        uint256 u;\n        uint256 v;\n        uint256 w;\n\n        if (isZeroCurve(x0, y0)) {\n            return zeroProj();\n        }\n\n        u = mulmod(y0, z0, p);\n        u = mulmod(u, 2, p);\n\n        v = mulmod(u, x0, p);\n        v = mulmod(v, y0, p);\n        v = mulmod(v, 2, p);\n\n        x0 = mulmod(x0, x0, p);\n        t = mulmod(x0, 3, p);\n\n        z0 = mulmod(z0, z0, p);\n        z0 = mulmod(z0, a, p);\n        t = addmod(t, z0, p);\n\n        w = mulmod(t, t, p);\n        x0 = mulmod(2, v, p);\n        w = addmod(w, p - x0, p);\n\n        x0 = addmod(v, p - w, p);\n        x0 = mulmod(t, x0, p);\n        y0 = mulmod(y0, u, p);\n        y0 = mulmod(y0, y0, p);\n        y0 = mulmod(2, y0, p);\n        y1 = addmod(x0, p - y0, p);\n\n        x1 = mulmod(u, w, p);\n\n        z1 = mulmod(u, u, p);\n        z1 = mulmod(z1, u, p);\n    }\n\n    /**\n     * @dev Add two elliptic curve points in projective coordinates. See\n     * https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates\n     */\n    function addProj(\n        uint256 x0,\n        uint256 y0,\n        uint256 z0,\n        uint256 x1,\n        uint256 y1,\n        uint256 z1\n    )\n        internal\n        pure\n        returns (\n            uint256 x2,\n            uint256 y2,\n            uint256 z2\n        )\n    {\n        uint256 t0;\n        uint256 t1;\n        uint256 u0;\n        uint256 u1;\n\n        if (isZeroCurve(x0, y0)) {\n            return (x1, y1, z1);\n        } else if (isZeroCurve(x1, y1)) {\n            return (x0, y0, z0);\n        }\n\n        t0 = mulmod(y0, z1, p);\n        t1 = mulmod(y1, z0, p);\n\n        u0 = mulmod(x0, z1, p);\n        u1 = mulmod(x1, z0, p);\n\n        if (u0 == u1) {\n            if (t0 == t1) {\n                return twiceProj(x0, y0, z0);\n            } else {\n                return zeroProj();\n            }\n        }\n\n        (x2, y2, z2) = addProj2(mulmod(z0, z1, p), u0, u1, t1, t0);\n    }\n\n    /**\n     * @dev Helper function that splits addProj to avoid too many local variables.\n     */\n    function addProj2(\n        uint256 v,\n        uint256 u0,\n        uint256 u1,\n        uint256 t1,\n        uint256 t0\n    )\n        private\n        pure\n        returns (\n            uint256 x2,\n            uint256 y2,\n            uint256 z2\n        )\n    {\n        uint256 u;\n        uint256 u2;\n        uint256 u3;\n        uint256 w;\n        uint256 t;\n\n        t = addmod(t0, p - t1, p);\n        u = addmod(u0, p - u1, p);\n        u2 = mulmod(u, u, p);\n\n        w = mulmod(t, t, p);\n        w = mulmod(w, v, p);\n        u1 = addmod(u1, u0, p);\n        u1 = mulmod(u1, u2, p);\n        w = addmod(w, p - u1, p);\n\n        x2 = mulmod(u, w, p);\n\n        u3 = mulmod(u2, u, p);\n        u0 = mulmod(u0, u2, p);\n        u0 = addmod(u0, p - w, p);\n        t = mulmod(t, u0, p);\n        t0 = mulmod(t0, u3, p);\n\n        y2 = addmod(t, p - t0, p);\n\n        z2 = mulmod(u3, v, p);\n    }\n\n    /**\n     * @dev Add two elliptic curve points in affine coordinates.\n     */\n    function add(\n        uint256 x0,\n        uint256 y0,\n        uint256 x1,\n        uint256 y1\n    ) internal pure returns (uint256, uint256) {\n        uint256 z0;\n\n        (x0, y0, z0) = addProj(x0, y0, 1, x1, y1, 1);\n\n        return toAffinePoint(x0, y0, z0);\n    }\n\n    /**\n     * @dev Double an elliptic curve point in affine coordinates.\n     */\n    function twice(uint256 x0, uint256 y0)\n        internal\n        pure\n        returns (uint256, uint256)\n    {\n        uint256 z0;\n\n        (x0, y0, z0) = twiceProj(x0, y0, 1);\n\n        return toAffinePoint(x0, y0, z0);\n    }\n\n    /**\n     * @dev Multiply an elliptic curve point by a 2 power base (i.e., (2^exp)*P)).\n     */\n    function multiplyPowerBase2(\n        uint256 x0,\n        uint256 y0,\n        uint256 exp\n    ) internal pure returns (uint256, uint256) {\n        uint256 base2X = x0;\n        uint256 base2Y = y0;\n        uint256 base2Z = 1;\n\n        for (uint256 i = 0; i < exp; i++) {\n            (base2X, base2Y, base2Z) = twiceProj(base2X, base2Y, base2Z);\n        }\n\n        return toAffinePoint(base2X, base2Y, base2Z);\n    }\n\n    /**\n     * @dev Multiply an elliptic curve point by a scalar.\n     */\n    function multiplyScalar(\n        uint256 x0,\n        uint256 y0,\n        uint256 scalar\n    ) internal pure returns (uint256 x1, uint256 y1) {\n        if (scalar == 0) {\n            return zeroAffine();\n        } else if (scalar == 1) {\n            return (x0, y0);\n        } else if (scalar == 2) {\n            return twice(x0, y0);\n        }\n\n        uint256 base2X = x0;\n        uint256 base2Y = y0;\n        uint256 base2Z = 1;\n        uint256 z1 = 1;\n        x1 = x0;\n        y1 = y0;\n\n        if (scalar % 2 == 0) {\n            x1 = y1 = 0;\n        }\n\n        scalar = scalar >> 1;\n\n        while (scalar > 0) {\n            (base2X, base2Y, base2Z) = twiceProj(base2X, base2Y, base2Z);\n\n            if (scalar % 2 == 1) {\n                (x1, y1, z1) = addProj(base2X, base2Y, base2Z, x1, y1, z1);\n            }\n\n            scalar = scalar >> 1;\n        }\n\n        return toAffinePoint(x1, y1, z1);\n    }\n\n    /**\n     * @dev Multiply the curve's generator point by a scalar.\n     */\n    function multipleGeneratorByScalar(uint256 scalar)\n        internal\n        pure\n        returns (uint256, uint256)\n    {\n        return multiplyScalar(gx, gy, scalar);\n    }\n\n    /**\n     * @dev Validate combination of message, signature, and public key.\n     */\n    function validateSignature(\n        bytes32 message,\n        uint256[2] memory rs,\n        uint256[2] memory Q\n    ) internal pure returns (bool) {\n        // To disambiguate between public key solutions, include comment below.\n        if (rs[0] == 0 || rs[0] >= n || rs[1] == 0) {\n            // || rs[1] > lowSmax)\n            return false;\n        }\n        if (!isOnCurve(Q[0], Q[1])) {\n            return false;\n        }\n\n        uint256 x1;\n        uint256 x2;\n        uint256 y1;\n        uint256 y2;\n\n        uint256 sInv = inverseMod(rs[1], n);\n        (x1, y1) = multiplyScalar(gx, gy, mulmod(uint256(message), sInv, n));\n        (x2, y2) = multiplyScalar(Q[0], Q[1], mulmod(rs[0], sInv, n));\n        uint256[3] memory P = addAndReturnProjectivePoint(x1, y1, x2, y2);\n\n        if (P[2] == 0) {\n            return false;\n        }\n\n        uint256 Px = inverseMod(P[2], p);\n        Px = mulmod(P[0], mulmod(Px, Px, p), p);\n\n        return Px % n == rs[0];\n    }\n}\n"
      },
      "contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"./Algorithm.sol\";\n\n/**\n * @dev Implements a dummy DNSSEC (signing) algorithm that approves all\n *      signatures, for testing.\n */\ncontract DummyAlgorithm is Algorithm {\n    function verify(\n        bytes calldata,\n        bytes calldata,\n        bytes calldata\n    ) external view override returns (bool) {\n        return true;\n    }\n}\n"
      },
      "contracts/dnssec-oracle/digests/DummyDigest.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"./Digest.sol\";\n\n/**\n * @dev Implements a dummy DNSSEC digest that approves all hashes, for testing.\n */\ncontract DummyDigest is Digest {\n    function verify(bytes calldata, bytes calldata)\n        external\n        pure\n        override\n        returns (bool)\n    {\n        return true;\n    }\n}\n"
      },
      "contracts/dnsregistrar/TLDPublicSuffixList.sol": {
        "content": "pragma solidity ^0.8.4;\n\nimport \"../dnssec-oracle/BytesUtils.sol\";\nimport \"./PublicSuffixList.sol\";\n\n/**\n * @dev A public suffix list that treats all TLDs as public suffixes.\n */\ncontract TLDPublicSuffixList is PublicSuffixList {\n    using BytesUtils for bytes;\n\n    function isPublicSuffix(bytes calldata name)\n        external\n        view\n        override\n        returns (bool)\n    {\n        uint256 labellen = name.readUint8(0);\n        return labellen > 0 && name.readUint8(labellen + 1) == 0;\n    }\n}\n"
      },
      "contracts/dnsregistrar/SimplePublicSuffixList.sol": {
        "content": "pragma solidity ^0.8.4;\npragma experimental ABIEncoderV2;\n\nimport \"../root/Ownable.sol\";\nimport \"./PublicSuffixList.sol\";\n\ncontract SimplePublicSuffixList is PublicSuffixList, Ownable {\n    mapping(bytes => bool) suffixes;\n\n    function addPublicSuffixes(bytes[] memory names) public onlyOwner {\n        for (uint256 i = 0; i < names.length; i++) {\n            suffixes[names[i]] = true;\n        }\n    }\n\n    function isPublicSuffix(bytes calldata name)\n        external\n        view\n        override\n        returns (bool)\n    {\n        return suffixes[name];\n    }\n}\n"
      },
      "contracts/root/Ownable.sol": {
        "content": "pragma solidity ^0.8.4;\n\ncontract Ownable {\n    address public owner;\n\n    event OwnershipTransferred(\n        address indexed previousOwner,\n        address indexed newOwner\n    );\n\n    modifier onlyOwner() {\n        require(isOwner(msg.sender));\n        _;\n    }\n\n    constructor() public {\n        owner = msg.sender;\n    }\n\n    function transferOwnership(address newOwner) public onlyOwner {\n        emit OwnershipTransferred(owner, newOwner);\n        owner = newOwner;\n    }\n\n    function isOwner(address addr) public view returns (bool) {\n        return owner == addr;\n    }\n}\n"
      },
      "contracts/dnsregistrar/RecordParser.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.11;\n\nimport \"../dnssec-oracle/BytesUtils.sol\";\n\nlibrary RecordParser {\n    using BytesUtils for bytes;\n\n    /**\n     * @dev Parses a key-value record into a key and value.\n     * @param input The input string\n     * @param offset The offset to start reading at\n     */\n    function readKeyValue(\n        bytes memory input,\n        uint256 offset,\n        uint256 len\n    )\n        internal\n        pure\n        returns (\n            bytes memory key,\n            bytes memory value,\n            uint256 nextOffset\n        )\n    {\n        uint256 separator = input.find(offset, len, \"=\");\n        if (separator == type(uint256).max) {\n            return (\"\", \"\", type(uint256).max);\n        }\n\n        uint256 terminator = input.find(\n            separator,\n            len + offset - separator,\n            \" \"\n        );\n        if (terminator == type(uint256).max) {\n            terminator = input.length;\n        }\n\n        key = input.substring(offset, separator - offset);\n        value = input.substring(separator + 1, terminator - separator - 1);\n        nextOffset = terminator + 1;\n    }\n}\n"
      },
      "contracts/resolvers/profiles/DNSResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"../ResolverBase.sol\";\nimport \"../../dnssec-oracle/RRUtils.sol\";\nimport \"./IDNSRecordResolver.sol\";\nimport \"./IDNSZoneResolver.sol\";\n\nabstract contract DNSResolver is\n    IDNSRecordResolver,\n    IDNSZoneResolver,\n    ResolverBase\n{\n    using RRUtils for *;\n    using BytesUtils for bytes;\n\n    // Zone hashes for the domains.\n    // A zone hash is an EIP-1577 content hash in binary format that should point to a\n    // resource containing a single zonefile.\n    // node => contenthash\n    mapping(uint64 => mapping(bytes32 => bytes)) private versionable_zonehashes;\n\n    // The records themselves.  Stored as binary RRSETs\n    // node => version => name => resource => data\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))\n        private versionable_records;\n\n    // Count of number of entries for a given name.  Required for DNS resolvers\n    // when resolving wildcards.\n    // node => version => name => number of records\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))\n        private versionable_nameEntriesCount;\n\n    /**\n     * Set one or more DNS records.  Records are supplied in wire-format.\n     * Records with the same node/name/resource must be supplied one after the\n     * other to ensure the data is updated correctly. For example, if the data\n     * was supplied:\n     *     a.example.com IN A 1.2.3.4\n     *     a.example.com IN A 5.6.7.8\n     *     www.example.com IN CNAME a.example.com.\n     * then this would store the two A records for a.example.com correctly as a\n     * single RRSET, however if the data was supplied:\n     *     a.example.com IN A 1.2.3.4\n     *     www.example.com IN CNAME a.example.com.\n     *     a.example.com IN A 5.6.7.8\n     * then this would store the first A record, the CNAME, then the second A\n     * record which would overwrite the first.\n     *\n     * @param node the namehash of the node for which to set the records\n     * @param data the DNS wire format records to set\n     */\n    function setDNSRecords(bytes32 node, bytes calldata data)\n        external\n        virtual\n        authorised(node)\n    {\n        uint16 resource = 0;\n        uint256 offset = 0;\n        bytes memory name;\n        bytes memory value;\n        bytes32 nameHash;\n        uint64 version = recordVersions[node];\n        // Iterate over the data to add the resource records\n        for (\n            RRUtils.RRIterator memory iter = data.iterateRRs(0);\n            !iter.done();\n            iter.next()\n        ) {\n            if (resource == 0) {\n                resource = iter.dnstype;\n                name = iter.name();\n                nameHash = keccak256(abi.encodePacked(name));\n                value = bytes(iter.rdata());\n            } else {\n                bytes memory newName = iter.name();\n                if (resource != iter.dnstype || !name.equals(newName)) {\n                    setDNSRRSet(\n                        node,\n                        name,\n                        resource,\n                        data,\n                        offset,\n                        iter.offset - offset,\n                        value.length == 0,\n                        version\n                    );\n                    resource = iter.dnstype;\n                    offset = iter.offset;\n                    name = newName;\n                    nameHash = keccak256(name);\n                    value = bytes(iter.rdata());\n                }\n            }\n        }\n        if (name.length > 0) {\n            setDNSRRSet(\n                node,\n                name,\n                resource,\n                data,\n                offset,\n                data.length - offset,\n                value.length == 0,\n                version\n            );\n        }\n    }\n\n    /**\n     * Obtain a DNS record.\n     * @param node the namehash of the node for which to fetch the record\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n     * @return the DNS record in wire format if present, otherwise empty\n     */\n    function dnsRecord(\n        bytes32 node,\n        bytes32 name,\n        uint16 resource\n    ) public view virtual override returns (bytes memory) {\n        return versionable_records[recordVersions[node]][node][name][resource];\n    }\n\n    /**\n     * Check if a given node has records.\n     * @param node the namehash of the node for which to check the records\n     * @param name the namehash of the node for which to check the records\n     */\n    function hasDNSRecords(bytes32 node, bytes32 name)\n        public\n        view\n        virtual\n        returns (bool)\n    {\n        return (versionable_nameEntriesCount[recordVersions[node]][node][\n            name\n        ] != 0);\n    }\n\n    /**\n     * setZonehash sets the hash for the zone.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param hash The zonehash to set\n     */\n    function setZonehash(bytes32 node, bytes calldata hash)\n        external\n        virtual\n        authorised(node)\n    {\n        uint64 currentRecordVersion = recordVersions[node];\n        bytes memory oldhash = versionable_zonehashes[currentRecordVersion][\n            node\n        ];\n        versionable_zonehashes[currentRecordVersion][node] = hash;\n        emit DNSZonehashChanged(node, oldhash, hash);\n    }\n\n    /**\n     * zonehash obtains the hash for the zone.\n     * @param node The ENS node to query.\n     * @return The associated contenthash.\n     */\n    function zonehash(bytes32 node)\n        external\n        view\n        virtual\n        override\n        returns (bytes memory)\n    {\n        return versionable_zonehashes[recordVersions[node]][node];\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IDNSRecordResolver).interfaceId ||\n            interfaceID == type(IDNSZoneResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n\n    function setDNSRRSet(\n        bytes32 node,\n        bytes memory name,\n        uint16 resource,\n        bytes memory data,\n        uint256 offset,\n        uint256 size,\n        bool deleteRecord,\n        uint64 version\n    ) private {\n        bytes32 nameHash = keccak256(name);\n        bytes memory rrData = data.substring(offset, size);\n        if (deleteRecord) {\n            if (\n                versionable_records[version][node][nameHash][resource].length !=\n                0\n            ) {\n                versionable_nameEntriesCount[version][node][nameHash]--;\n            }\n            delete (versionable_records[version][node][nameHash][resource]);\n            emit DNSRecordDeleted(node, name, resource);\n        } else {\n            if (\n                versionable_records[version][node][nameHash][resource].length ==\n                0\n            ) {\n                versionable_nameEntriesCount[version][node][nameHash]++;\n            }\n            versionable_records[version][node][nameHash][resource] = rrData;\n            emit DNSRecordChanged(node, name, resource, rrData);\n        }\n    }\n}\n"
      },
      "contracts/resolvers/profiles/IDNSRecordResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\ninterface IDNSRecordResolver {\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\n    event DNSRecordChanged(\n        bytes32 indexed node,\n        bytes name,\n        uint16 resource,\n        bytes record\n    );\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\n\n    /**\n     * Obtain a DNS record.\n     * @param node the namehash of the node for which to fetch the record\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n     * @return the DNS record in wire format if present, otherwise empty\n     */\n    function dnsRecord(\n        bytes32 node,\n        bytes32 name,\n        uint16 resource\n    ) external view returns (bytes memory);\n}\n"
      },
      "contracts/resolvers/profiles/IDNSZoneResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\ninterface IDNSZoneResolver {\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\n    event DNSZonehashChanged(\n        bytes32 indexed node,\n        bytes lastzonehash,\n        bytes zonehash\n    );\n\n    /**\n     * zonehash obtains the hash for the zone.\n     * @param node The ENS node to query.\n     * @return The associated contenthash.\n     */\n    function zonehash(bytes32 node) external view returns (bytes memory);\n}\n"
      },
      "contracts/resolvers/PublicResolver.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity >=0.8.17 <0.9.0;\n\nimport \"../registry/ENS.sol\";\nimport \"./profiles/ABIResolver.sol\";\nimport \"./profiles/AddrResolver.sol\";\nimport \"./profiles/ContentHashResolver.sol\";\nimport \"./profiles/DNSResolver.sol\";\nimport \"./profiles/InterfaceResolver.sol\";\nimport \"./profiles/NameResolver.sol\";\nimport \"./profiles/PubkeyResolver.sol\";\nimport \"./profiles/TextResolver.sol\";\nimport \"./Multicallable.sol\";\n\ninterface INameWrapper {\n    function ownerOf(uint256 id) external view returns (address);\n}\n\n/**\n * A simple resolver anyone can use; only allows the owner of a node to set its\n * address.\n */\ncontract PublicResolver is\n    Multicallable,\n    ABIResolver,\n    AddrResolver,\n    ContentHashResolver,\n    DNSResolver,\n    InterfaceResolver,\n    NameResolver,\n    PubkeyResolver,\n    TextResolver\n{\n    ENS immutable ens;\n    INameWrapper immutable nameWrapper;\n    address immutable trustedETHController;\n    address immutable trustedReverseRegistrar;\n\n    /**\n     * A mapping of operators. An address that is authorised for an address\n     * may make any changes to the name that the owner could, but may not update\n     * the set of authorisations.\n     * (owner, operator) => approved\n     */\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    // Logged when an operator is added or removed.\n    event ApprovalForAll(\n        address indexed owner,\n        address indexed operator,\n        bool approved\n    );\n\n    constructor(\n        ENS _ens,\n        INameWrapper wrapperAddress,\n        address _trustedETHController,\n        address _trustedReverseRegistrar\n    ) {\n        ens = _ens;\n        nameWrapper = wrapperAddress;\n        trustedETHController = _trustedETHController;\n        trustedReverseRegistrar = _trustedReverseRegistrar;\n    }\n\n    /**\n     * @dev See {IERC1155-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) external {\n        require(\n            msg.sender != operator,\n            \"ERC1155: setting approval status for self\"\n        );\n\n        _operatorApprovals[msg.sender][operator] = approved;\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    /**\n     * @dev See {IERC1155-isApprovedForAll}.\n     */\n    function isApprovedForAll(address account, address operator)\n        public\n        view\n        returns (bool)\n    {\n        return _operatorApprovals[account][operator];\n    }\n\n    function isAuthorised(bytes32 node) internal view override returns (bool) {\n        if (\n            msg.sender == trustedETHController ||\n            msg.sender == trustedReverseRegistrar\n        ) {\n            return true;\n        }\n        address owner = ens.owner(node);\n        if (owner == address(nameWrapper)) {\n            owner = nameWrapper.ownerOf(uint256(node));\n        }\n        return owner == msg.sender || isApprovedForAll(owner, msg.sender);\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        override(\n            Multicallable,\n            ABIResolver,\n            AddrResolver,\n            ContentHashResolver,\n            DNSResolver,\n            InterfaceResolver,\n            NameResolver,\n            PubkeyResolver,\n            TextResolver\n        )\n        returns (bool)\n    {\n        return super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/profiles/ABIResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"./IABIResolver.sol\";\nimport \"../ResolverBase.sol\";\n\nabstract contract ABIResolver is IABIResolver, ResolverBase {\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_abis;\n\n    /**\n     * Sets the ABI associated with an ENS node.\n     * Nodes may have one ABI of each content type. To remove an ABI, set it to\n     * the empty string.\n     * @param node The node to update.\n     * @param contentType The content type of the ABI\n     * @param data The ABI data.\n     */\n    function setABI(\n        bytes32 node,\n        uint256 contentType,\n        bytes calldata data\n    ) external virtual authorised(node) {\n        // Content types must be powers of 2\n        require(((contentType - 1) & contentType) == 0);\n\n        versionable_abis[recordVersions[node]][node][contentType] = data;\n        emit ABIChanged(node, contentType);\n    }\n\n    /**\n     * Returns the ABI associated with an ENS node.\n     * Defined in EIP205.\n     * @param node The ENS node to query\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n     * @return contentType The content type of the return value\n     * @return data The ABI data\n     */\n    function ABI(bytes32 node, uint256 contentTypes)\n        external\n        view\n        virtual\n        override\n        returns (uint256, bytes memory)\n    {\n        mapping(uint256 => bytes) storage abiset = versionable_abis[\n            recordVersions[node]\n        ][node];\n\n        for (\n            uint256 contentType = 1;\n            contentType <= contentTypes;\n            contentType <<= 1\n        ) {\n            if (\n                (contentType & contentTypes) != 0 &&\n                abiset[contentType].length > 0\n            ) {\n                return (contentType, abiset[contentType]);\n            }\n        }\n\n        return (0, bytes(\"\"));\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IABIResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/profiles/ContentHashResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"../ResolverBase.sol\";\nimport \"./IContentHashResolver.sol\";\n\nabstract contract ContentHashResolver is IContentHashResolver, ResolverBase {\n    mapping(uint64 => mapping(bytes32 => bytes)) versionable_hashes;\n\n    /**\n     * Sets the contenthash associated with an ENS node.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param hash The contenthash to set\n     */\n    function setContenthash(bytes32 node, bytes calldata hash)\n        external\n        virtual\n        authorised(node)\n    {\n        versionable_hashes[recordVersions[node]][node] = hash;\n        emit ContenthashChanged(node, hash);\n    }\n\n    /**\n     * Returns the contenthash associated with an ENS node.\n     * @param node The ENS node to query.\n     * @return The associated contenthash.\n     */\n    function contenthash(bytes32 node)\n        external\n        view\n        virtual\n        override\n        returns (bytes memory)\n    {\n        return versionable_hashes[recordVersions[node]][node];\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IContentHashResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/profiles/InterfaceResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport \"../ResolverBase.sol\";\nimport \"./AddrResolver.sol\";\nimport \"./IInterfaceResolver.sol\";\n\nabstract contract InterfaceResolver is IInterfaceResolver, AddrResolver {\n    mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address))) versionable_interfaces;\n\n    /**\n     * Sets an interface associated with a name.\n     * Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n     * @param node The node to update.\n     * @param interfaceID The EIP 165 interface ID.\n     * @param implementer The address of a contract that implements this interface for this node.\n     */\n    function setInterface(\n        bytes32 node,\n        bytes4 interfaceID,\n        address implementer\n    ) external virtual authorised(node) {\n        versionable_interfaces[recordVersions[node]][node][interfaceID] = implementer;\n        emit InterfaceChanged(node, interfaceID, implementer);\n    }\n\n    /**\n     * Returns the address of a contract that implements the specified interface for this name.\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\n     * will be returned.\n     * @param node The ENS node to query.\n     * @param interfaceID The EIP 165 interface ID to check for.\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\n     */\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\n        external\n        view\n        virtual\n        override\n        returns (address)\n    {\n        address implementer = versionable_interfaces[recordVersions[node]][node][interfaceID];\n        if (implementer != address(0)) {\n            return implementer;\n        }\n\n        address a = addr(node);\n        if (a == address(0)) {\n            return address(0);\n        }\n\n        (bool success, bytes memory returnData) = a.staticcall(\n            abi.encodeWithSignature(\n                \"supportsInterface(bytes4)\",\n                type(IERC165).interfaceId\n            )\n        );\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\n            // EIP 165 not supported by target\n            return address(0);\n        }\n\n        (success, returnData) = a.staticcall(\n            abi.encodeWithSignature(\"supportsInterface(bytes4)\", interfaceID)\n        );\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\n            // Specified interface not supported by target\n            return address(0);\n        }\n\n        return a;\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IInterfaceResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/profiles/NameResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"../ResolverBase.sol\";\nimport \"./INameResolver.sol\";\n\nabstract contract NameResolver is INameResolver, ResolverBase {\n    mapping(uint64 => mapping(bytes32 => string)) versionable_names;\n\n    /**\n     * Sets the name associated with an ENS node, for reverse records.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     */\n    function setName(bytes32 node, string calldata newName)\n        external\n        virtual\n        authorised(node)\n    {\n        versionable_names[recordVersions[node]][node] = newName;\n        emit NameChanged(node, newName);\n    }\n\n    /**\n     * Returns the name associated with an ENS node, for reverse records.\n     * Defined in EIP181.\n     * @param node The ENS node to query.\n     * @return The associated name.\n     */\n    function name(bytes32 node)\n        external\n        view\n        virtual\n        override\n        returns (string memory)\n    {\n        return versionable_names[recordVersions[node]][node];\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(INameResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/profiles/PubkeyResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"../ResolverBase.sol\";\nimport \"./IPubkeyResolver.sol\";\n\nabstract contract PubkeyResolver is IPubkeyResolver, ResolverBase {\n    struct PublicKey {\n        bytes32 x;\n        bytes32 y;\n    }\n\n    mapping(uint64 => mapping(bytes32 => PublicKey)) versionable_pubkeys;\n\n    /**\n     * Sets the SECP256k1 public key associated with an ENS node.\n     * @param node The ENS node to query\n     * @param x the X coordinate of the curve point for the public key.\n     * @param y the Y coordinate of the curve point for the public key.\n     */\n    function setPubkey(\n        bytes32 node,\n        bytes32 x,\n        bytes32 y\n    ) external virtual authorised(node) {\n        versionable_pubkeys[recordVersions[node]][node] = PublicKey(x, y);\n        emit PubkeyChanged(node, x, y);\n    }\n\n    /**\n     * Returns the SECP256k1 public key associated with an ENS node.\n     * Defined in EIP 619.\n     * @param node The ENS node to query\n     * @return x The X coordinate of the curve point for the public key.\n     * @return y The Y coordinate of the curve point for the public key.\n     */\n    function pubkey(bytes32 node)\n        external\n        view\n        virtual\n        override\n        returns (bytes32 x, bytes32 y)\n    {\n        uint64 currentRecordVersion = recordVersions[node];\n        return (\n            versionable_pubkeys[currentRecordVersion][node].x,\n            versionable_pubkeys[currentRecordVersion][node].y\n        );\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IPubkeyResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/profiles/TextResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"../ResolverBase.sol\";\nimport \"./ITextResolver.sol\";\n\nabstract contract TextResolver is ITextResolver, ResolverBase {\n    mapping(uint64 => mapping(bytes32 => mapping(string => string))) versionable_texts;\n\n    /**\n     * Sets the text data associated with an ENS node and key.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param key The key to set.\n     * @param value The text data value to set.\n     */\n    function setText(\n        bytes32 node,\n        string calldata key,\n        string calldata value\n    ) external virtual authorised(node) {\n        versionable_texts[recordVersions[node]][node][key] = value;\n        emit TextChanged(node, key, key, value);\n    }\n\n    /**\n     * Returns the text data associated with an ENS node and key.\n     * @param node The ENS node to query.\n     * @param key The text data key to query.\n     * @return The associated text data.\n     */\n    function text(bytes32 node, string calldata key)\n        external\n        view\n        virtual\n        override\n        returns (string memory)\n    {\n        return versionable_texts[recordVersions[node]][node][key];\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(ITextResolver).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/Multicallable.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport \"./IMulticallable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nabstract contract Multicallable is IMulticallable, ERC165 {\n    function _multicall(bytes32 nodehash, bytes[] calldata data)\n        internal\n        returns (bytes[] memory results)\n    {\n        results = new bytes[](data.length);\n        for (uint256 i = 0; i < data.length; i++) {\n            if (nodehash != bytes32(0)) {\n                bytes32 txNamehash = bytes32(data[i][4:36]);\n                require(\n                    txNamehash == nodehash,\n                    \"multicall: All records must have a matching namehash\"\n                );\n            }\n            (bool success, bytes memory result) = address(this).delegatecall(\n                data[i]\n            );\n            require(success);\n            results[i] = result;\n        }\n        return results;\n    }\n\n    // This function provides an extra security check when called\n    // from priviledged contracts (such as EthRegistrarController)\n    // that can set records on behalf of the node owners\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\n        external\n        returns (bytes[] memory results)\n    {\n        return _multicall(nodehash, data);\n    }\n\n    function multicall(bytes[] calldata data)\n        public\n        override\n        returns (bytes[] memory results)\n    {\n        return _multicall(bytes32(0), data);\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == type(IMulticallable).interfaceId ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/resolvers/profiles/IABIResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"./IABIResolver.sol\";\nimport \"../ResolverBase.sol\";\n\ninterface IABIResolver {\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\n\n    /**\n     * Returns the ABI associated with an ENS node.\n     * Defined in EIP205.\n     * @param node The ENS node to query\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n     * @return contentType The content type of the return value\n     * @return data The ABI data\n     */\n    function ABI(bytes32 node, uint256 contentTypes)\n        external\n        view\n        returns (uint256, bytes memory);\n}\n"
      },
      "contracts/resolvers/profiles/IContentHashResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\ninterface IContentHashResolver {\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\n\n    /**\n     * Returns the contenthash associated with an ENS node.\n     * @param node The ENS node to query.\n     * @return The associated contenthash.\n     */\n    function contenthash(bytes32 node) external view returns (bytes memory);\n}\n"
      },
      "contracts/resolvers/profiles/IInterfaceResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\ninterface IInterfaceResolver {\n    event InterfaceChanged(\n        bytes32 indexed node,\n        bytes4 indexed interfaceID,\n        address implementer\n    );\n\n    /**\n     * Returns the address of a contract that implements the specified interface for this name.\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\n     * will be returned.\n     * @param node The ENS node to query.\n     * @param interfaceID The EIP 165 interface ID to check for.\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\n     */\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\n        external\n        view\n        returns (address);\n}\n"
      },
      "contracts/resolvers/profiles/INameResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\ninterface INameResolver {\n    event NameChanged(bytes32 indexed node, string name);\n\n    /**\n     * Returns the name associated with an ENS node, for reverse records.\n     * Defined in EIP181.\n     * @param node The ENS node to query.\n     * @return The associated name.\n     */\n    function name(bytes32 node) external view returns (string memory);\n}\n"
      },
      "contracts/resolvers/profiles/IPubkeyResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\ninterface IPubkeyResolver {\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\n\n    /**\n     * Returns the SECP256k1 public key associated with an ENS node.\n     * Defined in EIP 619.\n     * @param node The ENS node to query\n     * @return x The X coordinate of the curve point for the public key.\n     * @return y The Y coordinate of the curve point for the public key.\n     */\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\n}\n"
      },
      "contracts/resolvers/profiles/ITextResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\ninterface ITextResolver {\n    event TextChanged(\n        bytes32 indexed node,\n        string indexed indexedKey,\n        string key,\n        string value\n    );\n\n    /**\n     * Returns the text data associated with an ENS node and key.\n     * @param node The ENS node to query.\n     * @param key The text data key to query.\n     * @return The associated text data.\n     */\n    function text(bytes32 node, string calldata key)\n        external\n        view\n        returns (string memory);\n}\n"
      },
      "contracts/resolvers/IMulticallable.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\ninterface IMulticallable {\n    function multicall(bytes[] calldata data)\n        external\n        returns (bytes[] memory results);\n\n    function multicallWithNodeCheck(bytes32, bytes[] calldata data)\n        external\n        returns (bytes[] memory results);\n}\n"
      },
      "test/utils/mocks/DummyOffchainResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"../../../contracts/resolvers/profiles/IExtendedResolver.sol\";\n\nerror OffchainLookup(\n    address sender,\n    string[] urls,\n    bytes callData,\n    bytes4 callbackFunction,\n    bytes extraData\n);\n\ncontract DummyOffchainResolver is IExtendedResolver, ERC165 {\n    function supportsInterface(bytes4 interfaceId)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceId == type(IExtendedResolver).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    function resolve(\n        bytes calldata, /* name */\n        bytes calldata data\n    ) external view returns (bytes memory, address) {\n        string[] memory urls = new string[](1);\n        urls[0] = \"https://example.com/\";\n        revert OffchainLookup(\n            address(this),\n            urls,\n            data,\n            DummyOffchainResolver.resolveCallback.selector,\n            data\n        );\n    }\n\n    function resolveCallback(bytes calldata response, bytes calldata extraData)\n        external\n        view\n        returns (bytes memory)\n    {\n        require(\n            keccak256(response) == keccak256(extraData),\n            \"Response data error\"\n        );\n        return abi.encode(address(this));\n    }\n}\n"
      },
      "contracts/resolvers/profiles/IExtendedResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\ninterface IExtendedResolver {\n    function resolve(bytes memory name, bytes memory data)\n        external\n        view\n        returns (bytes memory, address);\n}\n"
      },
      "contracts/utils/UniversalResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.17 <0.9.0;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {LowLevelCallUtils} from \"./LowLevelCallUtils.sol\";\nimport {ENS} from \"../registry/ENS.sol\";\nimport {IExtendedResolver} from \"../resolvers/profiles/IExtendedResolver.sol\";\nimport {Resolver, INameResolver, IAddrResolver} from \"../resolvers/Resolver.sol\";\nimport {NameEncoder} from \"./NameEncoder.sol\";\nimport {BytesUtils} from \"../wrapper/BytesUtils.sol\";\n\nerror OffchainLookup(\n    address sender,\n    string[] urls,\n    bytes callData,\n    bytes4 callbackFunction,\n    bytes extraData\n);\n\n/**\n * The Universal Resolver is a contract that handles the work of resolving a name entirely onchain,\n * making it possible to make a single smart contract call to resolve an ENS name.\n */\ncontract UniversalResolver is IExtendedResolver, ERC165 {\n    using Address for address;\n    using NameEncoder for string;\n    using BytesUtils for bytes;\n\n    ENS public immutable registry;\n\n    constructor(address _registry) {\n        registry = ENS(_registry);\n    }\n\n    /**\n     * @dev Performs ENS name resolution for the supplied name and resolution data.\n     * @param name The name to resolve, in normalised and DNS-encoded form.\n     * @param data The resolution data, as specified in ENSIP-10.\n     * @return The result of resolving the name.\n     */\n    function resolve(bytes calldata name, bytes memory data)\n        external\n        view\n        override\n        returns (bytes memory, address)\n    {\n        (Resolver resolver, ) = findResolver(name);\n        if (address(resolver) == address(0)) {\n            return (\"\", address(0));\n        }\n\n        try\n            resolver.supportsInterface(type(IExtendedResolver).interfaceId)\n        returns (bool supported) {\n            if (supported) {\n                return (\n                    callWithOffchainLookupPropagation(\n                        address(resolver),\n                        abi.encodeCall(IExtendedResolver.resolve, (name, data)),\n                        UniversalResolver.resolveCallback.selector\n                    ),\n                    address(resolver)\n                );\n            }\n        } catch {}\n        return (\n            callWithOffchainLookupPropagation(\n                address(resolver),\n                data,\n                UniversalResolver.resolveCallback.selector\n            ),\n            address(resolver)\n        );\n    }\n\n    /**\n     * @dev Performs ENS name reverse resolution for the supplied reverse name.\n     * @param reverseName The reverse name to resolve, in normalised and DNS-encoded form. e.g. b6E040C9ECAaE172a89bD561c5F73e1C48d28cd9.addr.reverse\n     * @return The resolved name, the resolved address, the reverse resolver address, and the resolver address.\n     */\n    function reverse(bytes calldata reverseName)\n        external\n        view\n        returns (\n            string memory,\n            address,\n            address,\n            address\n        )\n    {\n        (\n            bytes memory resolvedReverseData,\n            address reverseResolverAddress\n        ) = this.resolve(\n                reverseName,\n                abi.encodeCall(INameResolver.name, reverseName.namehash(0))\n            );\n\n        string memory resolvedName = abi.decode(resolvedReverseData, (string));\n\n        (bytes memory encodedName, bytes32 namehash) = resolvedName\n            .dnsEncodeName();\n\n        (bytes memory resolvedData, address resolverAddress) = this.resolve(\n            encodedName,\n            abi.encodeCall(IAddrResolver.addr, namehash)\n        );\n\n        address resolvedAddress = abi.decode(resolvedData, (address));\n\n        return (\n            resolvedName,\n            resolvedAddress,\n            reverseResolverAddress,\n            resolverAddress\n        );\n    }\n\n    function supportsInterface(bytes4 interfaceId)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            interfaceId == type(IExtendedResolver).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev Makes a call to `target` with `data`. If the call reverts with an `OffchainLookup` error, wraps\n     *      the error with the data necessary to continue the request where it left off.\n     * @param target The address to call.\n     * @param data The data to call `target` with.\n     * @param callbackFunction The function ID of a function on this contract to use as an EIP 3668 callback.\n     *        This function's `extraData` argument will be passed `(address target, bytes4 innerCallback, bytes innerExtraData)`.\n     * @return ret If `target` did not revert, contains the return data from the call to `target`.\n     */\n    function callWithOffchainLookupPropagation(\n        address target,\n        bytes memory data,\n        bytes4 callbackFunction\n    ) internal view returns (bytes memory ret) {\n        bool result = LowLevelCallUtils.functionStaticCall(target, data);\n        uint256 size = LowLevelCallUtils.returnDataSize();\n\n        if (result) {\n            return LowLevelCallUtils.readReturnData(0, size);\n        }\n\n        // Failure\n        if (size >= 4) {\n            bytes memory errorId = LowLevelCallUtils.readReturnData(0, 4);\n            if (bytes4(errorId) == OffchainLookup.selector) {\n                // Offchain lookup. Decode the revert message and create our own that nests it.\n                bytes memory revertData = LowLevelCallUtils.readReturnData(\n                    4,\n                    size - 4\n                );\n                (\n                    address sender,\n                    string[] memory urls,\n                    bytes memory callData,\n                    bytes4 innerCallbackFunction,\n                    bytes memory extraData\n                ) = abi.decode(\n                        revertData,\n                        (address, string[], bytes, bytes4, bytes)\n                    );\n                if (sender == target) {\n                    revert OffchainLookup(\n                        address(this),\n                        urls,\n                        callData,\n                        callbackFunction,\n                        abi.encode(sender, innerCallbackFunction, extraData)\n                    );\n                }\n            }\n        }\n\n        LowLevelCallUtils.propagateRevert();\n    }\n\n    /**\n     * @dev Callback function for `resolve`.\n     * @param response Response data returned by the target address that invoked the inner `OffchainData` revert.\n     * @param extraData Extra data encoded by `callWithOffchainLookupPropagation` to allow completing the request.\n     */\n    function resolveCallback(bytes calldata response, bytes calldata extraData)\n        external\n        view\n        returns (bytes memory)\n    {\n        (\n            address target,\n            bytes4 innerCallbackFunction,\n            bytes memory innerExtraData\n        ) = abi.decode(extraData, (address, bytes4, bytes));\n        return\n            abi.decode(\n                target.functionStaticCall(\n                    abi.encodeWithSelector(\n                        innerCallbackFunction,\n                        response,\n                        innerExtraData\n                    )\n                ),\n                (bytes)\n            );\n    }\n\n    /**\n     * @dev Finds a resolver by recursively querying the registry, starting at the longest name and progressively\n     *      removing labels until it finds a result.\n     * @param name The name to resolve, in DNS-encoded and normalised form.\n     * @return The Resolver responsible for this name, and the namehash of the full name.\n     */\n    function findResolver(bytes calldata name)\n        public\n        view\n        returns (Resolver, bytes32)\n    {\n        (address resolver, bytes32 labelhash) = findResolver(name, 0);\n        return (Resolver(resolver), labelhash);\n    }\n\n    function findResolver(bytes calldata name, uint256 offset)\n        internal\n        view\n        returns (address, bytes32)\n    {\n        uint256 labelLength = uint256(uint8(name[offset]));\n        if (labelLength == 0) {\n            return (address(0), bytes32(0));\n        }\n        uint256 nextLabel = offset + labelLength + 1;\n        bytes32 labelHash = keccak256(name[offset + 1:nextLabel]);\n        (address parentresolver, bytes32 parentnode) = findResolver(\n            name,\n            nextLabel\n        );\n        bytes32 node = keccak256(abi.encodePacked(parentnode, labelHash));\n        address resolver = registry.resolver(node);\n        if (resolver != address(0)) {\n            return (resolver, node);\n        }\n        return (parentresolver, node);\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"
      },
      "contracts/utils/LowLevelCallUtils.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.13;\n\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\n\nlibrary LowLevelCallUtils {\n    using Address for address;\n\n    /**\n     * @dev Makes a static call to the specified `target` with `data`. Return data can be fetched with\n     *      `returnDataSize` and `readReturnData`.\n     * @param target The address to staticcall.\n     * @param data The data to pass to the call.\n     * @return success True if the call succeeded, or false if it reverts.\n     */\n    function functionStaticCall(address target, bytes memory data)\n        internal\n        view\n        returns (bool success)\n    {\n        require(\n            target.isContract(),\n            \"LowLevelCallUtils: static call to non-contract\"\n        );\n        assembly {\n            success := staticcall(\n                gas(),\n                target,\n                add(data, 32),\n                mload(data),\n                0,\n                0\n            )\n        }\n    }\n\n    /**\n     * @dev Returns the size of the return data of the most recent external call.\n     */\n    function returnDataSize() internal pure returns (uint256 len) {\n        assembly {\n            len := returndatasize()\n        }\n    }\n\n    /**\n     * @dev Reads return data from the most recent external call.\n     * @param offset Offset into the return data.\n     * @param length Number of bytes to return.\n     */\n    function readReturnData(uint256 offset, uint256 length)\n        internal\n        pure\n        returns (bytes memory data)\n    {\n        data = new bytes(length);\n        assembly {\n            returndatacopy(add(data, 32), offset, length)\n        }\n    }\n\n    /**\n     * @dev Reverts with the return data from the most recent external call.\n     */\n    function propagateRevert() internal pure {\n        assembly {\n            returndatacopy(0, 0, returndatasize())\n            revert(0, returndatasize())\n        }\n    }\n}\n"
      },
      "contracts/resolvers/Resolver.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity >=0.8.4;\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport \"./profiles/IABIResolver.sol\";\nimport \"./profiles/IAddressResolver.sol\";\nimport \"./profiles/IAddrResolver.sol\";\nimport \"./profiles/IContentHashResolver.sol\";\nimport \"./profiles/IDNSRecordResolver.sol\";\nimport \"./profiles/IDNSZoneResolver.sol\";\nimport \"./profiles/IInterfaceResolver.sol\";\nimport \"./profiles/INameResolver.sol\";\nimport \"./profiles/IPubkeyResolver.sol\";\nimport \"./profiles/ITextResolver.sol\";\nimport \"./profiles/IExtendedResolver.sol\";\n\n/**\n * A generic resolver interface which includes all the functions including the ones deprecated\n */\ninterface Resolver is\n    IERC165,\n    IABIResolver,\n    IAddressResolver,\n    IAddrResolver,\n    IContentHashResolver,\n    IDNSRecordResolver,\n    IDNSZoneResolver,\n    IInterfaceResolver,\n    INameResolver,\n    IPubkeyResolver,\n    ITextResolver,\n    IExtendedResolver\n{\n    /* Deprecated events */\n    event ContentChanged(bytes32 indexed node, bytes32 hash);\n\n    function setABI(\n        bytes32 node,\n        uint256 contentType,\n        bytes calldata data\n    ) external;\n\n    function setAddr(bytes32 node, address addr) external;\n\n    function setAddr(\n        bytes32 node,\n        uint256 coinType,\n        bytes calldata a\n    ) external;\n\n    function setContenthash(bytes32 node, bytes calldata hash) external;\n\n    function setDnsrr(bytes32 node, bytes calldata data) external;\n\n    function setName(bytes32 node, string calldata _name) external;\n\n    function setPubkey(\n        bytes32 node,\n        bytes32 x,\n        bytes32 y\n    ) external;\n\n    function setText(\n        bytes32 node,\n        string calldata key,\n        string calldata value\n    ) external;\n\n    function setInterface(\n        bytes32 node,\n        bytes4 interfaceID,\n        address implementer\n    ) external;\n\n    function multicall(bytes[] calldata data)\n        external\n        returns (bytes[] memory results);\n\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\n        external\n        returns (bytes[] memory results);\n\n    /* Deprecated functions */\n    function content(bytes32 node) external view returns (bytes32);\n\n    function multihash(bytes32 node) external view returns (bytes memory);\n\n    function setContent(bytes32 node, bytes32 hash) external;\n\n    function setMultihash(bytes32 node, bytes calldata hash) external;\n}\n"
      },
      "contracts/utils/NameEncoder.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport {BytesUtils} from \"../wrapper/BytesUtils.sol\";\n\nlibrary NameEncoder {\n    using BytesUtils for bytes;\n\n    function dnsEncodeName(string memory name)\n        internal\n        pure\n        returns (bytes memory dnsName, bytes32 node)\n    {\n        uint8 labelLength = 0;\n        bytes memory bytesName = bytes(name);\n        uint256 length = bytesName.length;\n        dnsName = new bytes(length + 2);\n        node = 0;\n        if (length == 0) {\n            dnsName[0] = 0;\n            return (dnsName, node);\n        }\n\n        // use unchecked to save gas since we check for an underflow\n        // and we check for the length before the loop\n        unchecked {\n            for (uint256 i = length - 1; i >= 0; i--) {\n                if (bytesName[i] == \".\") {\n                    dnsName[i + 1] = bytes1(labelLength);\n                    node = keccak256(\n                        abi.encodePacked(\n                            node,\n                            bytesName.keccak(i + 1, labelLength)\n                        )\n                    );\n                    labelLength = 0;\n                } else {\n                    labelLength += 1;\n                    dnsName[i + 1] = bytesName[i];\n                }\n                if (i == 0) {\n                    break;\n                }\n            }\n        }\n\n        node = keccak256(\n            abi.encodePacked(node, bytesName.keccak(0, labelLength))\n        );\n\n        dnsName[0] = bytes1(labelLength);\n        return (dnsName, node);\n    }\n}\n"
      },
      "contracts/wrapper/BytesUtils.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nlibrary BytesUtils {\n    /*\n     * @dev Returns the keccak-256 hash of a byte range.\n     * @param self The byte string to hash.\n     * @param offset The position to start hashing at.\n     * @param len The number of bytes to hash.\n     * @return The hash of the byte range.\n     */\n    function keccak(\n        bytes memory self,\n        uint256 offset,\n        uint256 len\n    ) internal pure returns (bytes32 ret) {\n        require(offset + len <= self.length);\n        assembly {\n            ret := keccak256(add(add(self, 32), offset), len)\n        }\n    }\n\n    /**\n     * @dev Returns the ENS namehash of a DNS-encoded name.\n     * @param self The DNS-encoded name to hash.\n     * @param offset The offset at which to start hashing.\n     * @return The namehash of the name.\n     */\n    function namehash(bytes memory self, uint256 offset)\n        internal\n        pure\n        returns (bytes32)\n    {\n        (bytes32 labelhash, uint256 newOffset) = readLabel(self, offset);\n        if (labelhash == bytes32(0)) {\n            require(offset == self.length - 1, \"namehash: Junk at end of name\");\n            return bytes32(0);\n        }\n        return\n            keccak256(abi.encodePacked(namehash(self, newOffset), labelhash));\n    }\n\n    /**\n     * @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\n     * @param self The byte string to read a label from.\n     * @param idx The index to read a label at.\n     * @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\n     * @return newIdx The index of the start of the next label.\n     */\n    function readLabel(bytes memory self, uint256 idx)\n        internal\n        pure\n        returns (bytes32 labelhash, uint256 newIdx)\n    {\n        require(idx < self.length, \"readLabel: Index out of bounds\");\n        uint256 len = uint256(uint8(self[idx]));\n        if (len > 0) {\n            labelhash = keccak(self, idx + 1, len);\n        } else {\n            labelhash = bytes32(0);\n        }\n        newIdx = idx + len + 1;\n    }\n}\n"
      },
      "contracts/wrapper/test/TestBytesUtils.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport {BytesUtils} from \"../BytesUtils.sol\";\n\ncontract TestBytesUtils {\n    using BytesUtils for *;\n\n    function readLabel(bytes calldata name, uint256 offset)\n        public\n        pure\n        returns (bytes32, uint256)\n    {\n        return name.readLabel(offset);\n    }\n\n    function namehash(bytes calldata name, uint256 offset)\n        public\n        pure\n        returns (bytes32)\n    {\n        return name.namehash(offset);\n    }\n}\n"
      },
      "contracts/wrapper/test/NameGriefer.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport {BytesUtils} from \"../BytesUtils.sol\";\nimport {INameWrapper} from \"../INameWrapper.sol\";\nimport {ENS} from \"../../registry/ENS.sol\";\nimport {IERC1155Receiver} from \"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\";\n\ncontract NameGriefer is IERC1155Receiver {\n    using BytesUtils for *;\n\n    ENS public immutable ens;\n    INameWrapper public immutable wrapper;\n\n    constructor(INameWrapper _wrapper) {\n        wrapper = _wrapper;\n        ENS _ens = _wrapper.ens();\n        ens = _ens;\n        _ens.setApprovalForAll(address(_wrapper), true);\n    }\n\n    function destroy(bytes calldata name) public {\n        wrapper.wrap(name, address(this), address(0));\n    }\n\n    function onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256,\n        bytes calldata\n    ) external override returns (bytes4) {\n        require(operator == address(this), \"Operator must be us\");\n        require(from == address(0), \"Token must be new\");\n\n        // Unwrap the name\n        bytes memory name = wrapper.names(bytes32(id));\n        (bytes32 labelhash, uint256 offset) = name.readLabel(0);\n        bytes32 parentNode = name.namehash(offset);\n        wrapper.unwrap(parentNode, labelhash, address(this));\n\n        // Here we can do something with the name before it's permanently burned, like\n        // set the resolver or create subdomains.\n\n        return NameGriefer.onERC1155Received.selector;\n    }\n\n    function onERC1155BatchReceived(\n        address,\n        address,\n        uint256[] calldata,\n        uint256[] calldata,\n        bytes calldata\n    ) external override returns (bytes4) {\n        return NameGriefer.onERC1155BatchReceived.selector;\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        external\n        view\n        override\n        returns (bool)\n    {\n        return\n            interfaceID == 0x01ffc9a7 || // ERC-165 support (i.e. `bytes4(keccak256('supportsInterface(bytes4)'))`).\n            interfaceID == 0x4e2312e0; // ERC-1155 `ERC1155TokenReceiver` support (i.e. `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\")) ^ bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`).\n    }\n}\n"
      },
      "contracts/wrapper/INameWrapper.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"../registry/ENS.sol\";\nimport \"../ethregistrar/IBaseRegistrar.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport \"./IMetadataService.sol\";\n\nuint32 constant CANNOT_UNWRAP = 1;\nuint32 constant CANNOT_BURN_FUSES = 2;\nuint32 constant CANNOT_TRANSFER = 4;\nuint32 constant CANNOT_SET_RESOLVER = 8;\nuint32 constant CANNOT_SET_TTL = 16;\nuint32 constant CANNOT_CREATE_SUBDOMAIN = 32;\nuint32 constant PARENT_CANNOT_CONTROL = 64;\nuint32 constant CAN_DO_EVERYTHING = 0;\n\ninterface INameWrapper is IERC1155 {\n    event NameWrapped(\n        bytes32 indexed node,\n        bytes name,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    );\n\n    event NameUnwrapped(bytes32 indexed node, address owner);\n\n    event FusesSet(bytes32 indexed node, uint32 fuses, uint64 expiry);\n\n    function ens() external view returns (ENS);\n\n    function registrar() external view returns (IBaseRegistrar);\n\n    function metadataService() external view returns (IMetadataService);\n\n    function names(bytes32) external view returns (bytes memory);\n\n    function wrap(\n        bytes calldata name,\n        address wrappedOwner,\n        address resolver\n    ) external;\n\n    function wrapETH2LD(\n        string calldata label,\n        address wrappedOwner,\n        uint32 fuses,\n        uint64 _expiry,\n        address resolver\n    ) external returns (uint64 expiry);\n\n    function registerAndWrapETH2LD(\n        string calldata label,\n        address wrappedOwner,\n        uint256 duration,\n        address resolver,\n        uint32 fuses,\n        uint64 expiry\n    ) external returns (uint256 registrarExpiry);\n\n    function renew(\n        uint256 labelHash,\n        uint256 duration,\n        uint32 fuses,\n        uint64 expiry\n    ) external returns (uint256 expires);\n\n    function unwrap(\n        bytes32 node,\n        bytes32 label,\n        address owner\n    ) external;\n\n    function unwrapETH2LD(\n        bytes32 label,\n        address newRegistrant,\n        address newController\n    ) external;\n\n    function setFuses(bytes32 node, uint32 fuses)\n        external\n        returns (uint32 newFuses);\n\n    function setChildFuses(\n        bytes32 parentNode,\n        bytes32 labelhash,\n        uint32 fuses,\n        uint64 expiry\n    ) external;\n\n    function setSubnodeRecord(\n        bytes32 node,\n        string calldata label,\n        address owner,\n        address resolver,\n        uint64 ttl,\n        uint32 fuses,\n        uint64 expiry\n    ) external returns (bytes32);\n\n    function setRecord(\n        bytes32 node,\n        address owner,\n        address resolver,\n        uint64 ttl\n    ) external;\n\n    function setSubnodeOwner(\n        bytes32 node,\n        string calldata label,\n        address newOwner,\n        uint32 fuses,\n        uint64 expiry\n    ) external returns (bytes32);\n\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\n        external\n        returns (bool);\n\n    function setResolver(bytes32 node, address resolver) external;\n\n    function setTTL(bytes32 node, uint64 ttl) external;\n\n    function ownerOf(uint256 id) external returns (address owner);\n\n    function getData(uint256 id)\n        external\n        returns (\n            address,\n            uint32,\n            uint64\n        );\n\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\n        external\n        view\n        returns (bool);\n\n    function isWrapped(bytes32 node) external view returns (bool);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n    /**\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\n     *\n     * NOTE: To accept the transfer, this must return\n     * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n     * (i.e. 0xf23a6e61, or its own function selector).\n     *\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\n     * @param from The address which previously owned the token\n     * @param id The ID of the token being transferred\n     * @param value The amount of tokens being transferred\n     * @param data Additional data with no specified format\n     * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n     */\n    function onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external returns (bytes4);\n\n    /**\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\n     * been updated.\n     *\n     * NOTE: To accept the transfer(s), this must return\n     * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n     * (i.e. 0xbc197c81, or its own function selector).\n     *\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n     * @param from The address which previously owned the token\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n     * @param data Additional data with no specified format\n     * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n     */\n    function onERC1155BatchReceived(\n        address operator,\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "contracts/ethregistrar/IBaseRegistrar.sol": {
        "content": "import \"../registry/ENS.sol\";\nimport \"./IBaseRegistrar.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\ninterface IBaseRegistrar is IERC721 {\n    event ControllerAdded(address indexed controller);\n    event ControllerRemoved(address indexed controller);\n    event NameMigrated(\n        uint256 indexed id,\n        address indexed owner,\n        uint256 expires\n    );\n    event NameRegistered(\n        uint256 indexed id,\n        address indexed owner,\n        uint256 expires\n    );\n    event NameRenewed(uint256 indexed id, uint256 expires);\n\n    // Authorises a controller, who can register and renew domains.\n    function addController(address controller) external;\n\n    // Revoke controller permission for an address.\n    function removeController(address controller) external;\n\n    // Set the resolver for the TLD this registrar manages.\n    function setResolver(address resolver) external;\n\n    // Returns the expiration timestamp of the specified label hash.\n    function nameExpires(uint256 id) external view returns (uint256);\n\n    // Returns true iff the specified name is available for registration.\n    function available(uint256 id) external view returns (bool);\n\n    /**\n     * @dev Register a name.\n     */\n    function register(\n        uint256 id,\n        address owner,\n        uint256 duration\n    ) external returns (uint256);\n\n    function renew(uint256 id, uint256 duration) external returns (uint256);\n\n    /**\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\n     */\n    function reclaim(uint256 id, address owner) external;\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155 is IERC165 {\n    /**\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\n     */\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n    /**\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n     * transfers.\n     */\n    event TransferBatch(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256[] ids,\n        uint256[] values\n    );\n\n    /**\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n     * `approved`.\n     */\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n    /**\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n     *\n     * If an {URI} event was emitted for `id`, the standard\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n     * returned by {IERC1155MetadataURI-uri}.\n     */\n    event URI(string value, uint256 indexed id);\n\n    /**\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function balanceOf(address account, uint256 id) external view returns (uint256);\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n     *\n     * Requirements:\n     *\n     * - `accounts` and `ids` must have the same length.\n     */\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n        external\n        view\n        returns (uint256[] memory);\n\n    /**\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n     *\n     * Emits an {ApprovalForAll} event.\n     *\n     * Requirements:\n     *\n     * - `operator` cannot be the caller.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n     *\n     * See {setApprovalForAll}.\n     */\n    function isApprovedForAll(address account, address operator) external view returns (bool);\n\n    /**\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n     * acceptance magic value.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes calldata data\n    ) external;\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n     *\n     * Emits a {TransferBatch} event.\n     *\n     * Requirements:\n     *\n     * - `ids` and `amounts` must have the same length.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n     * acceptance magic value.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata amounts,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/wrapper/IMetadataService.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\ninterface IMetadataService {\n    function uri(uint256) external view returns (string memory);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC721/IERC721.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the caller.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool _approved) external;\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/wrapper/test/TestNameWrapperReentrancy.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"../INameWrapper.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\ncontract TestNameWrapperReentrancy is ERC165, IERC1155Receiver {\n    INameWrapper nameWrapper;\n    address owner;\n    bytes32 parentNode;\n    bytes32 labelHash;\n    uint256 tokenId;\n\n    constructor(\n        address _owner,\n        INameWrapper _nameWrapper,\n        bytes32 _parentNode,\n        bytes32 _labelHash\n    ) {\n        owner = _owner;\n        nameWrapper = _nameWrapper;\n        parentNode = _parentNode;\n        labelHash = _labelHash;\n    }\n\n    function supportsInterface(bytes4 interfaceId)\n        public\n        view\n        virtual\n        override(ERC165, IERC165)\n        returns (bool)\n    {\n        return\n            interfaceId == type(IERC1155Receiver).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    function onERC1155Received(\n        address,\n        address,\n        uint256 _id,\n        uint256,\n        bytes calldata\n    ) public override returns (bytes4) {\n        tokenId = _id;\n        nameWrapper.unwrap(parentNode, labelHash, owner);\n\n        return this.onERC1155Received.selector;\n    }\n\n    function onERC1155BatchReceived(\n        address,\n        address,\n        uint256[] memory,\n        uint256[] memory,\n        bytes memory\n    ) public virtual override returns (bytes4) {\n        return this.onERC1155BatchReceived.selector;\n    }\n\n    function claimToOwner() public {\n        nameWrapper.safeTransferFrom(address(this), owner, tokenId, 1, \"\");\n    }\n}\n"
      },
      "contracts/wrapper/NameWrapper.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport {ERC1155Fuse, IERC165, OperationProhibited} from \"./ERC1155Fuse.sol\";\nimport {Controllable} from \"./Controllable.sol\";\nimport {INameWrapper, CANNOT_UNWRAP, CANNOT_BURN_FUSES, CANNOT_TRANSFER, CANNOT_SET_RESOLVER, CANNOT_SET_TTL, CANNOT_CREATE_SUBDOMAIN, PARENT_CANNOT_CONTROL, CAN_DO_EVERYTHING} from \"./INameWrapper.sol\";\nimport {INameWrapperUpgrade} from \"./INameWrapperUpgrade.sol\";\nimport {IMetadataService} from \"./IMetadataService.sol\";\nimport {ENS} from \"../registry/ENS.sol\";\nimport {IBaseRegistrar} from \"../ethregistrar/IBaseRegistrar.sol\";\nimport {IERC721Receiver} from \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {BytesUtils} from \"./BytesUtils.sol\";\nimport {ERC20Recoverable} from \"../utils/ERC20Recoverable.sol\";\n\nerror Unauthorised(bytes32 node, address addr);\nerror NameNotFound();\nerror IncompatibleParent();\nerror IncompatibleName(bytes name);\nerror IncorrectTokenType();\nerror LabelMismatch(bytes32 labelHash, bytes32 expectedLabelhash);\nerror LabelTooShort();\nerror LabelTooLong(string label);\nerror IncorrectTargetOwner(address owner);\nerror CannotUpgrade();\n\ncontract NameWrapper is\n    Ownable,\n    ERC1155Fuse,\n    INameWrapper,\n    Controllable,\n    IERC721Receiver,\n    ERC20Recoverable\n{\n    using BytesUtils for bytes;\n    ENS public immutable override ens;\n    IBaseRegistrar public immutable override registrar;\n    IMetadataService public override metadataService;\n    mapping(bytes32 => bytes) public override names;\n    string public constant name = \"NameWrapper\";\n\n    bytes32 private constant ETH_NODE =\n        0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae;\n    bytes32 private constant ROOT_NODE =\n        0x0000000000000000000000000000000000000000000000000000000000000000;\n\n    INameWrapperUpgrade public upgradeContract;\n    uint64 private constant MAX_EXPIRY = type(uint64).max;\n\n    constructor(\n        ENS _ens,\n        IBaseRegistrar _registrar,\n        IMetadataService _metadataService\n    ) {\n        ens = _ens;\n        registrar = _registrar;\n        metadataService = _metadataService;\n\n        /* Burn PARENT_CANNOT_CONTROL and CANNOT_UNWRAP fuses for ROOT_NODE and ETH_NODE */\n\n        _setData(\n            uint256(ETH_NODE),\n            address(0),\n            uint32(PARENT_CANNOT_CONTROL | CANNOT_UNWRAP),\n            MAX_EXPIRY\n        );\n        _setData(\n            uint256(ROOT_NODE),\n            address(0),\n            uint32(PARENT_CANNOT_CONTROL | CANNOT_UNWRAP),\n            MAX_EXPIRY\n        );\n        names[ROOT_NODE] = \"\\x00\";\n        names[ETH_NODE] = \"\\x03eth\\x00\";\n    }\n\n    function supportsInterface(bytes4 interfaceId)\n        public\n        view\n        virtual\n        override(ERC1155Fuse, IERC165)\n        returns (bool)\n    {\n        return\n            interfaceId == type(INameWrapper).interfaceId ||\n            interfaceId == type(IERC721Receiver).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /* ERC1155 Fuse */\n\n    /**\n     * @notice Gets the owner of a name\n     * @param id Label as a string of the .eth domain to wrap\n     * @return owner The owner of the name\n     */\n\n    function ownerOf(uint256 id)\n        public\n        view\n        override(ERC1155Fuse, INameWrapper)\n        returns (address owner)\n    {\n        return super.ownerOf(id);\n    }\n\n    /**\n     * @notice Gets the data for a name\n     * @param id Label as a string of the .eth domain to wrap\n     * @return address The owner of the name\n     * @return uint32 Fuses of the name\n     * @return uint64 Expiry of when the fuses expire for the name\n     */\n\n    function getData(uint256 id)\n        public\n        view\n        override(ERC1155Fuse, INameWrapper)\n        returns (\n            address,\n            uint32,\n            uint64\n        )\n    {\n        return super.getData(id);\n    }\n\n    /* Metadata service */\n\n    /**\n     * @notice Set the metadata service. Only the owner can do this\n     * @param _metadataService The new metadata service\n     */\n\n    function setMetadataService(IMetadataService _metadataService)\n        public\n        onlyOwner\n    {\n        metadataService = _metadataService;\n    }\n\n    /**\n     * @notice Get the metadata uri\n     * @param tokenId The id of the token\n     * @return string uri of the metadata service\n     */\n\n    function uri(uint256 tokenId) public view override returns (string memory) {\n        return metadataService.uri(tokenId);\n    }\n\n    /**\n     * @notice Set the address of the upgradeContract of the contract. only admin can do this\n     * @dev The default value of upgradeContract is the 0 address. Use the 0 address at any time\n     * to make the contract not upgradable.\n     * @param _upgradeAddress address of an upgraded contract\n     */\n\n    function setUpgradeContract(INameWrapperUpgrade _upgradeAddress)\n        public\n        onlyOwner\n    {\n        if (address(upgradeContract) != address(0)) {\n            registrar.setApprovalForAll(address(upgradeContract), false);\n            ens.setApprovalForAll(address(upgradeContract), false);\n        }\n\n        upgradeContract = _upgradeAddress;\n\n        if (address(upgradeContract) != address(0)) {\n            registrar.setApprovalForAll(address(upgradeContract), true);\n            ens.setApprovalForAll(address(upgradeContract), true);\n        }\n    }\n\n    /**\n     * @notice Checks if msg.sender is the owner or approved by the owner of a name\n     * @param node namehash of the name to check\n     */\n\n    modifier onlyTokenOwner(bytes32 node) {\n        if (!isTokenOwnerOrApproved(node, msg.sender)) {\n            revert Unauthorised(node, msg.sender);\n        }\n\n        _;\n    }\n\n    /**\n     * @notice Checks if owner or approved by owner\n     * @param node namehash of the name to check\n     * @param addr which address to check permissions for\n     * @return whether or not is owner or approved\n     */\n\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\n        public\n        view\n        override\n        returns (bool)\n    {\n        address owner = ownerOf(uint256(node));\n        return owner == addr || isApprovedForAll(owner, addr);\n    }\n\n    /**\n     * @notice Wraps a .eth domain, creating a new token and sending the original ERC721 token to this contract\n     * @dev Can be called by the owner of the name on the .eth registrar or an authorised caller on the registrar\n     * @param label Label as a string of the .eth domain to wrap\n     * @param wrappedOwner Owner of the name in this contract\n     * @param fuses Initial fuses to set\n     * @param expiry When the fuses will expire\n     * @param resolver Resolver contract address\n     * @return Normalised expiry of when the fuses expire\n     */\n\n    function wrapETH2LD(\n        string calldata label,\n        address wrappedOwner,\n        uint32 fuses,\n        uint64 expiry,\n        address resolver\n    ) public override returns (uint64) {\n        uint256 tokenId = uint256(keccak256(bytes(label)));\n        address registrant = registrar.ownerOf(tokenId);\n        if (\n            registrant != msg.sender &&\n            !registrar.isApprovedForAll(registrant, msg.sender)\n        ) {\n            revert Unauthorised(\n                _makeNode(ETH_NODE, bytes32(tokenId)),\n                msg.sender\n            );\n        }\n\n        // transfer the token from the user to this contract\n        registrar.transferFrom(registrant, address(this), tokenId);\n\n        // transfer the ens record back to the new owner (this contract)\n        registrar.reclaim(tokenId, address(this));\n\n        return _wrapETH2LD(label, wrappedOwner, fuses, expiry, resolver);\n    }\n\n    /**\n     * @dev Registers a new .eth second-level domain and wraps it.\n     *      Only callable by authorised controllers.\n     * @param label The label to register (Eg, 'foo' for 'foo.eth').\n     * @param wrappedOwner The owner of the wrapped name.\n     * @param duration The duration, in seconds, to register the name for.\n     * @param resolver The resolver address to set on the ENS registry (optional).\n     * @param fuses Initial fuses to set\n     * @param expiry When the fuses will expire\n     * @return registrarExpiry The expiry date of the new name on the .eth registrar, in seconds since the Unix epoch.\n     */\n\n    function registerAndWrapETH2LD(\n        string calldata label,\n        address wrappedOwner,\n        uint256 duration,\n        address resolver,\n        uint32 fuses,\n        uint64 expiry\n    ) external override onlyController returns (uint256 registrarExpiry) {\n        uint256 tokenId = uint256(keccak256(bytes(label)));\n        registrarExpiry = registrar.register(tokenId, address(this), duration);\n        _wrapETH2LD(label, wrappedOwner, fuses, expiry, resolver);\n    }\n\n    /**\n     * @notice Renews a .eth second-level domain.\n     * @dev Only callable by authorised controllers.\n     * @param tokenId The hash of the label to register (eg, `keccak256('foo')`, for 'foo.eth').\n     * @param duration The number of seconds to renew the name for.\n     * @return expires The expiry date of the name on the .eth registrar, in seconds since the Unix epoch.\n     */\n\n    function renew(\n        uint256 tokenId,\n        uint256 duration,\n        uint32 fuses,\n        uint64 expiry\n    ) external override onlyController returns (uint256 expires) {\n        bytes32 node = _makeNode(ETH_NODE, bytes32(tokenId));\n\n        expires = registrar.renew(tokenId, duration);\n        if (isWrapped(node)) {\n            (address owner, uint32 oldFuses, uint64 oldExpiry) = getData(\n                uint256(node)\n            );\n            expiry = _normaliseExpiry(expiry, oldExpiry, uint64(expires));\n\n            _setData(\n                node,\n                owner,\n                oldFuses | fuses | PARENT_CANNOT_CONTROL,\n                expiry\n            );\n        }\n    }\n\n    /**\n     * @notice Wraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\n     * @dev Can be called by the owner in the registry or an authorised caller in the registry\n     * @param name The name to wrap, in DNS format\n     * @param wrappedOwner Owner of the name in this contract\n     * @param resolver Resolver contract\n     */\n\n    function wrap(\n        bytes calldata name,\n        address wrappedOwner,\n        address resolver\n    ) public override {\n        (bytes32 labelhash, uint256 offset) = name.readLabel(0);\n        bytes32 parentNode = name.namehash(offset);\n        bytes32 node = _makeNode(parentNode, labelhash);\n\n        if (parentNode == ETH_NODE) {\n            revert IncompatibleParent();\n        }\n\n        address owner = ens.owner(node);\n\n        if (owner != msg.sender && !ens.isApprovedForAll(owner, msg.sender)) {\n            revert Unauthorised(node, msg.sender);\n        }\n\n        if (resolver != address(0)) {\n            ens.setResolver(node, resolver);\n        }\n\n        ens.setOwner(node, address(this));\n\n        _wrap(node, name, wrappedOwner, 0, 0);\n    }\n\n    /**\n     * @notice Unwraps a .eth domain. e.g. vitalik.eth\n     * @dev Can be called by the owner in the wrapper or an authorised caller in the wrapper\n     * @param labelhash Labelhash of the .eth domain\n     * @param registrant Sets the owner in the .eth registrar to this address\n     * @param controller Sets the owner in the registry to this address\n     */\n\n    function unwrapETH2LD(\n        bytes32 labelhash,\n        address registrant,\n        address controller\n    ) public override onlyTokenOwner(_makeNode(ETH_NODE, labelhash)) {\n        if (controller == address(0x0)) {\n            revert IncorrectTargetOwner(controller);\n        }\n        if (registrant == address(this)) {\n            revert IncorrectTargetOwner(registrant);\n        }\n        _unwrap(_makeNode(ETH_NODE, labelhash), controller);\n        registrar.safeTransferFrom(\n            address(this),\n            registrant,\n            uint256(labelhash)\n        );\n    }\n\n    /**\n     * @notice Unwraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\n     * @dev Can be called by the owner in the wrapper or an authorised caller in the wrapper\n     * @param parentNode Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')\n     * @param labelhash Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')\n     * @param controller Sets the owner in the registry to this address\n     */\n\n    function unwrap(\n        bytes32 parentNode,\n        bytes32 labelhash,\n        address controller\n    ) public override onlyTokenOwner(_makeNode(parentNode, labelhash)) {\n        if (parentNode == ETH_NODE) {\n            revert IncompatibleParent();\n        }\n        if (controller == address(0x0) || controller == address(this)) {\n            revert IncorrectTargetOwner(controller);\n        }\n        _unwrap(_makeNode(parentNode, labelhash), controller);\n    }\n\n    /**\n     * @notice Sets fuses of a name\n     * @param node Namehash of the name\n     * @param fuses Fuses to burn (cannot burn PARENT_CANNOT_CONTROL)\n     * @return New fuses\n     */\n\n    function setFuses(bytes32 node, uint32 fuses)\n        public\n        onlyTokenOwner(node)\n        operationAllowed(node, CANNOT_BURN_FUSES)\n        returns (uint32)\n    {\n        _checkForParentCannotControl(node, fuses);\n\n        (address owner, uint32 oldFuses, uint64 expiry) = getData(\n            uint256(node)\n        );\n\n        fuses |= oldFuses;\n        _setFuses(node, owner, fuses, expiry);\n        return fuses;\n    }\n\n    /**\n     * @notice Upgrades a .eth wrapped domain by calling the wrapETH2LD function of the upgradeContract\n     *     and burning the token of this contract\n     * @dev Can be called by the owner of the name in this contract\n     * @param label Label as a string of the .eth name to upgrade\n     * @param wrappedOwner The owner of the wrapped name\n     */\n\n    function upgradeETH2LD(\n        string calldata label,\n        address wrappedOwner,\n        address resolver\n    ) public {\n        bytes32 labelhash = keccak256(bytes(label));\n        bytes32 node = _makeNode(ETH_NODE, labelhash);\n        (uint32 fuses, uint64 expiry) = _prepareUpgrade(node);\n\n        upgradeContract.wrapETH2LD(\n            label,\n            wrappedOwner,\n            fuses,\n            expiry,\n            resolver\n        );\n    }\n\n    /**\n     * @notice Upgrades a non .eth domain of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\n     * @dev Can be called by the owner or an authorised caller\n     * Requires upgraded Namewrapper to permit old Namewrapper to call `setSubnodeRecord` for all names\n     * @param parentNode Namehash of the parent name\n     * @param label Label as a string of the name to upgrade\n     * @param wrappedOwner Owner of the name in this contract\n     * @param resolver Resolver contract for this name\n     */\n\n    function upgrade(\n        bytes32 parentNode,\n        string calldata label,\n        address wrappedOwner,\n        address resolver\n    ) public {\n        bytes32 labelhash = keccak256(bytes(label));\n        bytes32 node = _makeNode(parentNode, labelhash);\n        (uint32 fuses, uint64 expiry) = _prepareUpgrade(node);\n        upgradeContract.setSubnodeRecord(\n            parentNode,\n            label,\n            wrappedOwner,\n            resolver,\n            0,\n            fuses,\n            expiry\n        );\n    }\n\n    /** \n    /* @notice Sets fuses of a name that you own the parent of. Can also be called by the owner of a .eth name\n     * @param parentNode Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')\n     * @param labelhash Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')\n     * @param fuses Fuses to burn\n     * @param expiry When the fuses will expire\n     */\n\n    function setChildFuses(\n        bytes32 parentNode,\n        bytes32 labelhash,\n        uint32 fuses,\n        uint64 expiry\n    ) public {\n        bytes32 node = _makeNode(parentNode, labelhash);\n        (address owner, uint32 oldFuses, uint64 oldExpiry) = getData(\n            uint256(node)\n        );\n        uint64 maxExpiry;\n        (, uint32 parentFuses, uint64 parentExpiry) = getData(\n            uint256(parentNode)\n        );\n        if (parentNode == ETH_NODE) {\n            if (!isTokenOwnerOrApproved(node, msg.sender)) {\n                revert Unauthorised(node, msg.sender);\n            }\n            // max expiry is set to the expiry on the registrar\n            maxExpiry = uint64(registrar.nameExpires(uint256(labelhash)));\n        } else {\n            if (!isTokenOwnerOrApproved(parentNode, msg.sender)) {\n                revert Unauthorised(node, msg.sender);\n            }\n\n            // max expiry is set to the expiry of the parent\n            maxExpiry = parentExpiry;\n        }\n\n        _checkParentFuses(node, fuses, parentFuses);\n\n        expiry = _normaliseExpiry(expiry, oldExpiry, maxExpiry);\n\n        // if PARENT_CANNOT_CONTROL has been burned and fuses have changed\n        if (\n            oldFuses & PARENT_CANNOT_CONTROL != 0 &&\n            oldFuses | fuses != oldFuses\n        ) {\n            revert OperationProhibited(node);\n        }\n        fuses |= oldFuses;\n        _setFuses(node, owner, fuses, expiry);\n    }\n\n    /**\n     * @notice Sets the subdomain owner in the registry and then wraps the subdomain\n     * @param parentNode Parent namehash of the subdomain\n     * @param label Label of the subdomain as a string\n     * @param owner New owner in the wrapper\n     * @param fuses Initial fuses for the wrapped subdomain\n     * @param expiry When the fuses will expire\n     * @return node Namehash of the subdomain\n     */\n\n    function setSubnodeOwner(\n        bytes32 parentNode,\n        string calldata label,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    )\n        public\n        onlyTokenOwner(parentNode)\n        canCallSetSubnodeOwner(parentNode, keccak256(bytes(label)))\n        returns (bytes32 node)\n    {\n        bytes32 labelhash = keccak256(bytes(label));\n        node = _makeNode(parentNode, labelhash);\n        expiry = _checkParentFusesAndExpiry(parentNode, node, fuses, expiry);\n\n        if (!isWrapped(node)) {\n            ens.setSubnodeOwner(parentNode, labelhash, address(this));\n            _addLabelAndWrap(parentNode, node, label, owner, fuses, expiry);\n        } else {\n            _updateName(parentNode, node, label, owner, fuses, expiry);\n        }\n    }\n\n    /**\n     * @notice Sets the subdomain owner in the registry with records and then wraps the subdomain\n     * @param parentNode parent namehash of the subdomain\n     * @param label label of the subdomain as a string\n     * @param owner new owner in the wrapper\n     * @param resolver resolver contract in the registry\n     * @param ttl ttl in the regsitry\n     * @param fuses initial fuses for the wrapped subdomain\n     * @param expiry expiry date for the domain\n     * @return node Namehash of the subdomain\n     */\n\n    function setSubnodeRecord(\n        bytes32 parentNode,\n        string memory label,\n        address owner,\n        address resolver,\n        uint64 ttl,\n        uint32 fuses,\n        uint64 expiry\n    )\n        public\n        onlyTokenOwner(parentNode)\n        canCallSetSubnodeOwner(parentNode, keccak256(bytes(label)))\n        returns (bytes32 node)\n    {\n        bytes32 labelhash = keccak256(bytes(label));\n        node = _makeNode(parentNode, labelhash);\n        expiry = _checkParentFusesAndExpiry(parentNode, node, fuses, expiry);\n        if (!isWrapped(node)) {\n            ens.setSubnodeRecord(\n                parentNode,\n                labelhash,\n                address(this),\n                resolver,\n                ttl\n            );\n            _addLabelAndWrap(parentNode, node, label, owner, fuses, expiry);\n        } else {\n            ens.setSubnodeRecord(\n                parentNode,\n                labelhash,\n                address(this),\n                resolver,\n                ttl\n            );\n            _updateName(parentNode, node, label, owner, fuses, expiry);\n        }\n    }\n\n    /**\n     * @notice Sets records for the name in the ENS Registry\n     * @param node Namehash of the name to set a record for\n     * @param owner New owner in the registry\n     * @param resolver Resolver contract\n     * @param ttl Time to live in the registry\n     */\n\n    function setRecord(\n        bytes32 node,\n        address owner,\n        address resolver,\n        uint64 ttl\n    )\n        public\n        override\n        onlyTokenOwner(node)\n        operationAllowed(\n            node,\n            CANNOT_TRANSFER | CANNOT_SET_RESOLVER | CANNOT_SET_TTL\n        )\n    {\n        ens.setRecord(node, address(this), resolver, ttl);\n        (address oldOwner, , ) = getData(uint256(node));\n        _transfer(oldOwner, owner, uint256(node), 1, \"\");\n    }\n\n    /**\n     * @notice Sets resolver contract in the registry\n     * @param node namehash of the name\n     * @param resolver the resolver contract\n     */\n\n    function setResolver(bytes32 node, address resolver)\n        public\n        override\n        onlyTokenOwner(node)\n        operationAllowed(node, CANNOT_SET_RESOLVER)\n    {\n        ens.setResolver(node, resolver);\n    }\n\n    /**\n     * @notice Sets TTL in the registry\n     * @param node Namehash of the name\n     * @param ttl TTL in the registry\n     */\n\n    function setTTL(bytes32 node, uint64 ttl)\n        public\n        override\n        onlyTokenOwner(node)\n        operationAllowed(node, CANNOT_SET_TTL)\n    {\n        ens.setTTL(node, ttl);\n    }\n\n    /**\n     * @dev Allows an operation only if none of the specified fuses are burned.\n     * @param node The namehash of the name to check fuses on.\n     * @param fuseMask A bitmask of fuses that must not be burned.\n     */\n\n    modifier operationAllowed(bytes32 node, uint32 fuseMask) {\n        (, uint32 fuses, ) = getData(uint256(node));\n        if (fuses & fuseMask != 0) {\n            revert OperationProhibited(node);\n        }\n        _;\n    }\n\n    /**\n     * @notice Check whether a name can call setSubnodeOwner/setSubnodeRecord\n     * @dev Checks both CANNOT_CREATE_SUBDOMAIN and PARENT_CANNOT_CONTROL and whether not they have been burnt\n     *      and checks whether the owner of the subdomain is 0x0 for creating or already exists for\n     *      replacing a subdomain. If either conditions are true, then it is possible to call\n     *      setSubnodeOwner\n     * @param node Namehash of the name to check\n     * @param labelhash Labelhash of the name to check\n     */\n\n    modifier canCallSetSubnodeOwner(bytes32 node, bytes32 labelhash) {\n        bytes32 subnode = _makeNode(node, labelhash);\n        address owner = ens.owner(subnode);\n\n        if (owner == address(0)) {\n            (, uint32 fuses, ) = getData(uint256(node));\n            if (fuses & CANNOT_CREATE_SUBDOMAIN != 0) {\n                revert OperationProhibited(subnode);\n            }\n        } else {\n            (, uint32 subnodeFuses, ) = getData(uint256(subnode));\n            if (subnodeFuses & PARENT_CANNOT_CONTROL != 0) {\n                revert OperationProhibited(subnode);\n            }\n        }\n\n        _;\n    }\n\n    /**\n     * @notice Checks all Fuses in the mask are burned for the node\n     * @param node Namehash of the name\n     * @param fuseMask The fuses you want to check\n     * @return Boolean of whether or not all the selected fuses are burned\n     */\n\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\n        public\n        view\n        override\n        returns (bool)\n    {\n        (, uint32 fuses, ) = getData(uint256(node));\n        return fuses & fuseMask == fuseMask;\n    }\n\n    /**\n     * @notice Checks if a name is wrapped or not\n     * @dev Both of these checks need to be true to be considered wrapped if checked without this contract\n     * @param node Namehash of the name\n     * @return Boolean of whether or not the name is wrapped\n     */\n\n    function isWrapped(bytes32 node) public view override returns (bool) {\n        return\n            ownerOf(uint256(node)) != address(0) &&\n            ens.owner(node) == address(this);\n    }\n\n    function onERC721Received(\n        address to,\n        address,\n        uint256 tokenId,\n        bytes calldata data\n    ) public override returns (bytes4) {\n        //check if it's the eth registrar ERC721\n        if (msg.sender != address(registrar)) {\n            revert IncorrectTokenType();\n        }\n\n        (\n            string memory label,\n            address owner,\n            uint32 fuses,\n            uint64 expiry,\n            address resolver\n        ) = abi.decode(data, (string, address, uint32, uint64, address));\n\n        bytes32 labelhash = bytes32(tokenId);\n        bytes32 labelhashFromData = keccak256(bytes(label));\n\n        if (labelhashFromData != labelhash) {\n            revert LabelMismatch(labelhashFromData, labelhash);\n        }\n\n        // transfer the ens record back to the new owner (this contract)\n        registrar.reclaim(uint256(labelhash), address(this));\n\n        _wrapETH2LD(label, owner, fuses, expiry, resolver);\n\n        return IERC721Receiver(to).onERC721Received.selector;\n    }\n\n    /***** Internal functions */\n\n    function _canTransfer(uint32 fuses) internal pure override returns (bool) {\n        return fuses & CANNOT_TRANSFER == 0;\n    }\n\n    function _makeNode(bytes32 node, bytes32 labelhash)\n        private\n        pure\n        returns (bytes32)\n    {\n        return keccak256(abi.encodePacked(node, labelhash));\n    }\n\n    function _addLabel(string memory label, bytes memory name)\n        internal\n        pure\n        returns (bytes memory ret)\n    {\n        if (bytes(label).length < 1) {\n            revert LabelTooShort();\n        }\n        if (bytes(label).length > 255) {\n            revert LabelTooLong(label);\n        }\n        return abi.encodePacked(uint8(bytes(label).length), label, name);\n    }\n\n    function _mint(\n        bytes32 node,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    ) internal override {\n        _canFusesBeBurned(node, fuses);\n        address oldOwner = ownerOf(uint256(node));\n        if (oldOwner != address(0)) {\n            // burn and unwrap old token of old owner\n            _burn(uint256(node));\n            emit NameUnwrapped(node, address(0));\n        }\n        super._mint(node, owner, fuses, expiry);\n    }\n\n    function _wrap(\n        bytes32 node,\n        bytes memory name,\n        address wrappedOwner,\n        uint32 fuses,\n        uint64 expiry\n    ) internal {\n        names[node] = name;\n        _mint(node, wrappedOwner, fuses, expiry);\n        emit NameWrapped(node, name, wrappedOwner, fuses, expiry);\n    }\n\n    function _addLabelAndWrap(\n        bytes32 parentNode,\n        bytes32 node,\n        string memory label,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    ) internal {\n        bytes memory name = _addLabel(label, names[parentNode]);\n        _wrap(node, name, owner, fuses, expiry);\n    }\n\n    function _prepareUpgrade(bytes32 node)\n        private\n        returns (uint32 fuses, uint64 expiry)\n    {\n        if (address(upgradeContract) == address(0)) {\n            revert CannotUpgrade();\n        }\n\n        if (!isTokenOwnerOrApproved(node, msg.sender)) {\n            revert Unauthorised(node, msg.sender);\n        }\n\n        (, fuses, expiry) = getData(uint256(node));\n\n        // burn token and fuse data\n        _burn(uint256(node));\n    }\n\n    function _updateName(\n        bytes32 parentNode,\n        bytes32 node,\n        string memory label,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    ) internal {\n        address oldOwner = ownerOf(uint256(node));\n        bytes memory name = _addLabel(label, names[parentNode]);\n        if (names[node].length == 0) {\n            names[node] = name;\n        }\n        _setFuses(node, oldOwner, fuses, expiry);\n        if (owner == address(0)) {\n            _unwrap(node, address(0));\n        } else {\n            _transfer(oldOwner, owner, uint256(node), 1, \"\");\n        }\n    }\n\n    // wrapper function for stack limit\n    function _checkParentFusesAndExpiry(\n        bytes32 parentNode,\n        bytes32 node,\n        uint32 fuses,\n        uint64 expiry\n    ) internal view returns (uint64) {\n        (, , uint64 oldExpiry) = getData(uint256(node));\n        (, uint32 parentFuses, uint64 maxExpiry) = getData(uint256(parentNode));\n        _checkParentFuses(node, fuses, parentFuses);\n        return _normaliseExpiry(expiry, oldExpiry, maxExpiry);\n    }\n\n    function _checkParentFuses(\n        bytes32 node,\n        uint32 fuses,\n        uint32 parentFuses\n    ) internal pure {\n        bool isBurningPCC = fuses & PARENT_CANNOT_CONTROL ==\n            PARENT_CANNOT_CONTROL;\n\n        bool parentHasNotBurnedCU = parentFuses & CANNOT_UNWRAP == 0;\n\n        if (isBurningPCC && parentHasNotBurnedCU) {\n            revert OperationProhibited(node);\n        }\n    }\n\n    function _getETH2LDDataAndNormaliseExpiry(\n        bytes32 node,\n        bytes32 labelhash,\n        uint64 expiry\n    )\n        internal\n        view\n        returns (\n            address owner,\n            uint32 fuses,\n            uint64\n        )\n    {\n        uint64 oldExpiry;\n        (owner, fuses, oldExpiry) = getData(uint256(node));\n        uint64 maxExpiry = uint64(registrar.nameExpires(uint256(labelhash)));\n\n        expiry = _normaliseExpiry(expiry, oldExpiry, maxExpiry);\n        return (owner, fuses, expiry);\n    }\n\n    function _normaliseExpiry(\n        uint64 expiry,\n        uint64 oldExpiry,\n        uint64 maxExpiry\n    ) internal pure returns (uint64) {\n        // Expiry cannot be more than maximum allowed\n        // .eth names will check registrar, non .eth check parent\n        if (expiry > maxExpiry) {\n            expiry = maxExpiry;\n        }\n        // Expiry cannot be less than old expiry\n        if (expiry < oldExpiry) {\n            expiry = oldExpiry;\n        }\n\n        return expiry;\n    }\n\n    function _wrapETH2LD(\n        string memory label,\n        address wrappedOwner,\n        uint32 fuses,\n        uint64 expiry,\n        address resolver\n    ) private returns (uint64) {\n        // Mint a new ERC1155 token with fuses\n        // Set PARENT_CANNOT_REPLACE to reflect wrapper + registrar control over the 2LD\n        bytes32 labelhash = keccak256(bytes(label));\n        bytes32 node = _makeNode(ETH_NODE, labelhash);\n        uint32 oldFuses;\n\n        (, oldFuses, expiry) = _getETH2LDDataAndNormaliseExpiry(\n            node,\n            labelhash,\n            expiry\n        );\n\n        _addLabelAndWrap(\n            ETH_NODE,\n            node,\n            label,\n            wrappedOwner,\n            fuses | PARENT_CANNOT_CONTROL,\n            expiry\n        );\n        if (resolver != address(0)) {\n            ens.setResolver(node, resolver);\n        }\n\n        return expiry;\n    }\n\n    function _unwrap(bytes32 node, address owner) private {\n        if (allFusesBurned(node, CANNOT_UNWRAP)) {\n            revert OperationProhibited(node);\n        }\n\n        // Burn token and fuse data\n        _burn(uint256(node));\n        ens.setOwner(node, owner);\n\n        emit NameUnwrapped(node, owner);\n    }\n\n    function _setFuses(\n        bytes32 node,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    ) internal {\n        _setData(node, owner, fuses, expiry);\n        emit FusesSet(node, fuses, expiry);\n    }\n\n    function _setData(\n        bytes32 node,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    ) internal {\n        _canFusesBeBurned(node, fuses);\n        super._setData(uint256(node), owner, fuses, expiry);\n    }\n\n    function _canFusesBeBurned(bytes32 node, uint32 fuses) internal pure {\n        if (\n            fuses & ~PARENT_CANNOT_CONTROL != 0 &&\n            fuses & (PARENT_CANNOT_CONTROL | CANNOT_UNWRAP) !=\n            (PARENT_CANNOT_CONTROL | CANNOT_UNWRAP)\n        ) {\n            revert OperationProhibited(node);\n        }\n    }\n\n    function _checkForParentCannotControl(bytes32 node, uint32 fuses)\n        internal\n        view\n    {\n        if (fuses & PARENT_CANNOT_CONTROL != 0) {\n            // Only the parent can burn the PARENT_CANNOT_CONTROL fuse.\n            revert Unauthorised(node, msg.sender);\n        }\n    }\n}\n"
      },
      "contracts/wrapper/ERC1155Fuse.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\n\n/* This contract is a variation on ERC1155 with the additions of _setData, getData and _canTransfer and ownerOf. _setData and getData allows the use of the other 96 bits next to the address of the owner for extra data. We use this to store 'fuses' that control permissions that can be burnt. 32 bits are used for the fuses themselves and 64 bits are used for the expiry of the name. When a name has expired, its fuses will be be set back to 0 */\n\nerror OperationProhibited(bytes32 node);\n\nabstract contract ERC1155Fuse is ERC165, IERC1155, IERC1155MetadataURI {\n    using Address for address;\n    mapping(uint256 => uint256) public _tokens;\n\n    // Mapping from owner to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    /**************************************************************************\n     * ERC721 methods\n     *************************************************************************/\n\n    function ownerOf(uint256 id) public view virtual returns (address) {\n        (address owner, , ) = getData(id);\n        return owner;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId)\n        public\n        view\n        virtual\n        override(ERC165, IERC165)\n        returns (bool)\n    {\n        return\n            interfaceId == type(IERC1155).interfaceId ||\n            interfaceId == type(IERC1155MetadataURI).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC1155-balanceOf}.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function balanceOf(address account, uint256 id)\n        public\n        view\n        virtual\n        override\n        returns (uint256)\n    {\n        require(\n            account != address(0),\n            \"ERC1155: balance query for the zero address\"\n        );\n        (address owner, , ) = getData(id);\n        if (owner == account) {\n            return 1;\n        }\n        return 0;\n    }\n\n    /**\n     * @dev See {IERC1155-balanceOfBatch}.\n     *\n     * Requirements:\n     *\n     * - `accounts` and `ids` must have the same length.\n     */\n    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\n        public\n        view\n        virtual\n        override\n        returns (uint256[] memory)\n    {\n        require(\n            accounts.length == ids.length,\n            \"ERC1155: accounts and ids length mismatch\"\n        );\n\n        uint256[] memory batchBalances = new uint256[](accounts.length);\n\n        for (uint256 i = 0; i < accounts.length; ++i) {\n            batchBalances[i] = balanceOf(accounts[i], ids[i]);\n        }\n\n        return batchBalances;\n    }\n\n    /**\n     * @dev See {IERC1155-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved)\n        public\n        virtual\n        override\n    {\n        require(\n            msg.sender != operator,\n            \"ERC1155: setting approval status for self\"\n        );\n\n        _operatorApprovals[msg.sender][operator] = approved;\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    /**\n     * @dev See {IERC1155-isApprovedForAll}.\n     */\n    function isApprovedForAll(address account, address operator)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return _operatorApprovals[account][operator];\n    }\n\n    /**\n     * @dev Returns the Name's owner address and fuses\n     */\n    function getData(uint256 tokenId)\n        public\n        view\n        virtual\n        returns (\n            address owner,\n            uint32 fuses,\n            uint64 expiry\n        )\n    {\n        uint256 t = _tokens[tokenId];\n        owner = address(uint160(t));\n        expiry = uint64(t >> 192);\n        if (block.timestamp > expiry) {\n            fuses = 0;\n        } else {\n            fuses = uint32(t >> 160);\n        }\n    }\n\n    /**\n     * @dev See {IERC1155-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    ) public virtual override {\n        require(to != address(0), \"ERC1155: transfer to the zero address\");\n        require(\n            from == msg.sender || isApprovedForAll(from, msg.sender),\n            \"ERC1155: caller is not owner nor approved\"\n        );\n\n        _transfer(from, to, id, amount, data);\n    }\n\n    /**\n     * @dev See {IERC1155-safeBatchTransferFrom}.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) public virtual override {\n        require(\n            ids.length == amounts.length,\n            \"ERC1155: ids and amounts length mismatch\"\n        );\n        require(to != address(0), \"ERC1155: transfer to the zero address\");\n        require(\n            from == msg.sender || isApprovedForAll(from, msg.sender),\n            \"ERC1155: transfer caller is not owner nor approved\"\n        );\n\n        for (uint256 i = 0; i < ids.length; ++i) {\n            uint256 id = ids[i];\n            uint256 amount = amounts[i];\n\n            (address oldOwner, uint32 fuses, uint64 expiration) = getData(id);\n\n            if (!_canTransfer(fuses)) {\n                revert OperationProhibited(bytes32(id));\n            }\n\n            require(\n                amount == 1 && oldOwner == from,\n                \"ERC1155: insufficient balance for transfer\"\n            );\n            _setData(id, to, fuses, expiration);\n        }\n\n        emit TransferBatch(msg.sender, from, to, ids, amounts);\n\n        _doSafeBatchTransferAcceptanceCheck(\n            msg.sender,\n            from,\n            to,\n            ids,\n            amounts,\n            data\n        );\n    }\n\n    /**************************************************************************\n     * Internal/private methods\n     *************************************************************************/\n\n    /**\n     * @dev Sets the Name's owner address and fuses\n     */\n    function _setData(\n        uint256 tokenId,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    ) internal virtual {\n        _tokens[tokenId] =\n            uint256(uint160(owner)) |\n            (uint256(fuses) << 160) |\n            (uint256(expiry) << 192);\n    }\n\n    function _canTransfer(uint32 fuses) internal virtual returns (bool);\n\n    function _mint(\n        bytes32 node,\n        address owner,\n        uint32 fuses,\n        uint64 expiry\n    ) internal virtual {\n        uint256 tokenId = uint256(node);\n        (address oldOwner, uint32 oldFuses, uint64 oldExpiry) = getData(\n            uint256(node)\n        );\n\n        if (oldExpiry > expiry) {\n            expiry = oldExpiry;\n        }\n\n        require(oldOwner == address(0), \"ERC1155: mint of existing token\");\n        require(owner != address(0), \"ERC1155: mint to the zero address\");\n        require(\n            owner != address(this),\n            \"ERC1155: newOwner cannot be the NameWrapper contract\"\n        );\n\n        _setData(tokenId, owner, fuses | oldFuses, expiry);\n        emit TransferSingle(msg.sender, address(0x0), owner, tokenId, 1);\n        _doSafeTransferAcceptanceCheck(\n            msg.sender,\n            address(0),\n            owner,\n            tokenId,\n            1,\n            \"\"\n        );\n    }\n\n    function _burn(uint256 tokenId) internal virtual {\n        (address owner, uint32 fuses, uint64 expiry) = getData(tokenId);\n        // Fuses and expiry are kept on burn\n        _setData(tokenId, address(0x0), fuses, expiry);\n        emit TransferSingle(msg.sender, owner, address(0x0), tokenId, 1);\n    }\n\n    function _transfer(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    ) internal {\n        (address oldOwner, uint32 fuses, uint64 expiry) = getData(id);\n\n        if (!_canTransfer(fuses)) {\n            revert OperationProhibited(bytes32(id));\n        }\n\n        require(\n            amount == 1 && oldOwner == from,\n            \"ERC1155: insufficient balance for transfer\"\n        );\n\n        if (oldOwner == to) {\n            return;\n        }\n\n        _setData(id, to, fuses, expiry);\n\n        emit TransferSingle(msg.sender, from, to, id, amount);\n\n        _doSafeTransferAcceptanceCheck(msg.sender, from, to, id, amount, data);\n    }\n\n    function _doSafeTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    ) private {\n        if (to.isContract()) {\n            try\n                IERC1155Receiver(to).onERC1155Received(\n                    operator,\n                    from,\n                    id,\n                    amount,\n                    data\n                )\n            returns (bytes4 response) {\n                if (\n                    response != IERC1155Receiver(to).onERC1155Received.selector\n                ) {\n                    revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n                }\n            } catch Error(string memory reason) {\n                revert(reason);\n            } catch {\n                revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n            }\n        }\n    }\n\n    function _doSafeBatchTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) private {\n        if (to.isContract()) {\n            try\n                IERC1155Receiver(to).onERC1155BatchReceived(\n                    operator,\n                    from,\n                    ids,\n                    amounts,\n                    data\n                )\n            returns (bytes4 response) {\n                if (\n                    response !=\n                    IERC1155Receiver(to).onERC1155BatchReceived.selector\n                ) {\n                    revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n                }\n            } catch Error(string memory reason) {\n                revert(reason);\n            } catch {\n                revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n            }\n        }\n    }\n}\n"
      },
      "contracts/wrapper/Controllable.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract Controllable is Ownable {\n    mapping(address => bool) public controllers;\n\n    event ControllerChanged(address indexed controller, bool active);\n\n    function setController(address controller, bool active) public onlyOwner {\n        controllers[controller] = active;\n        emit ControllerChanged(controller, active);\n    }\n\n    modifier onlyController() {\n        require(\n            controllers[msg.sender],\n            \"Controllable: Caller is not a controller\"\n        );\n        _;\n    }\n}\n"
      },
      "contracts/wrapper/INameWrapperUpgrade.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\ninterface INameWrapperUpgrade {\n    function setSubnodeRecord(\n        bytes32 parentNode,\n        string calldata label,\n        address owner,\n        address resolver,\n        uint64 ttl,\n        uint32 fuses,\n        uint64 expiry\n    ) external;\n\n    function wrapETH2LD(\n        string calldata label,\n        address wrappedOwner,\n        uint32 fuses,\n        uint64 expiry,\n        address resolver\n    ) external;\n}\n"
      },
      "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "contracts/utils/ERC20Recoverable.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity >=0.8.17 <0.9.0;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n    @notice Contract is used to recover ERC20 tokens sent to the contract by mistake.\n */\n\ncontract ERC20Recoverable is Ownable {\n    /**\n    @notice Recover ERC20 tokens sent to the contract by mistake.\n    @dev The contract is Ownable and only the owner can call the recover function.\n    @param _to The address to send the tokens to.\n@param _token The address of the ERC20 token to recover\n    @param _amount The amount of tokens to recover.\n */\n    function recoverFunds(\n        address _token,\n        address _to,\n        uint256 _amount\n    ) external onlyOwner {\n        IERC20(_token).transfer(_to, _amount);\n    }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC1155.sol\";\n\n/**\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155MetadataURI is IERC1155 {\n    /**\n     * @dev Returns the URI for token type `id`.\n     *\n     * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n     * clients with the actual token type ID.\n     */\n    function uri(uint256 id) external view returns (string memory);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `from` to `to` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n    mapping(address => uint256) private _balances;\n\n    mapping(address => mapping(address => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * The default value of {decimals} is 18. To select a different value for\n     * {decimals} you should overload it.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\n     * overridden;\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual override returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual override returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `amount`.\n     */\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `amount`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `amount`.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) public virtual override returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, amount);\n        _transfer(from, to, amount);\n        return true;\n    }\n\n    /**\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, _allowances[owner][spender] + addedValue);\n        return true;\n    }\n\n    /**\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `spender` must have allowance for the caller of at least\n     * `subtractedValue`.\n     */\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n        address owner = _msgSender();\n        uint256 currentAllowance = _allowances[owner][spender];\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n        unchecked {\n            _approve(owner, spender, currentAllowance - subtractedValue);\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Moves `amount` of tokens from `sender` to `recipient`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `from` must have a balance of at least `amount`.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {\n        require(from != address(0), \"ERC20: transfer from the zero address\");\n        require(to != address(0), \"ERC20: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, amount);\n\n        uint256 fromBalance = _balances[from];\n        require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n        unchecked {\n            _balances[from] = fromBalance - amount;\n        }\n        _balances[to] += amount;\n\n        emit Transfer(from, to, amount);\n\n        _afterTokenTransfer(from, to, amount);\n    }\n\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function _mint(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: mint to the zero address\");\n\n        _beforeTokenTransfer(address(0), account, amount);\n\n        _totalSupply += amount;\n        _balances[account] += amount;\n        emit Transfer(address(0), account, amount);\n\n        _afterTokenTransfer(address(0), account, amount);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the\n     * total supply.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     */\n    function _burn(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: burn from the zero address\");\n\n        _beforeTokenTransfer(account, address(0), amount);\n\n        uint256 accountBalance = _balances[account];\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n        unchecked {\n            _balances[account] = accountBalance - amount;\n        }\n        _totalSupply -= amount;\n\n        emit Transfer(account, address(0), amount);\n\n        _afterTokenTransfer(account, address(0), amount);\n    }\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     */\n    function _approve(\n        address owner,\n        address spender,\n        uint256 amount\n    ) internal virtual {\n        require(owner != address(0), \"ERC20: approve from the zero address\");\n        require(spender != address(0), \"ERC20: approve to the zero address\");\n\n        _allowances[owner][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    /**\n     * @dev Spend `amount` form the allowance of `owner` toward `spender`.\n     *\n     * Does not update the allowance amount in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Might emit an {Approval} event.\n     */\n    function _spendAllowance(\n        address owner,\n        address spender,\n        uint256 amount\n    ) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n            unchecked {\n                _approve(owner, spender, currentAllowance - amount);\n            }\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * has been transferred to `to`.\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n}\n"
      },
      "@openzeppelin/contracts/token/ERC721/ERC721.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n    using Address for address;\n    using Strings for uint256;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Mapping from token ID to owner address\n    mapping(uint256 => address) private _owners;\n\n    // Mapping owner address to token count\n    mapping(address => uint256) private _balances;\n\n    // Mapping from token ID to approved address\n    mapping(uint256 => address) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: balance query for the zero address\");\n        return _balances[owner];\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        address owner = _owners[tokenId];\n        require(owner != address(0), \"ERC721: owner query for nonexistent token\");\n        return owner;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, can be overriden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return \"\";\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = ERC721.ownerOf(tokenId);\n        require(to != owner, \"ERC721: approval to current owner\");\n\n        require(\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n            \"ERC721: approve caller is not owner nor approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        require(_exists(tokenId), \"ERC721: approved query for nonexistent token\");\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n        _safeTransfer(from, to, tokenId, _data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `_data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _owners[tokenId] != address(0);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        require(_exists(tokenId), \"ERC721: operator query for nonexistent token\");\n        address owner = ERC721.ownerOf(tokenId);\n        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\n    }\n\n    /**\n     * @dev Safely mints `tokenId` and transfers it to `to`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal virtual {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) internal virtual {\n        _mint(to, tokenId);\n        require(\n            _checkOnERC721Received(address(0), to, tokenId, _data),\n            \"ERC721: transfer to non ERC721Receiver implementer\"\n        );\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to the zero address\");\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        _beforeTokenTransfer(address(0), to, tokenId);\n\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(address(0), to, tokenId);\n\n        _afterTokenTransfer(address(0), to, tokenId);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721.ownerOf(tokenId);\n\n        _beforeTokenTransfer(owner, address(0), tokenId);\n\n        // Clear approvals\n        _approve(address(0), tokenId);\n\n        _balances[owner] -= 1;\n        delete _owners[tokenId];\n\n        emit Transfer(owner, address(0), tokenId);\n\n        _afterTokenTransfer(owner, address(0), tokenId);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, tokenId);\n\n        // Clear approvals from the previous owner\n        _approve(address(0), tokenId);\n\n        _balances[from] -= 1;\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(from, to, tokenId);\n\n        _afterTokenTransfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits a {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n    }\n\n    /**\n     * @dev Approve `operator` to operate on all of `owner` tokens\n     *\n     * Emits a {ApprovalForAll} event.\n     */\n    function _setApprovalForAll(\n        address owner,\n        address operator,\n        bool approved\n    ) internal virtual {\n        require(owner != operator, \"ERC721: approve to caller\");\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    /**\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n     * The call is not executed if the target address is not a contract.\n     *\n     * @param from address representing the previous owner of the given token ID\n     * @param to target address that will receive the tokens\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param _data bytes optional data to send along with the call\n     * @return bool whether the call correctly returned the expected magic value\n     */\n    function _checkOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) private returns (bool) {\n        if (to.isContract()) {\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\n                return retval == IERC721Receiver.onERC721Received.selector;\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n                } else {\n                    assembly {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        } else {\n            return true;\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting\n     * and burning.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n}\n"
      },
      "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        while (value != 0) {\n            digits -= 1;\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n            value /= 10;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        if (value == 0) {\n            return \"0x00\";\n        }\n        uint256 temp = value;\n        uint256 length = 0;\n        while (temp != 0) {\n            length++;\n            temp >>= 8;\n        }\n        return toHexString(value, length);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n}\n"
      },
      "contracts/resolvers/OwnedResolver.sol": {
        "content": "pragma solidity >=0.8.4;\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"./profiles/ABIResolver.sol\";\nimport \"./profiles/AddrResolver.sol\";\nimport \"./profiles/ContentHashResolver.sol\";\nimport \"./profiles/DNSResolver.sol\";\nimport \"./profiles/InterfaceResolver.sol\";\nimport \"./profiles/NameResolver.sol\";\nimport \"./profiles/PubkeyResolver.sol\";\nimport \"./profiles/TextResolver.sol\";\n\n/**\n * A simple resolver anyone can use; only allows the owner of a node to set its\n * address.\n */\ncontract OwnedResolver is\n    Ownable,\n    ABIResolver,\n    AddrResolver,\n    ContentHashResolver,\n    DNSResolver,\n    InterfaceResolver,\n    NameResolver,\n    PubkeyResolver,\n    TextResolver\n{\n    function isAuthorised(bytes32) internal view override returns (bool) {\n        return msg.sender == owner();\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override(\n            ABIResolver,\n            AddrResolver,\n            ContentHashResolver,\n            DNSResolver,\n            InterfaceResolver,\n            NameResolver,\n            PubkeyResolver,\n            TextResolver\n        )\n        returns (bool)\n    {\n        return super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/ethregistrar/StablePriceOracle.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"./IPriceOracle.sol\";\nimport \"./SafeMath.sol\";\nimport \"./StringUtils.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\ninterface AggregatorInterface {\n    function latestAnswer() external view returns (int256);\n}\n\n// StablePriceOracle sets a price in USD, based on an oracle.\ncontract StablePriceOracle is IPriceOracle {\n    using SafeMath for *;\n    using StringUtils for *;\n\n    // Rent in base price units by length\n    uint256 public immutable price1Letter;\n    uint256 public immutable price2Letter;\n    uint256 public immutable price3Letter;\n    uint256 public immutable price4Letter;\n    uint256 public immutable price5Letter;\n\n    // Oracle address\n    AggregatorInterface public immutable usdOracle;\n\n    event RentPriceChanged(uint256[] prices);\n\n    constructor(AggregatorInterface _usdOracle, uint256[] memory _rentPrices) {\n        usdOracle = _usdOracle;\n        price1Letter = _rentPrices[0];\n        price2Letter = _rentPrices[1];\n        price3Letter = _rentPrices[2];\n        price4Letter = _rentPrices[3];\n        price5Letter = _rentPrices[4];\n    }\n\n    function price(\n        string calldata name,\n        uint256 expires,\n        uint256 duration\n    ) external view override returns (IPriceOracle.Price memory) {\n        uint256 len = name.strlen();\n        uint256 basePrice;\n\n        if (len >= 5) {\n            basePrice = price5Letter * duration;\n        } else if (len == 4) {\n            basePrice = price4Letter * duration;\n        } else if (len == 3) {\n            basePrice = price3Letter * duration;\n        } else if (len == 2) {\n            basePrice = price2Letter * duration;\n        } else {\n            basePrice = price1Letter * duration;\n        }\n\n        return\n            IPriceOracle.Price({\n                base: attoUSDToWei(basePrice),\n                premium: attoUSDToWei(_premium(name, expires, duration))\n            });\n    }\n\n    /**\n     * @dev Returns the pricing premium in wei.\n     */\n    function premium(\n        string calldata name,\n        uint256 expires,\n        uint256 duration\n    ) external view returns (uint256) {\n        return attoUSDToWei(_premium(name, expires, duration));\n    }\n\n    /**\n     * @dev Returns the pricing premium in internal base units.\n     */\n    function _premium(\n        string memory name,\n        uint256 expires,\n        uint256 duration\n    ) internal view virtual returns (uint256) {\n        return 0;\n    }\n\n    function attoUSDToWei(uint256 amount) internal view returns (uint256) {\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\n        return (amount * 1e8) / ethPrice;\n    }\n\n    function weiToAttoUSD(uint256 amount) internal view returns (uint256) {\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\n        return (amount * ethPrice) / 1e8;\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        returns (bool)\n    {\n        return\n            interfaceID == type(IERC165).interfaceId ||\n            interfaceID == type(IPriceOracle).interfaceId;\n    }\n}\n"
      },
      "contracts/ethregistrar/IPriceOracle.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity >=0.8.17 <0.9.0;\n\ninterface IPriceOracle {\n    struct Price {\n        uint256 base;\n        uint256 premium;\n    }\n\n    /**\n     * @dev Returns the price to register or renew a name.\n     * @param name The name being registered or renewed.\n     * @param expires When the name presently expires (0 if this is a new registration).\n     * @param duration How long the name is being registered or extended for, in seconds.\n     * @return base premium tuple of base price + premium price\n     */\n    function price(\n        string calldata name,\n        uint256 expires,\n        uint256 duration\n    ) external view returns (Price calldata);\n}\n"
      },
      "contracts/ethregistrar/SafeMath.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\n/**\n * @title SafeMath\n * @dev Unsigned math operations with safety checks that revert on error\n */\nlibrary SafeMath {\n    /**\n     * @dev Multiplies two unsigned integers, reverts on overflow.\n     */\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n        // benefit is lost if 'b' is also tested.\n        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n        if (a == 0) {\n            return 0;\n        }\n\n        uint256 c = a * b;\n        require(c / a == b);\n\n        return c;\n    }\n\n    /**\n     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\n     */\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\n        // Solidity only automatically asserts when dividing by 0\n        require(b > 0);\n        uint256 c = a / b;\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n        return c;\n    }\n\n    /**\n     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\n     */\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n        require(b <= a);\n        uint256 c = a - b;\n\n        return c;\n    }\n\n    /**\n     * @dev Adds two unsigned integers, reverts on overflow.\n     */\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\n        uint256 c = a + b;\n        require(c >= a);\n\n        return c;\n    }\n\n    /**\n     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n     * reverts when dividing by zero.\n     */\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n        require(b != 0);\n        return a % b;\n    }\n}\n"
      },
      "contracts/ethregistrar/StringUtils.sol": {
        "content": "pragma solidity >=0.8.4;\n\nlibrary StringUtils {\n    /**\n     * @dev Returns the length of a given string\n     *\n     * @param s The string to measure the length of\n     * @return The length of the input string\n     */\n    function strlen(string memory s) internal pure returns (uint256) {\n        uint256 len;\n        uint256 i = 0;\n        uint256 bytelength = bytes(s).length;\n        for (len = 0; i < bytelength; len++) {\n            bytes1 b = bytes(s)[i];\n            if (b < 0x80) {\n                i += 1;\n            } else if (b < 0xE0) {\n                i += 2;\n            } else if (b < 0xF0) {\n                i += 3;\n            } else if (b < 0xF8) {\n                i += 4;\n            } else if (b < 0xFC) {\n                i += 5;\n            } else {\n                i += 6;\n            }\n        }\n        return len;\n    }\n}\n"
      },
      "contracts/ethregistrar/LinearPremiumPriceOracle.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"./SafeMath.sol\";\nimport \"./StablePriceOracle.sol\";\n\ncontract LinearPremiumPriceOracle is StablePriceOracle {\n    using SafeMath for *;\n\n    uint256 immutable GRACE_PERIOD = 90 days;\n\n    uint256 public immutable initialPremium;\n    uint256 public immutable premiumDecreaseRate;\n\n    bytes4 private constant TIME_UNTIL_PREMIUM_ID =\n        bytes4(keccak256(\"timeUntilPremium(uint,uint\"));\n\n    constructor(\n        AggregatorInterface _usdOracle,\n        uint256[] memory _rentPrices,\n        uint256 _initialPremium,\n        uint256 _premiumDecreaseRate\n    ) public StablePriceOracle(_usdOracle, _rentPrices) {\n        initialPremium = _initialPremium;\n        premiumDecreaseRate = _premiumDecreaseRate;\n    }\n\n    function _premium(\n        string memory name,\n        uint256 expires,\n        uint256 /*duration*/\n    ) internal view override returns (uint256) {\n        expires = expires.add(GRACE_PERIOD);\n        if (expires > block.timestamp) {\n            // No premium for renewals\n            return 0;\n        }\n\n        // Calculate the discount off the maximum premium\n        uint256 discount = premiumDecreaseRate.mul(\n            block.timestamp.sub(expires)\n        );\n\n        // If we've run out the premium period, return 0.\n        if (discount > initialPremium) {\n            return 0;\n        }\n\n        return initialPremium - discount;\n    }\n\n    /**\n     * @dev Returns the timestamp at which a name with the specified expiry date will have\n     *      the specified re-registration price premium.\n     * @param expires The timestamp at which the name expires.\n     * @param amount The amount, in wei, the caller is willing to pay\n     * @return The timestamp at which the premium for this domain will be `amount`.\n     */\n    function timeUntilPremium(uint256 expires, uint256 amount)\n        external\n        view\n        returns (uint256)\n    {\n        amount = weiToAttoUSD(amount);\n        require(amount <= initialPremium);\n\n        expires = expires.add(GRACE_PERIOD);\n\n        uint256 discount = initialPremium.sub(amount);\n        uint256 duration = discount.div(premiumDecreaseRate);\n        return expires.add(duration);\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return\n            (interfaceID == TIME_UNTIL_PREMIUM_ID) ||\n            super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "contracts/ethregistrar/ETHRegistrarController.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport {BaseRegistrarImplementation} from \"./BaseRegistrarImplementation.sol\";\nimport {StringUtils} from \"./StringUtils.sol\";\nimport {Resolver} from \"../resolvers/Resolver.sol\";\nimport {ReverseRegistrar} from \"../registry/ReverseRegistrar.sol\";\nimport {IETHRegistrarController, IPriceOracle} from \"./IETHRegistrarController.sol\";\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {INameWrapper} from \"../wrapper/INameWrapper.sol\";\nimport {ERC20Recoverable} from \"../utils/ERC20Recoverable.sol\";\n\nerror CommitmentTooNew(bytes32 commitment);\nerror CommitmentTooOld(bytes32 commitment);\nerror NameNotAvailable(string name);\nerror DurationTooShort(uint256 duration);\nerror ResolverRequiredWhenDataSupplied();\nerror UnexpiredCommitmentExists(bytes32 commitment);\nerror InsufficientValue();\nerror Unauthorised(bytes32 node);\nerror MaxCommitmentAgeTooLow();\nerror MaxCommitmentAgeTooHigh();\n\n/**\n * @dev A registrar controller for registering and renewing names at fixed cost.\n */\ncontract ETHRegistrarController is\n    Ownable,\n    IETHRegistrarController,\n    IERC165,\n    ERC20Recoverable\n{\n    using StringUtils for *;\n    using Address for address;\n\n    uint256 public constant MIN_REGISTRATION_DURATION = 28 days;\n    bytes32 private constant ETH_NODE =\n        0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae;\n    uint64 private constant MAX_EXPIRY = type(uint64).max;\n    BaseRegistrarImplementation immutable base;\n    IPriceOracle public immutable prices;\n    uint256 public immutable minCommitmentAge;\n    uint256 public immutable maxCommitmentAge;\n    ReverseRegistrar public immutable reverseRegistrar;\n    INameWrapper public immutable nameWrapper;\n\n    mapping(bytes32 => uint256) public commitments;\n\n    event NameRegistered(\n        string name,\n        bytes32 indexed label,\n        address indexed owner,\n        uint256 baseCost,\n        uint256 premium,\n        uint256 expires\n    );\n    event NameRenewed(\n        string name,\n        bytes32 indexed label,\n        uint256 cost,\n        uint256 expires\n    );\n\n    constructor(\n        BaseRegistrarImplementation _base,\n        IPriceOracle _prices,\n        uint256 _minCommitmentAge,\n        uint256 _maxCommitmentAge,\n        ReverseRegistrar _reverseRegistrar,\n        INameWrapper _nameWrapper\n    ) {\n        if (_maxCommitmentAge <= _minCommitmentAge) {\n            revert MaxCommitmentAgeTooLow();\n        }\n\n        if (_maxCommitmentAge > block.timestamp) {\n            revert MaxCommitmentAgeTooHigh();\n        }\n\n        base = _base;\n        prices = _prices;\n        minCommitmentAge = _minCommitmentAge;\n        maxCommitmentAge = _maxCommitmentAge;\n        reverseRegistrar = _reverseRegistrar;\n        nameWrapper = _nameWrapper;\n    }\n\n    function rentPrice(string memory name, uint256 duration)\n        public\n        view\n        override\n        returns (IPriceOracle.Price memory price)\n    {\n        bytes32 label = keccak256(bytes(name));\n        price = prices.price(name, base.nameExpires(uint256(label)), duration);\n    }\n\n    function valid(string memory name) public pure returns (bool) {\n        return name.strlen() >= 3;\n    }\n\n    function available(string memory name) public view override returns (bool) {\n        bytes32 label = keccak256(bytes(name));\n        return valid(name) && base.available(uint256(label));\n    }\n\n    function makeCommitment(\n        string memory name,\n        address owner,\n        uint256 duration,\n        bytes32 secret,\n        address resolver,\n        bytes[] calldata data,\n        bool reverseRecord,\n        uint32 fuses,\n        uint64 wrapperExpiry\n    ) public pure override returns (bytes32) {\n        bytes32 label = keccak256(bytes(name));\n        if (data.length > 0 && resolver == address(0)) {\n            revert ResolverRequiredWhenDataSupplied();\n        }\n        return\n            keccak256(\n                abi.encode(\n                    label,\n                    owner,\n                    duration,\n                    resolver,\n                    data,\n                    secret,\n                    reverseRecord,\n                    fuses,\n                    wrapperExpiry\n                )\n            );\n    }\n\n    function commit(bytes32 commitment) public override {\n        if (commitments[commitment] + maxCommitmentAge >= block.timestamp) {\n            revert UnexpiredCommitmentExists(commitment);\n        }\n        commitments[commitment] = block.timestamp;\n    }\n\n    function register(\n        string calldata name,\n        address owner,\n        uint256 duration,\n        bytes32 secret,\n        address resolver,\n        bytes[] calldata data,\n        bool reverseRecord,\n        uint32 fuses,\n        uint64 wrapperExpiry\n    ) public payable override {\n        IPriceOracle.Price memory price = rentPrice(name, duration);\n        if (msg.value < price.base + price.premium) {\n            revert InsufficientValue();\n        }\n\n        _consumeCommitment(\n            name,\n            duration,\n            makeCommitment(\n                name,\n                owner,\n                duration,\n                secret,\n                resolver,\n                data,\n                reverseRecord,\n                fuses,\n                wrapperExpiry\n            )\n        );\n\n        uint256 expires = nameWrapper.registerAndWrapETH2LD(\n            name,\n            owner,\n            duration,\n            resolver,\n            fuses,\n            wrapperExpiry\n        );\n\n        if (data.length > 0) {\n            _setRecords(resolver, keccak256(bytes(name)), data);\n        }\n\n        if (reverseRecord) {\n            _setReverseRecord(name, resolver, msg.sender);\n        }\n\n        emit NameRegistered(\n            name,\n            keccak256(bytes(name)),\n            owner,\n            price.base,\n            price.premium,\n            expires\n        );\n\n        if (msg.value > (price.base + price.premium)) {\n            payable(msg.sender).transfer(\n                msg.value - (price.base + price.premium)\n            );\n        }\n    }\n\n    function renew(string calldata name, uint256 duration)\n        external\n        payable\n        override\n    {\n        _renew(name, duration, 0, 0);\n    }\n\n    function renewWithFuses(\n        string calldata name,\n        uint256 duration,\n        uint32 fuses,\n        uint64 wrapperExpiry\n    ) external payable {\n        bytes32 labelhash = keccak256(bytes(name));\n        bytes32 nodehash = keccak256(abi.encodePacked(ETH_NODE, labelhash));\n        if (!nameWrapper.isTokenOwnerOrApproved(nodehash, msg.sender)) {\n            revert Unauthorised(nodehash);\n        }\n        _renew(name, duration, fuses, wrapperExpiry);\n    }\n\n    function _renew(\n        string calldata name,\n        uint256 duration,\n        uint32 fuses,\n        uint64 wrapperExpiry\n    ) internal {\n        bytes32 labelhash = keccak256(bytes(name));\n        uint256 tokenId = uint256(labelhash);\n        IPriceOracle.Price memory price = rentPrice(name, duration);\n        if (msg.value < price.base) {\n            revert InsufficientValue();\n        }\n        uint256 expires;\n        expires = nameWrapper.renew(tokenId, duration, fuses, wrapperExpiry);\n\n        if (msg.value > price.base) {\n            payable(msg.sender).transfer(msg.value - price.base);\n        }\n\n        emit NameRenewed(name, labelhash, msg.value, expires);\n    }\n\n    function withdraw() public {\n        payable(owner()).transfer(address(this).balance);\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        external\n        pure\n        returns (bool)\n    {\n        return\n            interfaceID == type(IERC165).interfaceId ||\n            interfaceID == type(IETHRegistrarController).interfaceId;\n    }\n\n    /* Internal functions */\n\n    function _consumeCommitment(\n        string memory name,\n        uint256 duration,\n        bytes32 commitment\n    ) internal {\n        // Require an old enough commitment.\n        if (commitments[commitment] + minCommitmentAge > block.timestamp) {\n            revert CommitmentTooNew(commitment);\n        }\n\n        // If the commitment is too old, or the name is registered, stop\n        if (commitments[commitment] + maxCommitmentAge <= block.timestamp) {\n            revert CommitmentTooOld(commitment);\n        }\n        if (!available(name)) {\n            revert NameNotAvailable(name);\n        }\n\n        delete (commitments[commitment]);\n\n        if (duration < MIN_REGISTRATION_DURATION) {\n            revert DurationTooShort(duration);\n        }\n    }\n\n    function _setRecords(\n        address resolverAddress,\n        bytes32 label,\n        bytes[] calldata data\n    ) internal {\n        // use hardcoded .eth namehash\n        bytes32 nodehash = keccak256(abi.encodePacked(ETH_NODE, label));\n        Resolver resolver = Resolver(resolverAddress);\n        resolver.multicallWithNodeCheck(nodehash, data);\n    }\n\n    function _setReverseRecord(\n        string memory name,\n        address resolver,\n        address owner\n    ) internal {\n        reverseRegistrar.setNameForAddr(\n            msg.sender,\n            owner,\n            resolver,\n            string.concat(name, \".eth\")\n        );\n    }\n}\n"
      },
      "contracts/ethregistrar/BaseRegistrarImplementation.sol": {
        "content": "pragma solidity >=0.8.4;\n\nimport \"../registry/ENS.sol\";\nimport \"./IBaseRegistrar.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract BaseRegistrarImplementation is ERC721, IBaseRegistrar, Ownable {\n    // A map of expiry times\n    mapping(uint256 => uint256) expiries;\n    // The ENS registry\n    ENS public ens;\n    // The namehash of the TLD this registrar owns (eg, .eth)\n    bytes32 public baseNode;\n    // A map of addresses that are authorised to register and renew names.\n    mapping(address => bool) public controllers;\n    uint256 public constant GRACE_PERIOD = 90 days;\n    bytes4 private constant INTERFACE_META_ID =\n        bytes4(keccak256(\"supportsInterface(bytes4)\"));\n    bytes4 private constant ERC721_ID =\n        bytes4(\n            keccak256(\"balanceOf(address)\") ^\n                keccak256(\"ownerOf(uint256)\") ^\n                keccak256(\"approve(address,uint256)\") ^\n                keccak256(\"getApproved(uint256)\") ^\n                keccak256(\"setApprovalForAll(address,bool)\") ^\n                keccak256(\"isApprovedForAll(address,address)\") ^\n                keccak256(\"transferFrom(address,address,uint256)\") ^\n                keccak256(\"safeTransferFrom(address,address,uint256)\") ^\n                keccak256(\"safeTransferFrom(address,address,uint256,bytes)\")\n        );\n    bytes4 private constant RECLAIM_ID =\n        bytes4(keccak256(\"reclaim(uint256,address)\"));\n\n    /**\n     * v2.1.3 version of _isApprovedOrOwner which calls ownerOf(tokenId) and takes grace period into consideration instead of ERC721.ownerOf(tokenId);\n     * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.3/contracts/token/ERC721/ERC721.sol#L187\n     * @dev Returns whether the given spender can transfer a given token ID\n     * @param spender address of the spender to query\n     * @param tokenId uint256 ID of the token to be transferred\n     * @return bool whether the msg.sender is approved for the given token ID,\n     *    is an operator of the owner, or is the owner of the token\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId)\n        internal\n        view\n        override\n        returns (bool)\n    {\n        address owner = ownerOf(tokenId);\n        return (spender == owner ||\n            getApproved(tokenId) == spender ||\n            isApprovedForAll(owner, spender));\n    }\n\n    constructor(ENS _ens, bytes32 _baseNode) ERC721(\"\", \"\") {\n        ens = _ens;\n        baseNode = _baseNode;\n    }\n\n    modifier live() {\n        require(ens.owner(baseNode) == address(this));\n        _;\n    }\n\n    modifier onlyController() {\n        require(controllers[msg.sender]);\n        _;\n    }\n\n    /**\n     * @dev Gets the owner of the specified token ID. Names become unowned\n     *      when their registration expires.\n     * @param tokenId uint256 ID of the token to query the owner of\n     * @return address currently marked as the owner of the given token ID\n     */\n    function ownerOf(uint256 tokenId)\n        public\n        view\n        override(IERC721, ERC721)\n        returns (address)\n    {\n        require(expiries[tokenId] > block.timestamp);\n        return super.ownerOf(tokenId);\n    }\n\n    // Authorises a controller, who can register and renew domains.\n    function addController(address controller) external override onlyOwner {\n        controllers[controller] = true;\n        emit ControllerAdded(controller);\n    }\n\n    // Revoke controller permission for an address.\n    function removeController(address controller) external override onlyOwner {\n        controllers[controller] = false;\n        emit ControllerRemoved(controller);\n    }\n\n    // Set the resolver for the TLD this registrar manages.\n    function setResolver(address resolver) external override onlyOwner {\n        ens.setResolver(baseNode, resolver);\n    }\n\n    // Returns the expiration timestamp of the specified id.\n    function nameExpires(uint256 id) external view override returns (uint256) {\n        return expiries[id];\n    }\n\n    // Returns true iff the specified name is available for registration.\n    function available(uint256 id) public view override returns (bool) {\n        // Not available if it's registered here or in its grace period.\n        return expiries[id] + GRACE_PERIOD < block.timestamp;\n    }\n\n    /**\n     * @dev Register a name.\n     * @param id The token ID (keccak256 of the label).\n     * @param owner The address that should own the registration.\n     * @param duration Duration in seconds for the registration.\n     */\n    function register(\n        uint256 id,\n        address owner,\n        uint256 duration\n    ) external override returns (uint256) {\n        return _register(id, owner, duration, true);\n    }\n\n    /**\n     * @dev Register a name, without modifying the registry.\n     * @param id The token ID (keccak256 of the label).\n     * @param owner The address that should own the registration.\n     * @param duration Duration in seconds for the registration.\n     */\n    function registerOnly(\n        uint256 id,\n        address owner,\n        uint256 duration\n    ) external returns (uint256) {\n        return _register(id, owner, duration, false);\n    }\n\n    function _register(\n        uint256 id,\n        address owner,\n        uint256 duration,\n        bool updateRegistry\n    ) internal live onlyController returns (uint256) {\n        require(available(id));\n        require(\n            block.timestamp + duration + GRACE_PERIOD >\n                block.timestamp + GRACE_PERIOD\n        ); // Prevent future overflow\n\n        expiries[id] = block.timestamp + duration;\n        if (_exists(id)) {\n            // Name was previously owned, and expired\n            _burn(id);\n        }\n        _mint(owner, id);\n        if (updateRegistry) {\n            ens.setSubnodeOwner(baseNode, bytes32(id), owner);\n        }\n\n        emit NameRegistered(id, owner, block.timestamp + duration);\n\n        return block.timestamp + duration;\n    }\n\n    function renew(uint256 id, uint256 duration)\n        external\n        override\n        live\n        onlyController\n        returns (uint256)\n    {\n        require(expiries[id] + GRACE_PERIOD >= block.timestamp); // Name must be registered here or in grace period\n        require(\n            expiries[id] + duration + GRACE_PERIOD > duration + GRACE_PERIOD\n        ); // Prevent future overflow\n\n        expiries[id] += duration;\n        emit NameRenewed(id, expiries[id]);\n        return expiries[id];\n    }\n\n    /**\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\n     */\n    function reclaim(uint256 id, address owner) external override live {\n        require(_isApprovedOrOwner(msg.sender, id));\n        ens.setSubnodeOwner(baseNode, bytes32(id), owner);\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        override(ERC721, IERC165)\n        returns (bool)\n    {\n        return\n            interfaceID == INTERFACE_META_ID ||\n            interfaceID == ERC721_ID ||\n            interfaceID == RECLAIM_ID;\n    }\n}\n"
      },
      "contracts/registry/ReverseRegistrar.sol": {
        "content": "pragma solidity >=0.8.4;\n\nimport \"./ENS.sol\";\nimport \"./IReverseRegistrar.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"../root/Controllable.sol\";\n\nabstract contract NameResolver {\n    function setName(bytes32 node, string memory name) public virtual;\n}\n\nbytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;\n\nbytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\n\n// namehash('addr.reverse')\n\ncontract ReverseRegistrar is Ownable, Controllable, IReverseRegistrar {\n    ENS public immutable ens;\n    NameResolver public defaultResolver;\n\n    event ReverseClaimed(address indexed addr, bytes32 indexed node);\n    event DefaultResolverChanged(NameResolver indexed resolver);\n\n    /**\n     * @dev Constructor\n     * @param ensAddr The address of the ENS registry.\n     */\n    constructor(ENS ensAddr) {\n        ens = ensAddr;\n\n        // Assign ownership of the reverse record to our deployer\n        ReverseRegistrar oldRegistrar = ReverseRegistrar(\n            ensAddr.owner(ADDR_REVERSE_NODE)\n        );\n        if (address(oldRegistrar) != address(0x0)) {\n            oldRegistrar.claim(msg.sender);\n        }\n    }\n\n    modifier authorised(address addr) {\n        require(\n            addr == msg.sender ||\n                controllers[msg.sender] ||\n                ens.isApprovedForAll(addr, msg.sender) ||\n                ownsContract(addr),\n            \"ReverseRegistrar: Caller is not a controller or authorised by address or the address itself\"\n        );\n        _;\n    }\n\n    function setDefaultResolver(address resolver) public override onlyOwner {\n        require(\n            address(resolver) != address(0),\n            \"ReverseRegistrar: Resolver address must not be 0\"\n        );\n        defaultResolver = NameResolver(resolver);\n        emit DefaultResolverChanged(NameResolver(resolver));\n    }\n\n    /**\n     * @dev Transfers ownership of the reverse ENS record associated with the\n     *      calling account.\n     * @param owner The address to set as the owner of the reverse record in ENS.\n     * @return The ENS node hash of the reverse record.\n     */\n    function claim(address owner) public override returns (bytes32) {\n        return claimForAddr(msg.sender, owner, address(defaultResolver));\n    }\n\n    /**\n     * @dev Transfers ownership of the reverse ENS record associated with the\n     *      calling account.\n     * @param addr The reverse record to set\n     * @param owner The address to set as the owner of the reverse record in ENS.\n     * @param resolver The resolver of the reverse node\n     * @return The ENS node hash of the reverse record.\n     */\n    function claimForAddr(\n        address addr,\n        address owner,\n        address resolver\n    ) public override authorised(addr) returns (bytes32) {\n        bytes32 labelHash = sha3HexAddress(addr);\n        bytes32 reverseNode = keccak256(\n            abi.encodePacked(ADDR_REVERSE_NODE, labelHash)\n        );\n        emit ReverseClaimed(addr, reverseNode);\n        ens.setSubnodeRecord(ADDR_REVERSE_NODE, labelHash, owner, resolver, 0);\n        return reverseNode;\n    }\n\n    /**\n     * @dev Transfers ownership of the reverse ENS record associated with the\n     *      calling account.\n     * @param owner The address to set as the owner of the reverse record in ENS.\n     * @param resolver The address of the resolver to set; 0 to leave unchanged.\n     * @return The ENS node hash of the reverse record.\n     */\n    function claimWithResolver(address owner, address resolver)\n        public\n        override\n        returns (bytes32)\n    {\n        return claimForAddr(msg.sender, owner, resolver);\n    }\n\n    /**\n     * @dev Sets the `name()` record for the reverse ENS record associated with\n     * the calling account. First updates the resolver to the default reverse\n     * resolver if necessary.\n     * @param name The name to set for this address.\n     * @return The ENS node hash of the reverse record.\n     */\n    function setName(string memory name) public override returns (bytes32) {\n        return\n            setNameForAddr(\n                msg.sender,\n                msg.sender,\n                address(defaultResolver),\n                name\n            );\n    }\n\n    /**\n     * @dev Sets the `name()` record for the reverse ENS record associated with\n     * the account provided. Updates the resolver to a designated resolver\n     * Only callable by controllers and authorised users\n     * @param addr The reverse record to set\n     * @param owner The owner of the reverse node\n     * @param resolver The resolver of the reverse node\n     * @param name The name to set for this address.\n     * @return The ENS node hash of the reverse record.\n     */\n    function setNameForAddr(\n        address addr,\n        address owner,\n        address resolver,\n        string memory name\n    ) public override returns (bytes32) {\n        bytes32 node = claimForAddr(addr, owner, resolver);\n        NameResolver(resolver).setName(node, name);\n        return node;\n    }\n\n    /**\n     * @dev Returns the node hash for a given account's reverse records.\n     * @param addr The address to hash\n     * @return The ENS node hash.\n     */\n    function node(address addr) public pure override returns (bytes32) {\n        return\n            keccak256(\n                abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr))\n            );\n    }\n\n    /**\n     * @dev An optimised function to compute the sha3 of the lower-case\n     *      hexadecimal representation of an Ethereum address.\n     * @param addr The address to hash\n     * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\n     *         input address.\n     */\n    function sha3HexAddress(address addr) private pure returns (bytes32 ret) {\n        assembly {\n            for {\n                let i := 40\n            } gt(i, 0) {\n\n            } {\n                i := sub(i, 1)\n                mstore8(i, byte(and(addr, 0xf), lookup))\n                addr := div(addr, 0x10)\n                i := sub(i, 1)\n                mstore8(i, byte(and(addr, 0xf), lookup))\n                addr := div(addr, 0x10)\n            }\n\n            ret := keccak256(0, 40)\n        }\n    }\n\n    function ownsContract(address addr) internal view returns (bool) {\n        try Ownable(addr).owner() returns (address owner) {\n            return owner == msg.sender;\n        } catch {\n            return false;\n        }\n    }\n}\n"
      },
      "contracts/ethregistrar/IETHRegistrarController.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"./IPriceOracle.sol\";\n\ninterface IETHRegistrarController {\n    function rentPrice(string memory, uint256)\n        external\n        returns (IPriceOracle.Price memory);\n\n    function available(string memory) external returns (bool);\n\n    function makeCommitment(\n        string memory,\n        address,\n        uint256,\n        bytes32,\n        address,\n        bytes[] calldata,\n        bool,\n        uint32,\n        uint64\n    ) external returns (bytes32);\n\n    function commit(bytes32) external;\n\n    function register(\n        string calldata,\n        address,\n        uint256,\n        bytes32,\n        address,\n        bytes[] calldata,\n        bool,\n        uint32,\n        uint64\n    ) external payable;\n\n    function renew(string calldata, uint256) external payable;\n}\n"
      },
      "contracts/registry/IReverseRegistrar.sol": {
        "content": "pragma solidity >=0.8.4;\n\ninterface IReverseRegistrar {\n    function setDefaultResolver(address resolver) external;\n\n    function claim(address owner) external returns (bytes32);\n\n    function claimForAddr(\n        address addr,\n        address owner,\n        address resolver\n    ) external returns (bytes32);\n\n    function claimWithResolver(address owner, address resolver)\n        external\n        returns (bytes32);\n\n    function setName(string memory name) external returns (bytes32);\n\n    function setNameForAddr(\n        address addr,\n        address owner,\n        address resolver,\n        string memory name\n    ) external returns (bytes32);\n\n    function node(address addr) external pure returns (bytes32);\n}\n"
      },
      "contracts/ethregistrar/BulkRenewal.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"../registry/ENS.sol\";\nimport \"./ETHRegistrarController.sol\";\nimport \"./IETHRegistrarController.sol\";\nimport \"../resolvers/Resolver.sol\";\nimport \"./IBulkRenewal.sol\";\nimport \"./IPriceOracle.sol\";\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\ncontract BulkRenewal is IBulkRenewal {\n    bytes32 private constant ETH_NAMEHASH =\n        0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae;\n\n    ENS public immutable ens;\n\n    constructor(ENS _ens) {\n        ens = _ens;\n    }\n\n    function getController() internal view returns (ETHRegistrarController) {\n        Resolver r = Resolver(ens.resolver(ETH_NAMEHASH));\n        return\n            ETHRegistrarController(\n                r.interfaceImplementer(\n                    ETH_NAMEHASH,\n                    type(IETHRegistrarController).interfaceId\n                )\n            );\n    }\n\n    function rentPrice(string[] calldata names, uint256 duration)\n        external\n        view\n        override\n        returns (uint256 total)\n    {\n        ETHRegistrarController controller = getController();\n        uint256 length = names.length;\n        for (uint256 i = 0; i < length; ) {\n            IPriceOracle.Price memory price = controller.rentPrice(\n                names[i],\n                duration\n            );\n            unchecked {\n                ++i;\n                total += (price.base + price.premium);\n            }\n        }\n    }\n\n    function renewAll(string[] calldata names, uint256 duration)\n        external\n        payable\n        override\n    {\n        ETHRegistrarController controller = getController();\n        uint256 length = names.length;\n        uint256 total;\n        for (uint256 i = 0; i < length; ) {\n            IPriceOracle.Price memory price = controller.rentPrice(\n                names[i],\n                duration\n            );\n            uint256 totalPrice = price.base + price.premium;\n            controller.renew{value: totalPrice}(names[i], duration);\n            unchecked {\n                ++i;\n                total += totalPrice;\n            }\n        }\n        // Send any excess funds back\n        payable(msg.sender).transfer(address(this).balance);\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        external\n        pure\n        returns (bool)\n    {\n        return\n            interfaceID == type(IERC165).interfaceId ||\n            interfaceID == type(IBulkRenewal).interfaceId;\n    }\n}\n"
      },
      "contracts/ethregistrar/IBulkRenewal.sol": {
        "content": "interface IBulkRenewal {\n    function rentPrice(string[] calldata names, uint256 duration)\n        external\n        view\n        returns (uint256 total);\n\n    function renewAll(string[] calldata names, uint256 duration)\n        external\n        payable;\n}\n"
      },
      "contracts/wrapper/mocks/UpgradedNameWrapperMock.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\nimport \"../INameWrapper.sol\";\nimport \"../../registry/ENS.sol\";\nimport \"../../ethregistrar/IBaseRegistrar.sol\";\n\ncontract UpgradedNameWrapperMock {\n    address public immutable oldNameWrapper;\n    ENS public immutable ens;\n    IBaseRegistrar public immutable registrar;\n\n    constructor(\n        address _oldNameWrapper,\n        ENS _ens,\n        IBaseRegistrar _registrar\n    ) {\n        oldNameWrapper = _oldNameWrapper;\n        ens = _ens;\n        registrar = _registrar;\n    }\n\n    event SetSubnodeRecord(\n        bytes32 parentNode,\n        string label,\n        address newOwner,\n        address resolver,\n        uint64 ttl,\n        uint32 fuses,\n        uint64 expiry\n    );\n\n    event WrapETH2LD(\n        string label,\n        address wrappedOwner,\n        uint32 fuses,\n        uint64 expiry,\n        address resolver\n    );\n\n    function wrapETH2LD(\n        string calldata label,\n        address wrappedOwner,\n        uint32 fuses,\n        uint64 expiry,\n        address resolver\n    ) public {\n        uint256 tokenId = uint256(keccak256(bytes(label)));\n        address registrant = registrar.ownerOf(tokenId);\n        registrar.transferFrom(registrant, address(this), tokenId);\n        registrar.reclaim(tokenId, address(this));\n        require(\n            registrant == msg.sender ||\n                registrar.isApprovedForAll(registrant, msg.sender),\n            \"Unauthorised\"\n        );\n        emit WrapETH2LD(label, wrappedOwner, fuses, expiry, resolver);\n    }\n\n    function setSubnodeRecord(\n        bytes32 parentNode,\n        string memory label,\n        address newOwner,\n        address resolver,\n        uint64 ttl,\n        uint32 fuses,\n        uint64 expiry\n    ) public {\n        bytes32 labelhash = keccak256(bytes(label));\n        bytes32 node = keccak256(abi.encodePacked(parentNode, labelhash));\n        address owner = ens.owner(node);\n        require(\n            msg.sender == oldNameWrapper ||\n                owner == msg.sender ||\n                ens.isApprovedForAll(owner, msg.sender),\n            \"Not owner/approved or previous nameWrapper controller\"\n        );\n        ens.setOwner(node, address(this));\n        emit SetSubnodeRecord(\n            parentNode,\n            label,\n            newOwner,\n            resolver,\n            ttl,\n            fuses,\n            expiry\n        );\n    }\n}\n"
      },
      "contracts/registry/TestRegistrar.sol": {
        "content": "pragma solidity >=0.8.4;\n\nimport \"./ENS.sol\";\n\n/**\n * A registrar that allocates subdomains to the first person to claim them, but\n * expires registrations a fixed period after they're initially claimed.\n */\ncontract TestRegistrar {\n    uint256 constant registrationPeriod = 4 weeks;\n\n    ENS public immutable ens;\n    bytes32 public immutable rootNode;\n    mapping(bytes32 => uint256) public expiryTimes;\n\n    /**\n     * Constructor.\n     * @param ensAddr The address of the ENS registry.\n     * @param node The node that this registrar administers.\n     */\n    constructor(ENS ensAddr, bytes32 node) {\n        ens = ensAddr;\n        rootNode = node;\n    }\n\n    /**\n     * Register a name that's not currently registered\n     * @param label The hash of the label to register.\n     * @param owner The address of the new owner.\n     */\n    function register(bytes32 label, address owner) public {\n        require(expiryTimes[label] < block.timestamp);\n\n        expiryTimes[label] = block.timestamp + registrationPeriod;\n        ens.setSubnodeOwner(rootNode, label, owner);\n    }\n}\n"
      },
      "contracts/registry/FIFSRegistrar.sol": {
        "content": "pragma solidity >=0.8.4;\n\nimport \"./ENS.sol\";\n\n/**\n * A registrar that allocates subdomains to the first person to claim them.\n */\ncontract FIFSRegistrar {\n    ENS ens;\n    bytes32 rootNode;\n\n    modifier only_owner(bytes32 label) {\n        address currentOwner = ens.owner(\n            keccak256(abi.encodePacked(rootNode, label))\n        );\n        require(currentOwner == address(0x0) || currentOwner == msg.sender);\n        _;\n    }\n\n    /**\n     * Constructor.\n     * @param ensAddr The address of the ENS registry.\n     * @param node The node that this registrar administers.\n     */\n    constructor(ENS ensAddr, bytes32 node) public {\n        ens = ensAddr;\n        rootNode = node;\n    }\n\n    /**\n     * Register a name, or change the owner of an existing registration.\n     * @param label The hash of the label to register.\n     * @param owner The address of the new owner.\n     */\n    function register(bytes32 label, address owner) public only_owner(label) {\n        ens.setSubnodeOwner(rootNode, label, owner);\n    }\n}\n"
      },
      "contracts/registry/ENSRegistryWithFallback.sol": {
        "content": "pragma solidity >=0.8.4;\n\nimport \"./ENS.sol\";\nimport \"./ENSRegistry.sol\";\n\n/**\n * The ENS registry contract.\n */\ncontract ENSRegistryWithFallback is ENSRegistry {\n    ENS public old;\n\n    /**\n     * @dev Constructs a new ENS registrar.\n     */\n    constructor(ENS _old) public ENSRegistry() {\n        old = _old;\n    }\n\n    /**\n     * @dev Returns the address of the resolver for the specified node.\n     * @param node The specified node.\n     * @return address of the resolver.\n     */\n    function resolver(bytes32 node) public view override returns (address) {\n        if (!recordExists(node)) {\n            return old.resolver(node);\n        }\n\n        return super.resolver(node);\n    }\n\n    /**\n     * @dev Returns the address that owns the specified node.\n     * @param node The specified node.\n     * @return address of the owner.\n     */\n    function owner(bytes32 node) public view override returns (address) {\n        if (!recordExists(node)) {\n            return old.owner(node);\n        }\n\n        return super.owner(node);\n    }\n\n    /**\n     * @dev Returns the TTL of a node, and any records associated with it.\n     * @param node The specified node.\n     * @return ttl of the node.\n     */\n    function ttl(bytes32 node) public view override returns (uint64) {\n        if (!recordExists(node)) {\n            return old.ttl(node);\n        }\n\n        return super.ttl(node);\n    }\n\n    function _setOwner(bytes32 node, address owner) internal override {\n        address addr = owner;\n        if (addr == address(0x0)) {\n            addr = address(this);\n        }\n\n        super._setOwner(node, addr);\n    }\n}\n"
      },
      "contracts/ethregistrar/ExponentialPremiumPriceOracle.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity ~0.8.17;\n\nimport \"./StablePriceOracle.sol\";\n\ncontract ExponentialPremiumPriceOracle is StablePriceOracle {\n    uint256 constant GRACE_PERIOD = 90 days;\n    uint256 immutable startPremium;\n    uint256 immutable endValue;\n\n    constructor(\n        AggregatorInterface _usdOracle,\n        uint256[] memory _rentPrices,\n        uint256 _startPremium,\n        uint256 totalDays\n    ) StablePriceOracle(_usdOracle, _rentPrices) {\n        startPremium = _startPremium;\n        endValue = _startPremium >> totalDays;\n    }\n\n    uint256 constant PRECISION = 1e18;\n    uint256 constant bit1 = 999989423469314432; // 0.5 ^ 1/65536 * (10 ** 18)\n    uint256 constant bit2 = 999978847050491904; // 0.5 ^ 2/65536 * (10 ** 18)\n    uint256 constant bit3 = 999957694548431104;\n    uint256 constant bit4 = 999915390886613504;\n    uint256 constant bit5 = 999830788931929088;\n    uint256 constant bit6 = 999661606496243712;\n    uint256 constant bit7 = 999323327502650752;\n    uint256 constant bit8 = 998647112890970240;\n    uint256 constant bit9 = 997296056085470080;\n    uint256 constant bit10 = 994599423483633152;\n    uint256 constant bit11 = 989228013193975424;\n    uint256 constant bit12 = 978572062087700096;\n    uint256 constant bit13 = 957603280698573696;\n    uint256 constant bit14 = 917004043204671232;\n    uint256 constant bit15 = 840896415253714560;\n    uint256 constant bit16 = 707106781186547584;\n\n    /**\n     * @dev Returns the pricing premium in internal base units.\n     */\n    function _premium(\n        string memory,\n        uint256 expires,\n        uint256\n    ) internal view override returns (uint256) {\n        expires = expires + GRACE_PERIOD;\n        if (expires > block.timestamp) {\n            return 0;\n        }\n\n        uint256 elapsed = block.timestamp - expires;\n        uint256 premium = decayedPremium(startPremium, elapsed);\n        if (premium >= endValue) {\n            return premium - endValue;\n        }\n        return 0;\n    }\n\n    /**\n     * @dev Returns the premium price at current time elapsed\n     * @param startPremium starting price\n     * @param elapsed time past since expiry\n     */\n    function decayedPremium(uint256 startPremium, uint256 elapsed)\n        public\n        pure\n        returns (uint256)\n    {\n        uint256 daysPast = (elapsed * PRECISION) / 1 days;\n        uint256 intDays = daysPast / PRECISION;\n        uint256 premium = startPremium >> intDays;\n        uint256 partDay = (daysPast - intDays * PRECISION);\n        uint256 fraction = (partDay * (2**16)) / PRECISION;\n        uint256 totalPremium = addFractionalPremium(fraction, premium);\n        return totalPremium;\n    }\n\n    function addFractionalPremium(uint256 fraction, uint256 premium)\n        internal\n        pure\n        returns (uint256)\n    {\n        if (fraction & (1 << 0) != 0) {\n            premium = (premium * bit1) / PRECISION;\n        }\n        if (fraction & (1 << 1) != 0) {\n            premium = (premium * bit2) / PRECISION;\n        }\n        if (fraction & (1 << 2) != 0) {\n            premium = (premium * bit3) / PRECISION;\n        }\n        if (fraction & (1 << 3) != 0) {\n            premium = (premium * bit4) / PRECISION;\n        }\n        if (fraction & (1 << 4) != 0) {\n            premium = (premium * bit5) / PRECISION;\n        }\n        if (fraction & (1 << 5) != 0) {\n            premium = (premium * bit6) / PRECISION;\n        }\n        if (fraction & (1 << 6) != 0) {\n            premium = (premium * bit7) / PRECISION;\n        }\n        if (fraction & (1 << 7) != 0) {\n            premium = (premium * bit8) / PRECISION;\n        }\n        if (fraction & (1 << 8) != 0) {\n            premium = (premium * bit9) / PRECISION;\n        }\n        if (fraction & (1 << 9) != 0) {\n            premium = (premium * bit10) / PRECISION;\n        }\n        if (fraction & (1 << 10) != 0) {\n            premium = (premium * bit11) / PRECISION;\n        }\n        if (fraction & (1 << 11) != 0) {\n            premium = (premium * bit12) / PRECISION;\n        }\n        if (fraction & (1 << 12) != 0) {\n            premium = (premium * bit13) / PRECISION;\n        }\n        if (fraction & (1 << 13) != 0) {\n            premium = (premium * bit14) / PRECISION;\n        }\n        if (fraction & (1 << 14) != 0) {\n            premium = (premium * bit15) / PRECISION;\n        }\n        if (fraction & (1 << 15) != 0) {\n            premium = (premium * bit16) / PRECISION;\n        }\n        return premium;\n    }\n\n    function supportsInterface(bytes4 interfaceID)\n        public\n        view\n        virtual\n        override\n        returns (bool)\n    {\n        return super.supportsInterface(interfaceID);\n    }\n}\n"
      },
      "test/utils/mocks/MockERC20.sol": {
        "content": "//SPDX-License-Identifier: MIT\npragma solidity >=0.8.17 <0.9.0;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MockERC20 is ERC20 {\n    constructor(\n        string memory name,\n        string memory symbol,\n        address[] memory addresses\n    ) ERC20(name, symbol) {\n        _mint(msg.sender, 100 * 10**uint256(decimals()));\n\n        for (uint256 i = 0; i < addresses.length; i++) {\n            _mint(addresses[i], 100 * 10**uint256(decimals()));\n        }\n    }\n}\n"
      },
      "contracts/wrapper/mocks/ERC1155ReceiverMock.sol": {
        "content": "// Based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.1.0/test/token/ERC1155/ERC1155.behaviour.js\n// Copyright (c) 2016-2020 zOS Global Limited\n\n// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\ncontract ERC1155ReceiverMock is IERC1155Receiver, ERC165 {\n    bytes4 private _recRetval;\n    bool private _recReverts;\n    bytes4 private _batRetval;\n    bool private _batReverts;\n\n    event Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes data\n    );\n    event BatchReceived(\n        address operator,\n        address from,\n        uint256[] ids,\n        uint256[] values,\n        bytes data\n    );\n\n    constructor(\n        bytes4 recRetval,\n        bool recReverts,\n        bytes4 batRetval,\n        bool batReverts\n    ) {\n        _recRetval = recRetval;\n        _recReverts = recReverts;\n        _batRetval = batRetval;\n        _batReverts = batReverts;\n    }\n\n    function onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external override returns (bytes4) {\n        require(!_recReverts, \"ERC1155ReceiverMock: reverting on receive\");\n        emit Received(operator, from, id, value, data);\n        return _recRetval;\n    }\n\n    function onERC1155BatchReceived(\n        address operator,\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external override returns (bytes4) {\n        require(\n            !_batReverts,\n            \"ERC1155ReceiverMock: reverting on batch receive\"\n        );\n        emit BatchReceived(operator, from, ids, values, data);\n        return _batRetval;\n    }\n}\n"
      },
      "contracts/utils/TestNameEncoder.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport {NameEncoder} from \"./NameEncoder.sol\";\n\ncontract TestNameEncoder {\n    using NameEncoder for string;\n\n    function encodeName(string memory name)\n        public\n        pure\n        returns (bytes memory, bytes32)\n    {\n        return name.dnsEncodeName();\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "@ensdomains/buffer/contracts/Buffer.sol": {
        "Buffer": {
          "abi": [],
          "devdoc": {
            "details": "A library for working with mutable byte buffers in Solidity. Byte buffers are mutable and expandable, and provide a variety of primitives for writing to them. At any time you can fetch a bytes object containing the current contents of the buffer. The bytes object should not be stored between operations, as it may change due to resizing of the buffer.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201ff9846be6df1823fab4a1bcea0c2a006e8d4c91d8a1b8d99881cf66e45ee8c264736f6c63430008110033",
              "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 0x1F 0xF9 DUP5 PUSH12 0xE6DF1823FAB4A1BCEA0C2A00 PUSH15 0x8D4C91D8A1B8D99881CF66E45EE8C2 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "402:10302:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;402:10302:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201ff9846be6df1823fab4a1bcea0c2a006e8d4c91d8a1b8d99881cf66e45ee8c264736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F 0xF9 DUP5 PUSH12 0xE6DF1823FAB4A1BCEA0C2A00 PUSH15 0x8D4C91D8A1B8D99881CF66E45EE8C2 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "402:10302:0:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "append(struct Buffer.buffer memory,bytes memory)": "infinite",
                "append(struct Buffer.buffer memory,bytes memory,uint256)": "infinite",
                "appendBytes20(struct Buffer.buffer memory,bytes20)": "infinite",
                "appendBytes32(struct Buffer.buffer memory,bytes32)": "infinite",
                "appendInt(struct Buffer.buffer memory,uint256,uint256)": "infinite",
                "appendUint8(struct Buffer.buffer memory,uint8)": "infinite",
                "fromBytes(bytes memory)": "infinite",
                "init(struct Buffer.buffer memory,uint256)": "infinite",
                "max(uint256,uint256)": "infinite",
                "resize(struct Buffer.buffer memory,uint256)": "infinite",
                "truncate(struct Buffer.buffer memory)": "infinite",
                "write(struct Buffer.buffer memory,uint256,bytes memory,uint256)": "infinite",
                "write(struct Buffer.buffer memory,uint256,bytes32,uint256)": "infinite",
                "writeBytes20(struct Buffer.buffer memory,uint256,bytes20)": "infinite",
                "writeInt(struct Buffer.buffer memory,uint256,uint256,uint256)": "infinite",
                "writeUint8(struct Buffer.buffer memory,uint256,uint8)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"A library for working with mutable byte buffers in Solidity. Byte buffers are mutable and expandable, and provide a variety of primitives for writing to them. At any time you can fetch a bytes object containing the current contents of the buffer. The bytes object should not be stored between operations, as it may change due to resizing of the buffer.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensdomains/buffer/contracts/Buffer.sol\":\"Buffer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@ensdomains/solsha1/contracts/SHA1.sol": {
        "SHA1": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                }
              ],
              "name": "Debug",
              "type": "event"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207dcb8741da8e0831568fabb12dabcc74c303b59f1791f68ce0c0db12c1d5653564736f6c63430008110033",
              "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 PUSH30 0xCB8741DA8E0831568FABB12DABCC74C303B59F1791F68CE0C0DB12C1D565 CALLDATALOAD PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "25:5711:1:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;25:5711:1;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207dcb8741da8e0831568fabb12dabcc74c303b59f1791f68ce0c0db12c1d5653564736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0xCB8741DA8E0831568FABB12DABCC74C303B59F1791F68CE0C0DB12C1D565 CALLDATALOAD PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "25:5711:1:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "sha1(bytes memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"}],\"name\":\"Debug\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensdomains/solsha1/contracts/SHA1.sol\":\"SHA1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/solsha1/contracts/SHA1.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary SHA1 {\\n    event Debug(bytes32 x);\\n\\n    function sha1(bytes memory data) internal pure returns(bytes20 ret) {\\n        assembly {\\n            // Get a safe scratch location\\n            let scratch := mload(0x40)\\n\\n            // Get the data length, and point data at the first byte\\n            let len := mload(data)\\n            data := add(data, 32)\\n\\n            // Find the length after padding\\n            let totallen := add(and(add(len, 1), 0xFFFFFFFFFFFFFFC0), 64)\\n            switch lt(sub(totallen, len), 9)\\n            case 1 { totallen := add(totallen, 64) }\\n\\n            let h := 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0\\n\\n            function readword(ptr, off, count) -> result {\\n                result := 0\\n                if lt(off, count) {\\n                    result := mload(add(ptr, off))\\n                    count := sub(count, off)\\n                    if lt(count, 32) {\\n                        let mask := not(sub(exp(256, sub(32, count)), 1))\\n                        result := and(result, mask)\\n                    }\\n                }\\n            }\\n\\n            for { let i := 0 } lt(i, totallen) { i := add(i, 64) } {\\n                mstore(scratch, readword(data, i, len))\\n                mstore(add(scratch, 32), readword(data, add(i, 32), len))\\n\\n                // If we loaded the last byte, store the terminator byte\\n                switch lt(sub(len, i), 64)\\n                case 1 { mstore8(add(scratch, sub(len, i)), 0x80) }\\n\\n                // If this is the last block, store the length\\n                switch eq(i, sub(totallen, 64))\\n                case 1 { mstore(add(scratch, 32), or(mload(add(scratch, 32)), mul(len, 8))) }\\n\\n                // Expand the 16 32-bit words into 80\\n                for { let j := 64 } lt(j, 128) { j := add(j, 12) } {\\n                    let temp := xor(xor(mload(add(scratch, sub(j, 12))), mload(add(scratch, sub(j, 32)))), xor(mload(add(scratch, sub(j, 56))), mload(add(scratch, sub(j, 64)))))\\n                    temp := or(and(mul(temp, 2), 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE), and(div(temp, 0x80000000), 0x0000000100000001000000010000000100000001000000010000000100000001))\\n                    mstore(add(scratch, j), temp)\\n                }\\n                for { let j := 128 } lt(j, 320) { j := add(j, 24) } {\\n                    let temp := xor(xor(mload(add(scratch, sub(j, 24))), mload(add(scratch, sub(j, 64)))), xor(mload(add(scratch, sub(j, 112))), mload(add(scratch, sub(j, 128)))))\\n                    temp := or(and(mul(temp, 4), 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC), and(div(temp, 0x40000000), 0x0000000300000003000000030000000300000003000000030000000300000003))\\n                    mstore(add(scratch, j), temp)\\n                }\\n\\n                let x := h\\n                let f := 0\\n                let k := 0\\n                for { let j := 0 } lt(j, 80) { j := add(j, 1) } {\\n                    switch div(j, 20)\\n                    case 0 {\\n                        // f = d xor (b and (c xor d))\\n                        f := xor(div(x, 0x100000000000000000000), div(x, 0x10000000000))\\n                        f := and(div(x, 0x1000000000000000000000000000000), f)\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0x5A827999\\n                    }\\n                    case 1{\\n                        // f = b xor c xor d\\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0x6ED9EBA1\\n                    }\\n                    case 2 {\\n                        // f = (b and c) or (d and (b or c))\\n                        f := or(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := and(div(x, 0x10000000000), f)\\n                        f := or(and(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000)), f)\\n                        k := 0x8F1BBCDC\\n                    }\\n                    case 3 {\\n                        // f = b xor c xor d\\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0xCA62C1D6\\n                    }\\n                    // temp = (a leftrotate 5) + f + e + k + w[i]\\n                    let temp := and(div(x, 0x80000000000000000000000000000000000000000000000), 0x1F)\\n                    temp := or(and(div(x, 0x800000000000000000000000000000000000000), 0xFFFFFFE0), temp)\\n                    temp := add(f, temp)\\n                    temp := add(and(x, 0xFFFFFFFF), temp)\\n                    temp := add(k, temp)\\n                    temp := add(div(mload(add(scratch, mul(j, 4))), 0x100000000000000000000000000000000000000000000000000000000), temp)\\n                    x := or(div(x, 0x10000000000), mul(temp, 0x10000000000000000000000000000000000000000))\\n                    x := or(and(x, 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF), mul(or(and(div(x, 0x4000000000000), 0xC0000000), and(div(x, 0x400000000000000000000), 0x3FFFFFFF)), 0x100000000000000000000))\\n                }\\n\\n                h := and(add(h, x), 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF)\\n            }\\n            ret := mul(or(or(or(or(and(div(h, 0x100000000), 0xFFFFFFFF00000000000000000000000000000000), and(div(h, 0x1000000), 0xFFFFFFFF000000000000000000000000)), and(div(h, 0x10000), 0xFFFFFFFF0000000000000000)), and(div(h, 0x100), 0xFFFFFFFF00000000)), and(h, 0xFFFFFFFF)), 0x1000000000000000000000000)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x746d9b85de197afbc13182cbe4ba4f7917f19594e07c655d6a0c85fdf7460a8a\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/access/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
            "kind": "dev",
            "methods": {
              "constructor": {
                "details": "Initializes the contract setting the deployer as the initial owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "@openzeppelin/contracts/access/Ownable.sol:Ownable",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "IERC1155": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._",
            "events": {
              "ApprovalForAll(address,address,bool)": {
                "details": "Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."
              },
              "TransferBatch(address,address,address,uint256[],uint256[])": {
                "details": "Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."
              },
              "TransferSingle(address,address,address,uint256,uint256)": {
                "details": "Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."
              },
              "URI(string,uint256)": {
                "details": "Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."
              }
            },
            "kind": "dev",
            "methods": {
              "balanceOf(address,uint256)": {
                "details": "Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."
              },
              "balanceOfBatch(address[],uint256[])": {
                "details": "xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."
              },
              "isApprovedForAll(address,address)": {
                "details": "Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."
              },
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
                "details": "xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."
              },
              "safeTransferFrom(address,address,uint256,uint256,bytes)": {
                "details": "Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."
              },
              "setApprovalForAll(address,bool)": {
                "details": "Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "IERC1155Receiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "_Available since v3.1._",
            "kind": "dev",
            "methods": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": {
                "details": "Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81, or its own function selector).",
                "params": {
                  "data": "Additional data with no specified format",
                  "from": "The address which previously owned the token",
                  "ids": "An array containing ids of each token being transferred (order and length must match values array)",
                  "operator": "The address which initiated the batch transfer (i.e. msg.sender)",
                  "values": "An array containing amounts of each token being transferred (order and length must match ids array)"
                },
                "returns": {
                  "_0": "`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"
                }
              },
              "onERC1155Received(address,address,uint256,uint256,bytes)": {
                "details": "Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61, or its own function selector).",
                "params": {
                  "data": "Additional data with no specified format",
                  "from": "The address which previously owned the token",
                  "id": "The ID of the token being transferred",
                  "operator": "The address which initiated the transfer (i.e. msg.sender)",
                  "value": "The amount of tokens being transferred"
                },
                "returns": {
                  "_0": "`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"
                }
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n    /**\\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\\n     *\\n     * NOTE: To accept the transfer, this must return\\n     * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n     * (i.e. 0xf23a6e61, or its own function selector).\\n     *\\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param id The ID of the token being transferred\\n     * @param value The amount of tokens being transferred\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256 value,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n\\n    /**\\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\\n     * been updated.\\n     *\\n     * NOTE: To accept the transfer(s), this must return\\n     * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n     * (i.e. 0xbc197c81, or its own function selector).\\n     *\\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155BatchReceived(\\n        address operator,\\n        address from,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol": {
        "IERC1155MetadataURI": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._",
            "kind": "dev",
            "methods": {
              "balanceOf(address,uint256)": {
                "details": "Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."
              },
              "balanceOfBatch(address[],uint256[])": {
                "details": "xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."
              },
              "isApprovedForAll(address,address)": {
                "details": "Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."
              },
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
                "details": "xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."
              },
              "safeTransferFrom(address,address,uint256,uint256,bytes)": {
                "details": "Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."
              },
              "setApprovalForAll(address,bool)": {
                "details": "Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              },
              "uri(uint256)": {
                "details": "Returns the URI for token type `id`. If the `\\{id\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"uri(uint256)\":{\"details\":\"Returns the URI for token type `id`. If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":\"IERC1155MetadataURI\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n    /**\\n     * @dev Returns the URI for token type `id`.\\n     *\\n     * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n     * clients with the actual token type ID.\\n     */\\n    function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "ERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name_",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol_",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.",
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
              },
              "approve(address,uint256)": {
                "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
              },
              "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
              },
              "constructor": {
                "details": "Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction."
              },
              "decimals()": {
                "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
              },
              "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
              },
              "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "symbol()": {
                "details": "Returns the symbol of the token, usually a shorter version of the name."
              },
              "totalSupply()": {
                "details": "See {IERC20-totalSupply}."
              },
              "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_865": {
                  "entryPoint": null,
                  "id": 865,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_string_fromMemory": {
                  "entryPoint": 112,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": {
                  "entryPoint": 287,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_string_storage": {
                  "entryPoint": 453,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
                  "entryPoint": 536,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 393,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 90,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4144:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "70:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "75:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "66:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "66:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "106:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "96:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "127:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "130:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "120:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "210:776:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "259:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "268:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "271:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "261:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "261:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "261:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "238:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "246:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "234:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "234:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "253:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "230:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "230:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "223:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "223:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "220:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "284:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "300:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "294:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "294:13:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "288:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "316:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "334:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "338:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "330:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "330:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "342:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "326:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "326:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "320:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "367:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "369:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "369:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "369:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "363:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "356:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "356:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "353:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "398:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "412:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "408:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "408:7:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "402:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "424:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "444:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "438:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "438:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "428:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "456:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "478:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "502:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "506:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "498:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "498:13:111"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "513:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "494:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "494:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "518:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "490:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "490:31:111"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "523:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "486:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "486:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "474:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "474:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "460:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "586:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "588:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "588:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "588:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "545:10:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "542:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "542:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "565:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "577:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "562:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "562:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "539:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "539:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "536:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "624:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "628:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "617:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "617:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "617:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "655:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "663:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "648:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "648:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "648:18:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "675:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "685:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "679:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "735:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "744:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "747:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "737:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "737:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "737:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "712:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "720:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "708:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "708:15:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "725:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "704:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "704:24:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "730:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "701:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "701:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "698:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "760:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "769:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "764:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "825:87:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "854:6:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "862:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "850:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "850:14:111"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "866:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "846:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "846:23:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "885:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "893:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "881:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "881:14:111"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "897:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "877:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "877:23:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "871:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "871:30:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "839:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "839:63:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "839:63:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "790:1:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "793:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "787:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "787:9:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "797:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "799:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "808:1:111"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "811:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "804:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "804:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "799:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "783:3:111",
                                "statements": []
                              },
                              "src": "779:133:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "936:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "944:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "932:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "932:15:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "949:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "928:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "928:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "954:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "921:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "921:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "965:15:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "974:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "965:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "184:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "192:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "200:5:111",
                            "type": ""
                          }
                        ],
                        "src": "146:840:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1109:444:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1155:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1164:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1167:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1157:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1157:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1157:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1130:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1139:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1126:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1126:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1151:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1122:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1122:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1119:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1180:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1200:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1194:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1194:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1184:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1219:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1237:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1241:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1233:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1233:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1245:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1229:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1229:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1223:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1274:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1283:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1286:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1276:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1276:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1276:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1262:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1270:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1259:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1259:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1256:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1299:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1342:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1353:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1338:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1338:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1362:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1309:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1309:61:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1299:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1379:41:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1405:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1416:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1401:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1401:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1395:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1395:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1383:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1449:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1458:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1461:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1451:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1451:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1451:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1435:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1445:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1432:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1432:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1429:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1474:73:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1517:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1528:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1513:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1513:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1539:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1484:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1484:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1474:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1067:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1078:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1090:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1098:6:111",
                            "type": ""
                          }
                        ],
                        "src": "991:562:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1613:325:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1623:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1637:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1640:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1633:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1633:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1623:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1654:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1684:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1690:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "1680:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1680:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "1658:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1731:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1733:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "1747:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1755:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "1743:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1743:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1733:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1711:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1704:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1704:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1701:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1821:111:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1842:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1849:3:111",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1854:10:111",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1845:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1845:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1835:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1835:31:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1835:31:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1886:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1889:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1879:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1879:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1879:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1914:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1917:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1907:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1907:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1907:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1777:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1800:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1808:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1797:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1797:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1774:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1774:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1771:161:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1593:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1602:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1558:380:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1999:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2016:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2019:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2009:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2009:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2009:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2032:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2050:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2053:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "2040:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2040:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "2032:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "1982:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1990:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1943:121:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2150:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2183:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2197:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2207:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "2201:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2228:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "2232:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2221:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2221:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2221:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2251:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2273:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2277:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "2263:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2263:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "2255:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2295:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "2318:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2328:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2335:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2347:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2331:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2331:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2324:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2324:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2314:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2314:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "2299:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2389:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2391:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "2406:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "2391:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "2371:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2383:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2368:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2368:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2365:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2425:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "2439:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2449:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2456:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2461:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2452:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2452:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2445:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2445:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2435:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2435:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "2429:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2479:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "2492:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "2483:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2577:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "2586:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2593:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "2579:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2579:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2579:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "2527:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2534:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2524:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2524:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "2538:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2540:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "2553:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2560:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2549:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2549:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "2540:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "2520:3:111",
                                      "statements": []
                                    },
                                    "src": "2516:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "2166:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2171:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2163:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2163:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2160:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2122:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "2129:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "2134:10:111",
                            "type": ""
                          }
                        ],
                        "src": "2069:545:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2704:81:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2714:65:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "2729:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2747:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2750:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2743:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2743:11:111"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2760:1:111",
                                                    "type": "",
                                                    "value": "0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "not",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2756:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2756:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "2739:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2739:24:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "2735:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2735:29:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2725:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2725:40:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2771:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "2774:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2767:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2767:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2722:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2722:57:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "2714:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2681:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "2687:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "2695:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2619:166:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2886:1256:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2896:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "2916:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2910:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2910:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "2900:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2963:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2965:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2965:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2935:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2951:2:111",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2955:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "2947:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2947:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2959:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2943:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2943:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2932:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2932:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2929:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "3038:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "3076:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3070:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3070:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "3044:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3044:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3084:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "2994:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2994:97:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2994:97:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3100:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3117:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "3104:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3127:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3146:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3131:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3159:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "3172:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "3159:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "3229:656:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3243:35:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "3262:6:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3274:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "3270:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3270:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "3258:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3258:20:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "3247:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3291:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3335:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "3305:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3305:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "3295:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3353:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3362:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "3357:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3440:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3465:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3483:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3488:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3479:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3479:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3473:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3473:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3458:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3458:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "3458:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3517:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3531:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3539:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3527:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3527:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3517:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3558:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3575:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3586:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3571:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3571:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3558:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "3387:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "3390:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3384:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3384:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "3399:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3401:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3410:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3413:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3406:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3406:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3401:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "3380:3:111",
                                          "statements": []
                                        },
                                        "src": "3376:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3660:166:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "3678:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3705:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3710:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3701:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3701:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3695:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3695:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "3682:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3745:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3757:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3784:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3787:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "3780:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3780:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3796:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3776:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3776:24:111"
                                                              },
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3806:1:111",
                                                                    "type": "",
                                                                    "value": "0"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "not",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3802:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3802:6:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3772:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3772:37:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3768:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3768:42:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3753:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3753:58:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3738:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3738:74:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "3738:74:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "3631:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "3640:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3628:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3628:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "3625:201:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3846:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "3860:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3863:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3856:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3856:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3872:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3852:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3852:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3839:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3839:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "3839:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "3222:663:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3227:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "3902:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3916:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3929:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "3920:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3965:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3983:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4002:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4007:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3998:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3998:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3992:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3992:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3983:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "3946:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "3943:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "4052:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4111:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4118:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "4058:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4058:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4045:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4045:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "4045:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "3894:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3202:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3210:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3199:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3199:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "3192:944:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "2871:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "2877:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2790:1352:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        mstore(add(add(memPtr, _1), _4), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162000e5338038062000e5383398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b5f80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094c565b60405180910390f35b6100ff6100fa3660046109e1565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a0b565b6102ac565b604051601281526020016100e3565b6100ff6101513660046109e1565b6102d0565b610113610164366004610a47565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a23660046109e1565b61032b565b6100ff6101b53660046109e1565b610401565b6101136101c8366004610a69565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a9c565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a9c565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aef565b61040f565b60606004805461020f90610a9c565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d9908490610aef565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093f91815260200190565b60405180910390a3610693565b600060208083528351808285015260005b818110156109795785810183015185820160400152820161095d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109dc57600080fd5b919050565b600080604083850312156109f457600080fd5b6109fd836109b8565b946020939093013593505050565b600080600060608486031215610a2057600080fd5b610a29846109b8565b9250610a37602085016109b8565b9150604084013590509250925092565b600060208284031215610a5957600080fd5b610a62826109b8565b9392505050565b60008060408385031215610a7c57600080fd5b610a85836109b8565b9150610a93602084016109b8565b90509250929050565b600181811c90821680610ab057607f821691505b602082108103610ae9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122051747faf32653548f7270898744f81ef5d34f34cfbd7f43789ee8de87a4911c764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xE53 CODESIZE SUB DUP1 PUSH3 0xE53 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x3 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0xB5F DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xA0B JUMP JUMPDEST PUSH2 0x2AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0xA47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x31C JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x32B JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x401 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA69 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9C JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x23B SWAP1 PUSH2 0xA9C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2BA DUP6 DUP3 DUP6 PUSH2 0x5C2 JUMP JUMPDEST PUSH2 0x2C5 DUP6 DUP6 DUP6 PUSH2 0x699 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2A0 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x317 SWAP1 DUP8 SWAP1 PUSH2 0xAEF JUMP JUMPDEST PUSH2 0x40F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9C JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C5 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x40F JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x699 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x554 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x693 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x686 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH2 0x693 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x40F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8D9 SWAP1 DUP5 SWAP1 PUSH2 0xAEF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x93F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x979 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x95D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FD DUP4 PUSH2 0x9B8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA29 DUP5 PUSH2 0x9B8 JUMP JUMPDEST SWAP3 POP PUSH2 0xA37 PUSH1 0x20 DUP6 ADD PUSH2 0x9B8 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA62 DUP3 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA85 DUP4 PUSH2 0x9B8 JUMP JUMPDEST SWAP2 POP PUSH2 0xA93 PUSH1 0x20 DUP5 ADD PUSH2 0x9B8 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAB0 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xAE9 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2A6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD PUSH21 0x7FAF32653548F7270898744F81EF5D34F34CFBD7F4 CALLDATACOPY DUP10 0xEE DUP14 0xE8 PUSH27 0x4911C764736F6C6343000811003300000000000000000000000000 ",
              "sourceMap": "1403:11223:6:-:0;;;1978:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:5;:13;2052:5;2044;:13;:::i;:::-;-1:-1:-1;2067:7:6;:17;2077:7;2067;:17;:::i;:::-;;1978:113;;1403:11223;;14:127:111;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:111;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:111;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:111:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:111;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:111;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:111;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:111;;;3992:26;3943:89;-1:-1:-1;;2747:1:111;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:111;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:111;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:111;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:111:o;:::-;1403:11223:6;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_afterTokenTransfer_1407": {
                  "entryPoint": null,
                  "id": 1407,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1342": {
                  "entryPoint": 1039,
                  "id": 1342,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1396": {
                  "entryPoint": null,
                  "id": 1396,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_spendAllowance_1385": {
                  "entryPoint": 1474,
                  "id": 1385,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_transfer_1169": {
                  "entryPoint": 1689,
                  "id": 1169,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@allowance_962": {
                  "entryPoint": null,
                  "id": 962,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_987": {
                  "entryPoint": 658,
                  "id": 987,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_919": {
                  "entryPoint": null,
                  "id": 919,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decimals_895": {
                  "entryPoint": null,
                  "id": 895,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@decreaseAllowance_1092": {
                  "entryPoint": 811,
                  "id": 1092,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@increaseAllowance_1050": {
                  "entryPoint": 720,
                  "id": 1050,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_875": {
                  "entryPoint": 512,
                  "id": 875,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@symbol_885": {
                  "entryPoint": 796,
                  "id": 885,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_905": {
                  "entryPoint": null,
                  "id": 905,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1020": {
                  "entryPoint": 684,
                  "id": 1020,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_944": {
                  "entryPoint": 1025,
                  "id": 944,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 2488,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 2631,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2665,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2571,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 2529,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2380,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2799,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 2716,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:5950:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "135:486:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "145:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "155:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "149:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "173:9:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "184:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "166:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "166:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "196:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "216:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "210:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "210:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "200:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "243:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "254:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "239:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "239:18:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "259:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "232:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "275:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "284:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "279:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "344:90:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "373:9:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "384:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "369:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "369:17:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "388:2:111",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "365:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "365:26:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "407:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "415:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "403:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "403:14:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "419:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "399:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "399:23:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "393:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "393:30:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "358:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "358:66:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "358:66:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "308:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "302:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "316:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "318:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "327:1:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "330:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "323:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "323:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "318:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "298:3:111",
                                "statements": []
                              },
                              "src": "294:140:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "458:9:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "469:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "454:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "454:22:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "478:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "450:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "450:31:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "483:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "443:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "443:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "443:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "494:121:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "510:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "529:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "537:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "525:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "525:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "542:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "521:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "521:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "506:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "506:104:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "612:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "502:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "502:113:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "494:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "104:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "115:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "126:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14:607:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "675:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "685:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "707:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "694:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "694:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "685:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "800:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "809:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "812:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "802:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "802:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "802:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "736:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "747:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "754:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "743:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "743:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "733:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "733:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "726:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "726:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "723:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "654:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "665:5:111",
                            "type": ""
                          }
                        ],
                        "src": "626:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "914:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "960:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "969:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "972:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "962:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "962:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "962:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "935:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "931:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "931:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "956:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "927:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "927:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "924:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "985:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1014:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "995:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "995:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "985:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1033:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1060:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1071:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1056:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1056:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1043:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1043:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1033:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "872:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "883:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "895:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "903:6:111",
                            "type": ""
                          }
                        ],
                        "src": "827:254:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1181:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1191:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1203:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1214:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1199:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1199:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1191:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1233:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1258:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1251:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1251:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1244:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1244:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1226:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1226:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1226:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1150:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1161:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1172:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1086:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1379:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1389:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1401:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1412:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1397:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1431:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1442:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1424:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1424:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1424:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1348:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1359:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1370:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1278:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1564:224:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1610:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1619:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1622:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1612:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1612:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1612:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1585:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1594:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1581:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1581:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1606:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1577:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1577:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1574:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1635:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1664:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1645:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1645:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1635:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1683:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1716:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1727:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1712:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1712:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1693:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1693:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1683:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1740:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1767:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1778:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1763:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1763:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1750:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1750:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1740:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1514:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1525:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1537:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1545:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1553:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1460:328:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1890:87:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1900:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1912:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1923:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1908:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1908:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1900:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1942:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1957:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1965:4:111",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1953:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1953:17:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1935:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1935:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1935:36:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1859:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1870:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1881:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1793:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2052:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2098:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2107:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2110:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2100:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2100:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2100:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2073:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2082:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2069:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2069:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2094:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2065:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2065:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2062:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2123:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2152:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2133:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2133:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2123:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2018:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2029:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2041:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1982:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2260:173:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2306:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2315:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2318:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2308:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2308:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2308:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2281:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2290:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2277:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2277:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2302:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2273:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2273:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2270:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2331:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2360:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2341:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2341:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2331:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2379:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2412:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2423:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2408:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2408:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2389:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2389:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2379:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2218:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2229:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2241:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2249:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2173:260:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2493:382:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2503:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2517:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2520:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2513:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2513:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2503:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2534:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2564:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2570:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "2560:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2560:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "2538:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2611:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2613:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "2627:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2635:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "2623:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2623:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2613:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2591:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2584:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2584:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2581:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2701:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2722:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2725:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2715:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2715:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2715:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2823:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2826:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2816:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2816:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2816:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2851:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2854:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2844:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2844:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2844:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2657:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2680:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2688:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2677:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2677:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "2654:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2654:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2651:218:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2473:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2482:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2438:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2928:231:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2938:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2949:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2952:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2945:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2945:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "2938:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2985:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3006:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3009:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2999:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2999:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2999:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3107:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3110:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3100:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3100:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3100:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3135:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3138:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3128:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3128:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3128:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2969:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "2972:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2966:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2966:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2963:190:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2911:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2914:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "2920:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2880:279:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3338:227:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3355:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3366:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3348:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3348:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3348:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3389:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3400:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3385:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3385:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3405:2:111",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3378:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3378:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3378:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3428:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3439:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3424:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3424:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3444:34:111",
                                    "type": "",
                                    "value": "ERC20: decreased allowance below"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3417:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3499:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3510:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3495:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3495:18:111"
                                  },
                                  {
                                    "hexValue": "207a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3515:7:111",
                                    "type": "",
                                    "value": " zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3488:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3488:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3488:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3532:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3544:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3555:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3540:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3532:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3315:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3329:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3164:401:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3744:226:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3761:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3772:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3754:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3754:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3754:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3795:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3806:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3791:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3791:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3811:2:111",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3784:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3784:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3784:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3834:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3845:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3830:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3830:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3850:34:111",
                                    "type": "",
                                    "value": "ERC20: approve from the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3823:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3823:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3823:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3905:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3916:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3901:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3901:18:111"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3921:6:111",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3894:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3894:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3894:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3937:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3949:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3960:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3945:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3945:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3937:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3721:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3735:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3570:400:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4149:224:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4166:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4177:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4159:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4159:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4159:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4200:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4211:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4196:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4196:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4216:2:111",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4189:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4189:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4189:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4239:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4250:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4235:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4235:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4255:34:111",
                                    "type": "",
                                    "value": "ERC20: approve to the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4228:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4228:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4310:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4321:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4306:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4306:18:111"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4326:4:111",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4299:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4299:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4299:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4340:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4352:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4363:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4348:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4348:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4340:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4126:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4140:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3975:398:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4552:179:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4569:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4580:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4562:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4562:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4562:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4603:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4614:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4599:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4599:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4619:2:111",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4592:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4592:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4592:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4642:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4653:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4638:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4638:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4658:31:111",
                                    "type": "",
                                    "value": "ERC20: insufficient allowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4631:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4631:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4631:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4699:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4711:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4722:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4707:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4707:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4699:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4529:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4543:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4378:353:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4910:227:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4927:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4938:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4920:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4920:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4920:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4961:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4972:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4957:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4957:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4977:2:111",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4950:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4950:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4950:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5011:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5016:34:111",
                                    "type": "",
                                    "value": "ERC20: transfer from the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5071:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5082:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5067:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5067:18:111"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5087:7:111",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5060:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5060:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5060:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5104:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5116:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5127:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5112:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5112:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5104:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4887:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4901:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4736:401:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5316:225:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5333:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5344:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5326:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5326:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5326:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5367:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5378:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5363:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5363:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5383:2:111",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5356:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5356:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5356:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5406:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5417:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5402:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5402:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5422:34:111",
                                    "type": "",
                                    "value": "ERC20: transfer to the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5395:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5395:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5477:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5488:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5473:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5473:18:111"
                                  },
                                  {
                                    "hexValue": "657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5493:5:111",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5466:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5466:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5466:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5508:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5520:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5531:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5516:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5516:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5508:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5293:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5307:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5142:399:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5720:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5737:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5748:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5730:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5730:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5730:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5771:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5782:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5767:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5767:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5787:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5760:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5760:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5760:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5810:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5821:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5806:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5806:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5826:34:111",
                                    "type": "",
                                    "value": "ERC20: transfer amount exceeds b"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5799:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5799:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5799:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5881:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5892:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5877:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5877:18:111"
                                  },
                                  {
                                    "hexValue": "616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5897:8:111",
                                    "type": "",
                                    "value": "alance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5870:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5870:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5870:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5915:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5927:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5938:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5923:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5923:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5915:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5697:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5711:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5546:402:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094c565b60405180910390f35b6100ff6100fa3660046109e1565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a0b565b6102ac565b604051601281526020016100e3565b6100ff6101513660046109e1565b6102d0565b610113610164366004610a47565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a23660046109e1565b61032b565b6100ff6101b53660046109e1565b610401565b6101136101c8366004610a69565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a9c565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a9c565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aef565b61040f565b60606004805461020f90610a9c565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d9908490610aef565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093f91815260200190565b60405180910390a3610693565b600060208083528351808285015260005b818110156109795785810183015185820160400152820161095d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109dc57600080fd5b919050565b600080604083850312156109f457600080fd5b6109fd836109b8565b946020939093013593505050565b600080600060608486031215610a2057600080fd5b610a29846109b8565b9250610a37602085016109b8565b9150604084013590509250925092565b600060208284031215610a5957600080fd5b610a62826109b8565b9392505050565b60008060408385031215610a7c57600080fd5b610a85836109b8565b9150610a93602084016109b8565b90509250929050565b600181811c90821680610ab057607f821691505b602082108103610ae9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122051747faf32653548f7270898744f81ef5d34f34cfbd7f43789ee8de87a4911c764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xA0B JUMP JUMPDEST PUSH2 0x2AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0xA47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x31C JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x32B JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x401 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA69 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9C JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x23B SWAP1 PUSH2 0xA9C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2BA DUP6 DUP3 DUP6 PUSH2 0x5C2 JUMP JUMPDEST PUSH2 0x2C5 DUP6 DUP6 DUP6 PUSH2 0x699 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2A0 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x317 SWAP1 DUP8 SWAP1 PUSH2 0xAEF JUMP JUMPDEST PUSH2 0x40F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9C JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C5 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x40F JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x699 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x554 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x693 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x686 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH2 0x693 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x40F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8D9 SWAP1 DUP5 SWAP1 PUSH2 0xAEF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x93F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x979 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x95D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FD DUP4 PUSH2 0x9B8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA29 DUP5 PUSH2 0x9B8 JUMP JUMPDEST SWAP3 POP PUSH2 0xA37 PUSH1 0x20 DUP6 ADD PUSH2 0x9B8 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA62 DUP3 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA85 DUP4 PUSH2 0x9B8 JUMP JUMPDEST SWAP2 POP PUSH2 0xA93 PUSH1 0x20 DUP5 ADD PUSH2 0x9B8 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAB0 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xAE9 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2A6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD PUSH21 0x7FAF32653548F7270898744F81EF5D34F34CFBD7F4 CALLDATACOPY DUP10 0xEE DUP14 0xE8 PUSH27 0x4911C764736F6C6343000811003300000000000000000000000000 ",
              "sourceMap": "1403:11223:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1251:14:111;;1244:22;1226:41;;1214:2;1199:18;4433:197:6;1086:187:111;3244:106:6;3331:12;;3244:106;;;1424:25:111;;;1412:2;1397:18;3244:106:6;1278:177:111;5192:286:6;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1935:36:111;;1923:2;1908:18;3093:91:6;1793:184:111;5873:236:6;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;3508:18;;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6596:429::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;4091:18;;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149;2156:98;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:14;4570:32:6;719:10:14;4586:7:6;4595:6;4570:8;:32::i;:::-;4619:4;4612:11;;;4433:197;;;;;:::o;5192:286::-;5319:4;719:10:14;5375:38:6;5391:4;719:10:14;5406:6:6;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:6;;5192:286;-1:-1:-1;;;;5192:286:6:o;5873:236::-;719:10:14;5961:4:6;6040:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5961:4;;719:10:14;6015:66:6;;719:10:14;;6040:27:6;;:40;;6070:10;;6040:40;:::i;:::-;6015:8;:66::i;2367:102::-;2423:13;2455:7;2448:14;;;;;:::i;6596:429::-;719:10:14;6689:4:6;6770:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6689:4;;719:10:14;6815:35:6;;;;6807:85;;;;;;;3366:2:111;6807:85:6;;;3348:21:111;3405:2;3385:18;;;3378:30;3444:34;3424:18;;;3417:62;3515:7;3495:18;;;3488:35;3540:19;;6807:85:6;;;;;;;;;6926:60;6935:5;6942:7;6970:15;6951:16;:34;6926:8;:60::i;3729:189::-;3808:4;719:10:14;3862:28:6;719:10:14;3879:2:6;3883:6;3862:9;:28::i;10123:370::-;10254:19;;;10246:68;;;;;;;3772:2:111;10246:68:6;;;3754:21:111;3811:2;3791:18;;;3784:30;3850:34;3830:18;;;3823:62;3921:6;3901:18;;;3894:34;3945:19;;10246:68:6;3570:400:111;10246:68:6;10332:21;;;10324:68;;;;;;;4177:2:111;10324:68:6;;;4159:21:111;4216:2;4196:18;;;4189:30;4255:34;4235:18;;;4228:62;4326:4;4306:18;;;4299:32;4348:19;;10324:68:6;3975:398:111;10324:68:6;10403:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10454:32;;1424:25:111;;;10454:32:6;;1397:18:111;10454:32:6;;;;;;;10123:370;;;:::o;10770:441::-;4091:18;;;;10900:24;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10986:17;10966:37;;10962:243;;11047:6;11027:16;:26;;11019:68;;;;;;;4580:2:111;11019:68:6;;;4562:21:111;4619:2;4599:18;;;4592:30;4658:31;4638:18;;;4631:59;4707:18;;11019:68:6;4378:353:111;11019:68:6;11129:51;11138:5;11145:7;11173:6;11154:16;:25;11129:8;:51::i;:::-;10890:321;10770:441;;;:::o;7488:651::-;7614:18;;;7606:68;;;;;;;4938:2:111;7606:68:6;;;4920:21:111;4977:2;4957:18;;;4950:30;5016:34;4996:18;;;4989:62;5087:7;5067:18;;;5060:35;5112:19;;7606:68:6;4736:401:111;7606:68:6;7692:16;;;7684:64;;;;;;;5344:2:111;7684:64:6;;;5326:21:111;5383:2;5363:18;;;5356:30;5422:34;5402:18;;;5395:62;5493:5;5473:18;;;5466:33;5516:19;;7684:64:6;5142:399:111;7684:64:6;7830:15;;;7808:19;7830:15;;;;;;;;;;;7863:21;;;;7855:72;;;;;;;5748:2:111;7855:72:6;;;5730:21:111;5787:2;5767:18;;;5760:30;5826:34;5806:18;;;5799:62;5897:8;5877:18;;;5870:36;5923:19;;7855:72:6;5546:402:111;7855:72:6;7961:15;;;;:9;:15;;;;;;;;;;;7979:20;;;7961:38;;8019:13;;;;;;;;:23;;7993:6;;7961:9;8019:23;;7993:6;;8019:23;:::i;:::-;;;;;;;;8073:2;8058:26;;8067:4;8058:26;;;8077:6;8058:26;;;;1424:25:111;;1412:2;1397:18;;1278:177;8058:26:6;;;;;;;;8095:37;11795:121;14:607:111;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:196::-;694:20;;754:42;743:54;;733:65;;723:93;;812:1;809;802:12;723:93;626:196;;;:::o;827:254::-;895:6;903;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;995:29;1014:9;995:29;:::i;:::-;985:39;1071:2;1056:18;;;;1043:32;;-1:-1:-1;;;827:254:111:o;1460:328::-;1537:6;1545;1553;1606:2;1594:9;1585:7;1581:23;1577:32;1574:52;;;1622:1;1619;1612:12;1574:52;1645:29;1664:9;1645:29;:::i;:::-;1635:39;;1693:38;1727:2;1716:9;1712:18;1693:38;:::i;:::-;1683:48;;1778:2;1767:9;1763:18;1750:32;1740:42;;1460:328;;;;;:::o;1982:186::-;2041:6;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;1982:186;-1:-1:-1;;;1982:186:111:o;2173:260::-;2241:6;2249;2302:2;2290:9;2281:7;2277:23;2273:32;2270:52;;;2318:1;2315;2308:12;2270:52;2341:29;2360:9;2341:29;:::i;:::-;2331:39;;2389:38;2423:2;2412:9;2408:18;2389:38;:::i;:::-;2379:48;;2173:260;;;;;:::o;2438:437::-;2517:1;2513:12;;;;2560;;;2581:61;;2635:4;2627:6;2623:17;2613:27;;2581:61;2688:2;2680:6;2677:14;2657:18;2654:38;2651:218;;2725:77;2722:1;2715:88;2826:4;2823:1;2816:15;2854:4;2851:1;2844:15;2651:218;;2438:437;;;:::o;2880:279::-;2945:9;;;2966:10;;;2963:190;;;3009:77;3006:1;2999:88;3110:4;3107:1;3100:15;3138:4;3135:1;3128:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "582200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24603",
                "balanceOf(address)": "2561",
                "decimals()": "244",
                "decreaseAllowance(address,uint256)": "26862",
                "increaseAllowance(address,uint256)": "infinite",
                "name()": "infinite",
                "symbol()": "infinite",
                "totalSupply()": "2304",
                "transfer(address,uint256)": "infinite",
                "transferFrom(address,address,uint256)": "infinite"
              },
              "internal": {
                "_afterTokenTransfer(address,address,uint256)": "infinite",
                "_approve(address,address,uint256)": "infinite",
                "_beforeTokenTransfer(address,address,uint256)": "infinite",
                "_burn(address,uint256)": "infinite",
                "_mint(address,uint256)": "infinite",
                "_spendAllowance(address,address,uint256)": "infinite",
                "_transfer(address,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping(address => uint256) private _balances;\\n\\n    mapping(address => mapping(address => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * The default value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n     * overridden;\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) public virtual override returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, amount);\\n        _transfer(from, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, _allowances[owner][spender] + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        uint256 currentAllowance = _allowances[owner][spender];\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        unchecked {\\n            _approve(owner, spender, currentAllowance - subtractedValue);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves `amount` of tokens from `sender` to `recipient`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {\\n        require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, amount);\\n\\n        uint256 fromBalance = _balances[from];\\n        require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        unchecked {\\n            _balances[from] = fromBalance - amount;\\n        }\\n        _balances[to] += amount;\\n\\n        emit Transfer(from, to, amount);\\n\\n        _afterTokenTransfer(from, to, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n\\n        _afterTokenTransfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        unchecked {\\n            _balances[account] = accountBalance - amount;\\n        }\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n\\n        _afterTokenTransfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     */\\n    function _approve(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Spend `amount` form the allowance of `owner` toward `spender`.\\n     *\\n     * Does not update the allowance amount in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Might emit an {Approval} event.\\n     */\\n    function _spendAllowance(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * has been transferred to `to`.\\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0xdadd41acb749920eccf40aeaa8d291adf9751399a7343561bad13e7a8d99be0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 836,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_balances",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 842,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_allowances",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 844,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 846,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_name",
                "offset": 0,
                "slot": "3",
                "type": "t_string_storage"
              },
              {
                "astId": 848,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_symbol",
                "offset": 0,
                "slot": "4",
                "type": "t_string_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface of the ERC20 standard as defined in the EIP.",
            "events": {
              "Approval(address,address,uint256)": {
                "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
              },
              "Transfer(address,address,uint256)": {
                "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
              }
            },
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
              },
              "approve(address,uint256)": {
                "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the amount of tokens owned by `account`."
              },
              "totalSupply()": {
                "details": "Returns the amount of tokens in existence."
              },
              "transfer(address,uint256)": {
                "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "IERC20Metadata": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._",
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
              },
              "approve(address,uint256)": {
                "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the amount of tokens owned by `account`."
              },
              "decimals()": {
                "details": "Returns the decimals places of the token."
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "symbol()": {
                "details": "Returns the symbol of the token."
              },
              "totalSupply()": {
                "details": "Returns the amount of tokens in existence."
              },
              "transfer(address,uint256)": {
                "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC721/ERC721.sol": {
        "ERC721": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name_",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol_",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "constructor": {
                "details": "Initializes the contract by setting a `name` and a `symbol` to the token collection."
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "tokenURI(uint256)": {
                "details": "See {IERC721Metadata-tokenURI}."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_1574": {
                  "entryPoint": null,
                  "id": 1574,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_string_fromMemory": {
                  "entryPoint": 112,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": {
                  "entryPoint": 287,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_string_storage": {
                  "entryPoint": 453,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
                  "entryPoint": 536,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 393,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 90,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4144:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "70:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "75:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "66:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "66:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "106:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "96:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "127:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "130:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "120:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "210:776:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "259:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "268:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "271:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "261:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "261:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "261:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "238:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "246:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "234:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "234:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "253:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "230:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "230:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "223:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "223:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "220:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "284:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "300:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "294:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "294:13:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "288:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "316:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "334:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "338:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "330:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "330:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "342:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "326:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "326:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "320:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "367:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "369:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "369:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "369:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "363:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "356:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "356:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "353:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "398:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "412:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "408:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "408:7:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "402:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "424:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "444:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "438:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "438:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "428:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "456:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "478:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "502:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "506:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "498:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "498:13:111"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "513:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "494:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "494:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "518:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "490:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "490:31:111"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "523:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "486:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "486:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "474:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "474:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "460:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "586:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "588:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "588:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "588:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "545:10:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "542:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "542:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "565:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "577:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "562:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "562:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "539:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "539:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "536:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "624:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "628:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "617:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "617:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "617:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "655:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "663:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "648:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "648:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "648:18:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "675:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "685:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "679:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "735:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "744:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "747:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "737:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "737:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "737:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "712:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "720:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "708:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "708:15:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "725:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "704:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "704:24:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "730:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "701:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "701:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "698:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "760:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "769:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "764:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "825:87:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "854:6:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "862:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "850:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "850:14:111"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "866:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "846:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "846:23:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "885:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "893:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "881:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "881:14:111"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "897:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "877:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "877:23:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "871:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "871:30:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "839:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "839:63:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "839:63:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "790:1:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "793:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "787:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "787:9:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "797:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "799:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "808:1:111"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "811:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "804:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "804:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "799:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "783:3:111",
                                "statements": []
                              },
                              "src": "779:133:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "936:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "944:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "932:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "932:15:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "949:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "928:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "928:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "954:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "921:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "921:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "965:15:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "974:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "965:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "184:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "192:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "200:5:111",
                            "type": ""
                          }
                        ],
                        "src": "146:840:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1109:444:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1155:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1164:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1167:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1157:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1157:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1157:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1130:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1139:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1126:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1126:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1151:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1122:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1122:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1119:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1180:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1200:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1194:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1194:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1184:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1219:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1237:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1241:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1233:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1233:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1245:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1229:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1229:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1223:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1274:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1283:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1286:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1276:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1276:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1276:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1262:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1270:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1259:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1259:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1256:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1299:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1342:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1353:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1338:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1338:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1362:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1309:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1309:61:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1299:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1379:41:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1405:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1416:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1401:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1401:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1395:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1395:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1383:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1449:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1458:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1461:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1451:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1451:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1451:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1435:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1445:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1432:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1432:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1429:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1474:73:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1517:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1528:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1513:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1513:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1539:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1484:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1484:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1474:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1067:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1078:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1090:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1098:6:111",
                            "type": ""
                          }
                        ],
                        "src": "991:562:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1613:325:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1623:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1637:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1640:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1633:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1633:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1623:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1654:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1684:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1690:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "1680:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1680:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "1658:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1731:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1733:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "1747:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1755:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "1743:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1743:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1733:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1711:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1704:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1704:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1701:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1821:111:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1842:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1849:3:111",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1854:10:111",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1845:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1845:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1835:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1835:31:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1835:31:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1886:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1889:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1879:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1879:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1879:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1914:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1917:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1907:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1907:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1907:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1777:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1800:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1808:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1797:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1797:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1774:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1774:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1771:161:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1593:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1602:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1558:380:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1999:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2016:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2019:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2009:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2009:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2009:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2032:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2050:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2053:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "2040:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2040:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "2032:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "1982:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1990:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1943:121:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2150:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2183:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2197:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2207:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "2201:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2228:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "2232:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2221:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2221:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2221:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2251:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2273:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2277:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "2263:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2263:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "2255:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2295:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "2318:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2328:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2335:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2347:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2331:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2331:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2324:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2324:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2314:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2314:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "2299:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2389:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2391:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "2406:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "2391:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "2371:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2383:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2368:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2368:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2365:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2425:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "2439:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2449:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2456:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2461:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2452:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2452:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2445:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2445:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2435:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2435:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "2429:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2479:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "2492:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "2483:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2577:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "2586:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2593:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "2579:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2579:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2579:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "2527:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2534:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2524:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2524:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "2538:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2540:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "2553:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2560:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2549:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2549:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "2540:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "2520:3:111",
                                      "statements": []
                                    },
                                    "src": "2516:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "2166:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2171:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2163:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2163:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2160:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2122:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "2129:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "2134:10:111",
                            "type": ""
                          }
                        ],
                        "src": "2069:545:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2704:81:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2714:65:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "2729:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2747:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2750:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2743:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2743:11:111"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2760:1:111",
                                                    "type": "",
                                                    "value": "0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "not",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2756:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2756:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "2739:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2739:24:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "2735:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2735:29:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2725:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2725:40:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2771:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "2774:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2767:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2767:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2722:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2722:57:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "2714:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2681:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "2687:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "2695:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2619:166:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2886:1256:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2896:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "2916:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2910:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2910:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "2900:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2963:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2965:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2965:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2935:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2951:2:111",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2955:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "2947:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2947:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2959:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2943:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2943:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2932:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2932:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2929:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "3038:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "3076:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3070:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3070:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "3044:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3044:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3084:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "2994:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2994:97:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2994:97:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3100:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3117:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "3104:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3127:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3146:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3131:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3159:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "3172:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "3159:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "3229:656:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3243:35:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "3262:6:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3274:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "3270:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3270:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "3258:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3258:20:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "3247:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3291:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3335:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "3305:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3305:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "3295:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3353:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3362:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "3357:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3440:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3465:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3483:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3488:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3479:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3479:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3473:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3473:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3458:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3458:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "3458:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3517:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3531:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3539:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3527:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3527:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3517:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3558:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3575:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3586:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3571:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3571:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3558:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "3387:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "3390:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3384:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3384:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "3399:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3401:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3410:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3413:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3406:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3406:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3401:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "3380:3:111",
                                          "statements": []
                                        },
                                        "src": "3376:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3660:166:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "3678:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3705:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3710:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3701:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3701:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3695:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3695:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "3682:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3745:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3757:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3784:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3787:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "3780:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3780:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3796:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3776:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3776:24:111"
                                                              },
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3806:1:111",
                                                                    "type": "",
                                                                    "value": "0"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "not",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3802:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3802:6:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3772:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3772:37:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3768:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3768:42:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3753:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3753:58:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3738:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3738:74:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "3738:74:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "3631:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "3640:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3628:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3628:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "3625:201:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3846:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "3860:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3863:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3856:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3856:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3872:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3852:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3852:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3839:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3839:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "3839:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "3222:663:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3227:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "3902:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3916:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3929:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "3920:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3965:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3983:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4002:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4007:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3998:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3998:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3992:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3992:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3983:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "3946:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "3943:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "4052:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4111:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4118:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "4058:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4058:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4045:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4045:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "4045:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "3894:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3202:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3210:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3199:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3199:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "3192:944:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "2871:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "2877:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2790:1352:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        mstore(add(add(memPtr, _1), _4), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162001ad038038062001ad083398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117dc80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046112b2565b610252565b60405190151581526020015b60405180910390f35b610114610337565b604051610103919061133d565b61013461012f366004611350565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c610167366004611392565b61048e565b005b61016c61017c3660046113bc565b610611565b61016c61018f3660046113bc565b610698565b6101346101a2366004611350565b6106b3565b6101ba6101b53660046113f8565b61074b565b604051908152602001610103565b6101146107ff565b61016c6101de366004611413565b61080e565b61016c6101f136600461147e565b61081d565b610114610204366004611350565b6108ab565b6100f7610217366004611578565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610346906115ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906115ab565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166104655760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610499826106b3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361053c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161045c565b3373ffffffffffffffffffffffffffffffffffffffff82161480610590575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b6106025760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161045c565b61060c83836109ae565b505050565b61061b3382610a4e565b61068d5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161045c565b61060c838383610ba4565b61060c8383836040518060200160405280600081525061081d565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806103315760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161045c565b600073ffffffffffffffffffffffffffffffffffffffff82166107d65760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161045c565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610346906115ab565b610819338383610dd7565b5050565b6108273383610a4e565b6108995760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161045c565b6108a584848484610eea565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109455760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161045c565b600061095c60408051602081019091526000815290565b9050600081511161097c57604051806020016040528060008152506109a7565b8061098684610f73565b6040516020016109979291906115fe565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610a08826106b3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ae55760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161045c565b6000610af0836106b3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b5f57508373ffffffffffffffffffffffffffffffffffffffff16610b47846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b9c575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610bc4826106b3565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161045c565b73ffffffffffffffffffffffffffffffffffffffff8216610cd55760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161045c565b610ce06000826109ae565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610d1690849061165c565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610d5190849061166f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e525760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161045c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610ef5848484610ba4565b610f01848484846110a8565b6108a55760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161045c565b606081600003610fb657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610fe05780610fca81611682565b9150610fd99050600a836116e9565b9150610fba565b60008167ffffffffffffffff811115610ffb57610ffb61144f565b6040519080825280601f01601f191660200182016040528015611025576020820181803683370190505b5090505b8415610b9c5761103a60018361165c565b9150611047600a866116fd565b61105290603061166f565b60f81b81838151811061106757611067611711565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506110a1600a866116e9565b9450611029565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611276576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061111f903390899088908890600401611740565b6020604051808303816000875af1925050508015611178575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261117591810190611789565b60015b61122b573d8080156111a6576040519150601f19603f3d011682016040523d82523d6000602084013e6111ab565b606091505b5080516000036112235760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161045c565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610b9c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112af57600080fd5b50565b6000602082840312156112c457600080fd5b81356109a781611281565b60005b838110156112ea5781810151838201526020016112d2565b50506000910152565b6000815180845261130b8160208601602086016112cf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109a760208301846112f3565b60006020828403121561136257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461138d57600080fd5b919050565b600080604083850312156113a557600080fd5b6113ae83611369565b946020939093013593505050565b6000806000606084860312156113d157600080fd5b6113da84611369565b92506113e860208501611369565b9150604084013590509250925092565b60006020828403121561140a57600080fd5b6109a782611369565b6000806040838503121561142657600080fd5b61142f83611369565b91506020830135801515811461144457600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561149457600080fd5b61149d85611369565b93506114ab60208601611369565b925060408501359150606085013567ffffffffffffffff808211156114cf57600080fd5b818701915087601f8301126114e357600080fd5b8135818111156114f5576114f561144f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561153b5761153b61144f565b816040528281528a602084870101111561155457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561158b57600080fd5b61159483611369565b91506115a260208401611369565b90509250929050565b600181811c908216806115bf57607f821691505b6020821081036115f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600083516116108184602088016112cf565b8351908301906116248183602088016112cf565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156103315761033161162d565b808201808211156103315761033161162d565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036116b3576116b361162d565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826116f8576116f86116ba565b500490565b60008261170c5761170c6116ba565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261177f60808301846112f3565b9695505050505050565b60006020828403121561179b57600080fd5b81516109a78161128156fea26469706673582212204746880ba9b0b1473e3aba1883a18f95d3955564954e58aad81edbe318460c1164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1AD0 CODESIZE SUB DUP1 PUSH3 0x1AD0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x17DC DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x12B2 JUMP JUMPDEST PUSH2 0x252 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0x133D JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x1350 JUMP JUMPDEST PUSH2 0x3C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x167 CALLDATASIZE PUSH1 0x4 PUSH2 0x1392 JUMP JUMPDEST PUSH2 0x48E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16C PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0x13BC JUMP JUMPDEST PUSH2 0x611 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0x13BC JUMP JUMPDEST PUSH2 0x698 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1350 JUMP JUMPDEST PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x1BA PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x13F8 JUMP JUMPDEST PUSH2 0x74B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x16C PUSH2 0x1DE CALLDATASIZE PUSH1 0x4 PUSH2 0x1413 JUMP JUMPDEST PUSH2 0x80E JUMP JUMPDEST PUSH2 0x16C PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x147E JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST PUSH2 0x114 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x1350 JUMP JUMPDEST PUSH2 0x8AB JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x1578 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2E5 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x331 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x346 SWAP1 PUSH2 0x15AB JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x372 SWAP1 PUSH2 0x15AB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x394 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x465 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 DUP3 PUSH2 0x6B3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x53C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ DUP1 PUSH2 0x590 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x602 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH2 0x60C DUP4 DUP4 PUSH2 0x9AE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x61B CALLER DUP3 PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x68D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH2 0x60C DUP4 DUP4 DUP4 PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0x60C DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x81D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x331 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F776E657220717565727920666F72206E6F6E6578697374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E7420746F6B656E0000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2062616C616E636520717565727920666F7220746865207A65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726F206164647265737300000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x346 SWAP1 PUSH2 0x15AB JUMP JUMPDEST PUSH2 0x819 CALLER DUP4 DUP4 PUSH2 0xDD7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x827 CALLER DUP4 PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x899 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH2 0x8A5 DUP5 DUP5 DUP5 DUP5 PUSH2 0xEEA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x945 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6578697374656E7420746F6B656E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95C PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x97C JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9A7 JUMP JUMPDEST DUP1 PUSH2 0x986 DUP5 PUSH2 0xF73 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x997 SWAP3 SWAP2 SWAP1 PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xA08 DUP3 PUSH2 0x6B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAE5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F70657261746F7220717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF0 DUP4 PUSH2 0x6B3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xB5F JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB47 DUP5 PUSH2 0x3C9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0xB9C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBC4 DUP3 PUSH2 0x6B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xCD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH2 0xCE0 PUSH1 0x0 DUP3 PUSH2 0x9AE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xD16 SWAP1 DUP5 SWAP1 PUSH2 0x165C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xD51 SWAP1 DUP5 SWAP1 PUSH2 0x166F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x45C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xEF5 DUP5 DUP5 DUP5 PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0xF01 DUP5 DUP5 DUP5 DUP5 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x8A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0xFB6 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xFE0 JUMPI DUP1 PUSH2 0xFCA DUP2 PUSH2 0x1682 JUMP JUMPDEST SWAP2 POP PUSH2 0xFD9 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x16E9 JUMP JUMPDEST SWAP2 POP PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFFB JUMPI PUSH2 0xFFB PUSH2 0x144F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1025 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0xB9C JUMPI PUSH2 0x103A PUSH1 0x1 DUP4 PUSH2 0x165C JUMP JUMPDEST SWAP2 POP PUSH2 0x1047 PUSH1 0xA DUP7 PUSH2 0x16FD JUMP JUMPDEST PUSH2 0x1052 SWAP1 PUSH1 0x30 PUSH2 0x166F JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1067 JUMPI PUSH2 0x1067 PUSH2 0x1711 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x10A1 PUSH1 0xA DUP7 PUSH2 0x16E9 JUMP JUMPDEST SWAP5 POP PUSH2 0x1029 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1276 JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x111F SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1740 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1178 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1175 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1789 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x122B JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x11AB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1223 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0xB9C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x12AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A7 DUP2 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12D2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x130B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x9A7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x12F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13AE DUP4 PUSH2 0x1369 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x13D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13DA DUP5 PUSH2 0x1369 JUMP JUMPDEST SWAP3 POP PUSH2 0x13E8 PUSH1 0x20 DUP6 ADD PUSH2 0x1369 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x140A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9A7 DUP3 PUSH2 0x1369 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x142F DUP4 PUSH2 0x1369 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x149D DUP6 PUSH2 0x1369 JUMP JUMPDEST SWAP4 POP PUSH2 0x14AB PUSH1 0x20 DUP7 ADD PUSH2 0x1369 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x14CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x14E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x14F5 JUMPI PUSH2 0x14F5 PUSH2 0x144F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x153B JUMPI PUSH2 0x153B PUSH2 0x144F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x158B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1594 DUP4 PUSH2 0x1369 JUMP JUMPDEST SWAP2 POP PUSH2 0x15A2 PUSH1 0x20 DUP5 ADD PUSH2 0x1369 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x15BF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x15F8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1610 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x12CF JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1624 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x12CF JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x331 JUMPI PUSH2 0x331 PUSH2 0x162D JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x331 JUMPI PUSH2 0x331 PUSH2 0x162D JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x16B3 JUMPI PUSH2 0x16B3 PUSH2 0x162D JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x16F8 JUMPI PUSH2 0x16F8 PUSH2 0x16BA JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x170C JUMPI PUSH2 0x170C PUSH2 0x16BA JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x177F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x12F3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x9A7 DUP2 PUSH2 0x1281 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE CHAINID DUP9 SIGNEXTEND 0xA9 0xB0 0xB1 SELFBALANCE RETURNDATACOPY GASPRICE 0xBA XOR DUP4 LOG1 DUP16 SWAP6 0xD3 SWAP6 SSTORE PUSH5 0x954E58AAD8 0x1E 0xDB 0xE3 XOR CHAINID 0xC GT PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "628:13657:9:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:9;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:13657;;14:127:111;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:111;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:111;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:111:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:111;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:111;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:111;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:111;;;3992:26;3943:89;-1:-1:-1;;2747:1:111;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:111;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:111;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:111;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:111:o;:::-;628:13657:9;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_afterTokenTransfer_2376": {
                  "entryPoint": null,
                  "id": 2376,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_2260": {
                  "entryPoint": 2478,
                  "id": 2260,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_baseURI_1728": {
                  "entryPoint": null,
                  "id": 1728,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_beforeTokenTransfer_2365": {
                  "entryPoint": null,
                  "id": 2365,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_2354": {
                  "entryPoint": 4264,
                  "id": 2354,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_exists_1950": {
                  "entryPoint": null,
                  "id": 1950,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_isApprovedOrOwner_1991": {
                  "entryPoint": 2638,
                  "id": 1991,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_safeTransfer_1932": {
                  "entryPoint": 3818,
                  "id": 1932,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_2292": {
                  "entryPoint": 3543,
                  "id": 2292,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_transfer_2236": {
                  "entryPoint": 2980,
                  "id": 2236,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1771": {
                  "entryPoint": 1166,
                  "id": 1771,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@balanceOf_1629": {
                  "entryPoint": 1867,
                  "id": 1629,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getApproved_1792": {
                  "entryPoint": 969,
                  "id": 1792,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isApprovedForAll_1827": {
                  "entryPoint": null,
                  "id": 1827,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_2556": {
                  "entryPoint": null,
                  "id": 2556,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1667": {
                  "entryPoint": 823,
                  "id": 1667,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_1657": {
                  "entryPoint": 1715,
                  "id": 1657,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@safeTransferFrom_1873": {
                  "entryPoint": 1688,
                  "id": 1873,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1903": {
                  "entryPoint": 2077,
                  "id": 1903,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1809": {
                  "entryPoint": 2062,
                  "id": 1809,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_1605": {
                  "entryPoint": 594,
                  "id": 1605,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_3081": {
                  "entryPoint": null,
                  "id": 3081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1677": {
                  "entryPoint": 2047,
                  "id": 1677,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_2940": {
                  "entryPoint": 3955,
                  "id": 2940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenURI_1719": {
                  "entryPoint": 2219,
                  "id": 1719,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferFrom_1854": {
                  "entryPoint": 1553,
                  "id": 1854,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 4969,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 5112,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 5496,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 5052,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 5246,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 5139,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 5010,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 4786,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 6025,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 4944,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 4851,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 5630,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5952,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4925,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 5743,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 5865,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 5724,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 4815,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 5547,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 5762,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 5885,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 5677,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 5818,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 5905,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 5199,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 4737,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:12918:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:133:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "99:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "68:117:111"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "265:176:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "311:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "320:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "323:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "313:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "313:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "313:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "286:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "295:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "282:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "282:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "307:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "278:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "278:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "275:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "336:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "362:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "349:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "349:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "340:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "405:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "381:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "381:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "381:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "420:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "430:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "231:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "242:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "254:6:111",
                            "type": ""
                          }
                        ],
                        "src": "196:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "541:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "551:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "563:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "574:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "559:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "559:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "551:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "618:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "611:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "611:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "604:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "604:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "586:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "586:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "586:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "510:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "521:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "532:4:111",
                            "type": ""
                          }
                        ],
                        "src": "446:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "704:184:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "714:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "723:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "718:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "783:63:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "808:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "813:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "804:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "804:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "827:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "832:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "823:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "823:11:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "817:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "817:18:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "797:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "797:39:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "797:39:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "744:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "747:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "741:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "741:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "755:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "757:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "766:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "769:2:111",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "762:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "762:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "757:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "737:3:111",
                                "statements": []
                              },
                              "src": "733:113:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "866:3:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "871:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "862:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "862:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "880:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "855:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "855:27:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "855:27:111"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "682:3:111",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "687:3:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "692:6:111",
                            "type": ""
                          }
                        ],
                        "src": "638:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "943:280:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "953:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "973:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "967:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "967:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "957:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "995:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1000:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "988:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "988:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "988:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1055:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1062:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1051:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1051:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1073:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1078:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1069:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1069:14:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1085:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "1016:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1016:76:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1016:76:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1101:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1129:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1137:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1125:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1125:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1142:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1121:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1121:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1112:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1112:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1212:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1108:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1108:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1101:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "920:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "927:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "935:3:111",
                            "type": ""
                          }
                        ],
                        "src": "893:330:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1349:99:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1366:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1377:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1359:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1359:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1359:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1389:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1415:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1427:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1438:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1423:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1423:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1397:45:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1318:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1329:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1340:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1228:220:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1523:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1569:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1578:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1581:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1571:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1571:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1571:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1544:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1553:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1540:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1540:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1565:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1536:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1536:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1533:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1594:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1617:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1604:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1604:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1594:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1489:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1500:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1512:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1453:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1739:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1749:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1761:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1772:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1757:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1757:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1749:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1791:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1806:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1814:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1802:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1802:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1784:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1784:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1784:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1708:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1719:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1730:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1638:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1918:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1928:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1950:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1937:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1937:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1928:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2043:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2052:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2055:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2045:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2045:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2045:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1979:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1990:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1997:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1986:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1986:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1976:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1976:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1969:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1969:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1966:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1897:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1908:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1869:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2157:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2203:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2212:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2215:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2205:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2205:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2205:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2178:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2187:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2174:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2174:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2199:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2170:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2170:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2167:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2228:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2257:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2238:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2238:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2228:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2276:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2303:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2314:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2299:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2299:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2286:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2286:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2276:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2115:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2126:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2138:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2146:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2070:254:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2433:224:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2479:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2488:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2491:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2481:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2481:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2481:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2454:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2463:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2450:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2450:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2475:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2446:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2446:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2443:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2504:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2533:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2514:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2514:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2504:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2552:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2585:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2596:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2581:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2581:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2562:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2562:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2552:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2609:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2636:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2647:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2632:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2632:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2619:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2619:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2609:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2383:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2394:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2406:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2414:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2422:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2329:328:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2732:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2778:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2787:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2790:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2780:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2780:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2780:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2753:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2762:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2749:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2749:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2774:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2745:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2745:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2742:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2803:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2832:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2813:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2813:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2803:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2698:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2709:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2721:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2662:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2954:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2964:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2976:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2987:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2972:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2972:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2964:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3006:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3017:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2999:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2999:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2999:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2923:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2934:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2945:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2853:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3119:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3165:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3174:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3177:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3167:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3167:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3167:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3140:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3149:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3136:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3136:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3161:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3132:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3132:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3129:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3190:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3219:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3200:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3200:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3190:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3238:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3268:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3279:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3264:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3264:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3251:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3251:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3242:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3336:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3345:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3348:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3338:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3338:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3338:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3305:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3326:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "3319:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3319:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3312:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3312:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3302:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3302:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3295:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3295:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3292:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3361:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3371:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3361:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3077:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3088:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3100:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3108:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3035:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3419:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3436:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3439:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3429:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3429:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3429:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3533:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3536:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3526:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3526:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3526:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3557:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3560:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3550:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3550:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3550:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3387:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3706:1067:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3753:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3762:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3765:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3755:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3755:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3755:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3727:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3736:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3723:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3723:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3748:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3719:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3719:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3716:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3778:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3807:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3788:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3788:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3778:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3826:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3859:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3870:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3855:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3855:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3836:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3836:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3826:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3883:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3910:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3921:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3906:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3906:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3893:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3893:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3883:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3934:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3965:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3976:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3961:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3961:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3948:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3948:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3938:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3989:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3999:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3993:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4044:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4053:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4056:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4046:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4046:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4046:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4032:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4040:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4029:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4029:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4026:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4069:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4083:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4094:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4079:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4079:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4073:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4149:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4158:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4161:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4151:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4151:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4151:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4128:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4132:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4124:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4124:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4139:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4120:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4120:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4113:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4113:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4110:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4174:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4197:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4184:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4184:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "4178:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4223:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4225:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4225:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4225:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4215:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4219:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4212:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4212:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4209:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4254:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4264:66:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "4258:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4339:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4359:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4353:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4353:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4343:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4371:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4393:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4417:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4421:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4413:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4413:13:111"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "4428:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "4409:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4409:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4433:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4405:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4405:31:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4438:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4401:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4401:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4389:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4389:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4375:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4501:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4503:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4503:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4503:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4460:10:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4472:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4457:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4457:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4480:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4492:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4477:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4477:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "4454:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4454:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4451:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4539:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4543:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4532:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4532:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4532:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4570:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4578:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4563:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4563:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4563:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4627:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4636:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4639:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4629:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4629:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4629:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4604:2:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4608:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4600:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4600:11:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4613:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4596:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4596:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4618:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4593:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4593:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4590:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4669:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4677:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4665:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4665:15:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4686:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4690:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4682:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4682:11:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4695:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4652:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4652:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4652:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4722:6:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4730:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4718:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4718:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4735:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4714:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4714:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4740:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4707:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4707:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4707:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4751:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "4761:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4751:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3648:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3659:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3671:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3679:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3687:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3695:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3576:1197:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4865:173:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4911:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4920:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4923:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4913:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4913:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4913:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4886:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4895:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4882:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4882:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4907:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4878:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4878:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4875:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4936:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4965:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4946:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4946:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4936:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4984:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5017:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5028:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5013:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5013:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4994:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4984:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4823:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4834:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4846:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4854:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4778:260:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5098:382:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5108:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5122:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "5125:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5118:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5118:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "5108:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5139:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "5169:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5175:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5165:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5165:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "5143:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5216:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5218:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "5232:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5240:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "5228:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5228:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "5218:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "5196:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5186:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5306:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5327:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5330:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5320:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5320:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5320:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5428:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5431:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5421:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5421:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5421:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5456:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5459:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5449:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5449:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5449:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "5262:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "5285:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5293:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5282:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5282:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "5259:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5259:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5256:218:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "5078:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "5087:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5043:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5659:234:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5676:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5687:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5669:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5669:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5669:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5710:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5721:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5706:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5706:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5726:2:111",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5699:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5699:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5699:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5749:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5760:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5745:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5745:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5765:34:111",
                                    "type": "",
                                    "value": "ERC721: approved query for nonex"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5738:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5738:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5738:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5820:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5831:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5816:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5816:18:111"
                                  },
                                  {
                                    "hexValue": "697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5836:14:111",
                                    "type": "",
                                    "value": "istent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5809:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5809:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5809:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5860:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5872:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5883:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5868:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5868:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5860:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5636:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5650:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5485:408:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6072:223:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6089:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6100:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6082:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6082:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6082:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6123:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6134:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6119:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6119:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6139:2:111",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6112:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6112:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6112:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6162:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6173:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6158:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6158:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6178:34:111",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6151:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6151:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6151:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6233:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6244:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6229:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6229:18:111"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6249:3:111",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6222:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6222:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6222:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6262:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6274:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6285:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6270:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6262:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6049:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6063:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5898:397:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6474:246:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6491:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6484:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6484:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6484:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6525:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6536:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6521:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6521:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6541:2:111",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6514:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6514:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6514:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6564:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6575:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6560:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6560:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6580:34:111",
                                    "type": "",
                                    "value": "ERC721: approve caller is not ow"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6553:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6553:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6553:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6635:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6646:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6631:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6631:18:111"
                                  },
                                  {
                                    "hexValue": "6e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6651:26:111",
                                    "type": "",
                                    "value": "ner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6624:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6624:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6624:54:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6687:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6699:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6710:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6695:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6695:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6687:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6451:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6465:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6300:420:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6899:239:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6916:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6927:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6909:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6909:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6909:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6950:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6961:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6946:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6946:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6966:2:111",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6939:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6939:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6939:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6989:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7000:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6985:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6985:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7005:34:111",
                                    "type": "",
                                    "value": "ERC721: transfer caller is not o"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6978:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6978:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6978:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7060:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7071:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7056:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7056:18:111"
                                  },
                                  {
                                    "hexValue": "776e6572206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7076:19:111",
                                    "type": "",
                                    "value": "wner nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7049:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7049:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7049:47:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7105:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7117:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7128:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7113:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7113:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7105:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6876:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6890:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6725:413:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7317:231:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7334:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7345:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7327:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7327:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7327:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7368:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7379:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7364:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7364:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7384:2:111",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7357:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7357:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7357:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7407:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7418:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7403:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7403:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7423:34:111",
                                    "type": "",
                                    "value": "ERC721: owner query for nonexist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7396:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7396:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7396:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7478:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7489:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7474:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7474:18:111"
                                  },
                                  {
                                    "hexValue": "656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7494:11:111",
                                    "type": "",
                                    "value": "ent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7467:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7467:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7467:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7515:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7527:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7538:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7523:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7523:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7515:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7294:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7308:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7143:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7727:232:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7744:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7755:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7737:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7737:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7737:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7778:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7789:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7774:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7774:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7794:2:111",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7767:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7767:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7767:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7817:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7828:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7813:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7813:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7833:34:111",
                                    "type": "",
                                    "value": "ERC721: balance query for the ze"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7806:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7806:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7806:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7888:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7899:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7884:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7884:18:111"
                                  },
                                  {
                                    "hexValue": "726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7904:12:111",
                                    "type": "",
                                    "value": "ro address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7877:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7877:40:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7877:40:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7926:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7938:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7949:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7934:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7934:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7926:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7704:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7718:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7553:406:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8138:237:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8155:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8166:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8148:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8148:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8148:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8189:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8200:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8185:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8185:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8205:2:111",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8178:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8178:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8178:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8228:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8239:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8224:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8224:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8244:34:111",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8217:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8217:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8217:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8299:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8310:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8295:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8295:18:111"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8315:17:111",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8288:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8288:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8288:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8342:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8354:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8365:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8350:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8350:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8342:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8115:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8129:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7964:411:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8567:309:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8577:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8597:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8591:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8591:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "8581:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8652:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8660:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8648:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8648:17:111"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8667:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8672:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "8613:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8613:66:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8613:66:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8688:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8705:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8710:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8701:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8701:16:111"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8692:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8726:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8748:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8742:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8742:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8730:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8803:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8811:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8799:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8799:17:111"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8818:5:111"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8825:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "8764:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8764:70:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8764:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8843:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8854:5:111"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8861:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8850:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8850:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "8843:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "8535:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8540:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8548:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8559:3:111",
                            "type": ""
                          }
                        ],
                        "src": "8380:496:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9055:234:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9072:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9083:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9065:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9065:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9065:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9106:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9117:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9102:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9102:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9122:2:111",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9095:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9095:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9095:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9145:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9156:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9141:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9141:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9161:34:111",
                                    "type": "",
                                    "value": "ERC721: operator query for nonex"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9134:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9134:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9134:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9216:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9227:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9212:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9212:18:111"
                                  },
                                  {
                                    "hexValue": "697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9232:14:111",
                                    "type": "",
                                    "value": "istent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9205:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9205:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9205:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9256:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9268:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9279:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9264:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9264:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9256:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9032:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9046:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8881:408:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9468:227:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9485:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9496:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9478:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9478:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9478:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9519:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9530:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9515:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9515:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9535:2:111",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9508:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9508:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9508:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9558:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9569:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9554:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9554:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9574:34:111",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9547:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9547:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9547:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9629:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9640:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9625:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9625:18:111"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9645:7:111",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9618:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9618:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9618:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9662:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9674:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9685:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9670:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9670:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9662:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9445:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9459:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9294:401:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9874:226:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9891:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9902:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9884:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9884:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9884:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9925:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9936:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9921:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9921:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9941:2:111",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9914:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9914:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9914:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9964:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9975:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9960:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9960:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9980:34:111",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9953:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9953:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9953:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10035:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10046:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10031:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10031:18:111"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10051:6:111",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10024:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10024:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10024:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10067:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10079:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10090:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10075:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10075:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10067:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9851:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9865:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9700:400:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10137:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10154:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10157:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10147:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10147:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10147:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10251:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10254:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10244:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10244:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10244:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10275:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10278:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "10268:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10268:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10268:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "10105:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10343:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10353:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "10365:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "10368:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "10361:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10361:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "10353:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10394:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "10396:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10396:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10396:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "10385:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "10391:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10382:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10382:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10379:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "10325:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "10328:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "10334:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10294:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10475:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10485:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "10496:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "10499:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10492:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10492:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "10485:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10524:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "10526:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10526:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10526:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "10516:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "10519:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10513:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10513:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10510:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "10458:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "10461:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "10467:3:111",
                            "type": ""
                          }
                        ],
                        "src": "10427:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10731:175:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10748:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10759:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10741:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10741:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10741:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10782:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10793:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10778:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10778:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10798:2:111",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10771:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10771:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10771:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10821:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10832:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10817:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10817:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10837:27:111",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10810:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10810:55:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10810:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10874:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10886:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10897:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10882:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10882:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10874:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10708:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10722:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10557:349:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11085:240:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11102:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11113:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11095:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11095:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11095:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11136:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11147:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11132:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11132:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11152:2:111",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11125:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11125:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11125:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11175:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11186:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11171:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11171:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11191:34:111",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11164:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11164:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11164:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11246:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11257:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11242:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11242:18:111"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11262:20:111",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11235:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11235:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11235:48:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11292:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11304:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11315:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11300:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11300:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11292:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11062:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11076:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10911:414:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11377:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11468:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "11470:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11470:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11470:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11393:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11400:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "11390:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11390:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11387:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11499:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11510:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11517:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11506:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11506:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "11499:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11359:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "11369:3:111",
                            "type": ""
                          }
                        ],
                        "src": "11330:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11562:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11579:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11582:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11572:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11572:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11572:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11676:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11679:4:111",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11669:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11669:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11669:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11700:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11703:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11693:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11693:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11693:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11530:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11765:74:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11788:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "11790:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11790:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11790:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11785:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11778:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11778:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11775:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11819:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11828:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11831:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "11824:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11824:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "11819:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "11750:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "11753:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "11759:1:111",
                            "type": ""
                          }
                        ],
                        "src": "11719:120:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11882:74:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11905:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "11907:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11907:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11907:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11902:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11895:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11895:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11892:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11936:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11945:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11948:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "11941:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11941:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "11936:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "11867:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "11870:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "11876:1:111",
                            "type": ""
                          }
                        ],
                        "src": "11844:112:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11993:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12010:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12013:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12003:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12003:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12003:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12107:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12110:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12100:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12100:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12100:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12131:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12134:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12124:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12124:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12124:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11961:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12353:309:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12363:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12373:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12367:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12431:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12446:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12454:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12442:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12442:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12424:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12424:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12424:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12478:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12489:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12474:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12474:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12498:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12506:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12494:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12494:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12467:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12467:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12467:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12530:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12541:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12526:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12526:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12546:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12519:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12519:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12519:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12573:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12584:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12569:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12569:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12589:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12562:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12562:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12562:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12602:54:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12628:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12640:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12651:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12636:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12636:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "12610:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12610:46:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12602:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12298:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12309:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12317:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12325:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12333:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12344:4:111",
                            "type": ""
                          }
                        ],
                        "src": "12150:512:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12747:169:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12793:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12802:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12805:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12795:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12795:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12795:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12768:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12777:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12764:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12764:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12789:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12760:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12760:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12757:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12818:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12837:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12831:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12831:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12822:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12880:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "12856:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12856:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12856:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12895:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12905:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12895:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12713:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12724:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12736:6:111",
                            "type": ""
                          }
                        ],
                        "src": "12667:249:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value3 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC721: approved query for nonex\")\n        mstore(add(headStart, 96), \"istent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not ow\")\n        mstore(add(headStart, 96), \"ner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"ERC721: transfer caller is not o\")\n        mstore(add(headStart, 96), \"wner nor approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: owner query for nonexist\")\n        mstore(add(headStart, 96), \"ent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC721: balance query for the ze\")\n        mstore(add(headStart, 96), \"ro address\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC721: operator query for nonex\")\n        mstore(add(headStart, 96), \"istent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046112b2565b610252565b60405190151581526020015b60405180910390f35b610114610337565b604051610103919061133d565b61013461012f366004611350565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c610167366004611392565b61048e565b005b61016c61017c3660046113bc565b610611565b61016c61018f3660046113bc565b610698565b6101346101a2366004611350565b6106b3565b6101ba6101b53660046113f8565b61074b565b604051908152602001610103565b6101146107ff565b61016c6101de366004611413565b61080e565b61016c6101f136600461147e565b61081d565b610114610204366004611350565b6108ab565b6100f7610217366004611578565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610346906115ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906115ab565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166104655760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610499826106b3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361053c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161045c565b3373ffffffffffffffffffffffffffffffffffffffff82161480610590575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b6106025760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161045c565b61060c83836109ae565b505050565b61061b3382610a4e565b61068d5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161045c565b61060c838383610ba4565b61060c8383836040518060200160405280600081525061081d565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806103315760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161045c565b600073ffffffffffffffffffffffffffffffffffffffff82166107d65760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161045c565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610346906115ab565b610819338383610dd7565b5050565b6108273383610a4e565b6108995760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161045c565b6108a584848484610eea565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109455760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161045c565b600061095c60408051602081019091526000815290565b9050600081511161097c57604051806020016040528060008152506109a7565b8061098684610f73565b6040516020016109979291906115fe565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610a08826106b3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ae55760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161045c565b6000610af0836106b3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b5f57508373ffffffffffffffffffffffffffffffffffffffff16610b47846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b9c575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610bc4826106b3565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161045c565b73ffffffffffffffffffffffffffffffffffffffff8216610cd55760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161045c565b610ce06000826109ae565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610d1690849061165c565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610d5190849061166f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e525760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161045c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610ef5848484610ba4565b610f01848484846110a8565b6108a55760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161045c565b606081600003610fb657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610fe05780610fca81611682565b9150610fd99050600a836116e9565b9150610fba565b60008167ffffffffffffffff811115610ffb57610ffb61144f565b6040519080825280601f01601f191660200182016040528015611025576020820181803683370190505b5090505b8415610b9c5761103a60018361165c565b9150611047600a866116fd565b61105290603061166f565b60f81b81838151811061106757611067611711565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506110a1600a866116e9565b9450611029565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611276576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061111f903390899088908890600401611740565b6020604051808303816000875af1925050508015611178575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261117591810190611789565b60015b61122b573d8080156111a6576040519150601f19603f3d011682016040523d82523d6000602084013e6111ab565b606091505b5080516000036112235760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161045c565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610b9c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112af57600080fd5b50565b6000602082840312156112c457600080fd5b81356109a781611281565b60005b838110156112ea5781810151838201526020016112d2565b50506000910152565b6000815180845261130b8160208601602086016112cf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109a760208301846112f3565b60006020828403121561136257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461138d57600080fd5b919050565b600080604083850312156113a557600080fd5b6113ae83611369565b946020939093013593505050565b6000806000606084860312156113d157600080fd5b6113da84611369565b92506113e860208501611369565b9150604084013590509250925092565b60006020828403121561140a57600080fd5b6109a782611369565b6000806040838503121561142657600080fd5b61142f83611369565b91506020830135801515811461144457600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561149457600080fd5b61149d85611369565b93506114ab60208601611369565b925060408501359150606085013567ffffffffffffffff808211156114cf57600080fd5b818701915087601f8301126114e357600080fd5b8135818111156114f5576114f561144f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561153b5761153b61144f565b816040528281528a602084870101111561155457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561158b57600080fd5b61159483611369565b91506115a260208401611369565b90509250929050565b600181811c908216806115bf57607f821691505b6020821081036115f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600083516116108184602088016112cf565b8351908301906116248183602088016112cf565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156103315761033161162d565b808201808211156103315761033161162d565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036116b3576116b361162d565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826116f8576116f86116ba565b500490565b60008261170c5761170c6116ba565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261177f60808301846112f3565b9695505050505050565b60006020828403121561179b57600080fd5b81516109a78161128156fea26469706673582212204746880ba9b0b1473e3aba1883a18f95d3955564954e58aad81edbe318460c1164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x12B2 JUMP JUMPDEST PUSH2 0x252 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0x133D JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x1350 JUMP JUMPDEST PUSH2 0x3C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x167 CALLDATASIZE PUSH1 0x4 PUSH2 0x1392 JUMP JUMPDEST PUSH2 0x48E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16C PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0x13BC JUMP JUMPDEST PUSH2 0x611 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0x13BC JUMP JUMPDEST PUSH2 0x698 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1350 JUMP JUMPDEST PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x1BA PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x13F8 JUMP JUMPDEST PUSH2 0x74B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x16C PUSH2 0x1DE CALLDATASIZE PUSH1 0x4 PUSH2 0x1413 JUMP JUMPDEST PUSH2 0x80E JUMP JUMPDEST PUSH2 0x16C PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x147E JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST PUSH2 0x114 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x1350 JUMP JUMPDEST PUSH2 0x8AB JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x1578 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2E5 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x331 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x346 SWAP1 PUSH2 0x15AB JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x372 SWAP1 PUSH2 0x15AB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x394 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x465 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 DUP3 PUSH2 0x6B3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x53C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ DUP1 PUSH2 0x590 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x602 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH2 0x60C DUP4 DUP4 PUSH2 0x9AE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x61B CALLER DUP3 PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x68D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH2 0x60C DUP4 DUP4 DUP4 PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0x60C DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x81D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x331 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F776E657220717565727920666F72206E6F6E6578697374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E7420746F6B656E0000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2062616C616E636520717565727920666F7220746865207A65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726F206164647265737300000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x346 SWAP1 PUSH2 0x15AB JUMP JUMPDEST PUSH2 0x819 CALLER DUP4 DUP4 PUSH2 0xDD7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x827 CALLER DUP4 PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x899 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH2 0x8A5 DUP5 DUP5 DUP5 DUP5 PUSH2 0xEEA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x945 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6578697374656E7420746F6B656E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95C PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x97C JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9A7 JUMP JUMPDEST DUP1 PUSH2 0x986 DUP5 PUSH2 0xF73 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x997 SWAP3 SWAP2 SWAP1 PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xA08 DUP3 PUSH2 0x6B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAE5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F70657261746F7220717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF0 DUP4 PUSH2 0x6B3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xB5F JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB47 DUP5 PUSH2 0x3C9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0xB9C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBC4 DUP3 PUSH2 0x6B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xCD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH2 0xCE0 PUSH1 0x0 DUP3 PUSH2 0x9AE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xD16 SWAP1 DUP5 SWAP1 PUSH2 0x165C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xD51 SWAP1 DUP5 SWAP1 PUSH2 0x166F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x45C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xEF5 DUP5 DUP5 DUP5 PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0xF01 DUP5 DUP5 DUP5 DUP5 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x8A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0xFB6 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xFE0 JUMPI DUP1 PUSH2 0xFCA DUP2 PUSH2 0x1682 JUMP JUMPDEST SWAP2 POP PUSH2 0xFD9 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x16E9 JUMP JUMPDEST SWAP2 POP PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFFB JUMPI PUSH2 0xFFB PUSH2 0x144F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1025 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0xB9C JUMPI PUSH2 0x103A PUSH1 0x1 DUP4 PUSH2 0x165C JUMP JUMPDEST SWAP2 POP PUSH2 0x1047 PUSH1 0xA DUP7 PUSH2 0x16FD JUMP JUMPDEST PUSH2 0x1052 SWAP1 PUSH1 0x30 PUSH2 0x166F JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1067 JUMPI PUSH2 0x1067 PUSH2 0x1711 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x10A1 PUSH1 0xA DUP7 PUSH2 0x16E9 JUMP JUMPDEST SWAP5 POP PUSH2 0x1029 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1276 JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x111F SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1740 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1178 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1175 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1789 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x122B JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x11AB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1223 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x45C JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0xB9C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x12AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A7 DUP2 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12D2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x130B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x9A7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x12F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13AE DUP4 PUSH2 0x1369 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x13D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13DA DUP5 PUSH2 0x1369 JUMP JUMPDEST SWAP3 POP PUSH2 0x13E8 PUSH1 0x20 DUP6 ADD PUSH2 0x1369 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x140A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9A7 DUP3 PUSH2 0x1369 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x142F DUP4 PUSH2 0x1369 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x149D DUP6 PUSH2 0x1369 JUMP JUMPDEST SWAP4 POP PUSH2 0x14AB PUSH1 0x20 DUP7 ADD PUSH2 0x1369 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x14CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x14E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x14F5 JUMPI PUSH2 0x14F5 PUSH2 0x144F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x153B JUMPI PUSH2 0x153B PUSH2 0x144F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x158B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1594 DUP4 PUSH2 0x1369 JUMP JUMPDEST SWAP2 POP PUSH2 0x15A2 PUSH1 0x20 DUP5 ADD PUSH2 0x1369 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x15BF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x15F8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1610 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x12CF JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1624 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x12CF JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x331 JUMPI PUSH2 0x331 PUSH2 0x162D JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x331 JUMPI PUSH2 0x331 PUSH2 0x162D JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x16B3 JUMPI PUSH2 0x16B3 PUSH2 0x162D JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x16F8 JUMPI PUSH2 0x16F8 PUSH2 0x16BA JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x170C JUMPI PUSH2 0x170C PUSH2 0x16BA JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x177F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x12F3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x9A7 DUP2 PUSH2 0x1281 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE CHAINID DUP9 SIGNEXTEND 0xA9 0xB0 0xB1 SELFBALANCE RETURNDATACOPY GASPRICE 0xBA XOR DUP4 LOG1 DUP16 SWAP6 0xD3 SWAP6 SSTORE PUSH5 0x954E58AAD8 0x1E 0xDB 0xE3 XOR CHAINID 0xC GT PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "628:13657:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;611:14:111;;604:22;586:41;;574:2;559:18;1570:300:9;;;;;;;;2488:98;;;:::i;:::-;;;;;;;:::i;3999:217::-;;;;;;:::i;:::-;;:::i;:::-;;;1814:42:111;1802:55;;;1784:74;;1772:2;1757:18;3999:217:9;1638:226:111;3537:401:9;;;;;;:::i;:::-;;:::i;:::-;;4726:330;;;;;;:::i;:::-;;:::i;5122:179::-;;;;;;:::i;:::-;;:::i;2191:235::-;;;;;;:::i;:::-;;:::i;1929:205::-;;;;;;:::i;:::-;;:::i;:::-;;;2999:25:111;;;2987:2;2972:18;1929:205:9;2853:177:111;2650:102:9;;;:::i;4283:153::-;;;;;;:::i;:::-;;:::i;5367:320::-;;;;;;:::i;:::-;;:::i;2818:329::-;;;;;;:::i;:::-;;:::i;4502:162::-;;;;;;:::i;:::-;4622:25;;;;4599:4;4622:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4502:162;1570:300;1672:4;1707:40;;;1722:25;1707:40;;:104;;-1:-1:-1;1763:48:9;;;1778:33;1763:48;1707:104;:156;;;-1:-1:-1;952:25:16;937:40;;;;1827:36:9;1688:175;1570:300;-1:-1:-1;;1570:300:9:o;2488:98::-;2542:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:98;:::o;3999:217::-;4075:7;7247:16;;;:7;:16;;;;;;:30;:16;4094:73;;;;-1:-1:-1;;;4094:73:9;;5687:2:111;4094:73:9;;;5669:21:111;5726:2;5706:18;;;5699:30;5765:34;5745:18;;;5738:62;5836:14;5816:18;;;5809:42;5868:19;;4094:73:9;;;;;;;;;-1:-1:-1;4185:24:9;;;;:15;:24;;;;;;;;;3999:217::o;3537:401::-;3617:13;3633:23;3648:7;3633:14;:23::i;:::-;3617:39;;3680:5;3674:11;;:2;:11;;;3666:57;;;;-1:-1:-1;;;3666:57:9;;6100:2:111;3666:57:9;;;6082:21:111;6139:2;6119:18;;;6112:30;6178:34;6158:18;;;6151:62;6249:3;6229:18;;;6222:31;6270:19;;3666:57:9;5898:397:111;3666:57:9;719:10:14;3755:21:9;;;;;:62;;-1:-1:-1;4622:25:9;;;4599:4;4622:25;;;:18;:25;;;;;;;;719:10:14;4622:35:9;;;;;;;;;;3780:37;3734:165;;;;-1:-1:-1;;;3734:165:9;;6502:2:111;3734:165:9;;;6484:21:111;6541:2;6521:18;;;6514:30;6580:34;6560:18;;;6553:62;6651:26;6631:18;;;6624:54;6695:19;;3734:165:9;6300:420:111;3734:165:9;3910:21;3919:2;3923:7;3910:8;:21::i;:::-;3607:331;3537:401;;:::o;4726:330::-;4915:41;719:10:14;4948:7:9;4915:18;:41::i;:::-;4907:103;;;;-1:-1:-1;;;4907:103:9;;6927:2:111;4907:103:9;;;6909:21:111;6966:2;6946:18;;;6939:30;7005:34;6985:18;;;6978:62;7076:19;7056:18;;;7049:47;7113:19;;4907:103:9;6725:413:111;4907:103:9;5021:28;5031:4;5037:2;5041:7;5021:9;:28::i;5122:179::-;5255:39;5272:4;5278:2;5282:7;5255:39;;;;;;;;;;;;:16;:39::i;2191:235::-;2263:7;2298:16;;;:7;:16;;;;;;;;;2324:73;;;;-1:-1:-1;;;2324:73:9;;7345:2:111;2324:73:9;;;7327:21:111;7384:2;7364:18;;;7357:30;7423:34;7403:18;;;7396:62;7494:11;7474:18;;;7467:39;7523:19;;2324:73:9;7143:405:111;1929:205:9;2001:7;2028:19;;;2020:74;;;;-1:-1:-1;;;2020:74:9;;7755:2:111;2020:74:9;;;7737:21:111;7794:2;7774:18;;;7767:30;7833:34;7813:18;;;7806:62;7904:12;7884:18;;;7877:40;7934:19;;2020:74:9;7553:406:111;2020:74:9;-1:-1:-1;2111:16:9;;;;;;:9;:16;;;;;;;1929:205::o;2650:102::-;2706:13;2738:7;2731:14;;;;;:::i;4283:153::-;4377:52;719:10:14;4410:8:9;4420;4377:18;:52::i;:::-;4283:153;;:::o;5367:320::-;5536:41;719:10:14;5569:7:9;5536:18;:41::i;:::-;5528:103;;;;-1:-1:-1;;;5528:103:9;;6927:2:111;5528:103:9;;;6909:21:111;6966:2;6946:18;;;6939:30;7005:34;6985:18;;;6978:62;7076:19;7056:18;;;7049:47;7113:19;;5528:103:9;6725:413:111;5528:103:9;5641:39;5655:4;5661:2;5665:7;5674:5;5641:13;:39::i;:::-;5367:320;;;;:::o;2818:329::-;7224:4;7247:16;;;:7;:16;;;;;;2891:13;;7247:30;:16;2916:76;;;;-1:-1:-1;;;2916:76:9;;8166:2:111;2916:76:9;;;8148:21:111;8205:2;8185:18;;;8178:30;8244:34;8224:18;;;8217:62;8315:17;8295:18;;;8288:45;8350:19;;2916:76:9;7964:411:111;2916:76:9;3003:21;3027:10;3464:9;;;;;;;;;-1:-1:-1;3464:9:9;;;3388:92;3027:10;3003:34;;3078:1;3060:7;3054:21;:25;:86;;;;;;;;;;;;;;;;;3106:7;3115:18;:7;:16;:18::i;:::-;3089:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3054:86;3047:93;2818:329;-1:-1:-1;;;2818:329:9:o;11168:171::-;11242:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;11295:23;11242:24;11295:14;:23::i;:::-;11286:46;;;;;;;;;;;;11168:171;;:::o;7442:344::-;7535:4;7247:16;;;:7;:16;;;;;;:30;:16;7551:73;;;;-1:-1:-1;;;7551:73:9;;9083:2:111;7551:73:9;;;9065:21:111;9122:2;9102:18;;;9095:30;9161:34;9141:18;;;9134:62;9232:14;9212:18;;;9205:42;9264:19;;7551:73:9;8881:408:111;7551:73:9;7634:13;7650:23;7665:7;7650:14;:23::i;:::-;7634:39;;7702:5;7691:16;;:7;:16;;;:51;;;;7735:7;7711:31;;:20;7723:7;7711:11;:20::i;:::-;:31;;;7691:51;:87;;;-1:-1:-1;4622:25:9;;;;4599:4;4622:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7746:32;7683:96;7442:344;-1:-1:-1;;;;7442:344:9:o;10452:605::-;10606:4;10579:31;;:23;10594:7;10579:14;:23::i;:::-;:31;;;10571:81;;;;-1:-1:-1;;;10571:81:9;;9496:2:111;10571:81:9;;;9478:21:111;9535:2;9515:18;;;9508:30;9574:34;9554:18;;;9547:62;9645:7;9625:18;;;9618:35;9670:19;;10571:81:9;9294:401:111;10571:81:9;10670:16;;;10662:65;;;;-1:-1:-1;;;10662:65:9;;9902:2:111;10662:65:9;;;9884:21:111;9941:2;9921:18;;;9914:30;9980:34;9960:18;;;9953:62;10051:6;10031:18;;;10024:34;10075:19;;10662:65:9;9700:400:111;10662:65:9;10839:29;10856:1;10860:7;10839:8;:29::i;:::-;10879:15;;;;;;;:9;:15;;;;;:20;;10898:1;;10879:15;:20;;10898:1;;10879:20;:::i;:::-;;;;-1:-1:-1;;10909:13:9;;;;;;;:9;:13;;;;;:18;;10926:1;;10909:13;:18;;10926:1;;10909:18;:::i;:::-;;;;-1:-1:-1;;10937:16:9;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;;10974:27;;10937:16;;10974:27;;;;;;;3607:331;3537:401;;:::o;11474:307::-;11624:8;11615:17;;:5;:17;;;11607:55;;;;-1:-1:-1;;;11607:55:9;;10759:2:111;11607:55:9;;;10741:21:111;10798:2;10778:18;;;10771:30;10837:27;10817:18;;;10810:55;10882:18;;11607:55:9;10557:349:111;11607:55:9;11672:25;;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;11733:41;;586::111;;;11733::9;;559:18:111;11733:41:9;;;;;;;11474:307;;;:::o;6549:::-;6700:28;6710:4;6716:2;6720:7;6700:9;:28::i;:::-;6746:48;6769:4;6775:2;6779:7;6788:5;6746:22;:48::i;:::-;6738:111;;;;-1:-1:-1;;;6738:111:9;;11113:2:111;6738:111:9;;;11095:21:111;11152:2;11132:18;;;11125:30;11191:34;11171:18;;;11164:62;11262:20;11242:18;;;11235:48;11300:19;;6738:111:9;10911:414:111;328:703:15;384:13;601:5;610:1;601:10;597:51;;-1:-1:-1;;627:10:15;;;;;;;;;;;;;;;;;;328:703::o;597:51::-;672:5;657:12;711:75;718:9;;711:75;;743:8;;;;:::i;:::-;;-1:-1:-1;765:10:15;;-1:-1:-1;773:2:15;765:10;;:::i;:::-;;;711:75;;;795:19;827:6;817:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:17:15;;795:39;;844:150;851:10;;844:150;;877:11;887:1;877:11;;:::i;:::-;;-1:-1:-1;945:10:15;953:2;945:5;:10;:::i;:::-;932:24;;:2;:24;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;972:11:15;981:2;972:11;;:::i;:::-;;;844:150;;12334:778:9;12484:4;12504:13;;;1465:19:13;:23;12500:606:9;;12539:72;;;;;:36;;;;;;:72;;719:10:14;;12590:4:9;;12596:7;;12605:5;;12539:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12539:72:9;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12535:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12778:6;:13;12795:1;12778:18;12774:266;;12820:60;;-1:-1:-1;;;12820:60:9;;11113:2:111;12820:60:9;;;11095:21:111;11152:2;11132:18;;;11125:30;11191:34;11171:18;;;11164:62;11262:20;11242:18;;;11235:48;11300:19;;12820:60:9;10911:414:111;12774:266:9;12992:6;12986:13;12977:6;12973:2;12969:15;12962:38;12535:519;12661:51;;12671:41;12661:51;;-1:-1:-1;12654:58:9;;12500:606;-1:-1:-1;13091:4:9;12334:778;;;;;;:::o;14:177:111:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;68:117;14:177;:::o;196:245::-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:250::-;723:1;733:113;747:6;744:1;741:13;733:113;;;823:11;;;817:18;804:11;;;797:39;769:2;762:10;733:113;;;-1:-1:-1;;880:1:111;862:16;;855:27;638:250::o;893:330::-;935:3;973:5;967:12;1000:6;995:3;988:19;1016:76;1085:6;1078:4;1073:3;1069:14;1062:4;1055:5;1051:16;1016:76;:::i;:::-;1137:2;1125:15;1142:66;1121:88;1112:98;;;;1212:4;1108:109;;893:330;-1:-1:-1;;893:330:111:o;1228:220::-;1377:2;1366:9;1359:21;1340:4;1397:45;1438:2;1427:9;1423:18;1415:6;1397:45;:::i;1453:180::-;1512:6;1565:2;1553:9;1544:7;1540:23;1536:32;1533:52;;;1581:1;1578;1571:12;1533:52;-1:-1:-1;1604:23:111;;1453:180;-1:-1:-1;1453:180:111:o;1869:196::-;1937:20;;1997:42;1986:54;;1976:65;;1966:93;;2055:1;2052;2045:12;1966:93;1869:196;;;:::o;2070:254::-;2138:6;2146;2199:2;2187:9;2178:7;2174:23;2170:32;2167:52;;;2215:1;2212;2205:12;2167:52;2238:29;2257:9;2238:29;:::i;:::-;2228:39;2314:2;2299:18;;;;2286:32;;-1:-1:-1;;;2070:254:111:o;2329:328::-;2406:6;2414;2422;2475:2;2463:9;2454:7;2450:23;2446:32;2443:52;;;2491:1;2488;2481:12;2443:52;2514:29;2533:9;2514:29;:::i;:::-;2504:39;;2562:38;2596:2;2585:9;2581:18;2562:38;:::i;:::-;2552:48;;2647:2;2636:9;2632:18;2619:32;2609:42;;2329:328;;;;;:::o;2662:186::-;2721:6;2774:2;2762:9;2753:7;2749:23;2745:32;2742:52;;;2790:1;2787;2780:12;2742:52;2813:29;2832:9;2813:29;:::i;3035:347::-;3100:6;3108;3161:2;3149:9;3140:7;3136:23;3132:32;3129:52;;;3177:1;3174;3167:12;3129:52;3200:29;3219:9;3200:29;:::i;:::-;3190:39;;3279:2;3268:9;3264:18;3251:32;3326:5;3319:13;3312:21;3305:5;3302:32;3292:60;;3348:1;3345;3338:12;3292:60;3371:5;3361:15;;;3035:347;;;;;:::o;3387:184::-;3439:77;3436:1;3429:88;3536:4;3533:1;3526:15;3560:4;3557:1;3550:15;3576:1197;3671:6;3679;3687;3695;3748:3;3736:9;3727:7;3723:23;3719:33;3716:53;;;3765:1;3762;3755:12;3716:53;3788:29;3807:9;3788:29;:::i;:::-;3778:39;;3836:38;3870:2;3859:9;3855:18;3836:38;:::i;:::-;3826:48;;3921:2;3910:9;3906:18;3893:32;3883:42;;3976:2;3965:9;3961:18;3948:32;3999:18;4040:2;4032:6;4029:14;4026:34;;;4056:1;4053;4046:12;4026:34;4094:6;4083:9;4079:22;4069:32;;4139:7;4132:4;4128:2;4124:13;4120:27;4110:55;;4161:1;4158;4151:12;4110:55;4197:2;4184:16;4219:2;4215;4212:10;4209:36;;;4225:18;;:::i;:::-;4359:2;4353:9;4421:4;4413:13;;4264:66;4409:22;;;4433:2;4405:31;4401:40;4389:53;;;4457:18;;;4477:22;;;4454:46;4451:72;;;4503:18;;:::i;:::-;4543:10;4539:2;4532:22;4578:2;4570:6;4563:18;4618:7;4613:2;4608;4604;4600:11;4596:20;4593:33;4590:53;;;4639:1;4636;4629:12;4590:53;4695:2;4690;4686;4682:11;4677:2;4669:6;4665:15;4652:46;4740:1;4735:2;4730;4722:6;4718:15;4714:24;4707:35;4761:6;4751:16;;;;;;;3576:1197;;;;;;;:::o;4778:260::-;4846:6;4854;4907:2;4895:9;4886:7;4882:23;4878:32;4875:52;;;4923:1;4920;4913:12;4875:52;4946:29;4965:9;4946:29;:::i;:::-;4936:39;;4994:38;5028:2;5017:9;5013:18;4994:38;:::i;:::-;4984:48;;4778:260;;;;;:::o;5043:437::-;5122:1;5118:12;;;;5165;;;5186:61;;5240:4;5232:6;5228:17;5218:27;;5186:61;5293:2;5285:6;5282:14;5262:18;5259:38;5256:218;;5330:77;5327:1;5320:88;5431:4;5428:1;5421:15;5459:4;5456:1;5449:15;5256:218;;5043:437;;;:::o;8380:496::-;8559:3;8597:6;8591:13;8613:66;8672:6;8667:3;8660:4;8652:6;8648:17;8613:66;:::i;:::-;8742:13;;8701:16;;;;8764:70;8742:13;8701:16;8811:4;8799:17;;8764:70;:::i;:::-;8850:20;;8380:496;-1:-1:-1;;;;8380:496:111:o;10105:184::-;10157:77;10154:1;10147:88;10254:4;10251:1;10244:15;10278:4;10275:1;10268:15;10294:128;10361:9;;;10382:11;;;10379:37;;;10396:18;;:::i;10427:125::-;10492:9;;;10513:10;;;10510:36;;;10526:18;;:::i;11330:195::-;11369:3;11400:66;11393:5;11390:77;11387:103;;11470:18;;:::i;:::-;-1:-1:-1;11517:1:111;11506:13;;11330:195::o;11530:184::-;11582:77;11579:1;11572:88;11679:4;11676:1;11669:15;11703:4;11700:1;11693:15;11719:120;11759:1;11785;11775:35;;11790:18;;:::i;:::-;-1:-1:-1;11824:9:111;;11719:120::o;11844:112::-;11876:1;11902;11892:35;;11907:18;;:::i;:::-;-1:-1:-1;11941:9:111;;11844:112::o;11961:184::-;12013:77;12010:1;12003:88;12110:4;12107:1;12100:15;12134:4;12131:1;12124:15;12150:512;12344:4;12373:42;12454:2;12446:6;12442:15;12431:9;12424:34;12506:2;12498:6;12494:15;12489:2;12478:9;12474:18;12467:43;;12546:6;12541:2;12530:9;12526:18;12519:34;12589:3;12584:2;12573:9;12569:18;12562:31;12610:46;12651:3;12640:9;12636:19;12628:6;12610:46;:::i;:::-;12602:54;12150:512;-1:-1:-1;;;;;;12150:512:111:o;12667:249::-;12736:6;12789:2;12777:9;12768:7;12764:23;12760:32;12757:52;;;12805:1;12802;12795:12;12757:52;12837:9;12831:16;12856:30;12880:5;12856:30;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1221600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "approve(address,uint256)": "infinite",
                "balanceOf(address)": "2598",
                "getApproved(uint256)": "4724",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "ownerOf(uint256)": "2561",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26654",
                "supportsInterface(bytes4)": "456",
                "symbol()": "infinite",
                "tokenURI(uint256)": "infinite",
                "transferFrom(address,address,uint256)": "infinite"
              },
              "internal": {
                "_afterTokenTransfer(address,address,uint256)": "infinite",
                "_approve(address,uint256)": "infinite",
                "_baseURI()": "infinite",
                "_beforeTokenTransfer(address,address,uint256)": "infinite",
                "_burn(uint256)": "infinite",
                "_checkOnERC721Received(address,address,uint256,bytes memory)": "infinite",
                "_exists(uint256)": "infinite",
                "_isApprovedOrOwner(address,uint256)": "infinite",
                "_mint(address,uint256)": "infinite",
                "_safeMint(address,uint256)": "infinite",
                "_safeMint(address,uint256,bytes memory)": "infinite",
                "_safeTransfer(address,address,uint256,bytes memory)": "infinite",
                "_setApprovalForAll(address,address,bool)": "infinite",
                "_transfer(address,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n    using Address for address;\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: balance query for the zero address\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: owner query for nonexistent token\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        require(_exists(tokenId), \\\"ERC721Metadata: URI query for nonexistent token\\\");\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overriden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        require(_exists(tokenId), \\\"ERC721: approved query for nonexistent token\\\");\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: transfer caller is not owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: transfer caller is not owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, _data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `_data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, _data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        require(_exists(tokenId), \\\"ERC721: operator query for nonexistent token\\\");\\n        address owner = ERC721.ownerOf(tokenId);\\n        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, _data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits a {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits a {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param _data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\\n                return retval == IERC721Receiver.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n}\\n\",\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 1537,
                "contract": "@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721",
                "label": "_name",
                "offset": 0,
                "slot": "0",
                "type": "t_string_storage"
              },
              {
                "astId": 1539,
                "contract": "@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721",
                "label": "_symbol",
                "offset": 0,
                "slot": "1",
                "type": "t_string_storage"
              },
              {
                "astId": 1543,
                "contract": "@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721",
                "label": "_owners",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 1547,
                "contract": "@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721",
                "label": "_balances",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 1551,
                "contract": "@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 1557,
                "contract": "@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC721/IERC721.sol": {
        "IERC721": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Required interface of an ERC721 compliant contract.",
            "events": {
              "Approval(address,address,uint256)": {
                "details": "Emitted when `owner` enables `approved` to manage the `tokenId` token."
              },
              "ApprovalForAll(address,address,bool)": {
                "details": "Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."
              },
              "Transfer(address,address,uint256)": {
                "details": "Emitted when `tokenId` token is transferred from `from` to `to`."
              }
            },
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the number of tokens in ``owner``'s account."
              },
              "getApproved(uint256)": {
                "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "isApprovedForAll(address,address)": {
                "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"
              },
              "ownerOf(uint256)": {
                "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "setApprovalForAll(address,bool)": {
                "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": {
        "IERC721Receiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC721Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.",
            "kind": "dev",
            "methods": {
              "onERC721Received(address,address,uint256,bytes)": {
                "details": "Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`."
              }
            },
            "title": "ERC721 token receiver interface",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "onERC721Received(address,address,uint256,bytes)": "150b7a02"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
        "IERC721Metadata": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "See https://eips.ethereum.org/EIPS/eip-721",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the number of tokens in ``owner``'s account."
              },
              "getApproved(uint256)": {
                "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "isApprovedForAll(address,address)": {
                "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"
              },
              "name()": {
                "details": "Returns the token collection name."
              },
              "ownerOf(uint256)": {
                "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "setApprovalForAll(address,bool)": {
                "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              },
              "symbol()": {
                "details": "Returns the token collection symbol."
              },
              "tokenURI(uint256)": {
                "details": "Returns the Uniform Resource Identifier (URI) for `tokenId` token."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."
              }
            },
            "title": "ERC-721 Non-Fungible Token Standard, optional metadata extension",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "Address": {
          "abi": [],
          "devdoc": {
            "details": "Collection of functions related to the address type",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e0e27fe5597308e59d0fa96631299c871e62e0f472855c249d9836a1d72fa5f064736f6c63430008110033",
              "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 0xE0 0xE2 PUSH32 0xE5597308E59D0FA96631299C871E62E0F472855C249D9836A1D72FA5F064736F PUSH13 0x63430008110033000000000000 ",
              "sourceMap": "194:8061:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8061:13;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e0e27fe5597308e59d0fa96631299c871e62e0f472855c249d9836a1d72fa5f064736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 0xE2 PUSH32 0xE5597308E59D0FA96631299C871E62E0F472855C249D9836A1D72FA5F064736F PUSH13 0x63430008110033000000000000 ",
              "sourceMap": "194:8061:13:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "functionCall(address,bytes memory)": "infinite",
                "functionCall(address,bytes memory,string memory)": "infinite",
                "functionCallWithValue(address,bytes memory,uint256)": "infinite",
                "functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite",
                "functionDelegateCall(address,bytes memory)": "infinite",
                "functionDelegateCall(address,bytes memory,string memory)": "infinite",
                "functionStaticCall(address,bytes memory)": "infinite",
                "functionStaticCall(address,bytes memory,string memory)": "infinite",
                "isContract(address)": "infinite",
                "sendValue(address payable,uint256)": "infinite",
                "verifyCallResult(bool,bytes memory,string memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "Context": {
          "abi": [],
          "devdoc": {
            "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "Strings": {
          "abi": [],
          "devdoc": {
            "details": "String operations.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cda2f3250dc40d788a406c015f260505b22fdc55ca9dece0edeab5c83580d70a64736f6c63430008110033",
              "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 0xCD LOG2 RETURN 0x25 0xD 0xC4 0xD PUSH25 0x8A406C015F260505B22FDC55CA9DECE0EDEAB5C83580D70A64 PUSH20 0x6F6C634300081100330000000000000000000000 ",
              "sourceMap": "146:1885:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;146:1885:15;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cda2f3250dc40d788a406c015f260505b22fdc55ca9dece0edeab5c83580d70a64736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD LOG2 RETURN 0x25 0xD 0xC4 0xD PUSH25 0x8A406C015F260505B22FDC55CA9DECE0EDEAB5C83580D70A64 PUSH20 0x6F6C634300081100330000000000000000000000 ",
              "sourceMap": "146:1885:15:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "toHexString(uint256)": "infinite",
                "toHexString(uint256,uint256)": "infinite",
                "toString(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n}\\n\",\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "ERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.",
            "kind": "dev",
            "methods": {
              "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "IERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.",
            "kind": "dev",
            "methods": {
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnsregistrar/DNSClaimChecker.sol": {
        "DNSClaimChecker": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a2f96b4dc78350619facd5b351a75de738949638562ea99b8811957f9b5524e864736f6c63430008110033",
              "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 LOG2 0xF9 PUSH12 0x4DC78350619FACD5B351A75D 0xE7 CODESIZE SWAP5 SWAP7 CODESIZE JUMP 0x2E 0xA9 SWAP12 DUP9 GT SWAP6 PUSH32 0x9B5524E864736F6C634300081100330000000000000000000000000000000000 ",
              "sourceMap": "226:2477:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;226:2477:18;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a2f96b4dc78350619facd5b351a75de738949638562ea99b8811957f9b5524e864736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 0xF9 PUSH12 0x4DC78350619FACD5B351A75D 0xE7 CODESIZE SWAP5 SWAP7 CODESIZE JUMP 0x2E 0xA9 SWAP12 DUP9 GT SWAP6 PUSH32 0x9B5524E864736F6C634300081100330000000000000000000000000000000000 ",
              "sourceMap": "226:2477:18:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "getOwnerAddress(bytes memory,bytes memory)": "infinite",
                "hexToAddress(bytes memory,uint256)": "infinite",
                "parseRR(bytes memory,uint256)": "infinite",
                "parseString(bytes memory,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnsregistrar/DNSClaimChecker.sol\":\"DNSClaimChecker\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"contracts/dnsregistrar/DNSClaimChecker.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\nimport \\\"../dnssec-oracle/DNSSEC.sol\\\";\\nimport \\\"../dnssec-oracle/BytesUtils.sol\\\";\\nimport \\\"../dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\nlibrary DNSClaimChecker {\\n    using BytesUtils for bytes;\\n    using RRUtils for *;\\n    using Buffer for Buffer.buffer;\\n\\n    uint16 constant CLASS_INET = 1;\\n    uint16 constant TYPE_TXT = 16;\\n\\n    function getOwnerAddress(bytes memory name, bytes memory data)\\n        internal\\n        pure\\n        returns (address, bool)\\n    {\\n        // Add \\\"_ens.\\\" to the front of the name.\\n        Buffer.buffer memory buf;\\n        buf.init(name.length + 5);\\n        buf.append(\\\"\\\\x04_ens\\\");\\n        buf.append(name);\\n\\n        for (\\n            RRUtils.RRIterator memory iter = data.iterateRRs(0);\\n            !iter.done();\\n            iter.next()\\n        ) {\\n            bool found;\\n            address addr;\\n            (addr, found) = parseRR(data, iter.rdataOffset);\\n            if (found) {\\n                return (addr, true);\\n            }\\n        }\\n\\n        return (address(0x0), false);\\n    }\\n\\n    function parseRR(bytes memory rdata, uint256 idx)\\n        internal\\n        pure\\n        returns (address, bool)\\n    {\\n        while (idx < rdata.length) {\\n            uint256 len = rdata.readUint8(idx);\\n            idx += 1;\\n\\n            bool found;\\n            address addr;\\n            (addr, found) = parseString(rdata, idx, len);\\n\\n            if (found) return (addr, true);\\n            idx += len;\\n        }\\n\\n        return (address(0x0), false);\\n    }\\n\\n    function parseString(\\n        bytes memory str,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (address, bool) {\\n        // TODO: More robust parsing that handles whitespace and multiple key/value pairs\\n        if (str.readUint32(idx) != 0x613d3078) return (address(0x0), false); // 0x613d3078 == 'a=0x'\\n        if (len < 44) return (address(0x0), false);\\n        return hexToAddress(str, idx + 4);\\n    }\\n\\n    function hexToAddress(bytes memory str, uint256 idx)\\n        internal\\n        pure\\n        returns (address, bool)\\n    {\\n        if (str.length - idx < 40) return (address(0x0), false);\\n        uint256 ret = 0;\\n        for (uint256 i = idx; i < idx + 40; i++) {\\n            ret <<= 4;\\n            uint256 x = str.readUint8(i);\\n            if (x >= 48 && x < 58) {\\n                ret |= x - 48;\\n            } else if (x >= 65 && x < 71) {\\n                ret |= x - 55;\\n            } else if (x >= 97 && x < 103) {\\n                ret |= x - 87;\\n            } else {\\n                return (address(0x0), false);\\n            }\\n        }\\n        return (address(uint160(ret)), true);\\n    }\\n}\\n\",\"keccak256\":\"0xe7d69f26310a58369fa5f975eff5f8df2a59a47db96ce575878e15ea0a842286\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/DNSSEC.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\npragma experimental ABIEncoderV2;\\n\\nabstract contract DNSSEC {\\n    bytes public anchors;\\n\\n    struct RRSetWithSignature {\\n        bytes rrset;\\n        bytes sig;\\n    }\\n\\n    event AlgorithmUpdated(uint8 id, address addr);\\n    event DigestUpdated(uint8 id, address addr);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input)\\n        external\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\\n        public\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n}\\n\",\"keccak256\":\"0xaa9bd0b4e3533e757b73939e47a9e6c2a4fd383fb00fc4ccf33f101bdea93263\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnsregistrar/DNSRegistrar.sol": {
        "DNSRegistrar": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract DNSSEC",
                  "name": "_dnssec",
                  "type": "address"
                },
                {
                  "internalType": "contract PublicSuffixList",
                  "name": "_suffixes",
                  "type": "address"
                },
                {
                  "internalType": "contract ENS",
                  "name": "_ens",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "NoOwnerRecordFound",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "StaleProof",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "dnsname",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "inception",
                  "type": "uint32"
                }
              ],
              "name": "Claim",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oracle",
                  "type": "address"
                }
              ],
              "name": "NewOracle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "suffixes",
                  "type": "address"
                }
              ],
              "name": "NewPublicSuffixList",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "inceptions",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "oracle",
              "outputs": [
                {
                  "internalType": "contract DNSSEC",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "rrset",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "sig",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DNSSEC.RRSetWithSignature[]",
                  "name": "input",
                  "type": "tuple[]"
                }
              ],
              "name": "proveAndClaim",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "rrset",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "sig",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DNSSEC.RRSetWithSignature[]",
                  "name": "input",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "proveAndClaimWithResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract PublicSuffixList",
                  "name": "_suffixes",
                  "type": "address"
                }
              ],
              "name": "setPublicSuffixList",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "suffixes",
              "outputs": [
                {
                  "internalType": "contract PublicSuffixList",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "An ENS registrar that allows the owner of a DNS name to claim the      corresponding name in ENS.",
            "kind": "dev",
            "methods": {
              "proveAndClaim(bytes,(bytes,bytes)[])": {
                "details": "Submits proofs to the DNSSEC oracle, then claims a name using those proofs.",
                "params": {
                  "input": "A chain of signed DNS RRSETs ending with a text record.",
                  "name": "The name to claim, in DNS wire format."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_3541": {
                  "entryPoint": null,
                  "id": 3541,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_DNSSEC_$5064t_contract$_PublicSuffixList_$4034t_contract$_ENS_$12157_fromMemory": {
                  "entryPoint": 245,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "validator_revert_contract_DNSSEC": {
                  "entryPoint": 220,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:964:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "67:86:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "131:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "140:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "143:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "133:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "133:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "133:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "90:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "101:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "116:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "121:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "112:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "112:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "125:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "108:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "108:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "97:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "97:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "87:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "87:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "80:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "80:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "77:70:111"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_DNSSEC",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "56:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:139:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "326:428:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "372:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "381:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "384:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "374:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "374:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "374:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "347:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "356:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "343:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "343:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "368:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "339:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "339:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "336:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "397:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "416:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "410:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "410:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "401:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_DNSSEC",
                                  "nodeType": "YulIdentifier",
                                  "src": "435:32:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "435:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "435:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "483:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "493:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "483:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "507:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "532:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "543:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "528:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "528:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "522:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "522:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "511:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "589:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_DNSSEC",
                                  "nodeType": "YulIdentifier",
                                  "src": "556:32:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "556:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "556:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "606:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "616:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "606:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "632:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "657:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "668:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "653:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "653:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "647:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "647:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "636:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "714:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_DNSSEC",
                                  "nodeType": "YulIdentifier",
                                  "src": "681:32:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "681:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "681:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "731:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "741:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "731:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_DNSSEC_$5064t_contract$_PublicSuffixList_$4034t_contract$_ENS_$12157_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "276:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "287:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "299:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "307:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "315:6:111",
                            "type": ""
                          }
                        ],
                        "src": "158:596:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "860:102:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "870:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "882:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "893:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "878:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "878:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "870:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "912:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "927:6:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "943:3:111",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "948:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "939:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "939:11:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "952:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "935:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "935:19:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "923:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "923:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "905:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "905:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "905:51:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "829:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "840:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "851:4:111",
                            "type": ""
                          }
                        ],
                        "src": "759:203:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_contract_DNSSEC(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_DNSSEC_$5064t_contract$_PublicSuffixList_$4034t_contract$_ENS_$12157_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_DNSSEC(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_DNSSEC(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_contract_DNSSEC(value_2)\n        value2 := value_2\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b50604051620021d2380380620021d28339810160408190526200003491620000f5565b6001600160a01b03831660a08190526040519081527fb3eacd0e351fafdfefdec84e1cd19679b38dbcd63ea7c2c24da17fd2bc3b3c0e9060200160405180910390a1600080546001600160a01b0319166001600160a01b0384169081179091556040519081527f9176b7f47e4504df5e5516c99d90d82ac7cbd49cc77e7f22ba2ac2f2e3a3eba89060200160405180910390a16001600160a01b031660805250620001499050565b6001600160a01b0381168114620000f257600080fd5b50565b6000806000606084860312156200010b57600080fd5b83516200011881620000dc565b60208501519093506200012b81620000dc565b60408501519092506200013e81620000dc565b809150509250925092565b60805160a051612024620001ae6000396000818161019c0152610976015260008181610175015281816104360152818161059b01528181610661015281816106f9015281816108f501528181610e6b01528181610ff0015261113b01526120246000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806329d566301161005b57806329d566301461011857806330349ebe1461012b5780633f15457f146101705780637dc0d1d01461019757600080fd5b806301ffc9a71461008d57806306963218146100b55780631ecfc411146100ca57806325916d41146100dd575b600080fd5b6100a061009b3660046118c7565b6101be565b60405190151581526020015b60405180910390f35b6100c86100c3366004611b2f565b610257565b005b6100c86100d8366004611bb8565b6106c7565b6101036100eb366004611bd5565b60016020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016100ac565b6100c8610126366004611bee565b61088b565b60005461014b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061025157507fffffffff0000000000000000000000000000000000000000000000000000000082167f2f43542800000000000000000000000000000000000000000000000000000000145b92915050565b6000806000610266878761096c565b919450925090503373ffffffffffffffffffffffffffffffffffffffff821614610317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f6e6c79206f776e65722063616e2063616c6c2070726f7665416e64436c616960448201527f6d576974685265736f6c7665720000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416156105ff5773ffffffffffffffffffffffffffffffffffffffff85166103d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f43616e6e6f74207365742061646472206966207265736f6c766572206973206e60448201527f6f74207365740000000000000000000000000000000000000000000000000000606482015260840161030e565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018490526024810183905230604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b50505050600083836040516020016104b0929190918252602082015260400190565b60408051808303601f190181529082905280516020909101207fd5fa2b000000000000000000000000000000000000000000000000000000000082526004820181905273ffffffffffffffffffffffffffffffffffffffff878116602484015290925087169063d5fa2b0090604401600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b50506040517f5b0fc9c30000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff85811660248301527f0000000000000000000000000000000000000000000000000000000000000000169250635b0fc9c39150604401600060405180830381600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b50505050506106be565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff82811660448301528681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156106a557600080fd5b505af11580156106b9573d6000803e3d6000fd5b505050505b50505050505050565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190611c52565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190611c52565b90503373ffffffffffffffffffffffffffffffffffffffff82161461081057600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040519081527f9176b7f47e4504df5e5516c99d90d82ac7cbd49cc77e7f22ba2ac2f2e3a3eba89060200160405180910390a1505050565b600080600061089a858561096c565b6040517f06ab5923000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff828116604483015293965091945092507f0000000000000000000000000000000000000000000000000000000000000000909116906306ab5923906064016020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190611c6f565b505050505050565b60008060008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bdf95fef876040518263ffffffff1660e01b81526004016109cd9190611cd8565b600060405180830381865afa1580156109ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a129190810190611d7b565b90925090506000610a238882610ccd565b60ff169050610a3488600183610cf1565b94506000610a67610a46836001611e41565b6001848c51610a559190611e54565b610a5f9190611e54565b8b9190610d15565b6000546040517f4f89059e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f89059e90610abe908490600401611e67565b602060405180830381865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff9190611e7a565b610b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f506172656e74206e616d65206d7573742062652061207075626c69632073756660448201527f6669780000000000000000000000000000000000000000000000000000000000606482015260840161030e565b610b96816000610d97565b965060008787604051602001610bb6929190918252602082015260400190565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150610bef90859063ffffffff166111c9565b610c25576040517f2dd6a7af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8616179055610c6b8a866111e2565b50809650508573ffffffffffffffffffffffffffffffffffffffff16817f87db02a0e483e2818060eddcbb3488ce44e35aff49a70d92c2aa6c8046cf01e28c87604051610cb9929190611e9c565b60405180910390a350505050509250925092565b6000828281518110610ce157610ce1611ec4565b016020015160f81c905092915050565b8251600090610d008385611e41565b1115610d0b57600080fd5b5091016020012090565b8251606090610d248385611e41565b1115610d2f57600080fd5b60008267ffffffffffffffff811115610d4a57610d4a611909565b6040519080825280601f01601f191660200182016040528015610d74576020820181803683370190505b50905060208082019086860101610d8c8282876112ce565b509095945050505050565b600080610da48484610ccd565b60ff16905080600003610dbb575060009050610251565b6000610ddb85610dcb8487611e41565b610dd6906001611e41565b610d97565b90506000610df5610ded866001611e41565b879085610cf1565b604080516020810185905290810182905290915060600160408051601f198184030181529082905280516020909101207f02571be300000000000000000000000000000000000000000000000000000000825260048201819052945060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190611c52565b905073ffffffffffffffffffffffffffffffffffffffff81161580610f10575073ffffffffffffffffffffffffffffffffffffffff811630145b610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f43616e6e6f7420656e61626c652061206e616d65206f776e656420627920736f60448201527f6d656f6e6520656c736500000000000000000000000000000000000000000000606482015260840161030e565b73ffffffffffffffffffffffffffffffffffffffff811630146111bf57826110ff576040517f02571be3000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c52565b6040517f8cb8ecec0000000000000000000000000000000000000000000000000000000081526004810185905230602482015290915073ffffffffffffffffffffffffffffffffffffffff821690638cb8ecec90604401600060405180830381600087803b1580156110e157600080fd5b505af11580156110f5573d6000803e3d6000fd5b50505050506111bf565b6040517f06ab592300000000000000000000000000000000000000000000000000000000815260048101849052602481018390523060448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906306ab5923906064016020604051808303816000875af1158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190611c6f565b505b5050505092915050565b6000806111d68385611ef3565b60030b12159392505050565b600080611202604051806040016040528060608152602001600081525090565b61121a855160056112139190611e41565b8290611342565b5060408051808201909152600581527f045f656e73000000000000000000000000000000000000000000000000000000602082015261125a9082906113a7565b5061126581866113a7565b50600061127285826113d5565b90505b805151602082015110156112bd57600080611294878460a00151611436565b9250905081156112ad579450600193506112c792505050565b50506112b8816114a7565b611275565b5060008092509250505b9250929050565b6020811061130657815183526112e5602084611e41565b92506112f2602083611e41565b91506112ff602082611e54565b90506112ce565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b604080518082019091526060815260006020820152611362602083611f35565b1561138a57611372602083611f35565b61137d906020611e54565b6113879083611e41565b91505b506020828101829052604080518085526000815290920101905290565b6040805180820190915260608152600060208201526113ce8384600001515184855161158f565b9392505050565b6114236040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c08101829052610251816114a7565b6000805b835183101561149b57600061144f8585610ccd565b60ff16905061145f600185611e41565b935060008061146f878785611697565b925090508115611487579350600192506112c7915050565b6114918387611e41565b955050505061143a565b50600093849350915050565b60c081015160208201819052815151116114be5750565b60006114d2826000015183602001516116f4565b82602001516114e19190611e41565b82519091506114f09082611756565b61ffff166040830152611504600282611e41565b82519091506115139082611756565b61ffff166060830152611527600282611e41565b8251909150611536908261177e565b63ffffffff16608083015261154c600482611e41565b825190915060009061155e9083611756565b61ffff16905061156f600283611e41565b60a0840181905291506115828183611e41565b60c0909301929092525050565b60408051808201909152606081526000602082015282518211156115b257600080fd5b60208501516115c18386611e41565b11156115f4576115f4856115e4876020015187866115df9190611e41565b6117a8565b6115ef906002611f70565b6117bf565b6000808651805187602083010193508088870111156116135787860182525b505050602084015b602084106116535780518252611632602083611e41565b915061163f602082611e41565b905061164c602085611e54565b935061161b565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6000806116a4858561177e565b63ffffffff1663613d3078146116bf575060009050806116ec565b602c8310156116d3575060009050806116ec565b6116e7856116e2866004611e41565b6117dc565b915091505b935093915050565b6000815b8351811061170857611708611f87565b60006117148583610ccd565b60ff169050611724816001611e41565b61172e9083611e41565b91508060000361173e5750611744565b506116f8565b61174e8382611e54565b949350505050565b8151600090611766836002611e41565b111561177157600080fd5b50016002015161ffff1690565b815160009061178e836004611e41565b111561179957600080fd5b50016004015163ffffffff1690565b6000818311156117b9575081610251565b50919050565b81516117cb8383611342565b506117d683826113a7565b50505050565b60008060288385516117ee9190611e54565b10156117ff575060009050806112c7565b6000835b61180e856028611e41565b8110156118bb5760049190911b9060006118288783610ccd565b60ff1690506030811015801561183e5750603a81105b156118575761184e603082611e54565b831792506118a8565b604181101580156118685750604781105b156118785761184e603782611e54565b606181101580156118895750606781105b156118995761184e605782611e54565b600080945094505050506112c7565b50806118b381611fb6565b915050611803565b50946001945092505050565b6000602082840312156118d957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113ce57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561195b5761195b611909565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561198a5761198a611909565b604052919050565b600067ffffffffffffffff8211156119ac576119ac611909565b50601f01601f191660200190565b600082601f8301126119cb57600080fd5b81356119de6119d982611992565b611961565b8181528460208386010111156119f357600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611a2157600080fd5b8135602067ffffffffffffffff80831115611a3e57611a3e611909565b8260051b611a4d838201611961565b9384528581018301938381019088861115611a6757600080fd5b84880192505b85831015611afe57823584811115611a855760008081fd5b88016040818b03601f1901811315611a9d5760008081fd5b611aa5611938565b8783013587811115611ab75760008081fd5b611ac58d8a838701016119ba565b825250908201359086821115611adb5760008081fd5b611ae98c89848601016119ba565b81890152845250509184019190840190611a6d565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b2c57600080fd5b50565b60008060008060808587031215611b4557600080fd5b843567ffffffffffffffff80821115611b5d57600080fd5b611b69888389016119ba565b95506020870135915080821115611b7f57600080fd5b50611b8c87828801611a10565b9350506040850135611b9d81611b0a565b91506060850135611bad81611b0a565b939692955090935050565b600060208284031215611bca57600080fd5b81356113ce81611b0a565b600060208284031215611be757600080fd5b5035919050565b60008060408385031215611c0157600080fd5b823567ffffffffffffffff80821115611c1957600080fd5b611c25868387016119ba565b93506020850135915080821115611c3b57600080fd5b50611c4885828601611a10565b9150509250929050565b600060208284031215611c6457600080fd5b81516113ce81611b0a565b600060208284031215611c8157600080fd5b5051919050565b60005b83811015611ca3578181015183820152602001611c8b565b50506000910152565b60008151808452611cc4816020860160208601611c88565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611d6d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552611d4188860182611cac565b91890151858303868b0152919050611d598183611cac565b968901969450505090860190600101611cff565b509098975050505050505050565b60008060408385031215611d8e57600080fd5b825167ffffffffffffffff811115611da557600080fd5b8301601f81018513611db657600080fd5b8051611dc46119d982611992565b818152866020838501011115611dd957600080fd5b611dea826020830160208601611c88565b809450505050602083015163ffffffff81168114611e0757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561025157610251611e12565b8181038181111561025157610251611e12565b6020815260006113ce6020830184611cac565b600060208284031215611e8c57600080fd5b815180151581146113ce57600080fd5b604081526000611eaf6040830185611cac565b905063ffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600382810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008112637fffffff8213171561025157610251611e12565b600082611f6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b808202811582820484141761025157610251611e12565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fe757611fe7611e12565b506001019056fea2646970667358221220ae3fe39ac561c76c0c508db809a0dfc192b44130fab21e3f254d175f52f62a1164736f6c63430008110033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x21D2 CODESIZE SUB DUP1 PUSH3 0x21D2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xF5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0xA0 DUP2 SWAP1 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xB3EACD0E351FAFDFEFDEC84E1CD19679B38DBCD63EA7C2C24DA17FD2BC3B3C0E SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x9176B7F47E4504DF5E5516C99D90D82AC7CBD49CC77E7F22BA2AC2F2E3A3EBA8 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE POP PUSH3 0x149 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x118 DUP2 PUSH3 0xDC JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x12B DUP2 PUSH3 0xDC JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x13E DUP2 PUSH3 0xDC JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x2024 PUSH3 0x1AE PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x19C ADD MSTORE PUSH2 0x976 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x175 ADD MSTORE DUP2 DUP2 PUSH2 0x436 ADD MSTORE DUP2 DUP2 PUSH2 0x59B ADD MSTORE DUP2 DUP2 PUSH2 0x661 ADD MSTORE DUP2 DUP2 PUSH2 0x6F9 ADD MSTORE DUP2 DUP2 PUSH2 0x8F5 ADD MSTORE DUP2 DUP2 PUSH2 0xE6B ADD MSTORE DUP2 DUP2 PUSH2 0xFF0 ADD MSTORE PUSH2 0x113B ADD MSTORE PUSH2 0x2024 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x29D56630 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x29D56630 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x30349EBE EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x6963218 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x1ECFC411 EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x25916D41 EQ PUSH2 0xDD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x18C7 JUMP JUMPDEST PUSH2 0x1BE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B2F JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC8 PUSH2 0xD8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BB8 JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x103 PUSH2 0xEB CALLDATASIZE PUSH1 0x4 PUSH2 0x1BD5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BEE JUMP JUMPDEST PUSH2 0x88B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x14B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x14B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x14B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x251 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x2F43542800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x266 DUP8 DUP8 PUSH2 0x96C JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x317 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206F776E65722063616E2063616C6C2070726F7665416E64436C6169 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D576974685265736F6C76657200000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO PUSH2 0x5FF JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x3D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F74207365742061646472206966207265736F6C766572206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207365740000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x48E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4B0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0xD5FA2B0000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x24 DUP5 ADD MSTORE SWAP1 SWAP3 POP DUP8 AND SWAP1 PUSH4 0xD5FA2B00 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x54D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x5B0FC9C300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP3 POP PUSH4 0x5B0FC9C3 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x755 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x779 SWAP2 SWAP1 PUSH2 0x1C52 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7EC SWAP2 SWAP1 PUSH2 0x1C52 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x9176B7F47E4504DF5E5516C99D90D82AC7CBD49CC77E7F22BA2AC2F2E3A3EBA8 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x89A DUP6 DUP6 PUSH2 0x96C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x940 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x964 SWAP2 SWAP1 PUSH2 0x1C6F JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBDF95FEF DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9CD SWAP2 SWAP1 PUSH2 0x1CD8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xA12 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1D7B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0xA23 DUP9 DUP3 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xA34 DUP9 PUSH1 0x1 DUP4 PUSH2 0xCF1 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0xA67 PUSH2 0xA46 DUP4 PUSH1 0x1 PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0x1 DUP5 DUP13 MLOAD PUSH2 0xA55 SWAP2 SWAP1 PUSH2 0x1E54 JUMP JUMPDEST PUSH2 0xA5F SWAP2 SWAP1 PUSH2 0x1E54 JUMP JUMPDEST DUP12 SWAP2 SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4F89059E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x4F89059E SWAP1 PUSH2 0xABE SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAFF SWAP2 SWAP1 PUSH2 0x1E7A JUMP JUMPDEST PUSH2 0xB8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506172656E74206E616D65206D7573742062652061207075626C696320737566 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6669780000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30E JUMP JUMPDEST PUSH2 0xB96 DUP2 PUSH1 0x0 PUSH2 0xD97 JUMP JUMPDEST SWAP7 POP PUSH1 0x0 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBB6 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xBEF SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF AND PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0xC25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2DD6A7AF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF DUP7 AND OR SWAP1 SSTORE PUSH2 0xC6B DUP11 DUP7 PUSH2 0x11E2 JUMP JUMPDEST POP DUP1 SWAP7 POP POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x87DB02A0E483E2818060EDDCBB3488CE44E35AFF49A70D92C2AA6C8046CF01E2 DUP13 DUP8 PUSH1 0x40 MLOAD PUSH2 0xCB9 SWAP3 SWAP2 SWAP1 PUSH2 0x1E9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCE1 JUMPI PUSH2 0xCE1 PUSH2 0x1EC4 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xD00 DUP4 DUP6 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0xD0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xD24 DUP4 DUP6 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0xD2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD4A JUMPI PUSH2 0xD4A PUSH2 0x1909 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD74 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0xD8C DUP3 DUP3 DUP8 PUSH2 0x12CE JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDA4 DUP5 DUP5 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP DUP1 PUSH1 0x0 SUB PUSH2 0xDBB JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x251 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP6 PUSH2 0xDCB DUP5 DUP8 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0xDD6 SWAP1 PUSH1 0x1 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0xD97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDF5 PUSH2 0xDED DUP7 PUSH1 0x1 PUSH2 0x1E41 JUMP JUMPDEST DUP8 SWAP1 DUP6 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP5 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xED6 SWAP2 SWAP1 PUSH2 0x1C52 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 PUSH2 0xF10 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ JUMPDEST PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F7420656E61626C652061206E616D65206F776E656420627920736F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D656F6E6520656C736500000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0x11BF JUMPI DUP3 PUSH2 0x10FF JUMPI PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x104C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1070 SWAP2 SWAP1 PUSH2 0x1C52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8CB8ECEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x8CB8ECEC SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1199 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11BD SWAP2 SWAP1 PUSH2 0x1C6F JUMP JUMPDEST POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11D6 DUP4 DUP6 PUSH2 0x1EF3 JUMP JUMPDEST PUSH1 0x3 SIGNEXTEND SLT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1202 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x121A DUP6 MLOAD PUSH1 0x5 PUSH2 0x1213 SWAP2 SWAP1 PUSH2 0x1E41 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1342 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x45F656E73000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x125A SWAP1 DUP3 SWAP1 PUSH2 0x13A7 JUMP JUMPDEST POP PUSH2 0x1265 DUP2 DUP7 PUSH2 0x13A7 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1272 DUP6 DUP3 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x12BD JUMPI PUSH1 0x0 DUP1 PUSH2 0x1294 DUP8 DUP5 PUSH1 0xA0 ADD MLOAD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x12AD JUMPI SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x12C7 SWAP3 POP POP POP JUMP JUMPDEST POP POP PUSH2 0x12B8 DUP2 PUSH2 0x14A7 JUMP JUMPDEST PUSH2 0x1275 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1306 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x12E5 PUSH1 0x20 DUP5 PUSH2 0x1E41 JUMP JUMPDEST SWAP3 POP PUSH2 0x12F2 PUSH1 0x20 DUP4 PUSH2 0x1E41 JUMP JUMPDEST SWAP2 POP PUSH2 0x12FF PUSH1 0x20 DUP3 PUSH2 0x1E54 JUMP JUMPDEST SWAP1 POP PUSH2 0x12CE JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1362 PUSH1 0x20 DUP4 PUSH2 0x1F35 JUMP JUMPDEST ISZERO PUSH2 0x138A JUMPI PUSH2 0x1372 PUSH1 0x20 DUP4 PUSH2 0x1F35 JUMP JUMPDEST PUSH2 0x137D SWAP1 PUSH1 0x20 PUSH2 0x1E54 JUMP JUMPDEST PUSH2 0x1387 SWAP1 DUP4 PUSH2 0x1E41 JUMP JUMPDEST SWAP2 POP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP6 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 ADD ADD SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x13CE DUP4 DUP5 PUSH1 0x0 ADD MLOAD MLOAD DUP5 DUP6 MLOAD PUSH2 0x158F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1423 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x251 DUP2 PUSH2 0x14A7 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP4 LT ISZERO PUSH2 0x149B JUMPI PUSH1 0x0 PUSH2 0x144F DUP6 DUP6 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x145F PUSH1 0x1 DUP6 PUSH2 0x1E41 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP1 PUSH2 0x146F DUP8 DUP8 DUP6 PUSH2 0x1697 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x1487 JUMPI SWAP4 POP PUSH1 0x1 SWAP3 POP PUSH2 0x12C7 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1491 DUP4 DUP8 PUSH2 0x1E41 JUMP JUMPDEST SWAP6 POP POP POP POP PUSH2 0x143A JUMP JUMPDEST POP PUSH1 0x0 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0x14BE JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14D2 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x16F4 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x14E1 SWAP2 SWAP1 PUSH2 0x1E41 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x14F0 SWAP1 DUP3 PUSH2 0x1756 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1504 PUSH1 0x2 DUP3 PUSH2 0x1E41 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1513 SWAP1 DUP3 PUSH2 0x1756 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1527 PUSH1 0x2 DUP3 PUSH2 0x1E41 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1536 SWAP1 DUP3 PUSH2 0x177E JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x154C PUSH1 0x4 DUP3 PUSH2 0x1E41 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x155E SWAP1 DUP4 PUSH2 0x1756 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0x156F PUSH1 0x2 DUP4 PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0x1582 DUP2 DUP4 PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 MLOAD DUP3 GT ISZERO PUSH2 0x15B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH2 0x15C1 DUP4 DUP7 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0x15F4 JUMPI PUSH2 0x15F4 DUP6 PUSH2 0x15E4 DUP8 PUSH1 0x20 ADD MLOAD DUP8 DUP7 PUSH2 0x15DF SWAP2 SWAP1 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0x17A8 JUMP JUMPDEST PUSH2 0x15EF SWAP1 PUSH1 0x2 PUSH2 0x1F70 JUMP JUMPDEST PUSH2 0x17BF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 MLOAD DUP1 MLOAD DUP8 PUSH1 0x20 DUP4 ADD ADD SWAP4 POP DUP1 DUP9 DUP8 ADD GT ISZERO PUSH2 0x1613 JUMPI DUP8 DUP7 ADD DUP3 MSTORE JUMPDEST POP POP POP PUSH1 0x20 DUP5 ADD JUMPDEST PUSH1 0x20 DUP5 LT PUSH2 0x1653 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH2 0x1632 PUSH1 0x20 DUP4 PUSH2 0x1E41 JUMP JUMPDEST SWAP2 POP PUSH2 0x163F PUSH1 0x20 DUP3 PUSH2 0x1E41 JUMP JUMPDEST SWAP1 POP PUSH2 0x164C PUSH1 0x20 DUP6 PUSH2 0x1E54 JUMP JUMPDEST SWAP4 POP PUSH2 0x161B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP7 SWAP1 SUB PUSH2 0x100 EXP ADD SWAP1 DUP2 AND SWAP1 NOT SWAP2 SWAP1 SWAP2 AND OR SWAP1 MSTORE POP DUP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16A4 DUP6 DUP6 PUSH2 0x177E JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH4 0x613D3078 EQ PUSH2 0x16BF JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x16EC JUMP JUMPDEST PUSH1 0x2C DUP4 LT ISZERO PUSH2 0x16D3 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x16E7 DUP6 PUSH2 0x16E2 DUP7 PUSH1 0x4 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0x1708 JUMPI PUSH2 0x1708 PUSH2 0x1F87 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1714 DUP6 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1724 DUP2 PUSH1 0x1 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0x172E SWAP1 DUP4 PUSH2 0x1E41 JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0x173E JUMPI POP PUSH2 0x1744 JUMP JUMPDEST POP PUSH2 0x16F8 JUMP JUMPDEST PUSH2 0x174E DUP4 DUP3 PUSH2 0x1E54 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1766 DUP4 PUSH1 0x2 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0x1771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x178E DUP4 PUSH1 0x4 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0x1799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x17B9 JUMPI POP DUP2 PUSH2 0x251 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH2 0x17CB DUP4 DUP4 PUSH2 0x1342 JUMP JUMPDEST POP PUSH2 0x17D6 DUP4 DUP3 PUSH2 0x13A7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x28 DUP4 DUP6 MLOAD PUSH2 0x17EE SWAP2 SWAP1 PUSH2 0x1E54 JUMP JUMPDEST LT ISZERO PUSH2 0x17FF JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x12C7 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST PUSH2 0x180E DUP6 PUSH1 0x28 PUSH2 0x1E41 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x18BB JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHL SWAP1 PUSH1 0x0 PUSH2 0x1828 DUP8 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH1 0x30 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x183E JUMPI POP PUSH1 0x3A DUP2 LT JUMPDEST ISZERO PUSH2 0x1857 JUMPI PUSH2 0x184E PUSH1 0x30 DUP3 PUSH2 0x1E54 JUMP JUMPDEST DUP4 OR SWAP3 POP PUSH2 0x18A8 JUMP JUMPDEST PUSH1 0x41 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x1868 JUMPI POP PUSH1 0x47 DUP2 LT JUMPDEST ISZERO PUSH2 0x1878 JUMPI PUSH2 0x184E PUSH1 0x37 DUP3 PUSH2 0x1E54 JUMP JUMPDEST PUSH1 0x61 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI POP PUSH1 0x67 DUP2 LT JUMPDEST ISZERO PUSH2 0x1899 JUMPI PUSH2 0x184E PUSH1 0x57 DUP3 PUSH2 0x1E54 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x12C7 JUMP JUMPDEST POP DUP1 PUSH2 0x18B3 DUP2 PUSH2 0x1FB6 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1803 JUMP JUMPDEST POP SWAP5 PUSH1 0x1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x13CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x195B JUMPI PUSH2 0x195B PUSH2 0x1909 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x198A JUMPI PUSH2 0x198A PUSH2 0x1909 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x19AC JUMPI PUSH2 0x19AC PUSH2 0x1909 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x19CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x19DE PUSH2 0x19D9 DUP3 PUSH2 0x1992 JUMP JUMPDEST PUSH2 0x1961 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x19F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 GT ISZERO PUSH2 0x1A3E JUMPI PUSH2 0x1A3E PUSH2 0x1909 JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x1A4D DUP4 DUP3 ADD PUSH2 0x1961 JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x1A67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x1AFE JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x1A85 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP9 ADD PUSH1 0x40 DUP2 DUP12 SUB PUSH1 0x1F NOT ADD DUP2 SGT ISZERO PUSH2 0x1A9D JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1AA5 PUSH2 0x1938 JUMP JUMPDEST DUP8 DUP4 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1AB7 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1AC5 DUP14 DUP11 DUP4 DUP8 ADD ADD PUSH2 0x19BA JUMP JUMPDEST DUP3 MSTORE POP SWAP1 DUP3 ADD CALLDATALOAD SWAP1 DUP7 DUP3 GT ISZERO PUSH2 0x1ADB JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1AE9 DUP13 DUP10 DUP5 DUP7 ADD ADD PUSH2 0x19BA JUMP JUMPDEST DUP2 DUP10 ADD MSTORE DUP5 MSTORE POP POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1A6D JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1B2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B69 DUP9 DUP4 DUP10 ADD PUSH2 0x19BA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1B7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B8C DUP8 DUP3 DUP9 ADD PUSH2 0x1A10 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x1B9D DUP2 PUSH2 0x1B0A JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x1BAD DUP2 PUSH2 0x1B0A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13CE DUP2 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1C19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C25 DUP7 DUP4 DUP8 ADD PUSH2 0x19BA JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C48 DUP6 DUP3 DUP7 ADD PUSH2 0x1A10 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13CE DUP2 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1CA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C8B JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1CC4 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1C88 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 SWAP3 POP DUP3 DUP7 ADD SWAP2 POP DUP3 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD DUP5 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D6D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP10 DUP5 SUB ADD DUP6 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 DUP6 MSTORE PUSH2 0x1D41 DUP9 DUP7 ADD DUP3 PUSH2 0x1CAC JUMP JUMPDEST SWAP2 DUP10 ADD MLOAD DUP6 DUP4 SUB DUP7 DUP12 ADD MSTORE SWAP2 SWAP1 POP PUSH2 0x1D59 DUP2 DUP4 PUSH2 0x1CAC JUMP JUMPDEST SWAP7 DUP10 ADD SWAP7 SWAP5 POP POP POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1CFF JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1DB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1DC4 PUSH2 0x19D9 DUP3 PUSH2 0x1992 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x1DD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DEA DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1C88 JUMP JUMPDEST DUP1 SWAP5 POP POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x251 JUMPI PUSH2 0x251 PUSH2 0x1E12 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x251 JUMPI PUSH2 0x251 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x13CE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1CAC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x13CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1EAF PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1CAC JUMP JUMPDEST SWAP1 POP PUSH4 0xFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP3 DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000 DUP2 SLT PUSH4 0x7FFFFFFF DUP3 SGT OR ISZERO PUSH2 0x251 JUMPI PUSH2 0x251 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1F6B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x251 JUMPI PUSH2 0x251 PUSH2 0x1E12 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1FE7 JUMPI PUSH2 0x1FE7 PUSH2 0x1E12 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE EXTCODEHASH 0xE3 SWAP11 0xC5 PUSH2 0xC76C 0xC POP DUP14 0xB8 MULMOD LOG0 0xDF 0xC1 SWAP3 0xB4 COINBASE ADDRESS STATICCALL 0xB2 0x1E EXTCODEHASH 0x25 0x4D OR 0x5F MSTORE 0xF6 0x2A GT PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "728:5653:19:-:0;;;1506:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1612:16:19;;;;;;1643:26;;905:51:111;;;1643:26:19;;893:2:111;878:18;1643:26:19;;;;;;;1679:8;:20;;-1:-1:-1;;;;;;1679:20:19;-1:-1:-1;;;;;1679:20:19;;;;;;;;1714:38;;905:51:111;;;1714:38:19;;893:2:111;878:18;1714:38:19;;;;;;;-1:-1:-1;;;;;1762:10:19;;;-1:-1:-1;728:5653:19;;-1:-1:-1;728:5653:19;14:139:111;-1:-1:-1;;;;;97:31:111;;87:42;;77:70;;143:1;140;133:12;77:70;14:139;:::o;158:596::-;299:6;307;315;368:2;356:9;347:7;343:23;339:32;336:52;;;384:1;381;374:12;336:52;416:9;410:16;435:39;468:5;435:39;:::i;:::-;543:2;528:18;;522:25;493:5;;-1:-1:-1;556:41:111;522:25;556:41;:::i;:::-;668:2;653:18;;647:25;616:7;;-1:-1:-1;681:41:111;647:25;681:41;:::i;:::-;741:7;731:17;;;158:596;;;;;:::o;759:203::-;728:5653:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_claim_3862": {
                  "entryPoint": 2412,
                  "id": 3862,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "@append_264": {
                  "entryPoint": 5031,
                  "id": 264,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@done_6366": {
                  "entryPoint": null,
                  "id": 6366,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@enableNode_3997": {
                  "entryPoint": 3479,
                  "id": 3997,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@ens_3461": {
                  "entryPoint": null,
                  "id": 3461,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getOwnerAddress_3204": {
                  "entryPoint": 4578,
                  "id": 3204,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@hexToAddress_3430": {
                  "entryPoint": 6108,
                  "id": 3430,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@inceptions_3471": {
                  "entryPoint": null,
                  "id": 3471,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@init_45": {
                  "entryPoint": 4930,
                  "id": 45,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@iterateRRs_6349": {
                  "entryPoint": 5077,
                  "id": 6349,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@keccak_4263": {
                  "entryPoint": 3313,
                  "id": 4263,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@max_117": {
                  "entryPoint": 6056,
                  "id": 117,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@memcpy_4702": {
                  "entryPoint": 4814,
                  "id": 4702,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@nameLength_6069": {
                  "entryPoint": 5876,
                  "id": 6069,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@next_6470": {
                  "entryPoint": 5287,
                  "id": 6470,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@oracle_3464": {
                  "entryPoint": null,
                  "id": 3464,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@parseRR_3266": {
                  "entryPoint": 5174,
                  "id": 3266,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@parseString_3312": {
                  "entryPoint": 5783,
                  "id": 3312,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@proveAndClaimWithResolver_3724": {
                  "entryPoint": 599,
                  "id": 3724,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@proveAndClaim_3623": {
                  "entryPoint": 2187,
                  "id": 3623,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@readUint16_4572": {
                  "entryPoint": 5974,
                  "id": 4572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint32_4592": {
                  "entryPoint": 6014,
                  "id": 4592,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 3277,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@resize_98": {
                  "entryPoint": 6079,
                  "id": 98,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@serialNumberGte_6855": {
                  "entryPoint": 4553,
                  "id": 6855,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@setPublicSuffixList_3592": {
                  "entryPoint": 1735,
                  "id": 3592,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@substring_4745": {
                  "entryPoint": 3349,
                  "id": 4745,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@suffixes_3467": {
                  "entryPoint": null,
                  "id": 3467,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@supportsInterface_3747": {
                  "entryPoint": 446,
                  "id": 3747,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@write_217": {
                  "entryPoint": 5519,
                  "id": 217,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_RRSetWithSignature_dyn": {
                  "entryPoint": 6672,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 6586,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 7250,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 7802,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 7125,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 7279,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 6343,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 7150,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptrt_addresst_address": {
                  "entryPoint": 6959,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_uint32_fromMemory": {
                  "entryPoint": 7547,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_contract$_PublicSuffixList_$4034": {
                  "entryPoint": 7096,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 7340,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 7384,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_rational_0_by_1__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 7783,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_uint32__to_t_bytes_memory_ptr_t_uint32__fromStack_reversed": {
                  "entryPoint": 7836,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_DNSSEC_$5064__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_PublicSuffixList_$4034__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_297b4c7c1b9fec22a1821926e7017e161faf6963a6ae7f899041d3c4552e210d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5df6cb05960cf5aa4f7482cb9ceb06b354899f3958a55d842cf18bd9cb0b227a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_63425cf3a05c76cf1155c52bcdbd99eb1081a9ada1a588d0e70852574c220981__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b003183625557b6442c6172435dc558d6e00259050f549715eafea85c3852041__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 6497,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_2046": {
                  "entryPoint": 6456,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 6546,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 7745,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 8048,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_int32": {
                  "entryPoint": 7923,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 7764,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 7304,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 8118,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 7989,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x01": {
                  "entryPoint": 8071,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x11": {
                  "entryPoint": 7698,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 7876,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 6409,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 6922,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:16065:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "575:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "592:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "595:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "585:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "585:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "585:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "689:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "692:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "682:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "682:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "682:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "713:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "716:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "706:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "706:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "706:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "543:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "778:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "788:21:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "804:4:111",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "798:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "798:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "788:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "818:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "840:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "848:4:111",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "836:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "836:17:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "822:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "928:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "930:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "930:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "930:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "871:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "883:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "868:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "868:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "907:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "919:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "904:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "904:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "865:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "865:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "862:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "966:4:111",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "972:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "959:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "959:24:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "959:24:111"
                            }
                          ]
                        },
                        "name": "allocate_memory_2046",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "767:6:111",
                            "type": ""
                          }
                        ],
                        "src": "732:257:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1039:289:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1049:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1065:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1059:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1049:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1077:117:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "1115:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1121:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1111:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1111:13:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1126:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1107:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1107:86:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1095:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1095:99:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1081:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1269:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1271:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1271:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1271:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1212:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1224:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1209:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1248:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1260:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1245:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1245:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1206:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1206:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1203:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1307:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1311:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1300:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1300:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1300:22:111"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "1019:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "1028:6:111",
                            "type": ""
                          }
                        ],
                        "src": "994:334:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1390:188:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1434:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1436:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1436:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1436:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1406:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1414:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1403:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1403:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1400:56:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1465:107:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1485:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1493:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1481:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1481:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1498:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1477:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1477:88:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1567:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1473:99:111"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "1465:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1370:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "1381:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1333:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1635:410:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1684:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1693:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1696:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1686:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1686:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1686:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1663:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1671:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1659:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1659:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1678:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1655:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1655:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1648:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1645:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1709:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1732:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1719:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1719:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1713:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1748:63:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1807:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "1779:27:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1779:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1763:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1763:48:111"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1752:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1827:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1836:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1820:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1820:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1820:19:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1887:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1896:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1899:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1889:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1889:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1889:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1862:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1870:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1858:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1858:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1875:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1854:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1854:26:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1882:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1851:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1851:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1848:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1929:7:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1938:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1925:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1925:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1949:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1957:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1945:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1945:17:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1964:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1912:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1912:55:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1912:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1991:7:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2000:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1987:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1987:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2005:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1983:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1983:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2012:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1976:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1976:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1976:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2023:16:111",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "2032:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "2023:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1609:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1617:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1625:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1583:462:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2132:1659:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2181:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2190:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2193:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2183:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2183:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2183:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2160:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2168:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2156:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2156:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2175:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2152:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2152:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2145:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2145:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2142:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2206:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2229:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2216:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2216:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2210:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2245:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2255:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2249:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2268:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2278:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2272:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2319:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2321:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2321:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2321:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2311:2:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2315:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2308:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2308:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2305:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2350:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2364:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2367:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "2360:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2360:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2354:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2379:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2410:2:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2414:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2406:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2406:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2390:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2390:28:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "2383:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2427:16:111",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "2440:3:111"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2431:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2459:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2464:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2452:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2452:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2452:15:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2476:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2487:3:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2492:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2483:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2483:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "2476:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2504:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2526:6:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2534:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2522:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2522:15:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2539:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2518:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2518:24:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "2508:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2570:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2579:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2582:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2572:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2572:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2572:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2557:6:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "2565:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2554:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2554:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2551:35:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2595:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2610:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2618:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2606:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2606:15:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "2599:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2686:1076:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2700:36:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2732:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2719:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2719:17:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "2704:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2784:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "2802:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2812:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulTypedName",
                                              "src": "2806:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "2837:2:111"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "2841:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "2830:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2830:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2830:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "2755:11:111"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "2768:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2752:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2752:19:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2749:109:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2871:34:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "2885:6:111"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "2893:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2881:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2881:24:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "2875:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2918:14:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2928:4:111",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "2922:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3055:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "3073:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3083:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_8",
                                              "nodeType": "YulTypedName",
                                              "src": "3077:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_8",
                                                "nodeType": "YulIdentifier",
                                                "src": "3108:2:111"
                                              },
                                              {
                                                "name": "_8",
                                                "nodeType": "YulIdentifier",
                                                "src": "3112:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "3101:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3101:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3101:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "end",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2960:3:111"
                                                },
                                                {
                                                  "name": "_6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2965:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "2956:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2956:12:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2970:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2952:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2952:85:111"
                                        },
                                        {
                                          "name": "_7",
                                          "nodeType": "YulIdentifier",
                                          "src": "3039:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2948:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2948:94:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2945:184:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3142:35:111",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_2046",
                                        "nodeType": "YulIdentifier",
                                        "src": "3155:20:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3155:22:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "3146:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3190:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "3223:2:111"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "3227:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3219:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3219:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "3206:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3206:25:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulTypedName",
                                        "src": "3194:8:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3276:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "3294:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3304:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_9",
                                              "nodeType": "YulTypedName",
                                              "src": "3298:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_9",
                                                "nodeType": "YulIdentifier",
                                                "src": "3329:2:111"
                                              },
                                              {
                                                "name": "_9",
                                                "nodeType": "YulIdentifier",
                                                "src": "3333:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "3322:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3322:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3322:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "offset_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3250:8:111"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "3260:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3247:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3247:16:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3244:106:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "3370:5:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3402:2:111"
                                                    },
                                                    {
                                                      "name": "offset_1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3406:8:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3398:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3398:17:111"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3417:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3394:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3394:26:111"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "3422:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_bytes",
                                            "nodeType": "YulIdentifier",
                                            "src": "3377:16:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3377:49:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3363:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3363:64:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3363:64:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3440:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "3473:2:111"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "3477:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3469:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3469:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "3456:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3456:25:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulTypedName",
                                        "src": "3444:8:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3526:77:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "3544:12:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3555:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_10",
                                              "nodeType": "YulTypedName",
                                              "src": "3548:3:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_10",
                                                "nodeType": "YulIdentifier",
                                                "src": "3580:3:111"
                                              },
                                              {
                                                "name": "_10",
                                                "nodeType": "YulIdentifier",
                                                "src": "3585:3:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "3573:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3573:16:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3573:16:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "offset_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "3500:8:111"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "3510:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3497:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3497:16:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3494:109:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "3627:5:111"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "3634:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3623:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3623:14:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3664:2:111"
                                                    },
                                                    {
                                                      "name": "offset_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3668:8:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3660:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3660:17:111"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3679:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3656:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3656:26:111"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "3684:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_bytes",
                                            "nodeType": "YulIdentifier",
                                            "src": "3639:16:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3639:49:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3616:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3616:73:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3616:73:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "3709:3:111"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "3714:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3702:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3702:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3702:18:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3733:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "3744:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "3749:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3740:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3740:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "3733:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "2641:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2646:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2638:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2638:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2654:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2656:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2667:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2672:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2663:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2663:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "2656:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2634:3:111",
                                "statements": []
                              },
                              "src": "2630:1132:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3771:14:111",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "3780:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "3771:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_RRSetWithSignature_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2106:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2114:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2122:5:111",
                            "type": ""
                          }
                        ],
                        "src": "2050:1741:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3841:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3928:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3937:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3940:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3930:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3930:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3930:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3864:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3875:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3882:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3871:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3871:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3861:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3861:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3854:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3854:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3851:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3830:5:111",
                            "type": ""
                          }
                        ],
                        "src": "3796:154:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4146:707:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4193:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4202:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4205:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4195:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4195:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4195:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4167:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4176:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4163:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4163:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4188:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4159:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4159:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4156:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4218:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4245:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4232:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4232:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4222:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4264:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4274:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4268:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4319:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4328:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4331:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4321:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4321:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4321:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4307:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4315:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4304:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4304:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4301:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4344:59:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4375:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4386:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4371:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4371:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4395:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4354:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4354:49:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4344:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4412:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4445:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4456:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4441:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4441:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4428:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4428:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4416:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4489:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4498:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4501:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4491:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4491:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4491:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4475:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4485:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4472:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4472:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4469:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4514:91:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4575:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4586:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4571:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4571:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4597:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_RRSetWithSignature_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4524:46:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4524:81:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4514:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4614:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4644:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4655:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4640:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4640:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4627:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4627:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4618:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4693:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4668:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4668:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4668:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4708:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4718:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4708:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4732:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4764:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4775:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4760:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4760:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4747:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4747:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4736:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4813:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4788:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4788:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4788:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4830:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4840:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4830:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptrt_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4088:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4099:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4111:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4119:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4127:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4135:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3955:898:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4953:177:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4999:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5008:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5011:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5001:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5001:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5001:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4974:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4983:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4970:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4970:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4995:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4966:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4966:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4963:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5024:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5050:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5037:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5037:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5028:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5094:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5069:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5069:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5069:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5109:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5119:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5109:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_PublicSuffixList_$4034",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4919:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4930:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4942:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4858:272:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5205:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5251:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5260:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5263:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5253:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5253:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5253:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5226:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5235:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5222:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5222:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5247:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5218:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5218:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5215:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5276:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5299:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5286:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5286:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5276:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5171:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5182:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5194:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5135:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5419:93:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5429:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5441:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5452:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5437:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5437:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5429:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5471:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5486:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5494:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5482:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5482:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5464:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5464:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5464:42:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5388:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5399:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5410:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5320:192:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5674:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5720:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5729:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5732:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5722:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5722:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5722:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5695:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5704:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5691:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5691:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5716:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5687:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5687:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5684:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5745:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5772:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5759:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5759:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5749:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5791:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5801:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5795:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5846:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5855:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5858:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5848:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5848:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5848:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5834:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5842:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5831:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5831:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5828:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5871:59:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5902:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5913:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5898:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5898:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5922:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5881:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5881:49:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5871:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5939:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5972:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5983:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5968:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5968:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5955:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5955:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5943:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6016:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6025:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6028:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6018:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6018:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6018:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6002:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6012:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5999:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5999:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5996:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6041:91:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6102:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6113:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6098:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6098:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6124:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_RRSetWithSignature_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "6051:46:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6051:81:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6041:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5632:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5643:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5655:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5663:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5517:621:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6269:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6279:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6291:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6302:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6287:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6287:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6279:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6321:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6336:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6344:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6332:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6332:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6314:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6314:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_PublicSuffixList_$4034__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6238:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6249:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6260:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6143:251:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6513:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6523:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6535:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6546:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6531:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6531:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6523:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6565:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6580:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6588:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6576:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6576:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6558:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6558:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6558:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6482:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6493:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6504:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6399:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6759:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6769:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6781:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6792:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6777:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6777:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6811:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6826:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6834:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6822:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6822:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6804:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6804:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6804:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_DNSSEC_$5064__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6728:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6739:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6750:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6643:241:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7063:235:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7080:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7091:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7073:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7073:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7073:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7114:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7125:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7110:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7110:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7130:2:111",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7103:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7153:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7164:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7149:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7149:18:111"
                                  },
                                  {
                                    "hexValue": "4f6e6c79206f776e65722063616e2063616c6c2070726f7665416e64436c6169",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7169:34:111",
                                    "type": "",
                                    "value": "Only owner can call proveAndClai"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7142:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7142:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7142:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7224:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7235:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7220:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7220:18:111"
                                  },
                                  {
                                    "hexValue": "6d576974685265736f6c766572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7240:15:111",
                                    "type": "",
                                    "value": "mWithResolver"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7213:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7213:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7213:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7265:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7277:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7288:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7273:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7273:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7265:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b003183625557b6442c6172435dc558d6e00259050f549715eafea85c3852041__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7040:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7054:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6889:409:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7477:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7494:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7505:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7487:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7487:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7487:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7528:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7539:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7524:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7524:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7544:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7517:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7517:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7517:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7567:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7578:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7563:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7563:18:111"
                                  },
                                  {
                                    "hexValue": "43616e6e6f74207365742061646472206966207265736f6c766572206973206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7583:34:111",
                                    "type": "",
                                    "value": "Cannot set addr if resolver is n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7556:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7556:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7556:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7638:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7649:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7634:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7634:18:111"
                                  },
                                  {
                                    "hexValue": "6f7420736574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7654:8:111",
                                    "type": "",
                                    "value": "ot set"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7627:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7627:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7627:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7672:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7684:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7695:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7680:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7680:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7672:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_297b4c7c1b9fec22a1821926e7017e161faf6963a6ae7f899041d3c4552e210d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7454:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7468:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7303:402:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7930:354:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7940:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7952:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7963:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7948:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7948:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7940:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7983:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7994:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7976:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7976:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7976:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8021:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8032:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8017:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8017:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8037:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8010:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8010:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8010:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8053:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8063:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8057:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8125:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8136:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8121:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8121:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8145:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8153:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8141:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8141:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8114:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8114:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8114:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8177:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8188:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8173:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8173:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "8197:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8205:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8193:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8193:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8166:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8166:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8229:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8240:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8225:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8225:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "8250:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8258:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8246:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8246:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8218:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8218:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8218:60:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_rational_0_by_1__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7867:9:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7878:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7886:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7894:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7902:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7910:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7921:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7710:574:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8436:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8453:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8458:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8446:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8446:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8446:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8485:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8490:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8481:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8481:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8495:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8474:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8474:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8474:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8511:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8522:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8527:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8518:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8518:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "8511:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "8404:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8409:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8417:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8428:3:111",
                            "type": ""
                          }
                        ],
                        "src": "8289:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8670:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8680:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8692:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8703:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8688:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8688:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8680:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8722:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8733:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8715:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8715:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8715:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8760:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8771:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8756:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8756:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8780:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8788:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8776:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8776:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8749:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8749:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8749:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8631:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8642:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8650:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8661:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8541:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8944:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8954:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8966:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8977:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8962:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8962:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8954:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8996:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9007:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8989:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8989:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8989:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8913:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8924:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8935:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8843:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9106:170:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9152:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9161:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9164:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9154:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9154:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9154:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9127:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9136:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9123:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9123:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9148:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9119:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9119:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9116:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9177:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9196:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9190:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9190:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9181:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9240:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9215:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9215:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9215:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9255:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9265:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9255:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9072:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9083:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9095:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9025:251:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9382:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9392:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9404:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9415:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9400:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9400:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9392:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9434:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9449:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9457:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9445:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9445:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9427:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9427:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9427:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9351:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9362:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9373:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9281:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9669:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9679:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9691:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9702:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9687:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9687:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9679:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9721:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9732:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9714:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9714:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9714:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9759:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9770:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9755:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9755:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9775:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9748:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9748:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9748:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9802:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9813:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9798:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9798:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9822:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9830:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9818:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9818:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9791:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9791:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9791:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9622:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9633:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9641:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9649:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9660:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9512:368:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9966:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10012:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10021:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10024:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10014:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10014:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10014:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9987:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9996:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9983:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9983:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10008:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9979:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9979:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9976:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10037:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10053:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10047:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10047:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10037:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9932:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9943:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9955:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9885:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10140:184:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10150:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10159:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10154:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10219:63:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "10244:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "10249:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10240:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10240:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10263:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10268:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10259:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10259:11:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10253:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10253:18:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10233:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10233:39:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10233:39:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10180:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10183:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10177:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10177:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10191:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10193:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10202:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10205:2:111",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10198:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10198:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10193:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10173:3:111",
                                "statements": []
                              },
                              "src": "10169:113:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "10302:3:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10307:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10298:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10298:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10316:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10291:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10291:27:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10291:27:111"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "10118:3:111",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "10123:3:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10128:6:111",
                            "type": ""
                          }
                        ],
                        "src": "10074:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10378:280:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10388:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10408:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10402:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10402:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10392:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10430:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10435:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10423:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10423:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10423:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "10490:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10497:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10486:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10486:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10508:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10513:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10504:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10504:14:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10520:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "10451:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10451:76:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10451:76:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10536:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10551:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "10564:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10572:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "10560:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10560:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10577:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "10556:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10556:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10547:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10547:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10647:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10543:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10543:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "10536:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "10355:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "10362:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10370:3:111",
                            "type": ""
                          }
                        ],
                        "src": "10329:329:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10886:1005:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10896:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10906:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10900:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10917:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10935:9:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10946:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10931:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10931:18:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10921:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10965:9:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10976:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10958:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10958:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10958:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10988:17:111",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "10999:6:111"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "10992:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11014:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11034:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11028:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11028:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11018:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11057:6:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11065:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11050:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11050:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11050:22:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11081:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11091:2:111",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11085:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11102:25:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11113:9:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11124:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11109:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11109:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "11102:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11136:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11158:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11173:1:111",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "11176:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "11169:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11169:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11154:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11154:30:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11186:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11150:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11150:39:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11140:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11198:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11216:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11224:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11212:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11212:15:111"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11202:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11236:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11245:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "11240:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11304:558:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11325:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11338:6:111"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11346:9:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "11334:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11334:22:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11358:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11330:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11330:95:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11318:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11318:108:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11318:108:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11439:23:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11455:6:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "11449:5:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11449:13:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "11443:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11475:29:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "11501:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "11495:5:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11495:9:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "11479:12:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "11524:6:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "11532:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11517:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11517:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11517:18:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11548:61:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11579:12:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "11597:6:111"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "11605:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11593:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11593:15:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "11562:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11562:47:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "tail_3",
                                        "nodeType": "YulTypedName",
                                        "src": "11552:6:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11622:40:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "11654:2:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "11658:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11650:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11650:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "11644:5:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11644:18:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0_1",
                                        "nodeType": "YulTypedName",
                                        "src": "11626:14:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "11686:6:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "11694:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11682:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11682:15:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "11703:6:111"
                                            },
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "11711:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "11699:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11699:19:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11675:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11675:44:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11675:44:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11732:50:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11759:14:111"
                                        },
                                        {
                                          "name": "tail_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "11775:6:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "11742:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11742:40:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11732:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11795:25:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11809:6:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11817:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11805:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11805:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11795:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11833:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11844:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11849:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11840:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11840:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11833:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "11266:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11269:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11263:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11263:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "11277:18:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11279:14:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "11288:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11291:1:111",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11284:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11284:9:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "11279:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "11259:3:111",
                                "statements": []
                              },
                              "src": "11255:607:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11871:14:111",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "11879:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11871:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10855:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10866:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10877:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10663:1228:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12002:706:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12048:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12057:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12060:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12050:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12050:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12050:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12023:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12032:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12019:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12019:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12044:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12015:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12015:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12012:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12073:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12093:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12087:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12087:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12077:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12146:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12155:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12158:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12148:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12148:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12148:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12118:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12126:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12115:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12115:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12112:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12171:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12185:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12196:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12181:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12181:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12175:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12251:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12260:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12263:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12253:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12253:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12253:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "12230:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12234:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12226:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12226:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12241:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "12222:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12222:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12215:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12215:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12212:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12276:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12292:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12286:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12286:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "12280:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12304:61:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "12361:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "12333:27:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12333:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "12317:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12317:48:111"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "12308:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "12381:5:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12388:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12374:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12374:17:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12374:17:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12439:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12448:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12451:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12441:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12441:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12441:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "12414:2:111"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "12418:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12410:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12410:11:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12423:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12406:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12406:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12430:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12403:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12403:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12400:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12503:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12507:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12499:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12499:13:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "12518:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12525:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12514:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12514:16:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12532:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "12464:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12464:71:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12464:71:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12544:15:111",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "12554:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12544:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12568:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12591:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12602:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12587:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12587:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12581:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12581:27:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12572:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12662:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12671:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12674:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12664:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12664:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12664:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12630:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "12641:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12648:10:111",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "12637:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12637:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "12627:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12627:33:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12620:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12620:41:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12617:61:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12687:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12697:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12687:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_uint32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11960:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11971:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11983:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11991:6:111",
                            "type": ""
                          }
                        ],
                        "src": "11896:812:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12745:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12762:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12765:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12755:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12755:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12755:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12859:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12862:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12852:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12852:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12852:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12883:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12886:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12876:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12876:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12876:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12713:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12950:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12960:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12971:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12974:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12967:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12967:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "12960:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12999:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13001:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13001:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13001:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12991:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "12994:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12988:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12988:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12985:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12933:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12936:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "12942:3:111",
                            "type": ""
                          }
                        ],
                        "src": "12902:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13081:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13091:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13103:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13106:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "13099:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13099:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "13091:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13132:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13134:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13134:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13134:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "13123:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13129:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13120:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13120:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13117:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13063:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13066:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "13072:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13032:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13284:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13301:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13312:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13294:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13294:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13294:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13324:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13349:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13361:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13372:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13357:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13357:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "13332:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13332:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13324:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13253:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13264:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13275:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13165:217:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13465:199:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13511:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13520:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13523:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13513:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13513:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13513:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13486:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13495:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13482:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13482:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13507:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13478:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13478:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13475:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13536:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13555:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13549:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13549:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13540:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13618:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13627:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13630:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13620:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13620:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13620:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "13587:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "13608:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "13601:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13601:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "13594:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13594:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "13584:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13584:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13577:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13577:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13574:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13643:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13653:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13643:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13431:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13442:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13454:6:111",
                            "type": ""
                          }
                        ],
                        "src": "13387:277:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13843:225:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13860:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13871:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13853:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13853:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13853:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13894:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13905:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13890:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13890:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13910:2:111",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13883:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13883:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13883:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13933:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13944:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13929:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13929:18:111"
                                  },
                                  {
                                    "hexValue": "506172656e74206e616d65206d7573742062652061207075626c696320737566",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13949:34:111",
                                    "type": "",
                                    "value": "Parent name must be a public suf"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13922:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13922:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13922:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14004:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14015:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14000:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14000:18:111"
                                  },
                                  {
                                    "hexValue": "666978",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14020:5:111",
                                    "type": "",
                                    "value": "fix"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13993:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13993:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13993:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14035:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14047:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14058:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14043:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14043:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14035:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5df6cb05960cf5aa4f7482cb9ceb06b354899f3958a55d842cf18bd9cb0b227a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13820:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13834:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13669:399:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14218:158:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14235:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14246:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14228:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14228:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14258:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14283:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14295:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14306:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14291:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14291:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "14266:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14266:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14258:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14330:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14341:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14326:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14326:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14350:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14358:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14346:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14346:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14319:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14319:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14319:51:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_uint32__to_t_bytes_memory_ptr_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14179:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14190:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14198:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14209:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14073:303:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14413:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14430:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14433:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14423:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14423:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14423:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14527:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14530:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14520:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14520:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14520:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14551:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14554:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14544:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14544:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14544:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14381:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14744:232:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14761:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14772:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14754:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14754:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14754:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14795:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14806:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14791:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14791:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14811:2:111",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14784:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14784:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14784:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14834:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14845:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14830:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14830:18:111"
                                  },
                                  {
                                    "hexValue": "43616e6e6f7420656e61626c652061206e616d65206f776e656420627920736f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14850:34:111",
                                    "type": "",
                                    "value": "Cannot enable a name owned by so"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14823:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14823:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14823:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14905:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14916:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14901:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14901:18:111"
                                  },
                                  {
                                    "hexValue": "6d656f6e6520656c7365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14921:12:111",
                                    "type": "",
                                    "value": "meone else"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14894:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14894:40:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14894:40:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14943:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14955:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14966:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14951:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14951:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14943:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_63425cf3a05c76cf1155c52bcdbd99eb1081a9ada1a588d0e70852574c220981__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14721:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14735:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14570:406:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15028:202:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15038:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15061:1:111",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "15064:1:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "15050:10:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15050:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15079:1:111",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "15082:1:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "15068:10:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15068:16:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "15046:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15046:39:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "15038:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15202:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "15204:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15204:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15204:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "diff",
                                        "nodeType": "YulIdentifier",
                                        "src": "15104:4:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15110:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15100:77:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "diff",
                                        "nodeType": "YulIdentifier",
                                        "src": "15183:4:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15189:10:111",
                                        "type": "",
                                        "value": "0x7fffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sgt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15179:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15179:21:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "15097:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15097:104:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15094:130:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_int32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15010:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15013:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "15019:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14981:249:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15273:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15304:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15325:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15328:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15318:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15318:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15318:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15426:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15429:4:111",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15419:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15419:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15419:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15454:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15457:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15447:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15447:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15447:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15293:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15286:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15286:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15283:189:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15481:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15490:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15493:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "15486:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15486:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "15481:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15258:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15261:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "15267:1:111",
                            "type": ""
                          }
                        ],
                        "src": "15235:266:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15558:116:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15568:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15583:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15586:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "15579:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15579:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "15568:7:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15646:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "15648:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15648:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15648:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "15617:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "15610:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15610:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "15624:1:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "product",
                                                "nodeType": "YulIdentifier",
                                                "src": "15631:7:111"
                                              },
                                              {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "15640:1:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "15627:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "15627:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nodeType": "YulIdentifier",
                                          "src": "15621:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15621:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "15607:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15607:37:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15600:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15600:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15597:71:111"
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15537:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15540:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "15546:7:111",
                            "type": ""
                          }
                        ],
                        "src": "15506:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15711:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15728:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15731:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15721:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15721:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15721:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15825:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15828:4:111",
                                    "type": "",
                                    "value": "0x01"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15818:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15818:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15818:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15849:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15852:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "15842:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15842:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15842:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x01",
                        "nodeType": "YulFunctionDefinition",
                        "src": "15679:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15915:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16006:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16008:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16008:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16008:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "15931:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15938:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "15928:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15928:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15925:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16037:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "16048:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16055:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16044:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16044:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "16037:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "15897:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "15907:3:111",
                            "type": ""
                          }
                        ],
                        "src": "15868:195:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory_2046() -> memPtr\n    {\n        memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(0x40, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_array_struct_RRSetWithSignature_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := 0xffffffffffffffff\n        if gt(_1, _3) { panic_error_0x41() }\n        let _4 := shl(5, _1)\n        let dst := allocate_memory(add(_4, _2))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, _4), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, _3)\n            {\n                let _5 := 0\n                revert(_5, _5)\n            }\n            let _6 := add(offset, innerOffset)\n            let _7 := 0x40\n            if slt(add(sub(end, _6), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _7)\n            {\n                let _8 := 0\n                revert(_8, _8)\n            }\n            let value := allocate_memory_2046()\n            let offset_1 := calldataload(add(_6, _2))\n            if gt(offset_1, _3)\n            {\n                let _9 := 0\n                revert(_9, _9)\n            }\n            mstore(value, abi_decode_bytes(add(add(_6, offset_1), _2), end))\n            let offset_2 := calldataload(add(_6, _7))\n            if gt(offset_2, _3)\n            {\n                let _10 := 0\n                revert(_10, _10)\n            }\n            mstore(add(value, _2), abi_decode_bytes(add(add(_6, offset_2), _2), end))\n            mstore(dst, value)\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptrt_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_struct_RRSetWithSignature_dyn(add(headStart, offset_1), dataEnd)\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_address(value_1)\n        value3 := value_1\n    }\n    function abi_decode_tuple_t_contract$_PublicSuffixList_$4034(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32(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_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_struct_RRSetWithSignature_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_PublicSuffixList_$4034__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_DNSSEC_$5064__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_b003183625557b6442c6172435dc558d6e00259050f549715eafea85c3852041__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"Only owner can call proveAndClai\")\n        mstore(add(headStart, 96), \"mWithResolver\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_297b4c7c1b9fec22a1821926e7017e161faf6963a6ae7f899041d3c4552e210d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Cannot set addr if resolver is n\")\n        mstore(add(headStart, 96), \"ot set\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_rational_0_by_1__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__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        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let tail_2 := add(add(headStart, shl(5, length)), _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            let _3 := mload(srcPtr)\n            let memberValue0 := mload(_3)\n            mstore(tail_2, _2)\n            let tail_3 := abi_encode_bytes(memberValue0, add(tail_2, _2))\n            let memberValue0_1 := mload(add(_3, _1))\n            mstore(add(tail_2, _1), sub(tail_3, tail_2))\n            tail_2 := abi_encode_bytes(memberValue0_1, tail_3)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_uint32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 0x20), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 0x20), add(array, 0x20), _2)\n        value0 := array\n        let value := mload(add(headStart, 0x20))\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_5df6cb05960cf5aa4f7482cb9ceb06b354899f3958a55d842cf18bd9cb0b227a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"Parent name must be a public suf\")\n        mstore(add(headStart, 96), \"fix\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_uint32__to_t_bytes_memory_ptr_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_63425cf3a05c76cf1155c52bcdbd99eb1081a9ada1a588d0e70852574c220981__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"Cannot enable a name owned by so\")\n        mstore(add(headStart, 96), \"meone else\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_int32(x, y) -> diff\n    {\n        diff := sub(signextend(3, x), signextend(3, y))\n        if or(slt(diff, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000), sgt(diff, 0x7fffffff)) { panic_error_0x11() }\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := mod(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "3461": [
                  {
                    "length": 32,
                    "start": 373
                  },
                  {
                    "length": 32,
                    "start": 1078
                  },
                  {
                    "length": 32,
                    "start": 1435
                  },
                  {
                    "length": 32,
                    "start": 1633
                  },
                  {
                    "length": 32,
                    "start": 1785
                  },
                  {
                    "length": 32,
                    "start": 2293
                  },
                  {
                    "length": 32,
                    "start": 3691
                  },
                  {
                    "length": 32,
                    "start": 4080
                  },
                  {
                    "length": 32,
                    "start": 4411
                  }
                ],
                "3464": [
                  {
                    "length": 32,
                    "start": 412
                  },
                  {
                    "length": 32,
                    "start": 2422
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c806329d566301161005b57806329d566301461011857806330349ebe1461012b5780633f15457f146101705780637dc0d1d01461019757600080fd5b806301ffc9a71461008d57806306963218146100b55780631ecfc411146100ca57806325916d41146100dd575b600080fd5b6100a061009b3660046118c7565b6101be565b60405190151581526020015b60405180910390f35b6100c86100c3366004611b2f565b610257565b005b6100c86100d8366004611bb8565b6106c7565b6101036100eb366004611bd5565b60016020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016100ac565b6100c8610126366004611bee565b61088b565b60005461014b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061025157507fffffffff0000000000000000000000000000000000000000000000000000000082167f2f43542800000000000000000000000000000000000000000000000000000000145b92915050565b6000806000610266878761096c565b919450925090503373ffffffffffffffffffffffffffffffffffffffff821614610317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f6e6c79206f776e65722063616e2063616c6c2070726f7665416e64436c616960448201527f6d576974685265736f6c7665720000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416156105ff5773ffffffffffffffffffffffffffffffffffffffff85166103d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f43616e6e6f74207365742061646472206966207265736f6c766572206973206e60448201527f6f74207365740000000000000000000000000000000000000000000000000000606482015260840161030e565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018490526024810183905230604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b50505050600083836040516020016104b0929190918252602082015260400190565b60408051808303601f190181529082905280516020909101207fd5fa2b000000000000000000000000000000000000000000000000000000000082526004820181905273ffffffffffffffffffffffffffffffffffffffff878116602484015290925087169063d5fa2b0090604401600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b50506040517f5b0fc9c30000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff85811660248301527f0000000000000000000000000000000000000000000000000000000000000000169250635b0fc9c39150604401600060405180830381600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b50505050506106be565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff82811660448301528681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156106a557600080fd5b505af11580156106b9573d6000803e3d6000fd5b505050505b50505050505050565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190611c52565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190611c52565b90503373ffffffffffffffffffffffffffffffffffffffff82161461081057600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040519081527f9176b7f47e4504df5e5516c99d90d82ac7cbd49cc77e7f22ba2ac2f2e3a3eba89060200160405180910390a1505050565b600080600061089a858561096c565b6040517f06ab5923000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff828116604483015293965091945092507f0000000000000000000000000000000000000000000000000000000000000000909116906306ab5923906064016020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190611c6f565b505050505050565b60008060008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bdf95fef876040518263ffffffff1660e01b81526004016109cd9190611cd8565b600060405180830381865afa1580156109ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a129190810190611d7b565b90925090506000610a238882610ccd565b60ff169050610a3488600183610cf1565b94506000610a67610a46836001611e41565b6001848c51610a559190611e54565b610a5f9190611e54565b8b9190610d15565b6000546040517f4f89059e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f89059e90610abe908490600401611e67565b602060405180830381865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff9190611e7a565b610b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f506172656e74206e616d65206d7573742062652061207075626c69632073756660448201527f6669780000000000000000000000000000000000000000000000000000000000606482015260840161030e565b610b96816000610d97565b965060008787604051602001610bb6929190918252602082015260400190565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150610bef90859063ffffffff166111c9565b610c25576040517f2dd6a7af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8616179055610c6b8a866111e2565b50809650508573ffffffffffffffffffffffffffffffffffffffff16817f87db02a0e483e2818060eddcbb3488ce44e35aff49a70d92c2aa6c8046cf01e28c87604051610cb9929190611e9c565b60405180910390a350505050509250925092565b6000828281518110610ce157610ce1611ec4565b016020015160f81c905092915050565b8251600090610d008385611e41565b1115610d0b57600080fd5b5091016020012090565b8251606090610d248385611e41565b1115610d2f57600080fd5b60008267ffffffffffffffff811115610d4a57610d4a611909565b6040519080825280601f01601f191660200182016040528015610d74576020820181803683370190505b50905060208082019086860101610d8c8282876112ce565b509095945050505050565b600080610da48484610ccd565b60ff16905080600003610dbb575060009050610251565b6000610ddb85610dcb8487611e41565b610dd6906001611e41565b610d97565b90506000610df5610ded866001611e41565b879085610cf1565b604080516020810185905290810182905290915060600160408051601f198184030181529082905280516020909101207f02571be300000000000000000000000000000000000000000000000000000000825260048201819052945060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190611c52565b905073ffffffffffffffffffffffffffffffffffffffff81161580610f10575073ffffffffffffffffffffffffffffffffffffffff811630145b610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f43616e6e6f7420656e61626c652061206e616d65206f776e656420627920736f60448201527f6d656f6e6520656c736500000000000000000000000000000000000000000000606482015260840161030e565b73ffffffffffffffffffffffffffffffffffffffff811630146111bf57826110ff576040517f02571be3000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c52565b6040517f8cb8ecec0000000000000000000000000000000000000000000000000000000081526004810185905230602482015290915073ffffffffffffffffffffffffffffffffffffffff821690638cb8ecec90604401600060405180830381600087803b1580156110e157600080fd5b505af11580156110f5573d6000803e3d6000fd5b50505050506111bf565b6040517f06ab592300000000000000000000000000000000000000000000000000000000815260048101849052602481018390523060448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906306ab5923906064016020604051808303816000875af1158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190611c6f565b505b5050505092915050565b6000806111d68385611ef3565b60030b12159392505050565b600080611202604051806040016040528060608152602001600081525090565b61121a855160056112139190611e41565b8290611342565b5060408051808201909152600581527f045f656e73000000000000000000000000000000000000000000000000000000602082015261125a9082906113a7565b5061126581866113a7565b50600061127285826113d5565b90505b805151602082015110156112bd57600080611294878460a00151611436565b9250905081156112ad579450600193506112c792505050565b50506112b8816114a7565b611275565b5060008092509250505b9250929050565b6020811061130657815183526112e5602084611e41565b92506112f2602083611e41565b91506112ff602082611e54565b90506112ce565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b604080518082019091526060815260006020820152611362602083611f35565b1561138a57611372602083611f35565b61137d906020611e54565b6113879083611e41565b91505b506020828101829052604080518085526000815290920101905290565b6040805180820190915260608152600060208201526113ce8384600001515184855161158f565b9392505050565b6114236040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c08101829052610251816114a7565b6000805b835183101561149b57600061144f8585610ccd565b60ff16905061145f600185611e41565b935060008061146f878785611697565b925090508115611487579350600192506112c7915050565b6114918387611e41565b955050505061143a565b50600093849350915050565b60c081015160208201819052815151116114be5750565b60006114d2826000015183602001516116f4565b82602001516114e19190611e41565b82519091506114f09082611756565b61ffff166040830152611504600282611e41565b82519091506115139082611756565b61ffff166060830152611527600282611e41565b8251909150611536908261177e565b63ffffffff16608083015261154c600482611e41565b825190915060009061155e9083611756565b61ffff16905061156f600283611e41565b60a0840181905291506115828183611e41565b60c0909301929092525050565b60408051808201909152606081526000602082015282518211156115b257600080fd5b60208501516115c18386611e41565b11156115f4576115f4856115e4876020015187866115df9190611e41565b6117a8565b6115ef906002611f70565b6117bf565b6000808651805187602083010193508088870111156116135787860182525b505050602084015b602084106116535780518252611632602083611e41565b915061163f602082611e41565b905061164c602085611e54565b935061161b565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6000806116a4858561177e565b63ffffffff1663613d3078146116bf575060009050806116ec565b602c8310156116d3575060009050806116ec565b6116e7856116e2866004611e41565b6117dc565b915091505b935093915050565b6000815b8351811061170857611708611f87565b60006117148583610ccd565b60ff169050611724816001611e41565b61172e9083611e41565b91508060000361173e5750611744565b506116f8565b61174e8382611e54565b949350505050565b8151600090611766836002611e41565b111561177157600080fd5b50016002015161ffff1690565b815160009061178e836004611e41565b111561179957600080fd5b50016004015163ffffffff1690565b6000818311156117b9575081610251565b50919050565b81516117cb8383611342565b506117d683826113a7565b50505050565b60008060288385516117ee9190611e54565b10156117ff575060009050806112c7565b6000835b61180e856028611e41565b8110156118bb5760049190911b9060006118288783610ccd565b60ff1690506030811015801561183e5750603a81105b156118575761184e603082611e54565b831792506118a8565b604181101580156118685750604781105b156118785761184e603782611e54565b606181101580156118895750606781105b156118995761184e605782611e54565b600080945094505050506112c7565b50806118b381611fb6565b915050611803565b50946001945092505050565b6000602082840312156118d957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113ce57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561195b5761195b611909565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561198a5761198a611909565b604052919050565b600067ffffffffffffffff8211156119ac576119ac611909565b50601f01601f191660200190565b600082601f8301126119cb57600080fd5b81356119de6119d982611992565b611961565b8181528460208386010111156119f357600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611a2157600080fd5b8135602067ffffffffffffffff80831115611a3e57611a3e611909565b8260051b611a4d838201611961565b9384528581018301938381019088861115611a6757600080fd5b84880192505b85831015611afe57823584811115611a855760008081fd5b88016040818b03601f1901811315611a9d5760008081fd5b611aa5611938565b8783013587811115611ab75760008081fd5b611ac58d8a838701016119ba565b825250908201359086821115611adb5760008081fd5b611ae98c89848601016119ba565b81890152845250509184019190840190611a6d565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b2c57600080fd5b50565b60008060008060808587031215611b4557600080fd5b843567ffffffffffffffff80821115611b5d57600080fd5b611b69888389016119ba565b95506020870135915080821115611b7f57600080fd5b50611b8c87828801611a10565b9350506040850135611b9d81611b0a565b91506060850135611bad81611b0a565b939692955090935050565b600060208284031215611bca57600080fd5b81356113ce81611b0a565b600060208284031215611be757600080fd5b5035919050565b60008060408385031215611c0157600080fd5b823567ffffffffffffffff80821115611c1957600080fd5b611c25868387016119ba565b93506020850135915080821115611c3b57600080fd5b50611c4885828601611a10565b9150509250929050565b600060208284031215611c6457600080fd5b81516113ce81611b0a565b600060208284031215611c8157600080fd5b5051919050565b60005b83811015611ca3578181015183820152602001611c8b565b50506000910152565b60008151808452611cc4816020860160208601611c88565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611d6d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552611d4188860182611cac565b91890151858303868b0152919050611d598183611cac565b968901969450505090860190600101611cff565b509098975050505050505050565b60008060408385031215611d8e57600080fd5b825167ffffffffffffffff811115611da557600080fd5b8301601f81018513611db657600080fd5b8051611dc46119d982611992565b818152866020838501011115611dd957600080fd5b611dea826020830160208601611c88565b809450505050602083015163ffffffff81168114611e0757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561025157610251611e12565b8181038181111561025157610251611e12565b6020815260006113ce6020830184611cac565b600060208284031215611e8c57600080fd5b815180151581146113ce57600080fd5b604081526000611eaf6040830185611cac565b905063ffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600382810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008112637fffffff8213171561025157610251611e12565b600082611f6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b808202811582820484141761025157610251611e12565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fe757611fe7611e12565b506001019056fea2646970667358221220ae3fe39ac561c76c0c508db809a0dfc192b44130fab21e3f254d175f52f62a1164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x29D56630 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x29D56630 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x30349EBE EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x6963218 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x1ECFC411 EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x25916D41 EQ PUSH2 0xDD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x18C7 JUMP JUMPDEST PUSH2 0x1BE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B2F JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC8 PUSH2 0xD8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BB8 JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x103 PUSH2 0xEB CALLDATASIZE PUSH1 0x4 PUSH2 0x1BD5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BEE JUMP JUMPDEST PUSH2 0x88B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x14B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x14B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x14B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x251 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x2F43542800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x266 DUP8 DUP8 PUSH2 0x96C JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x317 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206F776E65722063616E2063616C6C2070726F7665416E64436C6169 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D576974685265736F6C76657200000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO PUSH2 0x5FF JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x3D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F74207365742061646472206966207265736F6C766572206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207365740000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x48E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4B0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0xD5FA2B0000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x24 DUP5 ADD MSTORE SWAP1 SWAP3 POP DUP8 AND SWAP1 PUSH4 0xD5FA2B00 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x54D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x5B0FC9C300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP3 POP PUSH4 0x5B0FC9C3 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x755 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x779 SWAP2 SWAP1 PUSH2 0x1C52 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7EC SWAP2 SWAP1 PUSH2 0x1C52 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x9176B7F47E4504DF5E5516C99D90D82AC7CBD49CC77E7F22BA2AC2F2E3A3EBA8 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x89A DUP6 DUP6 PUSH2 0x96C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x940 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x964 SWAP2 SWAP1 PUSH2 0x1C6F JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBDF95FEF DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9CD SWAP2 SWAP1 PUSH2 0x1CD8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xA12 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1D7B JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0xA23 DUP9 DUP3 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xA34 DUP9 PUSH1 0x1 DUP4 PUSH2 0xCF1 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0xA67 PUSH2 0xA46 DUP4 PUSH1 0x1 PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0x1 DUP5 DUP13 MLOAD PUSH2 0xA55 SWAP2 SWAP1 PUSH2 0x1E54 JUMP JUMPDEST PUSH2 0xA5F SWAP2 SWAP1 PUSH2 0x1E54 JUMP JUMPDEST DUP12 SWAP2 SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4F89059E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x4F89059E SWAP1 PUSH2 0xABE SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAFF SWAP2 SWAP1 PUSH2 0x1E7A JUMP JUMPDEST PUSH2 0xB8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506172656E74206E616D65206D7573742062652061207075626C696320737566 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6669780000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30E JUMP JUMPDEST PUSH2 0xB96 DUP2 PUSH1 0x0 PUSH2 0xD97 JUMP JUMPDEST SWAP7 POP PUSH1 0x0 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBB6 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xBEF SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF AND PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0xC25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2DD6A7AF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF DUP7 AND OR SWAP1 SSTORE PUSH2 0xC6B DUP11 DUP7 PUSH2 0x11E2 JUMP JUMPDEST POP DUP1 SWAP7 POP POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x87DB02A0E483E2818060EDDCBB3488CE44E35AFF49A70D92C2AA6C8046CF01E2 DUP13 DUP8 PUSH1 0x40 MLOAD PUSH2 0xCB9 SWAP3 SWAP2 SWAP1 PUSH2 0x1E9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCE1 JUMPI PUSH2 0xCE1 PUSH2 0x1EC4 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xD00 DUP4 DUP6 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0xD0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xD24 DUP4 DUP6 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0xD2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD4A JUMPI PUSH2 0xD4A PUSH2 0x1909 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD74 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0xD8C DUP3 DUP3 DUP8 PUSH2 0x12CE JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDA4 DUP5 DUP5 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP DUP1 PUSH1 0x0 SUB PUSH2 0xDBB JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x251 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP6 PUSH2 0xDCB DUP5 DUP8 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0xDD6 SWAP1 PUSH1 0x1 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0xD97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDF5 PUSH2 0xDED DUP7 PUSH1 0x1 PUSH2 0x1E41 JUMP JUMPDEST DUP8 SWAP1 DUP6 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP5 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xED6 SWAP2 SWAP1 PUSH2 0x1C52 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 PUSH2 0xF10 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ JUMPDEST PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F7420656E61626C652061206E616D65206F776E656420627920736F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D656F6E6520656C736500000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0x11BF JUMPI DUP3 PUSH2 0x10FF JUMPI PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x104C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1070 SWAP2 SWAP1 PUSH2 0x1C52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8CB8ECEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x8CB8ECEC SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1199 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11BD SWAP2 SWAP1 PUSH2 0x1C6F JUMP JUMPDEST POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11D6 DUP4 DUP6 PUSH2 0x1EF3 JUMP JUMPDEST PUSH1 0x3 SIGNEXTEND SLT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1202 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x121A DUP6 MLOAD PUSH1 0x5 PUSH2 0x1213 SWAP2 SWAP1 PUSH2 0x1E41 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1342 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x45F656E73000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x125A SWAP1 DUP3 SWAP1 PUSH2 0x13A7 JUMP JUMPDEST POP PUSH2 0x1265 DUP2 DUP7 PUSH2 0x13A7 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1272 DUP6 DUP3 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x12BD JUMPI PUSH1 0x0 DUP1 PUSH2 0x1294 DUP8 DUP5 PUSH1 0xA0 ADD MLOAD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x12AD JUMPI SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x12C7 SWAP3 POP POP POP JUMP JUMPDEST POP POP PUSH2 0x12B8 DUP2 PUSH2 0x14A7 JUMP JUMPDEST PUSH2 0x1275 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1306 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x12E5 PUSH1 0x20 DUP5 PUSH2 0x1E41 JUMP JUMPDEST SWAP3 POP PUSH2 0x12F2 PUSH1 0x20 DUP4 PUSH2 0x1E41 JUMP JUMPDEST SWAP2 POP PUSH2 0x12FF PUSH1 0x20 DUP3 PUSH2 0x1E54 JUMP JUMPDEST SWAP1 POP PUSH2 0x12CE JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1362 PUSH1 0x20 DUP4 PUSH2 0x1F35 JUMP JUMPDEST ISZERO PUSH2 0x138A JUMPI PUSH2 0x1372 PUSH1 0x20 DUP4 PUSH2 0x1F35 JUMP JUMPDEST PUSH2 0x137D SWAP1 PUSH1 0x20 PUSH2 0x1E54 JUMP JUMPDEST PUSH2 0x1387 SWAP1 DUP4 PUSH2 0x1E41 JUMP JUMPDEST SWAP2 POP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP6 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 ADD ADD SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x13CE DUP4 DUP5 PUSH1 0x0 ADD MLOAD MLOAD DUP5 DUP6 MLOAD PUSH2 0x158F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1423 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x251 DUP2 PUSH2 0x14A7 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP4 LT ISZERO PUSH2 0x149B JUMPI PUSH1 0x0 PUSH2 0x144F DUP6 DUP6 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x145F PUSH1 0x1 DUP6 PUSH2 0x1E41 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP1 PUSH2 0x146F DUP8 DUP8 DUP6 PUSH2 0x1697 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x1487 JUMPI SWAP4 POP PUSH1 0x1 SWAP3 POP PUSH2 0x12C7 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1491 DUP4 DUP8 PUSH2 0x1E41 JUMP JUMPDEST SWAP6 POP POP POP POP PUSH2 0x143A JUMP JUMPDEST POP PUSH1 0x0 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0x14BE JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14D2 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x16F4 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x14E1 SWAP2 SWAP1 PUSH2 0x1E41 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x14F0 SWAP1 DUP3 PUSH2 0x1756 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1504 PUSH1 0x2 DUP3 PUSH2 0x1E41 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1513 SWAP1 DUP3 PUSH2 0x1756 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1527 PUSH1 0x2 DUP3 PUSH2 0x1E41 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1536 SWAP1 DUP3 PUSH2 0x177E JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x154C PUSH1 0x4 DUP3 PUSH2 0x1E41 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x155E SWAP1 DUP4 PUSH2 0x1756 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0x156F PUSH1 0x2 DUP4 PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0x1582 DUP2 DUP4 PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 MLOAD DUP3 GT ISZERO PUSH2 0x15B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH2 0x15C1 DUP4 DUP7 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0x15F4 JUMPI PUSH2 0x15F4 DUP6 PUSH2 0x15E4 DUP8 PUSH1 0x20 ADD MLOAD DUP8 DUP7 PUSH2 0x15DF SWAP2 SWAP1 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0x17A8 JUMP JUMPDEST PUSH2 0x15EF SWAP1 PUSH1 0x2 PUSH2 0x1F70 JUMP JUMPDEST PUSH2 0x17BF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 MLOAD DUP1 MLOAD DUP8 PUSH1 0x20 DUP4 ADD ADD SWAP4 POP DUP1 DUP9 DUP8 ADD GT ISZERO PUSH2 0x1613 JUMPI DUP8 DUP7 ADD DUP3 MSTORE JUMPDEST POP POP POP PUSH1 0x20 DUP5 ADD JUMPDEST PUSH1 0x20 DUP5 LT PUSH2 0x1653 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH2 0x1632 PUSH1 0x20 DUP4 PUSH2 0x1E41 JUMP JUMPDEST SWAP2 POP PUSH2 0x163F PUSH1 0x20 DUP3 PUSH2 0x1E41 JUMP JUMPDEST SWAP1 POP PUSH2 0x164C PUSH1 0x20 DUP6 PUSH2 0x1E54 JUMP JUMPDEST SWAP4 POP PUSH2 0x161B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP7 SWAP1 SUB PUSH2 0x100 EXP ADD SWAP1 DUP2 AND SWAP1 NOT SWAP2 SWAP1 SWAP2 AND OR SWAP1 MSTORE POP DUP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16A4 DUP6 DUP6 PUSH2 0x177E JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH4 0x613D3078 EQ PUSH2 0x16BF JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x16EC JUMP JUMPDEST PUSH1 0x2C DUP4 LT ISZERO PUSH2 0x16D3 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x16E7 DUP6 PUSH2 0x16E2 DUP7 PUSH1 0x4 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0x1708 JUMPI PUSH2 0x1708 PUSH2 0x1F87 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1714 DUP6 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1724 DUP2 PUSH1 0x1 PUSH2 0x1E41 JUMP JUMPDEST PUSH2 0x172E SWAP1 DUP4 PUSH2 0x1E41 JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0x173E JUMPI POP PUSH2 0x1744 JUMP JUMPDEST POP PUSH2 0x16F8 JUMP JUMPDEST PUSH2 0x174E DUP4 DUP3 PUSH2 0x1E54 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1766 DUP4 PUSH1 0x2 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0x1771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x178E DUP4 PUSH1 0x4 PUSH2 0x1E41 JUMP JUMPDEST GT ISZERO PUSH2 0x1799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x17B9 JUMPI POP DUP2 PUSH2 0x251 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH2 0x17CB DUP4 DUP4 PUSH2 0x1342 JUMP JUMPDEST POP PUSH2 0x17D6 DUP4 DUP3 PUSH2 0x13A7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x28 DUP4 DUP6 MLOAD PUSH2 0x17EE SWAP2 SWAP1 PUSH2 0x1E54 JUMP JUMPDEST LT ISZERO PUSH2 0x17FF JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x12C7 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST PUSH2 0x180E DUP6 PUSH1 0x28 PUSH2 0x1E41 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x18BB JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHL SWAP1 PUSH1 0x0 PUSH2 0x1828 DUP8 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH1 0x30 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x183E JUMPI POP PUSH1 0x3A DUP2 LT JUMPDEST ISZERO PUSH2 0x1857 JUMPI PUSH2 0x184E PUSH1 0x30 DUP3 PUSH2 0x1E54 JUMP JUMPDEST DUP4 OR SWAP3 POP PUSH2 0x18A8 JUMP JUMPDEST PUSH1 0x41 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x1868 JUMPI POP PUSH1 0x47 DUP2 LT JUMPDEST ISZERO PUSH2 0x1878 JUMPI PUSH2 0x184E PUSH1 0x37 DUP3 PUSH2 0x1E54 JUMP JUMPDEST PUSH1 0x61 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI POP PUSH1 0x67 DUP2 LT JUMPDEST ISZERO PUSH2 0x1899 JUMPI PUSH2 0x184E PUSH1 0x57 DUP3 PUSH2 0x1E54 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x12C7 JUMP JUMPDEST POP DUP1 PUSH2 0x18B3 DUP2 PUSH2 0x1FB6 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1803 JUMP JUMPDEST POP SWAP5 PUSH1 0x1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x13CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x195B JUMPI PUSH2 0x195B PUSH2 0x1909 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x198A JUMPI PUSH2 0x198A PUSH2 0x1909 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x19AC JUMPI PUSH2 0x19AC PUSH2 0x1909 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x19CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x19DE PUSH2 0x19D9 DUP3 PUSH2 0x1992 JUMP JUMPDEST PUSH2 0x1961 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x19F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 GT ISZERO PUSH2 0x1A3E JUMPI PUSH2 0x1A3E PUSH2 0x1909 JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x1A4D DUP4 DUP3 ADD PUSH2 0x1961 JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x1A67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x1AFE JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x1A85 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP9 ADD PUSH1 0x40 DUP2 DUP12 SUB PUSH1 0x1F NOT ADD DUP2 SGT ISZERO PUSH2 0x1A9D JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1AA5 PUSH2 0x1938 JUMP JUMPDEST DUP8 DUP4 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1AB7 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1AC5 DUP14 DUP11 DUP4 DUP8 ADD ADD PUSH2 0x19BA JUMP JUMPDEST DUP3 MSTORE POP SWAP1 DUP3 ADD CALLDATALOAD SWAP1 DUP7 DUP3 GT ISZERO PUSH2 0x1ADB JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1AE9 DUP13 DUP10 DUP5 DUP7 ADD ADD PUSH2 0x19BA JUMP JUMPDEST DUP2 DUP10 ADD MSTORE DUP5 MSTORE POP POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1A6D JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1B2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B69 DUP9 DUP4 DUP10 ADD PUSH2 0x19BA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1B7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B8C DUP8 DUP3 DUP9 ADD PUSH2 0x1A10 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x1B9D DUP2 PUSH2 0x1B0A JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x1BAD DUP2 PUSH2 0x1B0A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13CE DUP2 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1C19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C25 DUP7 DUP4 DUP8 ADD PUSH2 0x19BA JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C48 DUP6 DUP3 DUP7 ADD PUSH2 0x1A10 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13CE DUP2 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1CA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C8B JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1CC4 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1C88 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 SWAP3 POP DUP3 DUP7 ADD SWAP2 POP DUP3 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD DUP5 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D6D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP10 DUP5 SUB ADD DUP6 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 DUP6 MSTORE PUSH2 0x1D41 DUP9 DUP7 ADD DUP3 PUSH2 0x1CAC JUMP JUMPDEST SWAP2 DUP10 ADD MLOAD DUP6 DUP4 SUB DUP7 DUP12 ADD MSTORE SWAP2 SWAP1 POP PUSH2 0x1D59 DUP2 DUP4 PUSH2 0x1CAC JUMP JUMPDEST SWAP7 DUP10 ADD SWAP7 SWAP5 POP POP POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1CFF JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1DB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1DC4 PUSH2 0x19D9 DUP3 PUSH2 0x1992 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x1DD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DEA DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1C88 JUMP JUMPDEST DUP1 SWAP5 POP POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x251 JUMPI PUSH2 0x251 PUSH2 0x1E12 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x251 JUMPI PUSH2 0x251 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x13CE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1CAC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x13CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1EAF PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1CAC JUMP JUMPDEST SWAP1 POP PUSH4 0xFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP3 DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000 DUP2 SLT PUSH4 0x7FFFFFFF DUP3 SGT OR ISZERO PUSH2 0x251 JUMPI PUSH2 0x251 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1F6B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x251 JUMPI PUSH2 0x251 PUSH2 0x1E12 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1FE7 JUMPI PUSH2 0x1FE7 PUSH2 0x1E12 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE EXTCODEHASH 0xE3 SWAP11 0xC5 PUSH2 0xC76C 0xC POP DUP14 0xB8 MULMOD LOG0 0xDF 0xC1 SWAP3 0xB4 COINBASE ADDRESS STATICCALL 0xB2 0x1E EXTCODEHASH 0x25 0x4D OR 0x5F MSTORE 0xF6 0x2A GT PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "728:5653:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4001:259;;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;4001:259:19;;;;;;;;2781:1214;;;;;;:::i;:::-;;:::i;:::-;;2065:164;;;;;;:::i;:::-;;:::i;1057:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5494:10:111;5482:23;;;5464:42;;5452:2;5437:18;1057:44:19;5320:192:111;2473:302:19;;;;;;:::i;:::-;;:::i;942:32::-;;;;;;;;;;;;6344:42:111;6332:55;;;6314:74;;6302:2;6287:18;942:32:19;6143:251:111;876:24:19;;;;;906:30;;;;;4001:259;4112:4;4151:40;;;4166:25;4151:40;;:102;;-1:-1:-1;4207:46:19;;;4222:31;4207:46;4151:102;4132:121;4001:259;-1:-1:-1;;4001:259:19:o;2781:1214::-;2974:16;2992:17;3011:13;3028:53;3048:4;3066:5;3028:6;:53::i;:::-;2973:108;;-1:-1:-1;2973:108:19;-1:-1:-1;2973:108:19;-1:-1:-1;3112:10:19;:19;;;;3091:111;;;;;;;7091:2:111;3091:111:19;;;7073:21:111;7130:2;7110:18;;;7103:30;7169:34;7149:18;;;7142:62;7240:15;7220:18;;;7213:43;7273:19;;3091:111:19;;;;;;;;;3216:18;;;;3212:777;;3275:22;;;3250:119;;;;;;;7505:2:111;3250:119:19;;;7487:21:111;7544:2;7524:18;;;7517:30;7583:34;7563:18;;;7556:62;7654:8;7634:18;;;7627:36;7680:19;;3250:119:19;7303:402:111;3250:119:19;3464:163;;;;;;;;7976:25:111;;;8017:18;;;8010:34;;;3563:4:19;8121:18:111;;;8114:43;3464:20:19;8193:15:111;;;8173:18;;;8166:43;3612:1:19;8225:19:111;;;8218:60;3464:3:19;:20;;;;7948:19:111;;3464:163:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3641:12;3683:8;3693:9;3666:37;;;;;;;;8446:19:111;;;8490:2;8481:12;;8474:28;8527:2;8518:12;;8289:247;3666:37:19;;;;;;;-1:-1:-1;;3666:37:19;;;;;;;3656:48;;3666:37;3656:48;;;;3757:42;;;;;;8715:25:111;;;3757:30:19;8776:55:111;;;8756:18;;;8749:83;3656:48:19;;-1:-1:-1;3757:30:19;;;;;8688:18:111;;3757:42:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3861:25:19;;;;;;;;8715::111;;;3861:12:19;8776:55:111;;;8756:18;;;8749:83;3861:3:19;:12;;-1:-1:-1;3861:12:19;;-1:-1:-1;8688:18:111;;3861:25:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3236:661;3212:777;;;3917:61;;;;;;;;7976:25:111;;;8017:18;;;8010:34;;;3917:20:19;8141:15:111;;;8121:18;;;8114:43;8193:15;;;8173:18;;;8166:43;3976:1:19;8225:19:111;;;8218:60;3917:3:19;:20;;;;7948:19:111;;3917:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3212:777;2963:1032;;;2781:1214;;;;:::o;2065:164::-;1943:21;;;;;1926:9;1943:21;;;8989:25:111;;;1926:9:19;1943:3;:9;;;;;8962:18:111;;1943:21:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1926:39;;1975:13;1991:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1975:28;-1:-1:-1;2021:10:19;:19;;;;2013:28;;;;;;2149:8:::1;:20:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;2184:38:::1;::::0;6314:74:111;;;2184:38:19::1;::::0;6302:2:111;6287:18;2184:38:19::1;;;;;;;1916:143:::0;;2065:164;:::o;2473:302::-;2606:16;2624:17;2643:12;2659:53;2679:4;2697:5;2659:6;:53::i;:::-;2722:46;;;;;;;;9714:25:111;;;9755:18;;;9748:34;;;2722:19:19;9818:55:111;;;9798:18;;;9791:83;9714:25;;-1:-1:-1;9748:34:111;;-1:-1:-1;9818:55:111;-1:-1:-1;2722:3:19;:19;;;;;;9687:18:111;;2722:46:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2595:180;;;2473:302;;:::o;4266:1170::-;4390:18;4422:17;4453:12;4491:17;4510:16;4530:6;:18;;;4549:5;4530:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4530:25:19;;;;;;;;;;;;:::i;:::-;4490:65;;-1:-1:-1;4490:65:19;-1:-1:-1;4597:16:19;4616:17;:4;4597:16;4616:14;:17::i;:::-;4597:36;;;-1:-1:-1;4655:24:19;:4;4667:1;4597:36;4655:11;:24::i;:::-;4643:36;-1:-1:-1;4748:23:19;4774:90;4802:12;:8;4813:1;4802:12;:::i;:::-;4853:1;4842:8;4828:4;:11;:22;;;;:::i;:::-;:26;;;;:::i;:::-;4774:4;;:90;:14;:90::i;:::-;4895:8;;:35;;;;;4748:116;;-1:-1:-1;4895:8:19;;;:23;;:35;;4748:116;;4895:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4874:117;;;;;;;13871:2:111;4874:117:19;;;13853:21:111;13910:2;13890:18;;;13883:30;13949:34;13929:18;;;13922:62;14020:5;14000:18;;;13993:33;14043:19;;4874:117:19;13669:399:111;4874:117:19;5063:25;5074:10;5086:1;5063:10;:25::i;:::-;5050:38;;5099:12;5141:10;5153:9;5124:39;;;;;;;;8446:19:111;;;8490:2;8481:12;;8474:28;8527:2;8518:12;;8289:247;5124:39:19;;;;-1:-1:-1;;5124:39:19;;;;;;;;;5114:50;;5124:39;5114:50;;;;5214:16;;;;:10;:16;;;;;;5114:50;;-1:-1:-1;5179:52:19;;5203:9;;5214:16;;5179:23;:52::i;:::-;5174:103;;5254:12;;;;;;;;;;;;;;5174:103;5286:16;;;;:10;:16;;;;;:28;;;;;;;;;;5336:43;5368:4;5374;5336:31;:43::i;:::-;5325:54;;;;;5407:4;5395:34;;5401:4;5395:34;5413:4;5419:9;5395:34;;;;;;;:::i;:::-;;;;;;;;4480:956;;;;;4266:1170;;;;;:::o;5750:153:25:-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;:::o;311:274::-;475:11;;428;;459:12;468:3;459:6;:12;:::i;:::-;:27;;451:36;;;;;;-1:-1:-1;537:26:25;;551:2;537:26;527:42;;311:274::o;9465:436::-;9633:11;;9585:12;;9617;9626:3;9617:6;:12;:::i;:::-;:27;;9609:36;;;;;;9656:16;9685:3;9675:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:14:25;-1:-1:-1;9656:33:25;-1:-1:-1;9783:2:25;9774:12;;;;9806:26;;;;9851:22;9774:12;9806:26;9869:3;9851:6;:22::i;:::-;-1:-1:-1;9891:3:25;;9465:436;-1:-1:-1;;;;;9465:436:25:o;5442:937:19:-;5533:12;;5575:24;:6;5592;5575:16;:24::i;:::-;5561:38;;;;5613:3;5620:1;5613:8;5609:56;;-1:-1:-1;5652:1:19;;-1:-1:-1;5637:17:19;;5609:56;5675:18;5696:36;5707:6;5715:12;5724:3;5715:6;:12;:::i;:::-;:16;;5730:1;5715:16;:::i;:::-;5696:10;:36::i;:::-;5675:57;-1:-1:-1;5742:13:19;5758:30;5772:10;:6;5781:1;5772:10;:::i;:::-;5758:6;;5784:3;5758:13;:30::i;:::-;5815:35;;;;;;8446:19:111;;;8481:12;;;8474:28;;;5742:46:19;;-1:-1:-1;8518:12:111;;5815:35:19;;;-1:-1:-1;;5815:35:19;;;;;;;;;;5805:46;;5815:35;5805:46;;;;5877:15;;;;;;8989:25:111;;;5805:46:19;-1:-1:-1;5861:13:19;;5877:9;:3;:9;;;;8962:18:111;;5877:15:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5861:31;-1:-1:-1;5923:19:19;;;;;:45;;-1:-1:-1;5946:22:19;;;5963:4;5946:22;5923:45;5902:134;;;;;;;14772:2:111;5902:134:19;;;14754:21:111;14811:2;14791:18;;;14784:30;14850:34;14830:18;;;14823:62;14921:12;14901:18;;;14894:40;14951:19;;5902:134:19;14570:406:111;5902:134:19;6050:22;;;6067:4;6050:22;6046:306;;6092:10;6088:254;;6153:21;;;;;6136:9;6153:21;;;8989:25:111;;;6136:9:19;6153:3;:9;;;;;8962:18:111;;6153:21:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6193:42;;;;;;;;8715:25:111;;;6229:4:19;8756:18:111;;;8749:83;6136:39:19;;-1:-1:-1;6193:20:19;;;;;;8688:18:111;;6193:42:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6118:132;6088:254;;;6274:53;;;;;;;;9714:25:111;;;9755:18;;;9748:34;;;6321:4:19;9798:18:111;;;9791:83;6274:3:19;:19;;;;;9687:18:111;;6274:53:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6088:254;6361:11;;;;5442:937;;;;:::o;9270:154:29:-;9364:4;;9391:21;9409:2;9397;9391:21;:::i;:::-;:26;;;;;9270:154;-1:-1:-1;;;9270:154:29:o;422:690:18:-;532:7;541:4;610:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;610:24:18;644:25;653:4;:11;667:1;653:15;;;;:::i;:::-;644:3;;:8;:25::i;:::-;-1:-1:-1;679:22:18;;;;;;;;;;;;;;;;;;;:3;;:10;:22::i;:::-;-1:-1:-1;711:16:18;:3;722:4;711:10;:16::i;:::-;-1:-1:-1;756:30:18;789:18;:4;756:30;789:15;:18::i;:::-;756:51;;738:329;4584:9:29;;:16;4569:11;;;;:31;;738:329:18;;883:10;907:12;949:31;957:4;963;:16;;;949:7;:31::i;:::-;933:47;-1:-1:-1;933:47:18;-1:-1:-1;994:63:18;;;;1031:4;-1:-1:-1;1037:4:18;;-1:-1:-1;1023:19:18;;-1:-1:-1;;;1023:19:18;994:63;869:198;;847:11;:4;:9;:11::i;:::-;738:329;;;;1093:3;1099:5;1077:28;;;;;422:690;;;;;;:::o;8595:645:25:-;8768:2;8761:3;:9;8754:165;;8837:10;;8824:24;;8875:10;8883:2;8831:4;8875:10;:::i;:::-;;-1:-1:-1;8899:9:25;8906:2;8899:9;;:::i;:::-;;-1:-1:-1;8772:9:25;8779:2;8772:9;;:::i;:::-;;;8754:165;;;9081:10;;9140:11;;9007:2;:8;;;;9001:3;:15;9000:21;;9093:9;;9077:26;;;9136:22;;9188:21;9175:35;;8595:645::o;977:455:0:-;-1:-1:-1;;;;;;;;;;;;;;;;;1076:13:0;1087:2;1076:8;:13;:::i;:::-;:18;1072:81;;1128:13;1139:2;1128:8;:13;:::i;:::-;1122:20;;:2;:20;:::i;:::-;1110:32;;;;:::i;:::-;;;1072:81;-1:-1:-1;1208:12:0;;;;:23;;;1281:4;1275:11;;1299:16;;;-1:-1:-1;1328:14:0;;1376:18;;;1368:27;1355:41;;1208:12;977:455::o;5001:161::-;-1:-1:-1;;;;;;;;;;;;;;;;;5110:45:0;5116:3;5121;:7;;;:14;5137:4;5143;:11;5110:5;:45::i;:::-;5103:52;5001:161;-1:-1:-1;;;5001:161:0:o;4097:213:29:-;4199:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:21:29;4236:15;;;4261:14;;;:23;;;4294:9;4236:3;4294:4;:9::i;1118:457:18:-;1215:7;1224:4;1244:286;1257:5;:12;1251:3;:18;1244:286;;;1285:11;1299:20;:5;1315:3;1299:15;:20::i;:::-;1285:34;;;-1:-1:-1;1333:8:18;1340:1;1333:8;;:::i;:::-;;;1356:10;1380:12;1422:28;1434:5;1441:3;1446;1422:11;:28::i;:::-;1406:44;-1:-1:-1;1406:44:18;-1:-1:-1;1465:30:18;;;;1484:4;-1:-1:-1;1490:4:18;;-1:-1:-1;1476:19:18;;-1:-1:-1;;1476:19:18;1465:30;1509:10;1516:3;1509:10;;:::i;:::-;;;1271:259;;;1244:286;;;-1:-1:-1;1556:3:18;;;;-1:-1:-1;1118:457:18;-1:-1:-1;;1118:457:18:o;4733:688:29:-;4809:15;;;;4795:11;;;:29;;;4853:9;;:16;-1:-1:-1;4834:68:29;;4733:688;:::o;4834:68::-;4937:11;4965:34;4976:4;:9;;;4987:4;:11;;;4965:10;:34::i;:::-;4951:4;:11;;;:48;;;;:::i;:::-;5062:9;;4937:62;;-1:-1:-1;5062:25:29;;4937:62;5062:20;:25::i;:::-;5047:40;;:12;;;:40;5097:8;5104:1;5097:8;;:::i;:::-;5128:9;;5097:8;;-1:-1:-1;5128:25:29;;5097:8;5128:20;:25::i;:::-;5115:38;;:10;;;:38;5163:8;5170:1;5163:8;;:::i;:::-;5192:9;;5163:8;;-1:-1:-1;5192:25:29;;5163:8;5192:20;:25::i;:::-;5181:36;;:8;;;:36;5227:8;5234:1;5227:8;;:::i;:::-;5294:9;;5227:8;;-1:-1:-1;5272:19:29;;5294:25;;5227:8;5294:20;:25::i;:::-;5272:47;;;-1:-1:-1;5329:8:29;5336:1;5329:8;;:::i;:::-;5347:16;;;:22;;;5329:8;-1:-1:-1;5397:17:29;5403:11;5329:8;5397:17;:::i;:::-;5379:15;;;;:35;;;;-1:-1:-1;;4733:688:29:o;2874:1382:0:-;-1:-1:-1;;;;;;;;;;;;;;;;;3009:4:0;:11;3002:3;:18;;2994:27;;;;;;3048:12;;;;3036:9;3042:3;3036;:9;:::i;:::-;:24;3032:100;;;3076:45;3083:3;3088:28;3092:3;:12;;;3112:3;3106;:9;;;;:::i;:::-;3088:3;:28::i;:::-;:32;;3119:1;3088:32;:::i;:::-;3076:6;:45::i;:::-;3142:9;3161:8;3271:3;3265:10;3354:6;3348:13;3482:3;3477:2;3469:6;3465:15;3461:25;3453:33;;3578:6;3572:3;3567;3563:13;3560:25;3557:90;;;3628:3;3623;3619:13;3611:6;3604:29;3557:90;-1:-1:-1;;;3677:2:0;3667:13;;3750:165;3764:2;3757:3;:9;3750:165;;3833:10;;3820:24;;3871:10;3879:2;3827:4;3871:10;:::i;:::-;;-1:-1:-1;3895:9:0;3902:2;3895:9;;:::i;:::-;;-1:-1:-1;3768:9:0;3775:2;3768:9;;:::i;:::-;;;3750:165;;;4076:10;4135:11;;3993:23;4002:2;:8;;;3994:3;:17;3993:23;4131:22;;;4088:9;;4072:26;;;;4183:21;4170:35;;-1:-1:-1;4246:3:0;2874:1382;;;;;;:::o;1581:426:18:-;1699:7;;1818:19;:3;1833;1818:14;:19::i;:::-;:33;;1841:10;1818:33;1814:67;;-1:-1:-1;1869:3:18;;-1:-1:-1;1869:3:18;1853:28;;1814:67;1925:2;1919:3;:8;1915:42;;;-1:-1:-1;1945:3:18;;-1:-1:-1;1945:3:18;1929:28;;1915:42;1974:26;1987:3;1992:7;:3;1998:1;1992:7;:::i;:::-;1974:12;:26::i;:::-;1967:33;;;;1581:426;;;;;;;:::o;541:408:29:-;643:7;680:6;696:218;736:4;:11;730:3;:17;723:25;;;;:::i;:::-;762:16;781:19;:4;796:3;781:14;:19::i;:::-;762:38;;;-1:-1:-1;821:12:29;762:38;832:1;821:12;:::i;:::-;814:19;;;;:::i;:::-;;;851:8;863:1;851:13;847:57;;884:5;;;847:57;709:205;696:218;;;930:12;936:6;930:3;:12;:::i;:::-;923:19;541:408;-1:-1:-1;;;;541:408:29:o;6152:254:25:-;6296:11;;6251:10;;6285:7;:3;6291:1;6285:7;:::i;:::-;:22;;6277:31;;;;;;-1:-1:-1;6358:22:25;6372:1;6358:22;6352:29;6383:6;6348:42;;6152:254::o;6655:258::-;6799:11;;6754:10;;6788:7;:3;6794:1;6788:7;:::i;:::-;:22;;6780:31;;;;;;-1:-1:-1;6861:22:25;6875:1;6861:22;6855:29;6886:10;6851:46;;6655:258::o;2034:134:0:-;2084:4;2108:1;2104;:5;2100:44;;;-1:-1:-1;2132:1:0;2125:8;;2100:44;-1:-1:-1;2160:1:0;2034:134;-1:-1:-1;2034:134:0:o;1861:167::-;1956:7;;1973:19;1956:3;1983:8;1973:4;:19::i;:::-;;2002;2009:3;2014:6;2002;:19::i;:::-;;1924:104;1861:167;;:::o;2013:688:18:-;2113:7;2122:4;2165:2;2159:3;2146;:10;:16;;;;:::i;:::-;:21;2142:55;;;-1:-1:-1;2185:3:18;;-1:-1:-1;2185:3:18;2169:28;;2142:55;2207:11;2249:3;2232:417;2258:8;:3;2264:2;2258:8;:::i;:::-;2254:1;:12;2232:417;;;2295:1;2287:9;;;;;2310;2322:16;:3;2336:1;2322:13;:16::i;:::-;2310:28;;;;2361:2;2356:1;:7;;:17;;;;;2371:2;2367:1;:6;2356:17;2352:287;;;2400:6;2404:2;2400:1;:6;:::i;:::-;2393:13;;;;2352:287;;;2436:2;2431:1;:7;;:17;;;;;2446:2;2442:1;:6;2431:17;2427:212;;;2475:6;2479:2;2475:1;:6;:::i;2427:212::-;2511:2;2506:1;:7;;:18;;;;;2521:3;2517:1;:7;2506:18;2502:137;;;2551:6;2555:2;2551:1;:6;:::i;2502:137::-;2612:3;2618:5;2596:28;;;;;;;;;2502:137;-1:-1:-1;2268:3:18;;;;:::i;:::-;;;;2232:417;;;-1:-1:-1;2682:3:18;2689:4;;-1:-1:-1;2013:688:18;-1:-1:-1;;;2013:688:18:o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;543:184;595:77;592:1;585:88;692:4;689:1;682:15;716:4;713:1;706:15;732:257;804:4;798:11;;;836:17;;883:18;868:34;;904:22;;;865:62;862:88;;;930:18;;:::i;:::-;966:4;959:24;732:257;:::o;994:334::-;1065:2;1059:9;1121:2;1111:13;;-1:-1:-1;;1107:86:111;1095:99;;1224:18;1209:34;;1245:22;;;1206:62;1203:88;;;1271:18;;:::i;:::-;1307:2;1300:22;994:334;;-1:-1:-1;994:334:111:o;1333:245::-;1381:4;1414:18;1406:6;1403:30;1400:56;;;1436:18;;:::i;:::-;-1:-1:-1;1493:2:111;1481:15;-1:-1:-1;;1477:88:111;1567:4;1473:99;;1333:245::o;1583:462::-;1625:5;1678:3;1671:4;1663:6;1659:17;1655:27;1645:55;;1696:1;1693;1686:12;1645:55;1732:6;1719:20;1763:48;1779:31;1807:2;1779:31;:::i;:::-;1763:48;:::i;:::-;1836:2;1827:7;1820:19;1882:3;1875:4;1870:2;1862:6;1858:15;1854:26;1851:35;1848:55;;;1899:1;1896;1889:12;1848:55;1964:2;1957:4;1949:6;1945:17;1938:4;1929:7;1925:18;1912:55;2012:1;1987:16;;;2005:4;1983:27;1976:38;;;;1991:7;1583:462;-1:-1:-1;;;1583:462:111:o;2050:1741::-;2122:5;2175:3;2168:4;2160:6;2156:17;2152:27;2142:55;;2193:1;2190;2183:12;2142:55;2229:6;2216:20;2255:4;2278:18;2315:2;2311;2308:10;2305:36;;;2321:18;;:::i;:::-;2367:2;2364:1;2360:10;2390:28;2414:2;2410;2406:11;2390:28;:::i;:::-;2452:15;;;2522;;;2518:24;;;2483:12;;;;2554:15;;;2551:35;;;2582:1;2579;2572:12;2551:35;2618:2;2610:6;2606:15;2595:26;;2630:1132;2646:6;2641:3;2638:15;2630:1132;;;2732:3;2719:17;2768:2;2755:11;2752:19;2749:109;;;2812:1;2841:2;2837;2830:14;2749:109;2881:24;;2928:4;2956:12;;;-1:-1:-1;;2952:85:111;2948:94;-1:-1:-1;2945:184:111;;;3083:1;3112:2;3108;3101:14;2945:184;3155:22;;:::i;:::-;3227:2;3223;3219:11;3206:25;3260:2;3250:8;3247:16;3244:106;;;3304:1;3333:2;3329;3322:14;3244:106;3377:49;3422:3;3417:2;3406:8;3402:2;3398:17;3394:26;3377:49;:::i;:::-;3363:64;;-1:-1:-1;3469:11:111;;;3456:25;;3497:16;;;3494:109;;;3555:1;3585:3;3580;3573:16;3494:109;3639:49;3684:3;3679:2;3668:8;3664:2;3660:17;3656:26;3639:49;:::i;:::-;3623:14;;;3616:73;3702:18;;-1:-1:-1;;2663:12:111;;;;3740;;;;2630:1132;;;3780:5;2050:1741;-1:-1:-1;;;;;;;;2050:1741:111:o;3796:154::-;3882:42;3875:5;3871:54;3864:5;3861:65;3851:93;;3940:1;3937;3930:12;3851:93;3796:154;:::o;3955:898::-;4111:6;4119;4127;4135;4188:3;4176:9;4167:7;4163:23;4159:33;4156:53;;;4205:1;4202;4195:12;4156:53;4245:9;4232:23;4274:18;4315:2;4307:6;4304:14;4301:34;;;4331:1;4328;4321:12;4301:34;4354:49;4395:7;4386:6;4375:9;4371:22;4354:49;:::i;:::-;4344:59;;4456:2;4445:9;4441:18;4428:32;4412:48;;4485:2;4475:8;4472:16;4469:36;;;4501:1;4498;4491:12;4469:36;;4524:81;4597:7;4586:8;4575:9;4571:24;4524:81;:::i;:::-;4514:91;;;4655:2;4644:9;4640:18;4627:32;4668:31;4693:5;4668:31;:::i;:::-;4718:5;-1:-1:-1;4775:2:111;4760:18;;4747:32;4788:33;4747:32;4788:33;:::i;:::-;3955:898;;;;-1:-1:-1;3955:898:111;;-1:-1:-1;;3955:898:111:o;4858:272::-;4942:6;4995:2;4983:9;4974:7;4970:23;4966:32;4963:52;;;5011:1;5008;5001:12;4963:52;5050:9;5037:23;5069:31;5094:5;5069:31;:::i;5135:180::-;5194:6;5247:2;5235:9;5226:7;5222:23;5218:32;5215:52;;;5263:1;5260;5253:12;5215:52;-1:-1:-1;5286:23:111;;5135:180;-1:-1:-1;5135:180:111:o;5517:621::-;5655:6;5663;5716:2;5704:9;5695:7;5691:23;5687:32;5684:52;;;5732:1;5729;5722:12;5684:52;5772:9;5759:23;5801:18;5842:2;5834:6;5831:14;5828:34;;;5858:1;5855;5848:12;5828:34;5881:49;5922:7;5913:6;5902:9;5898:22;5881:49;:::i;:::-;5871:59;;5983:2;5972:9;5968:18;5955:32;5939:48;;6012:2;6002:8;5999:16;5996:36;;;6028:1;6025;6018:12;5996:36;;6051:81;6124:7;6113:8;6102:9;6098:24;6051:81;:::i;:::-;6041:91;;;5517:621;;;;;:::o;9025:251::-;9095:6;9148:2;9136:9;9127:7;9123:23;9119:32;9116:52;;;9164:1;9161;9154:12;9116:52;9196:9;9190:16;9215:31;9240:5;9215:31;:::i;9885:184::-;9955:6;10008:2;9996:9;9987:7;9983:23;9979:32;9976:52;;;10024:1;10021;10014:12;9976:52;-1:-1:-1;10047:16:111;;9885:184;-1:-1:-1;9885:184:111:o;10074:250::-;10159:1;10169:113;10183:6;10180:1;10177:13;10169:113;;;10259:11;;;10253:18;10240:11;;;10233:39;10205:2;10198:10;10169:113;;;-1:-1:-1;;10316:1:111;10298:16;;10291:27;10074:250::o;10329:329::-;10370:3;10408:5;10402:12;10435:6;10430:3;10423:19;10451:76;10520:6;10513:4;10508:3;10504:14;10497:4;10490:5;10486:16;10451:76;:::i;:::-;10572:2;10560:15;-1:-1:-1;;10556:88:111;10547:98;;;;10647:4;10543:109;;10329:329;-1:-1:-1;;10329:329:111:o;10663:1228::-;10877:4;10906:2;10946;10935:9;10931:18;10976:2;10965:9;10958:21;10999:6;11034;11028:13;11065:6;11057;11050:22;11091:2;11081:12;;11124:2;11113:9;11109:18;11102:25;;11186:2;11176:6;11173:1;11169:14;11158:9;11154:30;11150:39;11224:2;11216:6;11212:15;11245:1;11255:607;11269:6;11266:1;11263:13;11255:607;;;11358:66;11346:9;11338:6;11334:22;11330:95;11325:3;11318:108;11455:6;11449:13;11501:2;11495:9;11532:2;11524:6;11517:18;11562:47;11605:2;11597:6;11593:15;11579:12;11562:47;:::i;:::-;11650:11;;;11644:18;11699:19;;;11682:15;;;11675:44;11644:18;11548:61;-1:-1:-1;11742:40:111;11548:61;11644:18;11742:40;:::i;:::-;11840:12;;;;11732:50;-1:-1:-1;;;11805:15:111;;;;11291:1;11284:9;11255:607;;;-1:-1:-1;11879:6:111;;10663:1228;-1:-1:-1;;;;;;;;10663:1228:111:o;11896:812::-;11983:6;11991;12044:2;12032:9;12023:7;12019:23;12015:32;12012:52;;;12060:1;12057;12050:12;12012:52;12093:9;12087:16;12126:18;12118:6;12115:30;12112:50;;;12158:1;12155;12148:12;12112:50;12181:22;;12234:4;12226:13;;12222:27;-1:-1:-1;12212:55:111;;12263:1;12260;12253:12;12212:55;12292:2;12286:9;12317:48;12333:31;12361:2;12333:31;:::i;12317:48::-;12388:2;12381:5;12374:17;12430:7;12423:4;12418:2;12414;12410:11;12406:22;12403:35;12400:55;;;12451:1;12448;12441:12;12400:55;12464:71;12532:2;12525:4;12518:5;12514:16;12507:4;12503:2;12499:13;12464:71;:::i;:::-;12554:5;12544:15;;;;;12602:4;12591:9;12587:20;12581:27;12648:10;12641:5;12637:22;12630:5;12627:33;12617:61;;12674:1;12671;12664:12;12617:61;12697:5;12687:15;;;11896:812;;;;;:::o;12713:184::-;12765:77;12762:1;12755:88;12862:4;12859:1;12852:15;12886:4;12883:1;12876:15;12902:125;12967:9;;;12988:10;;;12985:36;;;13001:18;;:::i;13032:128::-;13099:9;;;13120:11;;;13117:37;;;13134:18;;:::i;13165:217::-;13312:2;13301:9;13294:21;13275:4;13332:44;13372:2;13361:9;13357:18;13349:6;13332:44;:::i;13387:277::-;13454:6;13507:2;13495:9;13486:7;13482:23;13478:32;13475:52;;;13523:1;13520;13513:12;13475:52;13555:9;13549:16;13608:5;13601:13;13594:21;13587:5;13584:32;13574:60;;13630:1;13627;13620:12;14073:303;14246:2;14235:9;14228:21;14209:4;14266:44;14306:2;14295:9;14291:18;14283:6;14266:44;:::i;:::-;14258:52;;14358:10;14350:6;14346:23;14341:2;14330:9;14326:18;14319:51;14073:303;;;;;:::o;14381:184::-;14433:77;14430:1;14423:88;14530:4;14527:1;14520:15;14554:4;14551:1;14544:15;14981:249;15079:1;15068:16;;;15050;;;;15046:39;15110:66;15100:77;;15189:10;15179:21;;15097:104;15094:130;;;15204:18;;:::i;15235:266::-;15267:1;15293;15283:189;;15328:77;15325:1;15318:88;15429:4;15426:1;15419:15;15457:4;15454:1;15447:15;15283:189;-1:-1:-1;15486:9:111;;15235:266::o;15506:168::-;15579:9;;;15610;;15627:15;;;15621:22;;15607:37;15597:71;;15648:18;;:::i;15679:184::-;15731:77;15728:1;15721:88;15828:4;15825:1;15818:15;15852:4;15849:1;15842:15;15868:195;15907:3;15938:66;15931:5;15928:77;15925:103;;16008:18;;:::i;:::-;-1:-1:-1;16055:1:111;16044:13;;15868:195::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1645600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "ens()": "infinite",
                "inceptions(bytes32)": "2520",
                "oracle()": "infinite",
                "proveAndClaim(bytes,(bytes,bytes)[])": "infinite",
                "proveAndClaimWithResolver(bytes,(bytes,bytes)[],address,address)": "infinite",
                "setPublicSuffixList(address)": "infinite",
                "suffixes()": "2335",
                "supportsInterface(bytes4)": "370"
              },
              "internal": {
                "_claim(bytes memory,struct DNSSEC.RRSetWithSignature memory[] memory)": "infinite",
                "enableNode(bytes memory,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "ens()": "3f15457f",
              "inceptions(bytes32)": "25916d41",
              "oracle()": "7dc0d1d0",
              "proveAndClaim(bytes,(bytes,bytes)[])": "29d56630",
              "proveAndClaimWithResolver(bytes,(bytes,bytes)[],address,address)": "06963218",
              "setPublicSuffixList(address)": "1ecfc411",
              "suffixes()": "30349ebe",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract DNSSEC\",\"name\":\"_dnssec\",\"type\":\"address\"},{\"internalType\":\"contract PublicSuffixList\",\"name\":\"_suffixes\",\"type\":\"address\"},{\"internalType\":\"contract ENS\",\"name\":\"_ens\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"NoOwnerRecordFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StaleProof\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"dnsname\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"inception\",\"type\":\"uint32\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"NewOracle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"suffixes\",\"type\":\"address\"}],\"name\":\"NewPublicSuffixList\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"inceptions\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contract DNSSEC\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature[]\",\"name\":\"input\",\"type\":\"tuple[]\"}],\"name\":\"proveAndClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature[]\",\"name\":\"input\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"proveAndClaimWithResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract PublicSuffixList\",\"name\":\"_suffixes\",\"type\":\"address\"}],\"name\":\"setPublicSuffixList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"suffixes\",\"outputs\":[{\"internalType\":\"contract PublicSuffixList\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An ENS registrar that allows the owner of a DNS name to claim the      corresponding name in ENS.\",\"kind\":\"dev\",\"methods\":{\"proveAndClaim(bytes,(bytes,bytes)[])\":{\"details\":\"Submits proofs to the DNSSEC oracle, then claims a name using those proofs.\",\"params\":{\"input\":\"A chain of signed DNS RRSETs ending with a text record.\",\"name\":\"The name to claim, in DNS wire format.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnsregistrar/DNSRegistrar.sol\":\"DNSRegistrar\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/dnsregistrar/DNSClaimChecker.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\nimport \\\"../dnssec-oracle/DNSSEC.sol\\\";\\nimport \\\"../dnssec-oracle/BytesUtils.sol\\\";\\nimport \\\"../dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\nlibrary DNSClaimChecker {\\n    using BytesUtils for bytes;\\n    using RRUtils for *;\\n    using Buffer for Buffer.buffer;\\n\\n    uint16 constant CLASS_INET = 1;\\n    uint16 constant TYPE_TXT = 16;\\n\\n    function getOwnerAddress(bytes memory name, bytes memory data)\\n        internal\\n        pure\\n        returns (address, bool)\\n    {\\n        // Add \\\"_ens.\\\" to the front of the name.\\n        Buffer.buffer memory buf;\\n        buf.init(name.length + 5);\\n        buf.append(\\\"\\\\x04_ens\\\");\\n        buf.append(name);\\n\\n        for (\\n            RRUtils.RRIterator memory iter = data.iterateRRs(0);\\n            !iter.done();\\n            iter.next()\\n        ) {\\n            bool found;\\n            address addr;\\n            (addr, found) = parseRR(data, iter.rdataOffset);\\n            if (found) {\\n                return (addr, true);\\n            }\\n        }\\n\\n        return (address(0x0), false);\\n    }\\n\\n    function parseRR(bytes memory rdata, uint256 idx)\\n        internal\\n        pure\\n        returns (address, bool)\\n    {\\n        while (idx < rdata.length) {\\n            uint256 len = rdata.readUint8(idx);\\n            idx += 1;\\n\\n            bool found;\\n            address addr;\\n            (addr, found) = parseString(rdata, idx, len);\\n\\n            if (found) return (addr, true);\\n            idx += len;\\n        }\\n\\n        return (address(0x0), false);\\n    }\\n\\n    function parseString(\\n        bytes memory str,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (address, bool) {\\n        // TODO: More robust parsing that handles whitespace and multiple key/value pairs\\n        if (str.readUint32(idx) != 0x613d3078) return (address(0x0), false); // 0x613d3078 == 'a=0x'\\n        if (len < 44) return (address(0x0), false);\\n        return hexToAddress(str, idx + 4);\\n    }\\n\\n    function hexToAddress(bytes memory str, uint256 idx)\\n        internal\\n        pure\\n        returns (address, bool)\\n    {\\n        if (str.length - idx < 40) return (address(0x0), false);\\n        uint256 ret = 0;\\n        for (uint256 i = idx; i < idx + 40; i++) {\\n            ret <<= 4;\\n            uint256 x = str.readUint8(i);\\n            if (x >= 48 && x < 58) {\\n                ret |= x - 48;\\n            } else if (x >= 65 && x < 71) {\\n                ret |= x - 55;\\n            } else if (x >= 97 && x < 103) {\\n                ret |= x - 87;\\n            } else {\\n                return (address(0x0), false);\\n            }\\n        }\\n        return (address(uint160(ret)), true);\\n    }\\n}\\n\",\"keccak256\":\"0xe7d69f26310a58369fa5f975eff5f8df2a59a47db96ce575878e15ea0a842286\",\"license\":\"MIT\"},\"contracts/dnsregistrar/DNSRegistrar.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\nimport \\\"../dnssec-oracle/BytesUtils.sol\\\";\\nimport \\\"../dnssec-oracle/DNSSEC.sol\\\";\\nimport \\\"../dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"../registry/ENSRegistry.sol\\\";\\nimport \\\"../root/Root.sol\\\";\\nimport \\\"../resolvers/profiles/AddrResolver.sol\\\";\\nimport \\\"./DNSClaimChecker.sol\\\";\\nimport \\\"./PublicSuffixList.sol\\\";\\nimport \\\"./IDNSRegistrar.sol\\\";\\n\\n/**\\n * @dev An ENS registrar that allows the owner of a DNS name to claim the\\n *      corresponding name in ENS.\\n */\\n// TODO: Record inception time of any claimed name, so old proofs can't be used to revert changes to a name.\\ncontract DNSRegistrar is IDNSRegistrar, IERC165 {\\n    using BytesUtils for bytes;\\n    using Buffer for Buffer.buffer;\\n    using RRUtils for *;\\n\\n    ENS public immutable ens;\\n    DNSSEC public immutable oracle;\\n    PublicSuffixList public suffixes;\\n    // A mapping of the most recent signatures seen for each claimed domain.\\n    mapping(bytes32 => uint32) public inceptions;\\n\\n    error NoOwnerRecordFound();\\n    error StaleProof();\\n\\n    struct OwnerRecord {\\n        bytes name;\\n        address owner;\\n        address resolver;\\n        uint64 ttl;\\n    }\\n\\n    event Claim(\\n        bytes32 indexed node,\\n        address indexed owner,\\n        bytes dnsname,\\n        uint32 inception\\n    );\\n    event NewOracle(address oracle);\\n    event NewPublicSuffixList(address suffixes);\\n\\n    constructor(\\n        DNSSEC _dnssec,\\n        PublicSuffixList _suffixes,\\n        ENS _ens\\n    ) {\\n        oracle = _dnssec;\\n        emit NewOracle(address(oracle));\\n        suffixes = _suffixes;\\n        emit NewPublicSuffixList(address(suffixes));\\n        ens = _ens;\\n    }\\n\\n    /**\\n     * @dev This contract's owner-only functions can be invoked by the owner of the ENS root.\\n     */\\n    modifier onlyOwner() {\\n        Root root = Root(ens.owner(bytes32(0)));\\n        address owner = root.owner();\\n        require(msg.sender == owner);\\n        _;\\n    }\\n\\n    function setPublicSuffixList(PublicSuffixList _suffixes) public onlyOwner {\\n        suffixes = _suffixes;\\n        emit NewPublicSuffixList(address(suffixes));\\n    }\\n\\n    /**\\n     * @dev Submits proofs to the DNSSEC oracle, then claims a name using those proofs.\\n     * @param name The name to claim, in DNS wire format.\\n     * @param input A chain of signed DNS RRSETs ending with a text record.\\n     */\\n    function proveAndClaim(\\n        bytes memory name,\\n        DNSSEC.RRSetWithSignature[] memory input\\n    ) public override {\\n        (bytes32 rootNode, bytes32 labelHash, address addr) = _claim(\\n            name,\\n            input\\n        );\\n        ens.setSubnodeOwner(rootNode, labelHash, addr);\\n    }\\n\\n    function proveAndClaimWithResolver(\\n        bytes memory name,\\n        DNSSEC.RRSetWithSignature[] memory input,\\n        address resolver,\\n        address addr\\n    ) public override {\\n        (bytes32 rootNode, bytes32 labelHash, address owner) = _claim(\\n            name,\\n            input\\n        );\\n        require(\\n            msg.sender == owner,\\n            \\\"Only owner can call proveAndClaimWithResolver\\\"\\n        );\\n        if (addr != address(0)) {\\n            require(\\n                resolver != address(0),\\n                \\\"Cannot set addr if resolver is not set\\\"\\n            );\\n            // Set ourselves as the owner so we can set a record on the resolver\\n            ens.setSubnodeRecord(\\n                rootNode,\\n                labelHash,\\n                address(this),\\n                resolver,\\n                0\\n            );\\n            bytes32 node = keccak256(abi.encodePacked(rootNode, labelHash));\\n            // Set the resolver record\\n            AddrResolver(resolver).setAddr(node, addr);\\n            // Transfer the record to the owner\\n            ens.setOwner(node, owner);\\n        } else {\\n            ens.setSubnodeRecord(rootNode, labelHash, owner, resolver, 0);\\n        }\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        external\\n        pure\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IERC165).interfaceId ||\\n            interfaceID == type(IDNSRegistrar).interfaceId;\\n    }\\n\\n    function _claim(bytes memory name, DNSSEC.RRSetWithSignature[] memory input)\\n        internal\\n        returns (\\n            bytes32 parentNode,\\n            bytes32 labelHash,\\n            address addr\\n        )\\n    {\\n        (bytes memory data, uint32 inception) = oracle.verifyRRSet(input);\\n\\n        // Get the first label\\n        uint256 labelLen = name.readUint8(0);\\n        labelHash = name.keccak(1, labelLen);\\n\\n        // Parent name must be in the public suffix list.\\n        bytes memory parentName = name.substring(\\n            labelLen + 1,\\n            name.length - labelLen - 1\\n        );\\n        require(\\n            suffixes.isPublicSuffix(parentName),\\n            \\\"Parent name must be a public suffix\\\"\\n        );\\n\\n        // Make sure the parent name is enabled\\n        parentNode = enableNode(parentName, 0);\\n\\n        bytes32 node = keccak256(abi.encodePacked(parentNode, labelHash));\\n        if (!RRUtils.serialNumberGte(inception, inceptions[node])) {\\n            revert StaleProof();\\n        }\\n        inceptions[node] = inception;\\n\\n        (addr, ) = DNSClaimChecker.getOwnerAddress(name, data);\\n\\n        emit Claim(node, addr, name, inception);\\n    }\\n\\n    function enableNode(bytes memory domain, uint256 offset)\\n        internal\\n        returns (bytes32 node)\\n    {\\n        uint256 len = domain.readUint8(offset);\\n        if (len == 0) {\\n            return bytes32(0);\\n        }\\n\\n        bytes32 parentNode = enableNode(domain, offset + len + 1);\\n        bytes32 label = domain.keccak(offset + 1, len);\\n        node = keccak256(abi.encodePacked(parentNode, label));\\n        address owner = ens.owner(node);\\n        require(\\n            owner == address(0) || owner == address(this),\\n            \\\"Cannot enable a name owned by someone else\\\"\\n        );\\n        if (owner != address(this)) {\\n            if (parentNode == bytes32(0)) {\\n                Root root = Root(ens.owner(bytes32(0)));\\n                root.setSubnodeOwner(label, address(this));\\n            } else {\\n                ens.setSubnodeOwner(parentNode, label, address(this));\\n            }\\n        }\\n        return node;\\n    }\\n}\\n\",\"keccak256\":\"0x14026df5da71e48795b54b0479d8a7a937687ad0b360409228d50c2c11574667\",\"license\":\"MIT\"},\"contracts/dnsregistrar/IDNSRegistrar.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\nimport \\\"../dnssec-oracle/DNSSEC.sol\\\";\\n\\ninterface IDNSRegistrar {\\n    function proveAndClaim(\\n        bytes memory name,\\n        DNSSEC.RRSetWithSignature[] memory input\\n    ) external;\\n\\n    function proveAndClaimWithResolver(\\n        bytes memory name,\\n        DNSSEC.RRSetWithSignature[] memory input,\\n        address resolver,\\n        address addr\\n    ) external;\\n}\\n\",\"keccak256\":\"0xcf6607fe4918cabb1c4c2130597dd9cc0f63492564b05de60496eb46873a73b7\",\"license\":\"MIT\"},\"contracts/dnsregistrar/PublicSuffixList.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\ninterface PublicSuffixList {\\n    function isPublicSuffix(bytes calldata name) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12158ba8838ee2b1ebb0178a52d2f4d54dcc68282d569226e62afc2b0dccbbac\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/DNSSEC.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\npragma experimental ABIEncoderV2;\\n\\nabstract contract DNSSEC {\\n    bytes public anchors;\\n\\n    struct RRSetWithSignature {\\n        bytes rrset;\\n        bytes sig;\\n    }\\n\\n    event AlgorithmUpdated(uint8 id, address addr);\\n    event DigestUpdated(uint8 id, address addr);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input)\\n        external\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\\n        public\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n}\\n\",\"keccak256\":\"0xaa9bd0b4e3533e757b73939e47a9e6c2a4fd383fb00fc4ccf33f101bdea93263\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/ENSRegistry.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\n\\n/**\\n * The ENS registry contract.\\n */\\ncontract ENSRegistry is ENS {\\n    struct Record {\\n        address owner;\\n        address resolver;\\n        uint64 ttl;\\n    }\\n\\n    mapping(bytes32 => Record) records;\\n    mapping(address => mapping(address => bool)) operators;\\n\\n    // Permits modifications only by the owner of the specified node.\\n    modifier authorised(bytes32 node) {\\n        address owner = records[node].owner;\\n        require(owner == msg.sender || operators[owner][msg.sender]);\\n        _;\\n    }\\n\\n    /**\\n     * @dev Constructs a new ENS registry.\\n     */\\n    constructor() public {\\n        records[0x0].owner = msg.sender;\\n    }\\n\\n    /**\\n     * @dev Sets the record for a node.\\n     * @param node The node to update.\\n     * @param owner The address of the new owner.\\n     * @param resolver The address of the resolver.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external virtual override {\\n        setOwner(node, owner);\\n        _setResolverAndTTL(node, resolver, ttl);\\n    }\\n\\n    /**\\n     * @dev Sets the record for a subnode.\\n     * @param node The parent node.\\n     * @param label The hash of the label specifying the subnode.\\n     * @param owner The address of the new owner.\\n     * @param resolver The address of the resolver.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external virtual override {\\n        bytes32 subnode = setSubnodeOwner(node, label, owner);\\n        _setResolverAndTTL(subnode, resolver, ttl);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of a node to a new address. May only be called by the current owner of the node.\\n     * @param node The node to transfer ownership of.\\n     * @param owner The address of the new owner.\\n     */\\n    function setOwner(bytes32 node, address owner)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        _setOwner(node, owner);\\n        emit Transfer(node, owner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\\n     * @param node The parent node.\\n     * @param label The hash of the label specifying the subnode.\\n     * @param owner The address of the new owner.\\n     */\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) public virtual override authorised(node) returns (bytes32) {\\n        bytes32 subnode = keccak256(abi.encodePacked(node, label));\\n        _setOwner(subnode, owner);\\n        emit NewOwner(node, label, owner);\\n        return subnode;\\n    }\\n\\n    /**\\n     * @dev Sets the resolver address for the specified node.\\n     * @param node The node to update.\\n     * @param resolver The address of the resolver.\\n     */\\n    function setResolver(bytes32 node, address resolver)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        emit NewResolver(node, resolver);\\n        records[node].resolver = resolver;\\n    }\\n\\n    /**\\n     * @dev Sets the TTL for the specified node.\\n     * @param node The node to update.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setTTL(bytes32 node, uint64 ttl)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        emit NewTTL(node, ttl);\\n        records[node].ttl = ttl;\\n    }\\n\\n    /**\\n     * @dev Enable or disable approval for a third party (\\\"operator\\\") to manage\\n     *  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\\n     * @param operator Address to add to the set of authorized operators.\\n     * @param approved True if the operator is approved, false to revoke approval.\\n     */\\n    function setApprovalForAll(address operator, bool approved)\\n        external\\n        virtual\\n        override\\n    {\\n        operators[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Returns the address that owns the specified node.\\n     * @param node The specified node.\\n     * @return address of the owner.\\n     */\\n    function owner(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        address addr = records[node].owner;\\n        if (addr == address(this)) {\\n            return address(0x0);\\n        }\\n\\n        return addr;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the resolver for the specified node.\\n     * @param node The specified node.\\n     * @return address of the resolver.\\n     */\\n    function resolver(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        return records[node].resolver;\\n    }\\n\\n    /**\\n     * @dev Returns the TTL of a node, and any records associated with it.\\n     * @param node The specified node.\\n     * @return ttl of the node.\\n     */\\n    function ttl(bytes32 node) public view virtual override returns (uint64) {\\n        return records[node].ttl;\\n    }\\n\\n    /**\\n     * @dev Returns whether a record has been imported to the registry.\\n     * @param node The specified node.\\n     * @return Bool if record exists\\n     */\\n    function recordExists(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return records[node].owner != address(0x0);\\n    }\\n\\n    /**\\n     * @dev Query if an address is an authorized operator for another address.\\n     * @param owner The address that owns the records.\\n     * @param operator The address that acts on behalf of the owner.\\n     * @return True if `operator` is an approved operator for `owner`, false otherwise.\\n     */\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return operators[owner][operator];\\n    }\\n\\n    function _setOwner(bytes32 node, address owner) internal virtual {\\n        records[node].owner = owner;\\n    }\\n\\n    function _setResolverAndTTL(\\n        bytes32 node,\\n        address resolver,\\n        uint64 ttl\\n    ) internal {\\n        if (resolver != records[node].resolver) {\\n            records[node].resolver = resolver;\\n            emit NewResolver(node, resolver);\\n        }\\n\\n        if (ttl != records[node].ttl) {\\n            records[node].ttl = ttl;\\n            emit NewTTL(node, ttl);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x047874111ed16d3add08a3bf6323012655e22685b8007eab45f51a074ae5793a\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/AddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IAddrResolver.sol\\\";\\nimport \\\"./IAddressResolver.sol\\\";\\n\\nabstract contract AddrResolver is\\n    IAddrResolver,\\n    IAddressResolver,\\n    ResolverBase\\n{\\n    uint256 private constant COIN_TYPE_ETH = 60;\\n\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_addresses;\\n\\n    /**\\n     * Sets the address associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param a The address to set.\\n     */\\n    function setAddr(bytes32 node, address a)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        setAddr(node, COIN_TYPE_ETH, addressToBytes(a));\\n    }\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address payable)\\n    {\\n        bytes memory a = addr(node, COIN_TYPE_ETH);\\n        if (a.length == 0) {\\n            return payable(0);\\n        }\\n        return bytesToAddress(a);\\n    }\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes memory a\\n    ) public virtual authorised(node) {\\n        emit AddressChanged(node, coinType, a);\\n        if (coinType == COIN_TYPE_ETH) {\\n            emit AddrChanged(node, bytesToAddress(a));\\n        }\\n        versionable_addresses[recordVersions[node]][node][coinType] = a;\\n    }\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_addresses[recordVersions[node]][node][coinType];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IAddrResolver).interfaceId ||\\n            interfaceID == type(IAddressResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function bytesToAddress(bytes memory b)\\n        internal\\n        pure\\n        returns (address payable a)\\n    {\\n        require(b.length == 20);\\n        assembly {\\n            a := div(mload(add(b, 32)), exp(256, 12))\\n        }\\n    }\\n\\n    function addressToBytes(address a) internal pure returns (bytes memory b) {\\n        b = new bytes(20);\\n        assembly {\\n            mstore(add(b, 32), mul(a, exp(256, 12)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd646c5d83209db92099b84effe8ab19bb9fccb95c25b2984e2d217c70eeccbf3\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/root/Controllable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool enabled);\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n\\n    function setController(address controller, bool enabled) public onlyOwner {\\n        controllers[controller] = enabled;\\n        emit ControllerChanged(controller, enabled);\\n    }\\n}\\n\",\"keccak256\":\"0xb19b8c0fafe9ca2b4bf8aaafee486fa31437672e1e1977bdf84bfe03464969db\"},\"contracts/root/Root.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"./Controllable.sol\\\";\\n\\ncontract Root is Ownable, Controllable {\\n    bytes32 private constant ROOT_NODE = bytes32(0);\\n\\n    bytes4 private constant INTERFACE_META_ID =\\n        bytes4(keccak256(\\\"supportsInterface(bytes4)\\\"));\\n\\n    event TLDLocked(bytes32 indexed label);\\n\\n    ENS public ens;\\n    mapping(bytes32 => bool) public locked;\\n\\n    constructor(ENS _ens) public {\\n        ens = _ens;\\n    }\\n\\n    function setSubnodeOwner(bytes32 label, address owner)\\n        external\\n        onlyController\\n    {\\n        require(!locked[label]);\\n        ens.setSubnodeOwner(ROOT_NODE, label, owner);\\n    }\\n\\n    function setResolver(address resolver) external onlyOwner {\\n        ens.setResolver(ROOT_NODE, resolver);\\n    }\\n\\n    function lock(bytes32 label) external onlyOwner {\\n        emit TLDLocked(label);\\n        locked[label] = true;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        external\\n        pure\\n        returns (bool)\\n    {\\n        return interfaceID == INTERFACE_META_ID;\\n    }\\n}\\n\",\"keccak256\":\"0xf6fed46bbdc8a425d112c473a649045148b2e0404647c97590d2a3e2798c9fe3\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 3467,
                "contract": "contracts/dnsregistrar/DNSRegistrar.sol:DNSRegistrar",
                "label": "suffixes",
                "offset": 0,
                "slot": "0",
                "type": "t_contract(PublicSuffixList)4034"
              },
              {
                "astId": 3471,
                "contract": "contracts/dnsregistrar/DNSRegistrar.sol:DNSRegistrar",
                "label": "inceptions",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_uint32)"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_contract(PublicSuffixList)4034": {
                "encoding": "inplace",
                "label": "contract PublicSuffixList",
                "numberOfBytes": "20"
              },
              "t_mapping(t_bytes32,t_uint32)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint32)",
                "numberOfBytes": "32",
                "value": "t_uint32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnsregistrar/IDNSRegistrar.sol": {
        "IDNSRegistrar": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "rrset",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "sig",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DNSSEC.RRSetWithSignature[]",
                  "name": "input",
                  "type": "tuple[]"
                }
              ],
              "name": "proveAndClaim",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "rrset",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "sig",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DNSSEC.RRSetWithSignature[]",
                  "name": "input",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "proveAndClaimWithResolver",
              "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": {
              "proveAndClaim(bytes,(bytes,bytes)[])": "29d56630",
              "proveAndClaimWithResolver(bytes,(bytes,bytes)[],address,address)": "06963218"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature[]\",\"name\":\"input\",\"type\":\"tuple[]\"}],\"name\":\"proveAndClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature[]\",\"name\":\"input\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"proveAndClaimWithResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnsregistrar/IDNSRegistrar.sol\":\"IDNSRegistrar\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnsregistrar/IDNSRegistrar.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\nimport \\\"../dnssec-oracle/DNSSEC.sol\\\";\\n\\ninterface IDNSRegistrar {\\n    function proveAndClaim(\\n        bytes memory name,\\n        DNSSEC.RRSetWithSignature[] memory input\\n    ) external;\\n\\n    function proveAndClaimWithResolver(\\n        bytes memory name,\\n        DNSSEC.RRSetWithSignature[] memory input,\\n        address resolver,\\n        address addr\\n    ) external;\\n}\\n\",\"keccak256\":\"0xcf6607fe4918cabb1c4c2130597dd9cc0f63492564b05de60496eb46873a73b7\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/DNSSEC.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\npragma experimental ABIEncoderV2;\\n\\nabstract contract DNSSEC {\\n    bytes public anchors;\\n\\n    struct RRSetWithSignature {\\n        bytes rrset;\\n        bytes sig;\\n    }\\n\\n    event AlgorithmUpdated(uint8 id, address addr);\\n    event DigestUpdated(uint8 id, address addr);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input)\\n        external\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\\n        public\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n}\\n\",\"keccak256\":\"0xaa9bd0b4e3533e757b73939e47a9e6c2a4fd383fb00fc4ccf33f101bdea93263\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnsregistrar/PublicSuffixList.sol": {
        "PublicSuffixList": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                }
              ],
              "name": "isPublicSuffix",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "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": {
              "isPublicSuffix(bytes)": "4f89059e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"}],\"name\":\"isPublicSuffix\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnsregistrar/PublicSuffixList.sol\":\"PublicSuffixList\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnsregistrar/PublicSuffixList.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\ninterface PublicSuffixList {\\n    function isPublicSuffix(bytes calldata name) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12158ba8838ee2b1ebb0178a52d2f4d54dcc68282d569226e62afc2b0dccbbac\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnsregistrar/RecordParser.sol": {
        "RecordParser": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220188668a39cf79285bc2a53b86dc83984692ae3067f76f58c30200f4d321b636264736f6c63430008110033",
              "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 XOR DUP7 PUSH9 0xA39CF79285BC2A53B8 PUSH14 0xC83984692AE3067F76F58C30200F 0x4D ORIGIN SHL PUSH4 0x6264736F PUSH13 0x63430008110033000000000000 ",
              "sourceMap": "101:1051:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;101:1051:22;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220188668a39cf79285bc2a53b86dc83984692ae3067f76f58c30200f4d321b636264736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP7 PUSH9 0xA39CF79285BC2A53B8 PUSH14 0xC83984692AE3067F76F58C30200F 0x4D ORIGIN SHL PUSH4 0x6264736F PUSH13 0x63430008110033000000000000 ",
              "sourceMap": "101:1051:22:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "readKeyValue(bytes memory,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnsregistrar/RecordParser.sol\":\"RecordParser\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnsregistrar/RecordParser.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.11;\\n\\nimport \\\"../dnssec-oracle/BytesUtils.sol\\\";\\n\\nlibrary RecordParser {\\n    using BytesUtils for bytes;\\n\\n    /**\\n     * @dev Parses a key-value record into a key and value.\\n     * @param input The input string\\n     * @param offset The offset to start reading at\\n     */\\n    function readKeyValue(\\n        bytes memory input,\\n        uint256 offset,\\n        uint256 len\\n    )\\n        internal\\n        pure\\n        returns (\\n            bytes memory key,\\n            bytes memory value,\\n            uint256 nextOffset\\n        )\\n    {\\n        uint256 separator = input.find(offset, len, \\\"=\\\");\\n        if (separator == type(uint256).max) {\\n            return (\\\"\\\", \\\"\\\", type(uint256).max);\\n        }\\n\\n        uint256 terminator = input.find(\\n            separator,\\n            len + offset - separator,\\n            \\\" \\\"\\n        );\\n        if (terminator == type(uint256).max) {\\n            terminator = input.length;\\n        }\\n\\n        key = input.substring(offset, separator - offset);\\n        value = input.substring(separator + 1, terminator - separator - 1);\\n        nextOffset = terminator + 1;\\n    }\\n}\\n\",\"keccak256\":\"0xba1efbc3cdd222311128a57139ca9a35eff8913795946d20ea2a2b7242fb3eca\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnsregistrar/SimplePublicSuffixList.sol": {
        "SimplePublicSuffixList": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "names",
                  "type": "bytes[]"
                }
              ],
              "name": "addPublicSuffixes",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                }
              ],
              "name": "isPublicSuffix",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_15698": {
                  "entryPoint": null,
                  "id": 15698,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610625806100326000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636329cdfc116100505780636329cdfc146100c35780638da5cb5b146100d8578063f2fde38b1461011d57600080fd5b80632f54bf6e1461006c5780634f89059e146100b0575b600080fd5b61009b61007a3660046102be565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405190151581526020015b60405180910390f35b61009b6100be3660046102fb565b610130565b6100d66100d13660046103eb565b61015f565b005b6000546100f89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a7565b6100d661012b3660046102be565b61020d565b600060018383604051610144929190610522565b9081526040519081900360200190205460ff16905092915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461018357600080fd5b60005b8151811015610209576001808383815181106101a4576101a4610532565b60200260200101516040516101b99190610561565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009092169190911790558061020181610590565b915050610186565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461023157600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156102d057600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146102f457600080fd5b9392505050565b6000806020838503121561030e57600080fd5b823567ffffffffffffffff8082111561032657600080fd5b818501915085601f83011261033a57600080fd5b81358181111561034957600080fd5b86602082850101111561035b57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103e3576103e361036d565b604052919050565b600060208083850312156103fe57600080fd5b823567ffffffffffffffff8082111561041657600080fd5b8185019150601f868184011261042b57600080fd5b82358281111561043d5761043d61036d565b8060051b61044c86820161039c565b918252848101860191868101908a84111561046657600080fd5b87870192505b83831015610514578235868111156104845760008081fd5b8701603f81018c136104965760008081fd5b888101356040888211156104ac576104ac61036d565b6104db8b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08a8501160161039c565b8281528e828486010111156104f05760008081fd5b828285018d83013760009281018c019290925250835250918701919087019061046c565b9a9950505050505050505050565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000825160005b818110156105825760208186018101518583015201610568565b506000920191825250919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036105e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220a98d866eca23b863c194c9541b36da12f4a7ad310f0cfec91c11a7d5c27a15e164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x625 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6329CDFC GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x6329CDFC EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x11D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F54BF6E EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x4F89059E EQ PUSH2 0xB0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH2 0xBE CALLDATASIZE PUSH1 0x4 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x130 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EB JUMP JUMPDEST PUSH2 0x15F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xF8 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA7 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x12B CALLDATASIZE PUSH1 0x4 PUSH2 0x2BE JUMP JUMPDEST PUSH2 0x20D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x144 SWAP3 SWAP2 SWAP1 PUSH2 0x522 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x209 JUMPI PUSH1 0x1 DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A4 JUMPI PUSH2 0x1A4 PUSH2 0x532 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1B9 SWAP2 SWAP1 PUSH2 0x561 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 PUSH2 0x201 DUP2 PUSH2 0x590 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x186 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3E3 JUMPI PUSH2 0x3E3 PUSH2 0x36D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP PUSH1 0x1F DUP7 DUP2 DUP5 ADD SLT PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x43D JUMPI PUSH2 0x43D PUSH2 0x36D JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x44C DUP7 DUP3 ADD PUSH2 0x39C JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP5 DUP2 ADD DUP7 ADD SWAP2 DUP7 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 DUP8 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x514 JUMPI DUP3 CALLDATALOAD DUP7 DUP2 GT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP13 SGT PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP9 DUP2 ADD CALLDATALOAD PUSH1 0x40 DUP9 DUP3 GT ISZERO PUSH2 0x4AC JUMPI PUSH2 0x4AC PUSH2 0x36D JUMP JUMPDEST PUSH2 0x4DB DUP12 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP11 DUP6 ADD AND ADD PUSH2 0x39C JUMP JUMPDEST DUP3 DUP2 MSTORE DUP15 DUP3 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP3 DUP3 DUP6 ADD DUP14 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD DUP13 ADD SWAP3 SWAP1 SWAP3 MSTORE POP DUP4 MSTORE POP SWAP2 DUP8 ADD SWAP2 SWAP1 DUP8 ADD SWAP1 PUSH2 0x46C JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x582 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x568 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x5E8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA9 DUP14 DUP7 PUSH15 0xCA23B863C194C9541B36DA12F4A7AD BALANCE 0xF 0xC INVALID 0xC9 SHR GT 0xA7 0xD5 0xC2 PUSH27 0x15E164736F6C634300081100330000000000000000000000000000 ",
              "sourceMap": "123:445:23:-:0;;;;;;;;;;;;-1:-1:-1;301:5:88;:18;;-1:-1:-1;;;;;;301:18:88;309:10;301:18;;;123:445:23;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@addPublicSuffixes_4185": {
                  "entryPoint": 351,
                  "id": 4185,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@isOwner_15727": {
                  "entryPoint": null,
                  "id": 15727,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isPublicSuffix_4198": {
                  "entryPoint": 304,
                  "id": 4198,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@owner_15672": {
                  "entryPoint": null,
                  "id": 15672,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferOwnership_15715": {
                  "entryPoint": 525,
                  "id": 15715,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 1003,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 763,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1314,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1377,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 924,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 1424,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x32": {
                  "entryPoint": 1330,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 877,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4969:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:239:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "277:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "286:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "289:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "279:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "279:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "213:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "224:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "231:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "220:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "220:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "210:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "210:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "203:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "203:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "200:93:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "302:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "312:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:309:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "423:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "433:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "445:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "456:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "441:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "441:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "433:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "475:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "500:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "493:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "493:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "486:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "486:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "468:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "468:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "468:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "392:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "403:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "414:4:111",
                            "type": ""
                          }
                        ],
                        "src": "328:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "609:502:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "655:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "664:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "667:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "657:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "657:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "657:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "630:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "639:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "626:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "626:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "651:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "622:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "622:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "619:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "680:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "707:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "694:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "694:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "684:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "726:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "736:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "730:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "781:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "790:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "793:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "783:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "783:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "783:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "769:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "777:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "766:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "766:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "763:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "806:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "820:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "831:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "816:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "816:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "810:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "886:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "895:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "898:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "888:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "888:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "888:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "865:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "869:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "861:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "861:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "876:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "857:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "857:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "850:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "850:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "847:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "911:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "938:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "925:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "925:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "915:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "968:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "977:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "980:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "970:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "970:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "970:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "956:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "964:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "953:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "953:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "950:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1034:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1043:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1046:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1036:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1036:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1036:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1007:2:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1011:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1003:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1003:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1020:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "999:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "999:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1025:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "996:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "996:37:111"
                              },
                              "nodeType": "YulIf",
                              "src": "993:57:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1059:21:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1073:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1077:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1069:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1069:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1089:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1099:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1089:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "567:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "578:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "590:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "598:6:111",
                            "type": ""
                          }
                        ],
                        "src": "520:591:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1148:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1165:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1168:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1158:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1158:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1158:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1262:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1265:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1255:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1255:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1255:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1286:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1289:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1279:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1279:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1279:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1116:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1350:289:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1360:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1376:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1370:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1370:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1360:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1388:117:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1410:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "1426:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1432:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1422:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1422:13:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1437:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1418:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1418:86:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1406:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1406:99:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1392:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1580:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1582:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1582:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1582:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1523:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1535:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1520:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1520:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1559:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1571:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1556:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1556:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1517:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1517:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1514:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1618:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1622:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1611:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1611:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1611:22:111"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "1330:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "1339:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1305:334:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1748:1752:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1758:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1768:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1762:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1815:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1824:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1827:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1817:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1817:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1817:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1790:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1799:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1786:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1786:23:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1811:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1782:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1782:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1779:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1840:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1867:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1854:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1854:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1844:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1886:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1896:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1890:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1941:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1950:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1953:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1943:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1943:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1943:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1929:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1937:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1926:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1926:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1923:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1966:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1980:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1991:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1976:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1976:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1970:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2007:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2017:4:111",
                                "type": "",
                                "value": "0x1f"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2011:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2067:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2076:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2079:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2069:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2069:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2069:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2048:2:111"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "2052:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2044:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2044:11:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2057:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2040:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2040:25:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2033:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2033:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2030:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2092:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2115:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2102:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2102:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "2096:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2141:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2143:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2143:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2143:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "2133:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2137:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2130:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2130:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2127:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2172:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2186:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "2189:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "2182:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2182:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_6",
                                  "nodeType": "YulTypedName",
                                  "src": "2176:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2201:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2232:2:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2236:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2228:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2228:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2212:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2212:28:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "2205:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2249:16:111",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "2262:3:111"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2253:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2281:3:111"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "2286:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2274:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2274:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2274:15:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2298:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2309:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2314:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2305:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2305:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "2298:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2326:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2348:2:111"
                                      },
                                      {
                                        "name": "_6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2352:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2344:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2344:11:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2357:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2340:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2340:20:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "2330:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2392:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2401:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2404:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2394:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2394:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2394:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2375:6:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2383:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2372:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2372:19:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2369:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2417:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2432:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2436:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2428:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2428:11:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "2421:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2504:966:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2518:36:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2550:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2537:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2537:17:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "2522:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2602:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "2620:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2630:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_7",
                                              "nodeType": "YulTypedName",
                                              "src": "2624:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_7",
                                                "nodeType": "YulIdentifier",
                                                "src": "2655:2:111"
                                              },
                                              {
                                                "name": "_7",
                                                "nodeType": "YulIdentifier",
                                                "src": "2659:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "2648:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2648:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2648:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "2573:11:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2586:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2570:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2570:19:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2567:109:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2689:30:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "2703:2:111"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "2707:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2699:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2699:20:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_8",
                                        "nodeType": "YulTypedName",
                                        "src": "2693:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2781:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "2799:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2809:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_9",
                                              "nodeType": "YulTypedName",
                                              "src": "2803:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_9",
                                                "nodeType": "YulIdentifier",
                                                "src": "2834:2:111"
                                              },
                                              {
                                                "name": "_9",
                                                "nodeType": "YulIdentifier",
                                                "src": "2838:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "2827:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2827:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2827:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_8",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2750:2:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2754:2:111",
                                                  "type": "",
                                                  "value": "63"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2746:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2746:11:111"
                                            },
                                            {
                                              "name": "dataEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "2759:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2742:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2742:25:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "2735:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2735:33:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2732:123:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2868:36:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "2896:2:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "2900:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2892:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2892:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2879:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2879:25:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_10",
                                        "nodeType": "YulTypedName",
                                        "src": "2872:3:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2917:13:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2928:2:111",
                                      "type": "",
                                      "value": "64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_11",
                                        "nodeType": "YulTypedName",
                                        "src": "2921:3:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2958:22:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x41",
                                              "nodeType": "YulIdentifier",
                                              "src": "2960:16:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2960:18:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2960:18:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "_10",
                                          "nodeType": "YulIdentifier",
                                          "src": "2949:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2954:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2946:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2946:11:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2943:37:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2993:124:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_10",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3034:3:111"
                                                    },
                                                    {
                                                      "name": "_4",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3039:2:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3030:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3030:12:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3044:66:111",
                                                  "type": "",
                                                  "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "3026:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3026:85:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "3113:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3022:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3022:94:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "allocate_memory",
                                        "nodeType": "YulIdentifier",
                                        "src": "3006:15:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3006:111:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulTypedName",
                                        "src": "2997:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "3137:5:111"
                                        },
                                        {
                                          "name": "_10",
                                          "nodeType": "YulIdentifier",
                                          "src": "3144:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3130:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3130:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3130:18:111"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3212:77:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "3230:12:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3241:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_12",
                                              "nodeType": "YulTypedName",
                                              "src": "3234:3:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_12",
                                                "nodeType": "YulIdentifier",
                                                "src": "3266:3:111"
                                              },
                                              {
                                                "name": "_12",
                                                "nodeType": "YulIdentifier",
                                                "src": "3271:3:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "3259:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3259:16:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3259:16:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_8",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3175:2:111"
                                                },
                                                {
                                                  "name": "_10",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3179:3:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3171:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3171:12:111"
                                            },
                                            {
                                              "name": "_11",
                                              "nodeType": "YulIdentifier",
                                              "src": "3185:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3167:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3167:22:111"
                                        },
                                        {
                                          "name": "dataEnd",
                                          "nodeType": "YulIdentifier",
                                          "src": "3191:7:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3164:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3164:35:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3161:128:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "array",
                                              "nodeType": "YulIdentifier",
                                              "src": "3319:5:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "3326:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3315:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3315:14:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "3335:2:111"
                                            },
                                            {
                                              "name": "_11",
                                              "nodeType": "YulIdentifier",
                                              "src": "3339:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3331:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3331:12:111"
                                        },
                                        {
                                          "name": "_10",
                                          "nodeType": "YulIdentifier",
                                          "src": "3345:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldatacopy",
                                        "nodeType": "YulIdentifier",
                                        "src": "3302:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3302:47:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3302:47:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "array",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3377:5:111"
                                                },
                                                {
                                                  "name": "_10",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3384:3:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3373:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3373:15:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "3390:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3369:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3369:24:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3395:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3362:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3362:35:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3362:35:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "3417:3:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "3422:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3410:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3410:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3410:18:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3441:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "3452:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3457:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3448:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3448:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "3441:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "2459:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2464:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2456:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2456:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2472:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2474:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2485:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2490:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2481:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2481:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "2474:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2452:3:111",
                                "statements": []
                              },
                              "src": "2448:1022:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3479:15:111",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "3489:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3479:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1714:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1725:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1737:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1644:1856:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3606:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3616:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3628:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3639:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3624:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3624:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3616:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3658:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3673:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3681:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3669:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3669:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3651:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3651:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3651:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3575:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3586:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3597:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3505:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3883:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3906:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3911:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3919:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3893:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3893:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3893:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3935:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3949:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3954:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3945:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3945:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3939:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3977:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3981:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3970:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3970:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3970:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3992:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "3999:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3992:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3851:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3856:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3864:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3875:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3736:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4044:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4061:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4064:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4054:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4054:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4054:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4158:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4161:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4151:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4151:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4151:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4182:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4185:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "4175:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4175:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4175:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "4012:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4338:275:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4348:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4368:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4362:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4362:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4352:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4384:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4393:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4388:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4455:77:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "4480:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4485:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4476:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4476:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4503:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4511:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4499:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4499:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4515:4:111",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4495:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4495:25:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4489:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4489:32:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4469:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4469:53:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4469:53:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4414:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4417:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4411:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4411:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4425:21:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4427:17:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4436:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4439:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4432:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4432:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4427:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4407:3:111",
                                "statements": []
                              },
                              "src": "4403:129:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4541:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4555:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4560:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4551:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4551:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4545:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4583:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4587:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4576:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4576:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4576:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4598:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4605:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4598:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4314:3:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4319:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4330:3:111",
                            "type": ""
                          }
                        ],
                        "src": "4201:412:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4665:302:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4764:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4785:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4788:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4778:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4778:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4778:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4886:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4889:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4879:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4879:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4879:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4914:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4917:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4907:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4907:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4907:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4681:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4688:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "4678:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4678:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4675:257:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4941:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4952:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4959:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4948:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4948:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "4941:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4647:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "4657:3:111",
                            "type": ""
                          }
                        ],
                        "src": "4618:349:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        let _4 := 0x1f\n        if iszero(slt(add(_3, _4), dataEnd)) { revert(0, 0) }\n        let _5 := calldataload(_3)\n        if gt(_5, _2) { panic_error_0x41() }\n        let _6 := shl(5, _5)\n        let dst := allocate_memory(add(_6, _1))\n        let dst_1 := dst\n        mstore(dst, _5)\n        dst := add(dst, _1)\n        let srcEnd := add(add(_3, _6), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, _2)\n            {\n                let _7 := 0\n                revert(_7, _7)\n            }\n            let _8 := add(_3, innerOffset)\n            if iszero(slt(add(_8, 63), dataEnd))\n            {\n                let _9 := 0\n                revert(_9, _9)\n            }\n            let _10 := calldataload(add(_8, _1))\n            let _11 := 64\n            if gt(_10, _2) { panic_error_0x41() }\n            let array := allocate_memory(add(and(add(_10, _4), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _1))\n            mstore(array, _10)\n            if gt(add(add(_8, _10), _11), dataEnd)\n            {\n                let _12 := 0\n                revert(_12, _12)\n            }\n            calldatacopy(add(array, _1), add(_8, _11), _10)\n            mstore(add(add(array, _10), _1), 0)\n            mstore(dst, array)\n            dst := add(dst, _1)\n        }\n        value0 := dst_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value0, i), 0x20)))\n        }\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c80636329cdfc116100505780636329cdfc146100c35780638da5cb5b146100d8578063f2fde38b1461011d57600080fd5b80632f54bf6e1461006c5780634f89059e146100b0575b600080fd5b61009b61007a3660046102be565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405190151581526020015b60405180910390f35b61009b6100be3660046102fb565b610130565b6100d66100d13660046103eb565b61015f565b005b6000546100f89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a7565b6100d661012b3660046102be565b61020d565b600060018383604051610144929190610522565b9081526040519081900360200190205460ff16905092915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461018357600080fd5b60005b8151811015610209576001808383815181106101a4576101a4610532565b60200260200101516040516101b99190610561565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009092169190911790558061020181610590565b915050610186565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461023157600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156102d057600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146102f457600080fd5b9392505050565b6000806020838503121561030e57600080fd5b823567ffffffffffffffff8082111561032657600080fd5b818501915085601f83011261033a57600080fd5b81358181111561034957600080fd5b86602082850101111561035b57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103e3576103e361036d565b604052919050565b600060208083850312156103fe57600080fd5b823567ffffffffffffffff8082111561041657600080fd5b8185019150601f868184011261042b57600080fd5b82358281111561043d5761043d61036d565b8060051b61044c86820161039c565b918252848101860191868101908a84111561046657600080fd5b87870192505b83831015610514578235868111156104845760008081fd5b8701603f81018c136104965760008081fd5b888101356040888211156104ac576104ac61036d565b6104db8b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08a8501160161039c565b8281528e828486010111156104f05760008081fd5b828285018d83013760009281018c019290925250835250918701919087019061046c565b9a9950505050505050505050565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000825160005b818110156105825760208186018101518583015201610568565b506000920191825250919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036105e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220a98d866eca23b863c194c9541b36da12f4a7ad310f0cfec91c11a7d5c27a15e164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6329CDFC GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x6329CDFC EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x11D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F54BF6E EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x4F89059E EQ PUSH2 0xB0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH2 0xBE CALLDATASIZE PUSH1 0x4 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x130 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EB JUMP JUMPDEST PUSH2 0x15F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xF8 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA7 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x12B CALLDATASIZE PUSH1 0x4 PUSH2 0x2BE JUMP JUMPDEST PUSH2 0x20D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x144 SWAP3 SWAP2 SWAP1 PUSH2 0x522 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x209 JUMPI PUSH1 0x1 DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A4 JUMPI PUSH2 0x1A4 PUSH2 0x532 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1B9 SWAP2 SWAP1 PUSH2 0x561 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 PUSH2 0x201 DUP2 PUSH2 0x590 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x186 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3E3 JUMPI PUSH2 0x3E3 PUSH2 0x36D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP PUSH1 0x1F DUP7 DUP2 DUP5 ADD SLT PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x43D JUMPI PUSH2 0x43D PUSH2 0x36D JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x44C DUP7 DUP3 ADD PUSH2 0x39C JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP5 DUP2 ADD DUP7 ADD SWAP2 DUP7 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 DUP8 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x514 JUMPI DUP3 CALLDATALOAD DUP7 DUP2 GT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP13 SGT PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP9 DUP2 ADD CALLDATALOAD PUSH1 0x40 DUP9 DUP3 GT ISZERO PUSH2 0x4AC JUMPI PUSH2 0x4AC PUSH2 0x36D JUMP JUMPDEST PUSH2 0x4DB DUP12 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP11 DUP6 ADD AND ADD PUSH2 0x39C JUMP JUMPDEST DUP3 DUP2 MSTORE DUP15 DUP3 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP3 DUP3 DUP6 ADD DUP14 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD DUP13 ADD SWAP3 SWAP1 SWAP3 MSTORE POP DUP4 MSTORE POP SWAP2 DUP8 ADD SWAP2 SWAP1 DUP8 ADD SWAP1 PUSH2 0x46C JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x582 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x568 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x5E8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA9 DUP14 DUP7 PUSH15 0xCA23B863C194C9541B36DA12F4A7AD BALANCE 0xF 0xC INVALID 0xC9 SHR GT 0xA7 0xD5 0xC2 PUSH27 0x15E164736F6C634300081100330000000000000000000000000000 ",
              "sourceMap": "123:445:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;485:95:88;;;;;;:::i;:::-;537:4;560:5;:13;:5;;;:13;;;;485:95;;;;493:14:111;;486:22;468:41;;456:2;441:18;485:95:88;;;;;;;;409:157:23;;;;;;:::i;:::-;;:::i;228:175::-;;;;;;:::i;:::-;;:::i;:::-;;48:20:88;;;;;;;;;;;;3681:42:111;3669:55;;;3651:74;;3639:2;3624:18;48:20:88;3505:226:111;332:147:88;;;;;;:::i;:::-;;:::i;409:157:23:-;518:4;545:8;554:4;;545:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;409:157:23;;;;:::o;228:175::-;537:4:88;560:5;:13;:5;234:10;560:13;218:28;;;;;;309:9:23::1;304:93;328:5;:12;324:1;:16;304:93;;;382:4;361:8:::0;370:5:::1;376:1;370:8;;;;;;;;:::i;:::-;;;;;;;361:18;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;342:3;::::1;::::0;::::1;:::i;:::-;;;;304:93;;;;228:175:::0;:::o;332:147:88:-;537:4;560:5;:13;:5;234:10;560:13;218:28;;;;;;430:5:::1;::::0;;409:37:::1;::::0;::::1;::::0;;::::1;::::0;430:5;::::1;::::0;409:37:::1;::::0;::::1;456:5;:16:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;332:147::o;14:309:111:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;200:93;312:5;14:309;-1:-1:-1;;;14:309:111:o;520:591::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;707:9;694:23;736:18;777:2;769:6;766:14;763:34;;;793:1;790;783:12;763:34;831:6;820:9;816:22;806:32;;876:7;869:4;865:2;861:13;857:27;847:55;;898:1;895;888:12;847:55;938:2;925:16;964:2;956:6;953:14;950:34;;;980:1;977;970:12;950:34;1025:7;1020:2;1011:6;1007:2;1003:15;999:24;996:37;993:57;;;1046:1;1043;1036:12;993:57;1077:2;1069:11;;;;;1099:6;;-1:-1:-1;520:591:111;;-1:-1:-1;;;;520:591:111:o;1116:184::-;1168:77;1165:1;1158:88;1265:4;1262:1;1255:15;1289:4;1286:1;1279:15;1305:334;1376:2;1370:9;1432:2;1422:13;;1437:66;1418:86;1406:99;;1535:18;1520:34;;1556:22;;;1517:62;1514:88;;;1582:18;;:::i;:::-;1618:2;1611:22;1305:334;;-1:-1:-1;1305:334:111:o;1644:1856::-;1737:6;1768:2;1811;1799:9;1790:7;1786:23;1782:32;1779:52;;;1827:1;1824;1817:12;1779:52;1867:9;1854:23;1896:18;1937:2;1929:6;1926:14;1923:34;;;1953:1;1950;1943:12;1923:34;1991:6;1980:9;1976:22;1966:32;;2017:4;2057:7;2052:2;2048;2044:11;2040:25;2030:53;;2079:1;2076;2069:12;2030:53;2115:2;2102:16;2137:2;2133;2130:10;2127:36;;;2143:18;;:::i;:::-;2189:2;2186:1;2182:10;2212:28;2236:2;2232;2228:11;2212:28;:::i;:::-;2274:15;;;2344:11;;;2340:20;;;2305:12;;;;2372:19;;;2369:39;;;2404:1;2401;2394:12;2369:39;2436:2;2432;2428:11;2417:22;;2448:1022;2464:6;2459:3;2456:15;2448:1022;;;2550:3;2537:17;2586:2;2573:11;2570:19;2567:109;;;2630:1;2659:2;2655;2648:14;2567:109;2699:20;;2754:2;2746:11;;2742:25;-1:-1:-1;2732:123:111;;2809:1;2838:2;2834;2827:14;2732:123;2900:2;2896;2892:11;2879:25;2928:2;2954;2949:3;2946:11;2943:37;;;2960:18;;:::i;:::-;3006:111;3113:2;3044:66;3039:2;3034:3;3030:12;3026:85;3022:94;3006:111;:::i;:::-;3144:3;3137:5;3130:18;3191:7;3185:3;3179;3175:2;3171:12;3167:22;3164:35;3161:128;;;3241:1;3271:3;3266;3259:16;3161:128;3345:3;3339;3335:2;3331:12;3326:2;3319:5;3315:14;3302:47;3395:1;3373:15;;;3369:24;;3362:35;;;;-1:-1:-1;3410:18:111;;-1:-1:-1;2481:12:111;;;;3448;;;;2448:1022;;;3489:5;1644:1856;-1:-1:-1;;;;;;;;;;1644:1856:111:o;3736:271::-;3919:6;3911;3906:3;3893:33;3875:3;3945:16;;3970:13;;;3945:16;3736:271;-1:-1:-1;3736:271:111:o;4012:184::-;4064:77;4061:1;4054:88;4161:4;4158:1;4151:15;4185:4;4182:1;4175:15;4201:412;4330:3;4368:6;4362:13;4393:1;4403:129;4417:6;4414:1;4411:13;4403:129;;;4515:4;4499:14;;;4495:25;;4489:32;4476:11;;;4469:53;4432:12;4403:129;;;-1:-1:-1;4587:1:111;4551:16;;4576:13;;;-1:-1:-1;4551:16:111;4201:412;-1:-1:-1;4201:412:111:o;4618:349::-;4657:3;4688:66;4681:5;4678:77;4675:257;;4788:77;4785:1;4778:88;4889:4;4886:1;4879:15;4917:4;4914:1;4907:15;4675:257;-1:-1:-1;4959:1:111;4948:13;;4618:349::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "314600",
                "executionCost": "24590",
                "totalCost": "339190"
              },
              "external": {
                "addPublicSuffixes(bytes[])": "infinite",
                "isOwner(address)": "2423",
                "isPublicSuffix(bytes)": "infinite",
                "owner()": "2335",
                "transferOwnership(address)": "30311"
              }
            },
            "methodIdentifiers": {
              "addPublicSuffixes(bytes[])": "6329cdfc",
              "isOwner(address)": "2f54bf6e",
              "isPublicSuffix(bytes)": "4f89059e",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"names\",\"type\":\"bytes[]\"}],\"name\":\"addPublicSuffixes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"}],\"name\":\"isPublicSuffix\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnsregistrar/SimplePublicSuffixList.sol\":\"SimplePublicSuffixList\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnsregistrar/PublicSuffixList.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\ninterface PublicSuffixList {\\n    function isPublicSuffix(bytes calldata name) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12158ba8838ee2b1ebb0178a52d2f4d54dcc68282d569226e62afc2b0dccbbac\"},\"contracts/dnsregistrar/SimplePublicSuffixList.sol\":{\"content\":\"pragma solidity ^0.8.4;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"../root/Ownable.sol\\\";\\nimport \\\"./PublicSuffixList.sol\\\";\\n\\ncontract SimplePublicSuffixList is PublicSuffixList, Ownable {\\n    mapping(bytes => bool) suffixes;\\n\\n    function addPublicSuffixes(bytes[] memory names) public onlyOwner {\\n        for (uint256 i = 0; i < names.length; i++) {\\n            suffixes[names[i]] = true;\\n        }\\n    }\\n\\n    function isPublicSuffix(bytes calldata name)\\n        external\\n        view\\n        override\\n        returns (bool)\\n    {\\n        return suffixes[name];\\n    }\\n}\\n\",\"keccak256\":\"0x25d36894cdef630f18660ecf8e932a3637ef000e139a83931366ca209e0a23fe\"},\"contracts/root/Ownable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\ncontract Ownable {\\n    address public owner;\\n\\n    event OwnershipTransferred(\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    modifier onlyOwner() {\\n        require(isOwner(msg.sender));\\n        _;\\n    }\\n\\n    constructor() public {\\n        owner = msg.sender;\\n    }\\n\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        emit OwnershipTransferred(owner, newOwner);\\n        owner = newOwner;\\n    }\\n\\n    function isOwner(address addr) public view returns (bool) {\\n        return owner == addr;\\n    }\\n}\\n\",\"keccak256\":\"0xd06845ede20815e1a6d5b36fec21d7b90ea24390f24a9b31e4220c90b2ff3252\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 15672,
                "contract": "contracts/dnsregistrar/SimplePublicSuffixList.sol:SimplePublicSuffixList",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 4155,
                "contract": "contracts/dnsregistrar/SimplePublicSuffixList.sol:SimplePublicSuffixList",
                "label": "suffixes",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes_memory_ptr,t_bool)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes_memory_ptr": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes_memory_ptr,t_bool)": {
                "encoding": "mapping",
                "key": "t_bytes_memory_ptr",
                "label": "mapping(bytes => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnsregistrar/TLDPublicSuffixList.sol": {
        "TLDPublicSuffixList": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                }
              ],
              "name": "isPublicSuffix",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "A public suffix list that treats all TLDs as public suffixes.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061023f806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634f89059e14610030575b600080fd5b61004361003e36600461012e565b610057565b604051901515815260200160405180910390f35b60008061009e600085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061010a9050565b60ff16905060008111801561010057506100fb6100bc8260016101a0565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061010a9050565b60ff16155b9150505b92915050565b600082828151811061011e5761011e6101da565b016020015160f81c905092915050565b6000806020838503121561014157600080fd5b823567ffffffffffffffff8082111561015957600080fd5b818501915085601f83011261016d57600080fd5b81358181111561017c57600080fd5b86602082850101111561018e57600080fd5b60209290920196919550909350505050565b80820180821115610104577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a433b50aab41f0266da2cf2600cc71d6ffeb095a54ed6d54eaf3d6c7426e355364736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F89059E EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x12E JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9E PUSH1 0x0 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x10A SWAP1 POP JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x100 JUMPI POP PUSH2 0xFB PUSH2 0xBC DUP3 PUSH1 0x1 PUSH2 0x1A0 JUMP JUMPDEST DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x10A SWAP1 POP JUMP JUMPDEST PUSH1 0xFF AND ISZERO JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11E JUMPI PUSH2 0x11E PUSH2 0x1DA JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x104 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 CALLER 0xB5 EXP 0xAB COINBASE CREATE 0x26 PUSH14 0xA2CF2600CC71D6FFEB095A54ED6D SLOAD 0xEA RETURN 0xD6 0xC7 TIMESTAMP PUSH15 0x355364736F6C634300081100330000 ",
              "sourceMap": "179:328:24:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@isPublicSuffix_4238": {
                  "entryPoint": 87,
                  "id": 4238,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 266,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 302,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 416,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x32": {
                  "entryPoint": 474,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1272:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "103:502:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "149:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "158:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "161:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "151:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "151:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "151:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "133:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "120:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "120:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "145:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "116:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "116:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "113:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "174:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "201:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "188:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "188:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "178:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "220:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "230:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "224:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "275:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "284:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "287:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "277:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "277:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "277:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "263:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "271:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "260:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "260:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "257:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "300:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "314:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "325:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "310:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "310:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "304:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "380:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "389:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "392:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "382:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "382:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "382:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "359:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "363:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "355:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "355:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "370:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "351:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "351:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "344:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "344:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "341:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "405:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "432:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "419:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "419:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "409:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "462:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "471:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "474:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "464:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "464:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "464:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "450:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "458:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "447:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "447:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "444:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "528:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "537:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "540:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "530:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "530:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "530:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "501:2:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "505:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "497:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "497:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "514:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "493:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "493:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "519:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "490:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "490:37:111"
                              },
                              "nodeType": "YulIf",
                              "src": "487:57:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "553:21:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "567:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "571:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "563:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "563:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "553:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "583:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "593:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "583:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "92:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:591:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "705:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "715:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "727:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "738:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "723:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "723:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "715:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "757:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "782:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "775:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "775:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "768:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "768:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "750:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "674:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "685:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "696:4:111",
                            "type": ""
                          }
                        ],
                        "src": "610:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "850:231:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "860:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "871:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "874:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "867:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "867:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "860:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "907:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "928:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "931:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "921:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "921:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "921:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1029:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1032:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1022:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1022:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1022:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1057:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1060:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1050:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1050:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1050:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "891:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "894:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "888:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "888:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "885:190:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "833:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "836:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "842:3:111",
                            "type": ""
                          }
                        ],
                        "src": "802:279:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1118:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1135:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1138:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1128:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1128:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1128:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1232:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1235:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1225:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1225:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1225:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1256:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1259:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1249:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1249:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1249:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1086:184:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80634f89059e14610030575b600080fd5b61004361003e36600461012e565b610057565b604051901515815260200160405180910390f35b60008061009e600085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061010a9050565b60ff16905060008111801561010057506100fb6100bc8260016101a0565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061010a9050565b60ff16155b9150505b92915050565b600082828151811061011e5761011e6101da565b016020015160f81c905092915050565b6000806020838503121561014157600080fd5b823567ffffffffffffffff8082111561015957600080fd5b818501915085601f83011261016d57600080fd5b81358181111561017c57600080fd5b86602082850101111561018e57600080fd5b60209290920196919550909350505050565b80820180821115610104577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a433b50aab41f0266da2cf2600cc71d6ffeb095a54ed6d54eaf3d6c7426e355364736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F89059E EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x12E JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9E PUSH1 0x0 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x10A SWAP1 POP JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x100 JUMPI POP PUSH2 0xFB PUSH2 0xBC DUP3 PUSH1 0x1 PUSH2 0x1A0 JUMP JUMPDEST DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x10A SWAP1 POP JUMP JUMPDEST PUSH1 0xFF AND ISZERO JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11E JUMPI PUSH2 0x11E PUSH2 0x1DA JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x104 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 CALLER 0xB5 EXP 0xAB COINBASE CREATE 0x26 PUSH14 0xA2CF2600CC71D6FFEB095A54ED6D SLOAD 0xEA RETURN 0xD6 0xC7 TIMESTAMP PUSH15 0x355364736F6C634300081100330000 ",
              "sourceMap": "179:328:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;267:238;;;;;;:::i;:::-;;:::i;:::-;;;775:14:111;;768:22;750:41;;738:2;723:18;267:238:24;;;;;;;;376:4;396:16;415:17;430:1;415:4;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;415:14:24;;:17;-1:-1:-1;;415:14:24;:17;-1:-1:-1;415:17:24:i;:::-;396:36;;;;460:1;449:8;:12;:49;;;;-1:-1:-1;465:28:24;480:12;:8;491:1;480:12;:::i;:::-;465:4;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;465:14:24;;:28;-1:-1:-1;;465:14:24;:28;-1:-1:-1;465:28:24:i;:::-;:33;;;449:49;442:56;;;267:238;;;;;:::o;5750:153:25:-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;:::o;14:591:111:-;84:6;92;145:2;133:9;124:7;120:23;116:32;113:52;;;161:1;158;151:12;113:52;201:9;188:23;230:18;271:2;263:6;260:14;257:34;;;287:1;284;277:12;257:34;325:6;314:9;310:22;300:32;;370:7;363:4;359:2;355:13;351:27;341:55;;392:1;389;382:12;341:55;432:2;419:16;458:2;450:6;447:14;444:34;;;474:1;471;464:12;444:34;519:7;514:2;505:6;501:2;497:15;493:24;490:37;487:57;;;540:1;537;530:12;487:57;571:2;563:11;;;;;593:6;;-1:-1:-1;14:591:111;;-1:-1:-1;;;;14:591:111:o;802:279::-;867:9;;;888:10;;;885:190;;;931:77;928:1;921:88;1032:4;1029:1;1022:15;1060:4;1057:1;1050:15;1086:184;1138:77;1135:1;1128:88;1235:4;1232:1;1225:15;1259:4;1256:1;1249:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "115000",
                "executionCost": "159",
                "totalCost": "115159"
              },
              "external": {
                "isPublicSuffix(bytes)": "infinite"
              }
            },
            "methodIdentifiers": {
              "isPublicSuffix(bytes)": "4f89059e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"}],\"name\":\"isPublicSuffix\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A public suffix list that treats all TLDs as public suffixes.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnsregistrar/TLDPublicSuffixList.sol\":\"TLDPublicSuffixList\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnsregistrar/PublicSuffixList.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\ninterface PublicSuffixList {\\n    function isPublicSuffix(bytes calldata name) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12158ba8838ee2b1ebb0178a52d2f4d54dcc68282d569226e62afc2b0dccbbac\"},\"contracts/dnsregistrar/TLDPublicSuffixList.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"../dnssec-oracle/BytesUtils.sol\\\";\\nimport \\\"./PublicSuffixList.sol\\\";\\n\\n/**\\n * @dev A public suffix list that treats all TLDs as public suffixes.\\n */\\ncontract TLDPublicSuffixList is PublicSuffixList {\\n    using BytesUtils for bytes;\\n\\n    function isPublicSuffix(bytes calldata name)\\n        external\\n        view\\n        override\\n        returns (bool)\\n    {\\n        uint256 labellen = name.readUint8(0);\\n        return labellen > 0 && name.readUint8(labellen + 1) == 0;\\n    }\\n}\\n\",\"keccak256\":\"0x052a8c0469c7552c67f13a94fc76d7191b8e4c5a24f572b61cea4cb75fe0494a\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/BytesUtils.sol": {
        "BytesUtils": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202ded7a586fdc176131f5ca957cefc29b819cd429eb1a6f909818165a8d18555064736f6c63430008110033",
              "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 0x2D 0xED PUSH27 0x586FDC176131F5CA957CEFC29B819CD429EB1A6F909818165A8D18 SSTORE POP PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "25:12622:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;25:12622:25;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202ded7a586fdc176131f5ca957cefc29b819cd429eb1a6f909818165a8d18555064736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xED PUSH27 0x586FDC176131F5CA957CEFC29B819CD429EB1A6F909818165A8D18 SSTORE POP PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "25:12622:25:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "base32HexDecodeWord(bytes memory,uint256,uint256)": "infinite",
                "compare(bytes memory,bytes memory)": "infinite",
                "compare(bytes memory,uint256,uint256,bytes memory,uint256,uint256)": "infinite",
                "equals(bytes memory,bytes memory)": "infinite",
                "equals(bytes memory,uint256,bytes memory)": "infinite",
                "equals(bytes memory,uint256,bytes memory,uint256)": "infinite",
                "equals(bytes memory,uint256,bytes memory,uint256,uint256)": "infinite",
                "find(bytes memory,uint256,uint256,bytes1)": "infinite",
                "keccak(bytes memory,uint256,uint256)": "infinite",
                "memcpy(uint256,uint256,uint256)": "infinite",
                "readBytes20(bytes memory,uint256)": "infinite",
                "readBytes32(bytes memory,uint256)": "infinite",
                "readBytesN(bytes memory,uint256,uint256)": "infinite",
                "readUint16(bytes memory,uint256)": "infinite",
                "readUint32(bytes memory,uint256)": "infinite",
                "readUint8(bytes memory,uint256)": "infinite",
                "substring(bytes memory,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/BytesUtils.sol\":\"BytesUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/DNSSEC.sol": {
        "DNSSEC": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "id",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "AlgorithmUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "id",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "DigestUpdated",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "anchors",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "rrset",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "sig",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DNSSEC.RRSetWithSignature[]",
                  "name": "input",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256",
                  "name": "now",
                  "type": "uint256"
                }
              ],
              "name": "verifyRRSet",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "rrs",
                  "type": "bytes"
                },
                {
                  "internalType": "uint32",
                  "name": "inception",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "rrset",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "sig",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DNSSEC.RRSetWithSignature[]",
                  "name": "input",
                  "type": "tuple[]"
                }
              ],
              "name": "verifyRRSet",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "rrs",
                  "type": "bytes"
                },
                {
                  "internalType": "uint32",
                  "name": "inception",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "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": {
              "anchors()": "98d35f20",
              "verifyRRSet((bytes,bytes)[])": "bdf95fef",
              "verifyRRSet((bytes,bytes)[],uint256)": "440f3d42"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"AlgorithmUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"DigestUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"anchors\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature[]\",\"name\":\"input\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"now\",\"type\":\"uint256\"}],\"name\":\"verifyRRSet\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"rrs\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"inception\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature[]\",\"name\":\"input\",\"type\":\"tuple[]\"}],\"name\":\"verifyRRSet\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"rrs\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"inception\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/DNSSEC.sol\":\"DNSSEC\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/DNSSEC.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\npragma experimental ABIEncoderV2;\\n\\nabstract contract DNSSEC {\\n    bytes public anchors;\\n\\n    struct RRSetWithSignature {\\n        bytes rrset;\\n        bytes sig;\\n    }\\n\\n    event AlgorithmUpdated(uint8 id, address addr);\\n    event DigestUpdated(uint8 id, address addr);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input)\\n        external\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\\n        public\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n}\\n\",\"keccak256\":\"0xaa9bd0b4e3533e757b73939e47a9e6c2a4fd383fb00fc4ccf33f101bdea93263\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 5022,
                "contract": "contracts/dnssec-oracle/DNSSEC.sol:DNSSEC",
                "label": "anchors",
                "offset": 0,
                "slot": "0",
                "type": "t_bytes_storage"
              }
            ],
            "types": {
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/DNSSECImpl.sol": {
        "DNSSECImpl": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_anchors",
                  "type": "bytes"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "class",
                  "type": "uint16"
                }
              ],
              "name": "InvalidClass",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "labelsExpected",
                  "type": "uint256"
                }
              ],
              "name": "InvalidLabelCount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "proofType",
                  "type": "uint16"
                }
              ],
              "name": "InvalidProofType",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidRRSet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "rrsetName",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "signerName",
                  "type": "bytes"
                }
              ],
              "name": "InvalidSignerName",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signerName",
                  "type": "bytes"
                }
              ],
              "name": "NoMatchingProof",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signerName",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "proofName",
                  "type": "bytes"
                }
              ],
              "name": "ProofNameMismatch",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint32",
                  "name": "expiration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "now",
                  "type": "uint32"
                }
              ],
              "name": "SignatureExpired",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint32",
                  "name": "inception",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "now",
                  "type": "uint32"
                }
              ],
              "name": "SignatureNotValidYet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "rrsetType",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "sigType",
                  "type": "uint16"
                }
              ],
              "name": "SignatureTypeMismatch",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "id",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "AlgorithmUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "id",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "DigestUpdated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "name": "algorithms",
              "outputs": [
                {
                  "internalType": "contract Algorithm",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "anchors",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "name": "digests",
              "outputs": [
                {
                  "internalType": "contract Digest",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "id",
                  "type": "uint8"
                },
                {
                  "internalType": "contract Algorithm",
                  "name": "algo",
                  "type": "address"
                }
              ],
              "name": "setAlgorithm",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "id",
                  "type": "uint8"
                },
                {
                  "internalType": "contract Digest",
                  "name": "digest",
                  "type": "address"
                }
              ],
              "name": "setDigest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "setOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "rrset",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "sig",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DNSSEC.RRSetWithSignature[]",
                  "name": "input",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256",
                  "name": "now",
                  "type": "uint256"
                }
              ],
              "name": "verifyRRSet",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "rrs",
                  "type": "bytes"
                },
                {
                  "internalType": "uint32",
                  "name": "inception",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "rrset",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "sig",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DNSSEC.RRSetWithSignature[]",
                  "name": "input",
                  "type": "tuple[]"
                }
              ],
              "name": "verifyRRSet",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "rrs",
                  "type": "bytes"
                },
                {
                  "internalType": "uint32",
                  "name": "inception",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "constructor": {
                "details": "Constructor.",
                "params": {
                  "_anchors": "The binary format RR entries for the root DS records."
                }
              },
              "setAlgorithm(uint8,address)": {
                "details": "Sets the contract address for a signature verification algorithm.      Callable only by the owner.",
                "params": {
                  "algo": "The address of the algorithm contract.",
                  "id": "The algorithm ID"
                }
              },
              "setDigest(uint8,address)": {
                "details": "Sets the contract address for a digest verification algorithm.      Callable only by the owner.",
                "params": {
                  "digest": "The address of the digest contract.",
                  "id": "The digest ID"
                }
              },
              "verifyRRSet((bytes,bytes)[])": {
                "details": "Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.",
                "params": {
                  "input": "A list of signed RRSets."
                },
                "returns": {
                  "inception": "The inception time of the signed record set.",
                  "rrs": "The RRData from the last RRSet in the chain."
                }
              },
              "verifyRRSet((bytes,bytes)[],uint256)": {
                "details": "Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.",
                "params": {
                  "input": "A list of signed RRSets.",
                  "now": "The Unix timestamp to validate the records at."
                },
                "returns": {
                  "inception": "The inception time of the signed record set.",
                  "rrs": "The RRData from the last RRSet in the chain."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_5170": {
                  "entryPoint": null,
                  "id": 5170,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5999": {
                  "entryPoint": null,
                  "id": 5999,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 114,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_dataslot_bytes_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_bytes_storage": {
                  "entryPoint": 387,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage": {
                  "entryPoint": 470,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 327,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 92,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3772:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "70:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "75:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "66:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "66:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "106:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "96:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "127:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "130:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "120:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "236:951:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "246:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "256:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "250:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "303:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "315:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "305:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "305:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "305:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "278:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "287:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "274:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "274:23:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "299:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "267:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "328:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "348:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "342:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "342:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "332:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "367:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "385:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "389:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "381:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "381:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "393:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "377:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "377:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "371:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "422:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "431:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "434:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "424:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "424:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "424:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "410:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "418:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "407:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "407:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "404:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "447:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "461:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "472:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "457:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "457:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "451:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "527:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "536:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "539:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "529:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "529:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "529:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "506:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "510:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "502:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "502:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "517:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "498:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "498:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "488:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "552:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "568:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "556:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "594:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "596:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "596:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "596:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "586:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "590:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "583:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "583:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "580:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "625:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "639:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "635:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "635:7:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "629:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "651:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "671:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "665:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "665:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "655:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "683:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "705:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_4",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "729:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "733:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "725:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "725:13:111"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "740:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "721:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "721:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "745:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "717:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "717:31:111"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "750:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "713:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "713:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "701:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "701:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "687:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "813:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "815:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "815:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "815:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "772:10:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "784:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "769:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "769:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "792:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "804:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "789:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "789:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "766:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "766:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "763:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "851:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "855:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "844:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "844:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "844:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "882:6:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "890:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "875:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "875:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "875:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "939:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "948:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "951:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "941:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "941:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "941:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "916:2:111"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "920:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "912:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "912:11:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "925:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "908:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "908:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "930:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "905:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "905:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "902:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "964:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "973:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "968:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1029:83:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1058:6:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1066:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1054:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1054:14:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "1070:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1050:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1050:23:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1089:2:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1093:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1085:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1085:10:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1097:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1081:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1081:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1075:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1075:26:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1043:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1043:59:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1043:59:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "994:1:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "997:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "991:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "991:9:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1001:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1003:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1012:1:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1015:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1008:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1008:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1003:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "987:3:111",
                                "statements": []
                              },
                              "src": "983:129:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1136:6:111"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "1144:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1132:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1132:15:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1149:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1128:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1128:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1154:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1121:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1121:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1121:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1165:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1175:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1165:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "202:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "213:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "225:6:111",
                            "type": ""
                          }
                        ],
                        "src": "146:1041:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1247:325:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1257:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1271:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1274:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1267:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1267:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1257:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1288:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1318:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1324:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "1314:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1314:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "1292:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1365:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1367:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "1381:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1389:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "1377:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1377:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1367:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1345:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1338:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1338:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1335:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1455:111:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1476:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1483:3:111",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1488:10:111",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1479:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1479:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1469:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1469:31:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1469:31:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1520:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1523:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1513:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1513:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1513:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1548:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1551:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1541:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1541:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1541:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1411:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1434:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1442:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1431:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1431:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1408:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1408:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1405:161:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1227:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1236:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1192:380:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1632:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1649:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1652:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1642:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1642:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1642:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1665:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1683:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1686:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "1673:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1673:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "1665:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "1615:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1623:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1577:120:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1782:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1815:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1829:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1839:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "1833:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1860:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1864:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1853:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1853:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1853:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1883:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1905:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1909:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "1895:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1895:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "1887:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1927:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "1950:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1960:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1967:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1979:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1963:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1963:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1956:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1956:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1946:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1946:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "1931:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2021:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2023:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "2038:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "2023:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "2003:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2015:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2000:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2000:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1997:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2057:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "2071:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2081:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2088:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2093:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2084:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2084:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2077:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2077:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2067:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2067:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "2061:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2111:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "2124:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "2115:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2209:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "2218:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2225:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "2211:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2211:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2211:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "2159:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2166:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2156:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2156:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "2170:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2172:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "2185:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2192:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2181:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2181:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "2172:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "2152:3:111",
                                      "statements": []
                                    },
                                    "src": "2148:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "1798:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1803:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1795:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1792:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1754:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "1761:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "1766:10:111",
                            "type": ""
                          }
                        ],
                        "src": "1702:544:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2336:81:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2346:65:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2379:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2382:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2375:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2375:11:111"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2392:1:111",
                                                    "type": "",
                                                    "value": "0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "not",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2388:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2388:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "2371:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2371:24:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "2367:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2367:29:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2357:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2357:40:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2403:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "2406:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2399:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2399:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2354:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2354:57:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "2346:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2313:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "2319:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "2327:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2251:166:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2516:1254:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2526:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "2546:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2540:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2540:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "2530:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2593:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2595:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2595:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2595:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2565:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2581:2:111",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2585:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "2577:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2577:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2589:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2573:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2573:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2562:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2562:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2559:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "2667:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "2705:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "2699:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2699:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "2673:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2673:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2713:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_bytes_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "2624:42:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2624:96:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2624:96:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2729:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2746:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "2733:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2756:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2775:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2760:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2788:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "2801:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "2788:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "2858:655:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2872:35:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "2891:6:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2903:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "2899:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2899:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2887:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2887:20:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "2876:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2920:48:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "2963:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_bytes_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "2934:28:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2934:34:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "2924:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2981:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2990:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "2985:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3068:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3093:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3111:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3116:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3107:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3107:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3101:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3101:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3086:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3086:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "3086:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3145:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3159:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3167:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3155:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3155:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3145:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3186:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3203:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3214:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3199:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3199:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3186:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "3015:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "3018:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3012:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3012:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "3027:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3029:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3038:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3041:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3034:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3034:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3029:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "3008:3:111",
                                          "statements": []
                                        },
                                        "src": "3004:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3288:166:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "3306:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3333:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3338:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3329:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3329:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3323:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3323:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "3310:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3373:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3385:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3412:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3415:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "3408:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3408:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3424:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3404:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3404:24:111"
                                                              },
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3434:1:111",
                                                                    "type": "",
                                                                    "value": "0"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "not",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3430:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3430:6:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3400:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3400:37:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3396:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3396:42:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3381:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3381:58:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3366:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3366:74:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "3366:74:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "3259:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "3268:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3256:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3256:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "3253:201:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3474:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "3488:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3491:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3484:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3484:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3500:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3480:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3480:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3467:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3467:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "3467:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "2851:662:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2856:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "3530:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3544:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3557:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "3548:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3593:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3611:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3630:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3635:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3626:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3626:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3620:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3620:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3611:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "3574:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "3571:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3680:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3739:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3746:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "3686:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3686:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3673:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3673:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "3673:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "3522:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2831:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2839:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2828:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2828:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "2821:943:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "2501:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "2507:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2422:1348:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _4) { i := add(i, _1) }\n        {\n            mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n        }\n        mstore(add(add(memPtr, _4), _1), 0)\n        value0 := memPtr\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b506040516200230038038062002300833981016040819052620000349162000072565b600180546001600160a01b031916331790556000620000548282620001d6565b5050620002a2565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008657600080fd5b82516001600160401b03808211156200009e57600080fd5b818501915085601f830112620000b357600080fd5b815181811115620000c857620000c86200005c565b604051601f8201601f19908116603f01168101908382118183101715620000f357620000f36200005c565b8160405282815288868487010111156200010c57600080fd5b600093505b8284101562000130578484018601518185018701529285019262000111565b600086848301015280965050505050505092915050565b600181811c908216806200015c57607f821691505b6020821081036200017d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d157600081815260208120601f850160051c81016020861015620001ac5750805b601f850160051c820191505b81811015620001cd57828155600101620001b8565b5050505b505050565b81516001600160401b03811115620001f257620001f26200005c565b6200020a8162000203845462000147565b8462000183565b602080601f831160018114620002425760008415620002295750858301515b600019600386901b1c1916600185901b178555620001cd565b600085815260208120601f198616915b82811015620002735788860151825594840194600190910190840162000252565b5085821015620002925787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61204e80620002b26000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806373cc48a61161007657806398d35f201161005b57806398d35f2014610188578063bdf95fef1461019d578063c327deef146101b057600080fd5b806373cc48a61461010d5780638da5cb5b1461016857600080fd5b8063020ed8d3146100a857806313af4035146100bd57806328e7677d146100d0578063440f3d42146100e3575b600080fd5b6100bb6100b63660046119c9565b6101e6565b005b6100bb6100cb366004611a00565b61029a565b6100bb6100de3660046119c9565b610305565b6100f66100f1366004611c6a565b6103b1565b604051610104929190611d13565b60405180910390f35b61014361011b366004611d3b565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610104565b6001546101439073ffffffffffffffffffffffffffffffffffffffff1681565b6101906104a3565b6040516101049190611d56565b6100f66101ab366004611d69565b610531565b6101436101be366004611d3b565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461020a57600080fd5b60ff821660008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301527ff73c3c226af96b7f1ba666a21b3ceaf2be3ee6a365e3178fd9cd1eaae0075aa891015b60405180910390a15050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102be57600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032957600080fd5b60ff821660008181526003602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301527f2fcc274c3b72dd483ab201bfa87295e3817e8b9b10693219873b722ca1af00c7910161028e565b6060600080600080546103c390611d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546103ef90611d9e565b801561043c5780601f106104115761010080835404028352916020019161043c565b820191906000526020600020905b81548152906001019060200180831161041f57829003601f168201915b5050505050905060005b855181101561049957600061047587838151811061046657610466611deb565b60200260200101518488610548565b61010081015160a0909101519450925081905061049181611e49565b915050610446565b5091509250929050565b600080546104b090611d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546104dc90611d9e565b80156105295780601f106104fe57610100808354040283529160200191610529565b820191906000526020600020905b81548152906001019060200180831161050c57829003601f168201915b505050505081565b6060600061053f83426103b1565b91509150915091565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c082019290925260e08101829052610100810182905261012081019190915283516105a6906106e8565b905060006105b882836000015161082a565b604083015190915060ff166105ce826000610987565b14610616578082604001516040517fe861b2bd00000000000000000000000000000000000000000000000000000000815260040161060d929190611e81565b60405180910390fd5b6101208201819052608082015161062d90846109ed565b6106795760808201516040517fa784f87e00000000000000000000000000000000000000000000000000000000815263ffffffff9182166004820152908416602482015260440161060d565b610687838360a001516109ed565b6106d35760a08201516040517fbd41036a00000000000000000000000000000000000000000000000000000000815263ffffffff9182166004820152908416602482015260440161060d565b6106df81838787610a06565b505b9392505050565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201819052610100820181905261012082015290610743908390610b10565b61ffff168152610754826002610b38565b60ff166020820152610767826003610b38565b60ff16604082015261077a826004610b5c565b63ffffffff9081166060830152610796908390600890610b5c16565b63ffffffff90811660808301526107b2908390600c90610b5c16565b63ffffffff90811660a08301526107ce908390601090610b1016565b61ffff1660c08201526107e2826012610b86565b60e082018190525161081f906107f9906012611ea6565b8260e00151516012855161080d9190611eb9565b6108179190611eb9565b849190610ba9565b610100820152919050565b6060600061083784610c2b565b90505b8051516020820151101561098057606081015161ffff166001146108965760608101516040517f98a5f31a00000000000000000000000000000000000000000000000000000000815261ffff909116600482015260240161060d565b81516000036108af576108a881610c89565b9150610919565b602081015181516108bf91610caa565b82511415806108e257508051602082015183516108e0928592600092610d04565b155b15610919576040517fcbceee6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8261ffff16816040015161ffff16146109725760408082015190517fa6ff8a8a00000000000000000000000000000000000000000000000000000000815261ffff9182166004820152908416602482015260440161060d565b61097b81610d27565b61083a565b5092915050565b6000805b8351831061099b5761099b611ecc565b60006109a78585610b38565b60ff1690506109b7816001611ea6565b6109c19085611ea6565b9350806000036109d157506109e4565b6109dc600183611ea6565b91505061098b565b90505b92915050565b6000806109fa8385611efb565b60030b12159392505050565b83518360e00151511180610a3c5750610a3a6000858560e00151518751610a2d9190611eb9565b60e0870151929190610e0f565b155b15610a7a5760e08301516040517feaafc59b00000000000000000000000000000000000000000000000000000000815261060d918691600401611f3d565b6000610a868282610e44565b9050602b61ffff16816040015161ffff1603610aac57610aa7848483610ea5565b610b09565b603061ffff16816040015161ffff1603610acb57610aa7848483610fae565b60408082015190517f61529e8700000000000000000000000000000000000000000000000000000000815261ffff909116600482015260240161060d565b5050505050565b8151600090610b20836002611ea6565b1115610b2b57600080fd5b50016002015161ffff1690565b6000828281518110610b4c57610b4c611deb565b016020015160f81c905092915050565b8151600090610b6c836004611ea6565b1115610b7757600080fd5b50016004015163ffffffff1690565b60606000610b948484610caa565b9050610ba1848483610ba9565b949350505050565b8251606090610bb88385611ea6565b1115610bc357600080fd5b60008267ffffffffffffffff811115610bde57610bde611a1d565b6040519080825280601f01601f191660200182016040528015610c08576020820181803683370190505b50905060208082019086860101610c208282876110a8565b509095945050505050565b610c796040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b6109e78261010001516000610e44565b602081015181516060916109e791610ca19082610caa565b84519190610ba9565b6000815b83518110610cbe57610cbe611ecc565b6000610cca8583610b38565b60ff169050610cda816001611ea6565b610ce49083611ea6565b915080600003610cf45750610cfa565b50610cae565b610ba18382611eb9565b6000610d1184848461111c565b610d1c87878561111c565b149695505050505050565b60c08101516020820181905281515111610d3e5750565b6000610d5282600001518360200151610caa565b8260200151610d619190611ea6565b8251909150610d709082610b10565b61ffff166040830152610d84600282611ea6565b8251909150610d939082610b10565b61ffff166060830152610da7600282611ea6565b8251909150610db69082610b5c565b63ffffffff166080830152610dcc600482611ea6565b8251909150600090610dde9083610b10565b61ffff169050610def600283611ea6565b60a084018190529150610e028183611ea6565b60c0909301929092525050565b6000610e288383848651610e239190611eb9565b61111c565b610e3a8686878951610e239190611eb9565b1495945050505050565b610e926040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c081018290526109e781610d27565b6000610eb084610c2b565b90505b80515160208201511015610f7557604081015161ffff16603014610f0f5760408082015190517f61529e8700000000000000000000000000000000000000000000000000000000815261ffff909116600482015260240161060d565b6000610f1a82611140565b90506000610f35600083518461115c9092919063ffffffff16565b9050610f43818388886111fa565b15610f6557610f588660e0015185838561132f565b15610f6557505050505050565b5050610f7081610d27565b610eb3565b508260e001516040517f06cde0f300000000000000000000000000000000000000000000000000000000815260040161060d9190611d56565b80515160208201511015611070576000610fc782610c89565b9050610fe08460e001518261148590919063ffffffff16565b61101e578360e00151816040517fd700ae7e00000000000000000000000000000000000000000000000000000000815260040161060d929190611f3d565b600061102983611140565b90506000611044600083518461115c9092919063ffffffff16565b9050611052818388886111fa565b1561105f57505050505050565b50505061106b81610d27565b610fae565b8260e001516040517f06cde0f300000000000000000000000000000000000000000000000000000000815260040161060d9190611d56565b602081106110e057815183526110bf602084611ea6565b92506110cc602083611ea6565b91506110d9602082611eb9565b90506110a8565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b825160009061112b8385611ea6565b111561113657600080fd5b5091016020012090565b60a081015160c08201516060916109e791610ca1908290611eb9565b604080516080810182526000808252602082018190529181019190915260608082015261119461118d600085611ea6565b8590610b10565b61ffff1681526111af6111a8600285611ea6565b8590610b38565b60ff1660208201526111c56111a8600385611ea6565b60ff1660408201526111ee6111db600485611ea6565b6111e6600485611eb9565b869190610ba9565b60608201529392505050565b6000846020015160ff1660031461121357506000610ba1565b826020015160ff16856040015160ff161461123057506000610ba1565b600061123b856114a3565b90508360c0015161ffff168161ffff161461125a576000915050610ba1565b855161010016600003611271576000915050610ba1565b60408087015160ff16600090815260026020908152908290205485519186015192517fde8f50a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169263de8f50a1926112e4928a9290600401611f6b565b602060405180830381865afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190611fa4565b9695505050505050565b60008061133b836114a3565b90505b8451516020860151101561147957600061135786610c89565b90506113638188611485565b61139d5786816040517fd700ae7e00000000000000000000000000000000000000000000000000000000815260040161060d929190611f3d565b60a086015160c08701516000916113c2916113b9908290611eb9565b8951919061115c565b90508261ffff16816000015161ffff16146113de57505061146b565b856040015160ff16816020015160ff16146113fa57505061146b565b60408051808201909152606081526000602082015261142786518a516114209190611ea6565b82906116e7565b50611432818a61174c565b5061143d818761174c565b50611455826040015182600001518460600151611773565b15611467576001945050505050610ba1565b5050505b61147485610d27565b61133e565b50600095945050505050565b6000815183511480156109e457506109e48360008460008751610d04565b600061200082511115611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c6f6e67206b657973206e6f74207065726d6974746564000000000000000000604482015260640161060d565b60008060005b8451601f01811015611587576000816020870101519050855182602001111561154d5785518290036008026101000390811c901b5b7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff600882901c81169490940193169190910190602001611518565b506010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff160191506010817fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1601905080600883901b0191506020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff160191506040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c8277ffffffffffffffff0000000000000000ffffffffffffffff16019150608082901c826fffffffffffffffffffffffffffffffff16019150601082901c61ffff16820191508192505050919050565b604080518082019091526060815260006020820152611707602083611fc6565b1561172f57611717602083611fc6565b611722906020611eb9565b61172c9083611ea6565b91505b506020828101829052604080518085526000815290920101905290565b6040805180820190915260608152600060208201526109e483846000015151848551611852565b60ff831660009081526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166117a8575060006106e1565b60ff8416600090815260036020526040908190205490517ff7e83aee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f7e83aee906118119086908690600401611f3d565b602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba19190611fa4565b604080518082019091526060815260006020820152825182111561187557600080fd5b60208501516118848386611ea6565b11156118b7576118b7856118a7876020015187866118a29190611ea6565b61195a565b6118b2906002612001565b611971565b6000808651805187602083010193508088870111156118d65787860182525b505050602084015b6020841061191657805182526118f5602083611ea6565b9150611902602082611ea6565b905061190f602085611eb9565b93506118de565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b60008183111561196b5750816109e7565b50919050565b815161197d83836116e7565b50611988838261174c565b50505050565b803560ff8116811461199f57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146119c657600080fd5b50565b600080604083850312156119dc57600080fd5b6119e58361198e565b915060208301356119f5816119a4565b809150509250929050565b600060208284031215611a1257600080fd5b81356109e4816119a4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611a6f57611a6f611a1d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611abc57611abc611a1d565b604052919050565b600082601f830112611ad557600080fd5b813567ffffffffffffffff811115611aef57611aef611a1d565b611b2060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a75565b818152846020838601011115611b3557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611b6357600080fd5b8135602067ffffffffffffffff80831115611b8057611b80611a1d565b8260051b611b8f838201611a75565b9384528581018301938381019088861115611ba957600080fd5b84880192505b85831015611c5e57823584811115611bc75760008081fd5b88016040818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001811315611bfd5760008081fd5b611c05611a4c565b8783013587811115611c175760008081fd5b611c258d8a83870101611ac4565b825250908201359086821115611c3b5760008081fd5b611c498c8984860101611ac4565b81890152845250509184019190840190611baf565b98975050505050505050565b60008060408385031215611c7d57600080fd5b823567ffffffffffffffff811115611c9457600080fd5b611ca085828601611b52565b95602094909401359450505050565b6000815180845260005b81811015611cd557602081850181015186830182015201611cb9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081526000611d266040830185611caf565b905063ffffffff831660208301529392505050565b600060208284031215611d4d57600080fd5b6109e48261198e565b6020815260006109e46020830184611caf565b600060208284031215611d7b57600080fd5b813567ffffffffffffffff811115611d9257600080fd5b610ba184828501611b52565b600181811c90821680611db257607f821691505b60208210810361196b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e7a57611e7a611e1a565b5060010190565b604081526000611e946040830185611caf565b905060ff831660208301529392505050565b808201808211156109e7576109e7611e1a565b818103818111156109e7576109e7611e1a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600382810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008112637fffffff821317156109e7576109e7611e1a565b604081526000611f506040830185611caf565b8281036020840152611f628185611caf565b95945050505050565b606081526000611f7e6060830186611caf565b8281036020840152611f908186611caf565b905082810360408401526113258185611caf565b600060208284031215611fb657600080fd5b815180151581146109e457600080fd5b600082611ffc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b80820281158282048414176109e7576109e7611e1a56fea2646970667358221220c3d5b08c6410542245f7d08e346f164421d4ab3cde6d3e994f2092fd1380f35c64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2300 CODESIZE SUB DUP1 PUSH3 0x2300 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x72 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0x0 PUSH3 0x54 DUP3 DUP3 PUSH3 0x1D6 JUMP JUMPDEST POP POP PUSH3 0x2A2 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0xC8 JUMPI PUSH3 0xC8 PUSH3 0x5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xF3 JUMPI PUSH3 0xF3 PUSH3 0x5C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH3 0x130 JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH3 0x111 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x15C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x17D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x1D1 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1AC JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1CD JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1B8 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x1F2 JUMPI PUSH3 0x1F2 PUSH3 0x5C JUMP JUMPDEST PUSH3 0x20A DUP2 PUSH3 0x203 DUP5 SLOAD PUSH3 0x147 JUMP JUMPDEST DUP5 PUSH3 0x183 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x242 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x229 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x1CD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x273 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x252 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x292 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x204E DUP1 PUSH3 0x2B2 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73CC48A6 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x98D35F20 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x98D35F20 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xBDF95FEF EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0xC327DEEF EQ PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x73CC48A6 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x20ED8D3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x13AF4035 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x28E7677D EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x440F3D42 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x19C9 JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xBB PUSH2 0xCB CALLDATASIZE PUSH1 0x4 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x29A JUMP JUMPDEST PUSH2 0xBB PUSH2 0xDE CALLDATASIZE PUSH1 0x4 PUSH2 0x19C9 JUMP JUMPDEST PUSH2 0x305 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6A JUMP JUMPDEST PUSH2 0x3B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP3 SWAP2 SWAP1 PUSH2 0x1D13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x1D3B JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x143 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x4A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x1D56 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1D69 JUMP JUMPDEST PUSH2 0x531 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1D3B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF73C3C226AF96B7F1BA666A21B3CEAF2BE3EE6A365E3178FD9CD1EAAE0075AA8 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0x2FCC274C3B72DD483AB201BFA87295E3817E8B9B10693219873B722CA1AF00C7 SWAP2 ADD PUSH2 0x28E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SLOAD PUSH2 0x3C3 SWAP1 PUSH2 0x1D9E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3EF SWAP1 PUSH2 0x1D9E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x43C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x411 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x43C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x41F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 PUSH2 0x475 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x466 JUMPI PUSH2 0x466 PUSH2 0x1DEB JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP9 PUSH2 0x548 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0xA0 SWAP1 SWAP2 ADD MLOAD SWAP5 POP SWAP3 POP DUP2 SWAP1 POP PUSH2 0x491 DUP2 PUSH2 0x1E49 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x446 JUMP JUMPDEST POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x4B0 SWAP1 PUSH2 0x1D9E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x4DC SWAP1 PUSH2 0x1D9E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x529 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4FE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x529 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x50C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x53F DUP4 TIMESTAMP PUSH2 0x3B1 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD PUSH2 0x5A6 SWAP1 PUSH2 0x6E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5B8 DUP3 DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0x5CE DUP3 PUSH1 0x0 PUSH2 0x987 JUMP JUMPDEST EQ PUSH2 0x616 JUMPI DUP1 DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xE861B2BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP3 SWAP2 SWAP1 PUSH2 0x1E81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x62D SWAP1 DUP5 PUSH2 0x9ED JUMP JUMPDEST PUSH2 0x679 JUMPI PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xA784F87E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x60D JUMP JUMPDEST PUSH2 0x687 DUP4 DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0x9ED JUMP JUMPDEST PUSH2 0x6D3 JUMPI PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xBD41036A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x60D JUMP JUMPDEST PUSH2 0x6DF DUP2 DUP4 DUP8 DUP8 PUSH2 0xA06 JUMP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MSTORE SWAP1 PUSH2 0x743 SWAP1 DUP4 SWAP1 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND DUP2 MSTORE PUSH2 0x754 DUP3 PUSH1 0x2 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x767 DUP3 PUSH1 0x3 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x77A DUP3 PUSH1 0x4 PUSH2 0xB5C JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x796 SWAP1 DUP4 SWAP1 PUSH1 0x8 SWAP1 PUSH2 0xB5C AND JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x7B2 SWAP1 DUP4 SWAP1 PUSH1 0xC SWAP1 PUSH2 0xB5C AND JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x7CE SWAP1 DUP4 SWAP1 PUSH1 0x10 SWAP1 PUSH2 0xB10 AND JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x7E2 DUP3 PUSH1 0x12 PUSH2 0xB86 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE MLOAD PUSH2 0x81F SWAP1 PUSH2 0x7F9 SWAP1 PUSH1 0x12 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 PUSH1 0xE0 ADD MLOAD MLOAD PUSH1 0x12 DUP6 MLOAD PUSH2 0x80D SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0x817 SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST DUP5 SWAP2 SWAP1 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x837 DUP5 PUSH2 0xC2B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x980 JUMPI PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0xFFFF AND PUSH1 0x1 EQ PUSH2 0x896 JUMPI PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x98A5F31A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x60D JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SUB PUSH2 0x8AF JUMPI PUSH2 0x8A8 DUP2 PUSH2 0xC89 JUMP JUMPDEST SWAP2 POP PUSH2 0x919 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH2 0x8BF SWAP2 PUSH2 0xCAA JUMP JUMPDEST DUP3 MLOAD EQ ISZERO DUP1 PUSH2 0x8E2 JUMPI POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD DUP4 MLOAD PUSH2 0x8E0 SWAP3 DUP6 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0xD04 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x919 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCBCEEE6F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND EQ PUSH2 0x972 JUMPI PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 MLOAD PUSH32 0xA6FF8A8A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x60D JUMP JUMPDEST PUSH2 0x97B DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH2 0x83A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP4 LT PUSH2 0x99B JUMPI PUSH2 0x99B PUSH2 0x1ECC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A7 DUP6 DUP6 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x9B7 DUP2 PUSH1 0x1 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0x9C1 SWAP1 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST SWAP4 POP DUP1 PUSH1 0x0 SUB PUSH2 0x9D1 JUMPI POP PUSH2 0x9E4 JUMP JUMPDEST PUSH2 0x9DC PUSH1 0x1 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x98B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9FA DUP4 DUP6 PUSH2 0x1EFB JUMP JUMPDEST PUSH1 0x3 SIGNEXTEND SLT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP4 MLOAD DUP4 PUSH1 0xE0 ADD MLOAD MLOAD GT DUP1 PUSH2 0xA3C JUMPI POP PUSH2 0xA3A PUSH1 0x0 DUP6 DUP6 PUSH1 0xE0 ADD MLOAD MLOAD DUP8 MLOAD PUSH2 0xA2D SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0xE0 DUP8 ADD MLOAD SWAP3 SWAP2 SWAP1 PUSH2 0xE0F JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xA7A JUMPI PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xEAAFC59B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x60D SWAP2 DUP7 SWAP2 PUSH1 0x4 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA86 DUP3 DUP3 PUSH2 0xE44 JUMP JUMPDEST SWAP1 POP PUSH1 0x2B PUSH2 0xFFFF AND DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND SUB PUSH2 0xAAC JUMPI PUSH2 0xAA7 DUP5 DUP5 DUP4 PUSH2 0xEA5 JUMP JUMPDEST PUSH2 0xB09 JUMP JUMPDEST PUSH1 0x30 PUSH2 0xFFFF AND DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND SUB PUSH2 0xACB JUMPI PUSH2 0xAA7 DUP5 DUP5 DUP4 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 MLOAD PUSH32 0x61529E8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x60D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xB20 DUP4 PUSH1 0x2 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB4C JUMPI PUSH2 0xB4C PUSH2 0x1DEB JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xB6C DUP4 PUSH1 0x4 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0xB77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xB94 DUP5 DUP5 PUSH2 0xCAA JUMP JUMPDEST SWAP1 POP PUSH2 0xBA1 DUP5 DUP5 DUP4 PUSH2 0xBA9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xBB8 DUP4 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0xBC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBDE JUMPI PUSH2 0xBDE PUSH2 0x1A1D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0xC20 DUP3 DUP3 DUP8 PUSH2 0x10A8 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC79 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x9E7 DUP3 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0xE44 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 PUSH2 0x9E7 SWAP2 PUSH2 0xCA1 SWAP1 DUP3 PUSH2 0xCAA JUMP JUMPDEST DUP5 MLOAD SWAP2 SWAP1 PUSH2 0xBA9 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0xCBE JUMPI PUSH2 0xCBE PUSH2 0x1ECC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP6 DUP4 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xCDA DUP2 PUSH1 0x1 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0xCE4 SWAP1 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0xCF4 JUMPI POP PUSH2 0xCFA JUMP JUMPDEST POP PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xBA1 DUP4 DUP3 PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD11 DUP5 DUP5 DUP5 PUSH2 0x111C JUMP JUMPDEST PUSH2 0xD1C DUP8 DUP8 DUP6 PUSH2 0x111C JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0xD3E JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD52 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xCAA JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0xD61 SWAP2 SWAP1 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0xD70 SWAP1 DUP3 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xD84 PUSH1 0x2 DUP3 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0xD93 SWAP1 DUP3 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xDA7 PUSH1 0x2 DUP3 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0xDB6 SWAP1 DUP3 PUSH2 0xB5C JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0xDCC PUSH1 0x4 DUP3 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xDDE SWAP1 DUP4 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0xDEF PUSH1 0x2 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0xE02 DUP2 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE28 DUP4 DUP4 DUP5 DUP7 MLOAD PUSH2 0xE23 SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0xE3A DUP7 DUP7 DUP8 DUP10 MLOAD PUSH2 0xE23 SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST EQ SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE92 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x9E7 DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB0 DUP5 PUSH2 0xC2B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0xF75 JUMPI PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0xFFFF AND PUSH1 0x30 EQ PUSH2 0xF0F JUMPI PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 MLOAD PUSH32 0x61529E8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x60D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF1A DUP3 PUSH2 0x1140 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF35 PUSH1 0x0 DUP4 MLOAD DUP5 PUSH2 0x115C SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0xF43 DUP2 DUP4 DUP9 DUP9 PUSH2 0x11FA JUMP JUMPDEST ISZERO PUSH2 0xF65 JUMPI PUSH2 0xF58 DUP7 PUSH1 0xE0 ADD MLOAD DUP6 DUP4 DUP6 PUSH2 0x132F JUMP JUMPDEST ISZERO PUSH2 0xF65 JUMPI POP POP POP POP POP POP JUMP JUMPDEST POP POP PUSH2 0xF70 DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH2 0xEB3 JUMP JUMPDEST POP DUP3 PUSH1 0xE0 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x6CDE0F300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP2 SWAP1 PUSH2 0x1D56 JUMP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x1070 JUMPI PUSH1 0x0 PUSH2 0xFC7 DUP3 PUSH2 0xC89 JUMP JUMPDEST SWAP1 POP PUSH2 0xFE0 DUP5 PUSH1 0xE0 ADD MLOAD DUP3 PUSH2 0x1485 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x101E JUMPI DUP4 PUSH1 0xE0 ADD MLOAD DUP2 PUSH1 0x40 MLOAD PUSH32 0xD700AE7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP3 SWAP2 SWAP1 PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1029 DUP4 PUSH2 0x1140 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1044 PUSH1 0x0 DUP4 MLOAD DUP5 PUSH2 0x115C SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1052 DUP2 DUP4 DUP9 DUP9 PUSH2 0x11FA JUMP JUMPDEST ISZERO PUSH2 0x105F JUMPI POP POP POP POP POP POP JUMP JUMPDEST POP POP POP PUSH2 0x106B DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH2 0xFAE JUMP JUMPDEST DUP3 PUSH1 0xE0 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x6CDE0F300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP2 SWAP1 PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x10E0 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x10BF PUSH1 0x20 DUP5 PUSH2 0x1EA6 JUMP JUMPDEST SWAP3 POP PUSH2 0x10CC PUSH1 0x20 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP PUSH2 0x10D9 PUSH1 0x20 DUP3 PUSH2 0x1EB9 JUMP JUMPDEST SWAP1 POP PUSH2 0x10A8 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x112B DUP4 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0x1136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 SWAP2 PUSH2 0x9E7 SWAP2 PUSH2 0xCA1 SWAP1 DUP3 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH2 0x1194 PUSH2 0x118D PUSH1 0x0 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND DUP2 MSTORE PUSH2 0x11AF PUSH2 0x11A8 PUSH1 0x2 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x11C5 PUSH2 0x11A8 PUSH1 0x3 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x11EE PUSH2 0x11DB PUSH1 0x4 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0x11E6 PUSH1 0x4 DUP6 PUSH2 0x1EB9 JUMP JUMPDEST DUP7 SWAP2 SWAP1 PUSH2 0xBA9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0xFF AND PUSH1 0x3 EQ PUSH2 0x1213 JUMPI POP PUSH1 0x0 PUSH2 0xBA1 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0xFF AND DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0xFF AND EQ PUSH2 0x1230 JUMPI POP PUSH1 0x0 PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123B DUP6 PUSH2 0x14A3 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0xC0 ADD MLOAD PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND EQ PUSH2 0x125A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xBA1 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x100 AND PUSH1 0x0 SUB PUSH2 0x1271 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP8 ADD MLOAD PUSH1 0xFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 SLOAD DUP6 MLOAD SWAP2 DUP7 ADD MLOAD SWAP3 MLOAD PUSH32 0xDE8F50A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 PUSH4 0xDE8F50A1 SWAP3 PUSH2 0x12E4 SWAP3 DUP11 SWAP3 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F6B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1301 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1325 SWAP2 SWAP1 PUSH2 0x1FA4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x133B DUP4 PUSH2 0x14A3 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP5 MLOAD MLOAD PUSH1 0x20 DUP7 ADD MLOAD LT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 PUSH2 0x1357 DUP7 PUSH2 0xC89 JUMP JUMPDEST SWAP1 POP PUSH2 0x1363 DUP2 DUP9 PUSH2 0x1485 JUMP JUMPDEST PUSH2 0x139D JUMPI DUP7 DUP2 PUSH1 0x40 MLOAD PUSH32 0xD700AE7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP3 SWAP2 SWAP1 PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0x0 SWAP2 PUSH2 0x13C2 SWAP2 PUSH2 0x13B9 SWAP1 DUP3 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST DUP10 MLOAD SWAP2 SWAP1 PUSH2 0x115C JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xFFFF AND DUP2 PUSH1 0x0 ADD MLOAD PUSH2 0xFFFF AND EQ PUSH2 0x13DE JUMPI POP POP PUSH2 0x146B JUMP JUMPDEST DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0xFF AND EQ PUSH2 0x13FA JUMPI POP POP PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1427 DUP7 MLOAD DUP11 MLOAD PUSH2 0x1420 SWAP2 SWAP1 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x16E7 JUMP JUMPDEST POP PUSH2 0x1432 DUP2 DUP11 PUSH2 0x174C JUMP JUMPDEST POP PUSH2 0x143D DUP2 DUP8 PUSH2 0x174C JUMP JUMPDEST POP PUSH2 0x1455 DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x1773 JUMP JUMPDEST ISZERO PUSH2 0x1467 JUMPI PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0xBA1 JUMP JUMPDEST POP POP POP JUMPDEST PUSH2 0x1474 DUP6 PUSH2 0xD27 JUMP JUMPDEST PUSH2 0x133E JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0x9E4 JUMPI POP PUSH2 0x9E4 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0xD04 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2000 DUP3 MLOAD GT ISZERO PUSH2 0x1512 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6F6E67206B657973206E6F74207065726D6974746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x60D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 MLOAD PUSH1 0x1F ADD DUP2 LT ISZERO PUSH2 0x1587 JUMPI PUSH1 0x0 DUP2 PUSH1 0x20 DUP8 ADD ADD MLOAD SWAP1 POP DUP6 MLOAD DUP3 PUSH1 0x20 ADD GT ISZERO PUSH2 0x154D JUMPI DUP6 MLOAD DUP3 SWAP1 SUB PUSH1 0x8 MUL PUSH2 0x100 SUB SWAP1 DUP2 SHR SWAP1 SHL JUMPDEST PUSH31 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF PUSH1 0x8 DUP3 SWAP1 SHR DUP2 AND SWAP5 SWAP1 SWAP5 ADD SWAP4 AND SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x1518 JUMP JUMPDEST POP PUSH1 0x10 DUP3 PUSH32 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 AND SWAP1 SHR DUP3 PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND ADD SWAP2 POP PUSH1 0x10 DUP2 PUSH32 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 AND SWAP1 SHR DUP2 PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND ADD SWAP1 POP DUP1 PUSH1 0x8 DUP4 SWAP1 SHL ADD SWAP2 POP PUSH1 0x20 DUP3 PUSH32 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000 AND SWAP1 SHR DUP3 PUSH28 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF AND ADD SWAP2 POP PUSH1 0x40 DUP3 PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000 AND SWAP1 SHR DUP3 PUSH24 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND ADD SWAP2 POP PUSH1 0x80 DUP3 SWAP1 SHR DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD SWAP2 POP PUSH1 0x10 DUP3 SWAP1 SHR PUSH2 0xFFFF AND DUP3 ADD SWAP2 POP DUP2 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1707 PUSH1 0x20 DUP4 PUSH2 0x1FC6 JUMP JUMPDEST ISZERO PUSH2 0x172F JUMPI PUSH2 0x1717 PUSH1 0x20 DUP4 PUSH2 0x1FC6 JUMP JUMPDEST PUSH2 0x1722 SWAP1 PUSH1 0x20 PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0x172C SWAP1 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP6 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 ADD ADD SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x9E4 DUP4 DUP5 PUSH1 0x0 ADD MLOAD MLOAD DUP5 DUP6 MLOAD PUSH2 0x1852 JUMP JUMPDEST PUSH1 0xFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17A8 JUMPI POP PUSH1 0x0 PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0xFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH32 0xF7E83AEE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7E83AEE SWAP1 PUSH2 0x1811 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x182E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBA1 SWAP2 SWAP1 PUSH2 0x1FA4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 MLOAD DUP3 GT ISZERO PUSH2 0x1875 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH2 0x1884 DUP4 DUP7 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0x18B7 JUMPI PUSH2 0x18B7 DUP6 PUSH2 0x18A7 DUP8 PUSH1 0x20 ADD MLOAD DUP8 DUP7 PUSH2 0x18A2 SWAP2 SWAP1 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0x195A JUMP JUMPDEST PUSH2 0x18B2 SWAP1 PUSH1 0x2 PUSH2 0x2001 JUMP JUMPDEST PUSH2 0x1971 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 MLOAD DUP1 MLOAD DUP8 PUSH1 0x20 DUP4 ADD ADD SWAP4 POP DUP1 DUP9 DUP8 ADD GT ISZERO PUSH2 0x18D6 JUMPI DUP8 DUP7 ADD DUP3 MSTORE JUMPDEST POP POP POP PUSH1 0x20 DUP5 ADD JUMPDEST PUSH1 0x20 DUP5 LT PUSH2 0x1916 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH2 0x18F5 PUSH1 0x20 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1902 PUSH1 0x20 DUP3 PUSH2 0x1EA6 JUMP JUMPDEST SWAP1 POP PUSH2 0x190F PUSH1 0x20 DUP6 PUSH2 0x1EB9 JUMP JUMPDEST SWAP4 POP PUSH2 0x18DE JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP7 SWAP1 SUB PUSH2 0x100 EXP ADD SWAP1 DUP2 AND SWAP1 NOT SWAP2 SWAP1 SWAP2 AND OR SWAP1 MSTORE POP DUP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x196B JUMPI POP DUP2 PUSH2 0x9E7 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH2 0x197D DUP4 DUP4 PUSH2 0x16E7 JUMP JUMPDEST POP PUSH2 0x1988 DUP4 DUP3 PUSH2 0x174C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x199F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x19C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19E5 DUP4 PUSH2 0x198E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x19F5 DUP2 PUSH2 0x19A4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9E4 DUP2 PUSH2 0x19A4 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1A6F JUMPI PUSH2 0x1A6F PUSH2 0x1A1D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1ABC JUMPI PUSH2 0x1ABC PUSH2 0x1A1D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AEF JUMPI PUSH2 0x1AEF PUSH2 0x1A1D JUMP JUMPDEST PUSH2 0x1B20 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x1A75 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 GT ISZERO PUSH2 0x1B80 JUMPI PUSH2 0x1B80 PUSH2 0x1A1D JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x1B8F DUP4 DUP3 ADD PUSH2 0x1A75 JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x1BA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x1C5E JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x1BC7 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP9 ADD PUSH1 0x40 DUP2 DUP12 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 SGT ISZERO PUSH2 0x1BFD JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C05 PUSH2 0x1A4C JUMP JUMPDEST DUP8 DUP4 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1C17 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C25 DUP14 DUP11 DUP4 DUP8 ADD ADD PUSH2 0x1AC4 JUMP JUMPDEST DUP3 MSTORE POP SWAP1 DUP3 ADD CALLDATALOAD SWAP1 DUP7 DUP3 GT ISZERO PUSH2 0x1C3B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C49 DUP13 DUP10 DUP5 DUP7 ADD ADD PUSH2 0x1AC4 JUMP JUMPDEST DUP2 DUP10 ADD MSTORE DUP5 MSTORE POP POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1BAF JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CA0 DUP6 DUP3 DUP7 ADD PUSH2 0x1B52 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1CD5 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1CB9 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D26 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1CAF JUMP JUMPDEST SWAP1 POP PUSH4 0xFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E4 DUP3 PUSH2 0x198E JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x9E4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1CAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1D92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA1 DUP5 DUP3 DUP6 ADD PUSH2 0x1B52 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1DB2 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x196B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1E7A JUMPI PUSH2 0x1E7A PUSH2 0x1E1A JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1E94 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1CAF JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9E7 JUMPI PUSH2 0x9E7 PUSH2 0x1E1A JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9E7 JUMPI PUSH2 0x9E7 PUSH2 0x1E1A JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP3 DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000 DUP2 SLT PUSH4 0x7FFFFFFF DUP3 SGT OR ISZERO PUSH2 0x9E7 JUMPI PUSH2 0x9E7 PUSH2 0x1E1A JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1F50 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1CAF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1F62 DUP2 DUP6 PUSH2 0x1CAF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1F7E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1CAF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1F90 DUP2 DUP7 PUSH2 0x1CAF JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x1325 DUP2 DUP6 PUSH2 0x1CAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1FFC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x9E7 JUMPI PUSH2 0x9E7 PUSH2 0x1E1A JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 0xD5 0xB0 DUP13 PUSH5 0x10542245F7 0xD0 DUP15 CALLVALUE PUSH16 0x164421D4AB3CDE6D3E994F2092FD1380 RETURN 0x5C PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "395:14373:27:-:0;;;1452:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;242:5:28;:18;;-1:-1:-1;;;;;;242:18:28;250:10;242:18;;;:5;1616:18:27;1626:8;242:5:28;1616:18:27;:::i;:::-;;1452:189;395:14373;;14:127:111;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1041;225:6;256:2;299;287:9;278:7;274:23;270:32;267:52;;;315:1;312;305:12;267:52;342:16;;-1:-1:-1;;;;;407:14:111;;;404:34;;;434:1;431;424:12;404:34;472:6;461:9;457:22;447:32;;517:7;510:4;506:2;502:13;498:27;488:55;;539:1;536;529:12;488:55;568:2;562:9;590:2;586;583:10;580:36;;;596:18;;:::i;:::-;671:2;665:9;639:2;725:13;;-1:-1:-1;;721:22:111;;;745:2;717:31;713:40;701:53;;;769:18;;;789:22;;;766:46;763:72;;;815:18;;:::i;:::-;855:10;851:2;844:22;890:2;882:6;875:18;930:7;925:2;920;916;912:11;908:20;905:33;902:53;;;951:1;948;941:12;902:53;973:1;964:10;;983:129;997:2;994:1;991:9;983:129;;;1085:10;;;1081:19;;1075:26;1054:14;;;1050:23;;1043:59;1008:10;;;;983:129;;;1154:1;1149:2;1144;1136:6;1132:15;1128:24;1121:35;1175:6;1165:16;;;;;;;;146:1041;;;;:::o;1192:380::-;1271:1;1267:12;;;;1314;;;1335:61;;1389:4;1381:6;1377:17;1367:27;;1335:61;1442:2;1434:6;1431:14;1411:18;1408:38;1405:161;;1488:10;1483:3;1479:20;1476:1;1469:31;1523:4;1520:1;1513:15;1551:4;1548:1;1541:15;1405:161;;1192:380;;;:::o;1702:544::-;1803:2;1798:3;1795:11;1792:448;;;1839:1;1864:5;1860:2;1853:17;1909:4;1905:2;1895:19;1979:2;1967:10;1963:19;1960:1;1956:27;1950:4;1946:38;2015:4;2003:10;2000:20;1997:47;;;-1:-1:-1;2038:4:111;1997:47;2093:2;2088:3;2084:12;2081:1;2077:20;2071:4;2067:31;2057:41;;2148:82;2166:2;2159:5;2156:13;2148:82;;;2211:17;;;2192:1;2181:13;2148:82;;;2152:3;;;1792:448;1702:544;;;:::o;2422:1348::-;2540:10;;-1:-1:-1;;;;;2562:30:111;;2559:56;;;2595:18;;:::i;:::-;2624:96;2713:6;2673:38;2705:4;2699:11;2673:38;:::i;:::-;2667:4;2624:96;:::i;:::-;2775:4;;2839:2;2828:14;;2856:1;2851:662;;;;3557:1;3574:6;3571:89;;;-1:-1:-1;3626:19:111;;;3620:26;3571:89;-1:-1:-1;;2379:1:111;2375:11;;;2371:24;2367:29;2357:40;2403:1;2399:11;;;2354:57;3673:81;;2821:943;;2851:662;1649:1;1642:14;;;1686:4;1673:18;;-1:-1:-1;;2887:20:111;;;3004:236;3018:7;3015:1;3012:14;3004:236;;;3107:19;;;3101:26;3086:42;;3199:27;;;;3167:1;3155:14;;;;3034:19;;3004:236;;;3008:3;3268:6;3259:7;3256:19;3253:201;;;3329:19;;;3323:26;-1:-1:-1;;3412:1:111;3408:14;;;3424:3;3404:24;3400:37;3396:42;3381:58;3366:74;;3253:201;-1:-1:-1;;;;;3500:1:111;3484:14;;;3480:22;3467:36;;-1:-1:-1;2422:1348:111:o;:::-;395:14373:27;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@algorithms_5154": {
                  "entryPoint": null,
                  "id": 5154,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@anchors_5022": {
                  "entryPoint": 1187,
                  "id": 5022,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@append_264": {
                  "entryPoint": 5964,
                  "id": 264,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@computeKeytag_7058": {
                  "entryPoint": 5283,
                  "id": 7058,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@digests_5159": {
                  "entryPoint": null,
                  "id": 5159,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@done_6366": {
                  "entryPoint": null,
                  "id": 6366,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@equals_4449": {
                  "entryPoint": 3332,
                  "id": 4449,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@equals_4481": {
                  "entryPoint": 3599,
                  "id": 4481,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@equals_4535": {
                  "entryPoint": 5253,
                  "id": 4535,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@init_45": {
                  "entryPoint": 5863,
                  "id": 45,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@iterateRRs_6349": {
                  "entryPoint": 3652,
                  "id": 6349,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@keccak_4263": {
                  "entryPoint": 4380,
                  "id": 4263,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@labelCount_6143": {
                  "entryPoint": 2439,
                  "id": 6143,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@max_117": {
                  "entryPoint": 6490,
                  "id": 117,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@memcpy_4702": {
                  "entryPoint": 4264,
                  "id": 4702,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@nameLength_6069": {
                  "entryPoint": 3242,
                  "id": 6069,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_6493": {
                  "entryPoint": 3209,
                  "id": 6493,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@next_6470": {
                  "entryPoint": 3367,
                  "id": 6470,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@owner_5979": {
                  "entryPoint": null,
                  "id": 5979,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@rdata_6515": {
                  "entryPoint": 4416,
                  "id": 6515,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@readDNSKEY_6596": {
                  "entryPoint": 4444,
                  "id": 6596,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@readDS_6677": {
                  "entryPoint": null,
                  "id": 6677,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@readName_6093": {
                  "entryPoint": 2950,
                  "id": 6093,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readSignedSet_6290": {
                  "entryPoint": 1768,
                  "id": 6290,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@readUint16_4572": {
                  "entryPoint": 2832,
                  "id": 4572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint32_4592": {
                  "entryPoint": 2908,
                  "id": 4592,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 2872,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@resize_98": {
                  "entryPoint": 6513,
                  "id": 98,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@rrs_6306": {
                  "entryPoint": 3115,
                  "id": 6306,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@serialNumberGte_6855": {
                  "entryPoint": 2541,
                  "id": 6855,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@setAlgorithm_5196": {
                  "entryPoint": 486,
                  "id": 5196,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setDigest_5222": {
                  "entryPoint": 773,
                  "id": 5222,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setOwner_6011": {
                  "entryPoint": 666,
                  "id": 6011,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@substring_4745": {
                  "entryPoint": 2985,
                  "id": 4745,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@validateRRs_5497": {
                  "entryPoint": 2090,
                  "id": 5497,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@validateSignedSet_5404": {
                  "entryPoint": 1352,
                  "id": 5404,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@verifyDSHash_5973": {
                  "entryPoint": 6003,
                  "id": 5973,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@verifyKeyWithDS_5937": {
                  "entryPoint": 4911,
                  "id": 5937,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@verifyRRSet_5242": {
                  "entryPoint": 1329,
                  "id": 5242,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@verifyRRSet_5302": {
                  "entryPoint": 945,
                  "id": 5302,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@verifySignatureWithKey_5727": {
                  "entryPoint": 4602,
                  "id": 5727,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@verifySignature_5580": {
                  "entryPoint": 2566,
                  "id": 5580,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@verifyWithDS_5812": {
                  "entryPoint": 3749,
                  "id": 5812,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@verifyWithKnownKey_5656": {
                  "entryPoint": 4014,
                  "id": 5656,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@write_217": {
                  "entryPoint": 6226,
                  "id": 217,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_RRSetWithSignature_dyn": {
                  "entryPoint": 6994,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 6852,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 6656,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 7529,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptrt_uint256": {
                  "entryPoint": 7274,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 8100,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint8": {
                  "entryPoint": 7483,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint8t_contract$_Algorithm_$7075": {
                  "entryPoint": 6601,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint8t_contract$_Digest_$8916": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint8": {
                  "entryPoint": 6542,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 7343,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 7510,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 7997,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 8043,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_uint32__to_t_bytes_memory_ptr_t_uint32__fromStack_reversed": {
                  "entryPoint": 7443,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed": {
                  "entryPoint": 7809,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_Algorithm_$7075__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_Digest_$8916__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7e23270aecf7702fd4b1bd212912c277507361dc8248ebed5ad0286c9b051069__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint16__to_t_uint16_t_uint16__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32_t_uint32__to_t_uint32_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8_t_address__to_t_uint8_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 6773,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_1350": {
                  "entryPoint": 6732,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 7846,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 8193,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_int32": {
                  "entryPoint": 7931,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 7865,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 7582,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 7753,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 8134,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x01": {
                  "entryPoint": 7884,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x11": {
                  "entryPoint": 7706,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 7659,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 6685,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_contract_Algorithm": {
                  "entryPoint": 6564,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:12365:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "61:109:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "71:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "93:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "80:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "80:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "148:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "157:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "160:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "150:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "150:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "150:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "122:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "133:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "140:4:111",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "129:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "129:16:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "119:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "119:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "112:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "112:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "109:55:111"
                            }
                          ]
                        },
                        "name": "abi_decode_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "40:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "51:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:156:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "231:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "318:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "327:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "330:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "320:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "320:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "320:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "254:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "265:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "272:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "261:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "261:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "251:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "251:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "244:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "244:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "241:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_Algorithm",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "220:5:111",
                            "type": ""
                          }
                        ],
                        "src": "175:165:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "448:243:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "494:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "503:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "506:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "496:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "496:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "496:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "469:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "478:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "465:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "465:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "490:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "461:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "461:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "458:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "519:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "546:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "529:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "529:27:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "519:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "565:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "595:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "606:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "591:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "591:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "578:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "578:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "569:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "655:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_Algorithm",
                                  "nodeType": "YulIdentifier",
                                  "src": "619:35:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "619:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "619:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "670:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "680:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "670:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint8t_contract$_Algorithm_$7075",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "406:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "417:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "429:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "437:6:111",
                            "type": ""
                          }
                        ],
                        "src": "345:346:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "766:188:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "812:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "821:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "824:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "814:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "814:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "814:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "787:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "783:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "783:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "808:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "779:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "779:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "776:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "837:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "863:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "850:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "850:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "841:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "918:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_Algorithm",
                                  "nodeType": "YulIdentifier",
                                  "src": "882:35:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "882:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "882:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "933:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "943:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "933:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "732:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "743:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "755:6:111",
                            "type": ""
                          }
                        ],
                        "src": "696:258:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1059:243:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1105:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1114:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1117:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1107:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1107:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1107:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1080:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1089:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1076:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1076:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1101:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1072:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1072:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1069:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1130:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1157:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "1140:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1140:27:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1130:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1176:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1206:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1217:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1202:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1202:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1189:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1189:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1180:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1266:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_Algorithm",
                                  "nodeType": "YulIdentifier",
                                  "src": "1230:35:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1230:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1230:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1281:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1291:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1281:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint8t_contract$_Digest_$8916",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1017:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1028:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1040:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1048:6:111",
                            "type": ""
                          }
                        ],
                        "src": "959:343:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1339:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1356:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1359:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1349:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1349:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1349:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1453:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1456:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1446:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1446:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1446:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1477:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1480:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1470:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1470:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1470:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1307:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1542:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1552:21:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1568:4:111",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1562:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1562:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1552:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1582:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1604:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1612:4:111",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1600:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1600:17:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1586:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1692:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1694:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1694:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1694:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1635:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1647:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1632:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1632:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1671:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1683:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1668:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1668:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1629:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1629:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1626:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1730:4:111",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1736:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1723:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1723:24:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1723:24:111"
                            }
                          ]
                        },
                        "name": "allocate_memory_1350",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "1531:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1496:257:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1803:289:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1813:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1829:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1823:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1823:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1813:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1841:117:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1863:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "1879:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1885:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1875:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1875:13:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1890:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1871:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1871:86:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1859:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1859:99:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1845:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2033:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2035:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2035:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2035:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1976:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1988:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1973:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1973:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2012:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2024:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2009:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2009:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1970:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1970:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1967:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2071:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2075:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2064:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2064:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2064:22:111"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "1783:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "1792:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1758:334:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2149:537:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2198:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2207:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2210:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2200:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2200:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2200:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2177:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2185:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2173:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2173:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2192:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2169:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2169:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2162:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2162:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2159:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2223:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2246:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2233:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2233:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2227:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2292:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2294:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2294:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2294:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2268:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2272:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2265:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2265:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2262:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2323:129:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2366:2:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2370:4:111",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2362:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2362:13:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2377:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2358:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2358:86:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2446:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2354:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2354:97:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2338:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2338:114:111"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2327:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2468:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2477:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2461:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2461:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2461:19:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2528:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2537:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2540:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2530:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2530:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2530:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2503:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2511:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2499:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2499:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2516:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2495:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2495:26:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "2523:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2492:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2492:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2489:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2570:7:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2579:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2566:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2566:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2590:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2598:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2586:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2586:17:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2605:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2553:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2553:55:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2553:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2632:7:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2641:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2628:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2628:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2646:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2624:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2624:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2653:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2617:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2617:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2617:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2664:16:111",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "2673:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "2664:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2123:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2131:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2139:5:111",
                            "type": ""
                          }
                        ],
                        "src": "2097:589:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2773:1659:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2822:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2831:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2834:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2824:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2824:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2824:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2801:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2809:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2797:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2797:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2816:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2793:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2793:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2786:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2786:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2783:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2847:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2870:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2857:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2857:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2851:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2886:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2896:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2890:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2909:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2919:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2913:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2960:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2962:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2962:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2962:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2952:2:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2956:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2949:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2949:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2946:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2991:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3005:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3008:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "3001:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3001:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2995:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3020:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3051:2:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3055:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3047:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3047:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3031:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3031:28:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "3024:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3068:16:111",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "3081:3:111"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3072:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "3100:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3105:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3093:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3093:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3093:15:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3117:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "3128:3:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3133:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3124:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3124:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "3117:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3145:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3167:6:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3175:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3163:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3163:15:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3180:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3159:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3159:24:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "3149:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3211:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3220:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3223:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3213:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3213:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3213:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3198:6:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "3206:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3195:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3195:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3192:35:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3236:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3251:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3259:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3247:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3247:15:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "3240:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3327:1076:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3341:36:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "3373:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "3360:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3360:17:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "3345:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3425:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "3443:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3453:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulTypedName",
                                              "src": "3447:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "3478:2:111"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "3482:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "3471:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3471:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3471:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "3396:11:111"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "3409:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3393:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3393:19:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3390:109:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3512:34:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "3526:6:111"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "3534:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3522:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3522:24:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "3516:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3559:14:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "3569:4:111",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "3563:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3696:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "3714:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3724:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_8",
                                              "nodeType": "YulTypedName",
                                              "src": "3718:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_8",
                                                "nodeType": "YulIdentifier",
                                                "src": "3749:2:111"
                                              },
                                              {
                                                "name": "_8",
                                                "nodeType": "YulIdentifier",
                                                "src": "3753:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "3742:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3742:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3742:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "end",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3601:3:111"
                                                },
                                                {
                                                  "name": "_6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3606:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "3597:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3597:12:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3611:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3593:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3593:85:111"
                                        },
                                        {
                                          "name": "_7",
                                          "nodeType": "YulIdentifier",
                                          "src": "3680:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3589:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3589:94:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3586:184:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3783:35:111",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_1350",
                                        "nodeType": "YulIdentifier",
                                        "src": "3796:20:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3796:22:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "3787:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3831:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "3864:2:111"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "3868:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3860:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3860:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "3847:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3847:25:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulTypedName",
                                        "src": "3835:8:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3917:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "3935:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3945:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_9",
                                              "nodeType": "YulTypedName",
                                              "src": "3939:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_9",
                                                "nodeType": "YulIdentifier",
                                                "src": "3970:2:111"
                                              },
                                              {
                                                "name": "_9",
                                                "nodeType": "YulIdentifier",
                                                "src": "3974:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "3963:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3963:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3963:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "offset_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3891:8:111"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "3901:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3888:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3888:16:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3885:106:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "4011:5:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4043:2:111"
                                                    },
                                                    {
                                                      "name": "offset_1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4047:8:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4039:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4039:17:111"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4058:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4035:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4035:26:111"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "4063:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_bytes",
                                            "nodeType": "YulIdentifier",
                                            "src": "4018:16:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4018:49:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4004:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4004:64:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4004:64:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4081:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "4114:2:111"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "4118:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4110:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4110:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "4097:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4097:25:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulTypedName",
                                        "src": "4085:8:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "4167:77:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "4185:12:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4196:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_10",
                                              "nodeType": "YulTypedName",
                                              "src": "4189:3:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_10",
                                                "nodeType": "YulIdentifier",
                                                "src": "4221:3:111"
                                              },
                                              {
                                                "name": "_10",
                                                "nodeType": "YulIdentifier",
                                                "src": "4226:3:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "4214:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4214:16:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "4214:16:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "offset_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4141:8:111"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4151:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "4138:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4138:16:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4135:109:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "4268:5:111"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "4275:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4264:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4264:14:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4305:2:111"
                                                    },
                                                    {
                                                      "name": "offset_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4309:8:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4301:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4301:17:111"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4320:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4297:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4297:26:111"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "4325:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_bytes",
                                            "nodeType": "YulIdentifier",
                                            "src": "4280:16:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4280:49:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4257:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4257:73:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4257:73:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "4350:3:111"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "4355:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4343:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4343:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4343:18:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4374:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "4385:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4390:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4381:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4381:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "4374:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "3282:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3287:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3279:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3279:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3295:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3297:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "3308:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "3313:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3304:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3304:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "3297:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3275:3:111",
                                "statements": []
                              },
                              "src": "3271:1132:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4412:14:111",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "4421:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "4412:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_RRSetWithSignature_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2747:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2755:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2763:5:111",
                            "type": ""
                          }
                        ],
                        "src": "2691:1741:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4585:322:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4631:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4640:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4643:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4633:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4633:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4633:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4606:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4615:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4602:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4602:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4627:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4598:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4598:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4595:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4656:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4683:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4670:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4670:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4660:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4736:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4745:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4748:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4738:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4738:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4738:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4708:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4716:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4705:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4705:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4702:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4761:89:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4822:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4833:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4818:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4818:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4842:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_RRSetWithSignature_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4771:46:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4771:79:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4761:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4859:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4886:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4897:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4882:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4882:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4869:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4869:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4859:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4543:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4554:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4566:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4574:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4437:470:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4961:432:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4971:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4991:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4985:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4985:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4975:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5013:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5018:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5006:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5006:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5006:19:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5034:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5043:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "5038:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5105:110:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5119:14:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5129:4:111",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "5123:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5161:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5166:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5157:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5157:11:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "5170:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5153:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5153:20:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5189:5:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5196:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5185:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5185:13:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5200:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5181:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5181:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5175:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5175:29:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5146:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5146:59:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5146:59:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5064:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5067:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5061:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5061:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5075:21:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5077:17:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5086:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5089:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5082:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5082:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "5077:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5057:3:111",
                                "statements": []
                              },
                              "src": "5053:162:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "5239:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "5244:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5235:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5235:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5253:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5231:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5231:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5260:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5224:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5224:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5224:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5271:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5286:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5299:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5307:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5295:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5295:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5312:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5291:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5291:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5282:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5282:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5382:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5278:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5278:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5271:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4938:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4945:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4953:3:111",
                            "type": ""
                          }
                        ],
                        "src": "4912:481:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5543:158:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5560:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5571:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5553:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5553:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5553:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5583:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5608:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5620:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5631:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5616:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5616:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5591:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5591:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5583:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5655:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5666:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5651:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5651:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5675:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5683:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5671:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5671:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5644:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5644:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5644:51:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_uint32__to_t_bytes_memory_ptr_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5504:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5515:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5523:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5534:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5398:303:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5774:114:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5820:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5829:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5832:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5822:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5822:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5822:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5795:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5804:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5791:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5791:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5816:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5787:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5787:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5784:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5845:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5872:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "5855:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5855:27:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5845:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5740:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5751:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5763:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5706:182:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6009:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6019:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6031:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6042:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6027:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6027:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6019:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6061:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6076:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6084:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6072:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6072:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6054:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6054:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6054:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_Digest_$8916__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5978:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5989:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6000:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5893:241:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6240:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6250:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6262:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6258:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6258:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6250:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6292:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6307:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6315:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6303:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6303:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6285:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6285:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6285:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6209:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6220:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6231:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6139:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6489:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6506:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6517:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6499:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6499:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6499:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6529:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6554:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6566:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6577:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6562:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6562:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6537:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6537:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6529:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6458:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6469:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6480:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6370:217:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6723:271:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6769:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6778:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6781:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6771:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6771:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6771:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6744:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6753:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6740:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6740:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6765:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6736:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6736:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6733:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6794:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6821:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6808:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6808:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6798:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6874:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6883:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6886:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6876:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6876:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6876:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6846:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6854:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6843:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6843:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6840:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6899:89:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6960:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6971:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6956:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6956:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6980:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_RRSetWithSignature_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "6909:46:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6909:79:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6899:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6689:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6700:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6712:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6592:402:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7118:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7128:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7140:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7151:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7136:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7136:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7128:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7170:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7185:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7193:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7181:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7181:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7163:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7163:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7163:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_Algorithm_$7075__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7087:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7098:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7109:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6999:244:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7373:179:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7383:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7395:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7406:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7391:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7391:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7383:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7425:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7440:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7448:4:111",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7436:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7436:17:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7418:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7418:36:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7474:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7485:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7470:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7470:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7494:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7502:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7490:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7490:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7463:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7463:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7463:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8_t_address__to_t_uint8_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7334:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7345:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7353:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7364:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7248:304:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7612:382:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7622:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7636:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7639:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7632:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7632:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "7622:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7653:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7683:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7689:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7679:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7679:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "7657:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7730:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7732:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "7746:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7754:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "7742:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7742:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7732:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7710:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7703:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7703:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7700:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7820:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7841:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7844:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7834:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7834:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7834:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7942:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7945:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7935:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7935:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7935:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7970:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7973:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7963:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7963:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7963:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7776:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7799:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7807:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7796:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7796:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "7773:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7773:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7770:218:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "7592:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "7601:6:111",
                            "type": ""
                          }
                        ],
                        "src": "7557:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8031:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8048:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8051:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8041:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8041:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8041:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8145:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8148:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8138:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8138:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8138:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8169:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8172:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8162:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8162:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8162:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7999:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8220:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8237:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8240:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8230:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8230:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8230:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8334:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8337:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8327:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8327:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8327:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8358:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8361:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8351:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8351:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8351:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8188:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8424:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8515:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8517:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8517:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8517:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8440:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8447:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "8437:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8437:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8434:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8546:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8557:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8564:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8553:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8553:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "8546:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "8406:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "8416:3:111",
                            "type": ""
                          }
                        ],
                        "src": "8377:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8722:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8739:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8750:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8732:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8732:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8732:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8762:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8787:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8799:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8810:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8795:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8795:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "8770:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8770:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8762:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8834:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8845:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8830:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8830:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8854:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8862:4:111",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8850:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8850:17:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8823:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8823:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8823:45:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8683:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8694:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8702:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8713:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8577:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9004:166:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9014:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9026:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9037:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9022:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9022:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9014:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9049:20:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9059:10:111",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9053:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9085:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9100:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9108:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9096:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9096:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9078:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9078:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9078:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9132:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9143:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9128:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9128:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9152:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9160:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9148:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9148:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9121:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9121:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9121:43:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32_t_uint32__to_t_uint32_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8965:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8976:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8984:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8995:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8879:291:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9223:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9233:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "9244:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "9247:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9240:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9240:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "9233:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9272:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "9274:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9274:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9274:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "9264:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "9267:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9261:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9261:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9258:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "9206:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "9209:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "9215:3:111",
                            "type": ""
                          }
                        ],
                        "src": "9175:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9354:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9364:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "9376:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "9379:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "9372:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9372:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "9364:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9405:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "9407:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9407:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9407:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "9396:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "9402:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9393:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9393:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9390:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "9336:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "9339:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "9345:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9305:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9537:89:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9547:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9559:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9570:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9555:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9555:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9547:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9589:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9604:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9612:6:111",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9600:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9600:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9582:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9582:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9582:38:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9506:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9517:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9528:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9438:188:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9756:162:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9766:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9778:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9789:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9774:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9774:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9766:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9801:16:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9811:6:111",
                                "type": "",
                                "value": "0xffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9805:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9833:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9848:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9856:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9844:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9844:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9826:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9826:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9826:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9880:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9891:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9876:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9876:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9900:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9908:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9896:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9896:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9869:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9869:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9869:43:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint16__to_t_uint16_t_uint16__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9717:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9728:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9736:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9747:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9631:287:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9955:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9972:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9975:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9965:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9965:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9965:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10069:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10072:4:111",
                                    "type": "",
                                    "value": "0x01"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10062:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10062:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10062:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10093:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10096:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "10086:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10086:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10086:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x01",
                        "nodeType": "YulFunctionDefinition",
                        "src": "9923:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10159:202:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10169:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10192:1:111",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "10195:1:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "10181:10:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10181:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10210:1:111",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "10213:1:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "10199:10:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10199:16:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "10177:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10177:39:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "10169:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10333:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "10335:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10335:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10335:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "diff",
                                        "nodeType": "YulIdentifier",
                                        "src": "10235:4:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10241:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10231:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10231:77:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "diff",
                                        "nodeType": "YulIdentifier",
                                        "src": "10314:4:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10320:10:111",
                                        "type": "",
                                        "value": "0x7fffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sgt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10310:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10310:21:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "10228:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10228:104:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10225:130:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_int32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "10141:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "10144:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "10150:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10112:249:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10531:212:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10548:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10559:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10541:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10541:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10541:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10571:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10602:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10614:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10625:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10610:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10610:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10585:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10585:44:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10575:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10649:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10660:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10645:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10645:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10669:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10677:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10665:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10665:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10638:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10638:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10638:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10697:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10722:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10730:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10705:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10705:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10697:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10492:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10503:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10511:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10522:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10366:377:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10959:326:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10976:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10987:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10969:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10969:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10969:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10999:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11030:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11042:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11053:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11038:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11038:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "11013:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11013:44:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11003:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11077:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11088:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11073:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11073:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11097:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11105:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11093:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11093:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11066:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11066:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11066:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11125:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11156:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11164:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "11139:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11139:32:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11129:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11191:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11202:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11187:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11187:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11211:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11219:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11207:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11207:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11180:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11180:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11180:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11239:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11264:6:111"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11272:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "11247:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11247:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11239:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10912:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10923:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10931:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10939:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10950:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10748:537:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11368:199:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11414:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11423:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11426:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11416:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11416:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11416:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11389:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11398:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11385:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11385:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11410:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11381:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11381:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11378:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11439:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11458:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11452:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11452:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11443:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11521:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11530:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11533:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11523:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11523:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11523:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "11490:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "11511:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "11504:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11504:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "11497:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11497:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "11487:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11487:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11480:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11480:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11477:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11546:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11556:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11546:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11334:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11345:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11357:6:111",
                            "type": ""
                          }
                        ],
                        "src": "11290:277:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11746:173:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11763:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11774:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11756:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11756:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11756:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11797:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11808:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11793:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11793:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11813:2:111",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11786:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11786:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11786:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11836:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11847:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11832:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11832:18:111"
                                  },
                                  {
                                    "hexValue": "4c6f6e67206b657973206e6f74207065726d6974746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11852:25:111",
                                    "type": "",
                                    "value": "Long keys not permitted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11825:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11825:53:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11825:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11887:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11899:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11910:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11895:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11895:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11887:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7e23270aecf7702fd4b1bd212912c277507361dc8248ebed5ad0286c9b051069__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11723:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11737:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11572:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11962:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11993:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12014:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12017:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12007:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12007:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12007:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12115:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12118:4:111",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12108:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12108:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12108:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12143:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12146:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12136:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12136:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12136:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11982:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11975:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11975:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11972:189:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12170:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12179:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12182:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "12175:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12175:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "12170:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "11947:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "11950:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "11956:1:111",
                            "type": ""
                          }
                        ],
                        "src": "11924:266:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12247:116:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12257:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12272:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12275:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "12268:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12268:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "12257:7:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12335:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12337:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12337:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12337:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "12306:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "12299:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12299:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "12313:1:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "product",
                                                "nodeType": "YulIdentifier",
                                                "src": "12320:7:111"
                                              },
                                              {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "12329:1:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "12316:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12316:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nodeType": "YulIdentifier",
                                          "src": "12310:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12310:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "12296:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12296:37:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12289:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12289:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12286:71:111"
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12226:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12229:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "12235:7:111",
                            "type": ""
                          }
                        ],
                        "src": "12195:168:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function validator_revert_contract_Algorithm(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_contract$_Algorithm_$7075(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_contract_Algorithm(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_contract_Algorithm(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint8t_contract$_Digest_$8916(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_contract_Algorithm(value)\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory_1350() -> memPtr\n    {\n        memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(0x40, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let array_1 := allocate_memory(add(and(add(_1, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_array_struct_RRSetWithSignature_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := 0xffffffffffffffff\n        if gt(_1, _3) { panic_error_0x41() }\n        let _4 := shl(5, _1)\n        let dst := allocate_memory(add(_4, _2))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, _4), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, _3)\n            {\n                let _5 := 0\n                revert(_5, _5)\n            }\n            let _6 := add(offset, innerOffset)\n            let _7 := 0x40\n            if slt(add(sub(end, _6), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _7)\n            {\n                let _8 := 0\n                revert(_8, _8)\n            }\n            let value := allocate_memory_1350()\n            let offset_1 := calldataload(add(_6, _2))\n            if gt(offset_1, _3)\n            {\n                let _9 := 0\n                revert(_9, _9)\n            }\n            mstore(value, abi_decode_bytes(add(add(_6, offset_1), _2), end))\n            let offset_2 := calldataload(add(_6, _7))\n            if gt(offset_2, _3)\n            {\n                let _10 := 0\n                revert(_10, _10)\n            }\n            mstore(add(value, _2), abi_decode_bytes(add(add(_6, offset_2), _2), end))\n            mstore(dst, value)\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_struct_RRSetWithSignature_dyn(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_uint32__to_t_bytes_memory_ptr_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n    }\n    function abi_encode_tuple_t_contract$_Digest_$8916__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_struct_RRSetWithSignature_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_Algorithm_$7075__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint8_t_address__to_t_uint8_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xff))\n    }\n    function abi_encode_tuple_t_uint32_t_uint32__to_t_uint32_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_encode_tuple_t_uint16_t_uint16__to_t_uint16_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_int32(x, y) -> diff\n    {\n        diff := sub(signextend(3, x), signextend(3, y))\n        if or(slt(diff, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000), sgt(diff, 0x7fffffff)) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_bytes(value1, tail_1)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_bytes(value0, add(headStart, 96))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        let tail_2 := abi_encode_bytes(value1, tail_1)\n        mstore(add(headStart, 64), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value2, tail_2)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_7e23270aecf7702fd4b1bd212912c277507361dc8248ebed5ad0286c9b051069__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Long keys not permitted\")\n        tail := add(headStart, 96)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := mod(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a35760003560e01c806373cc48a61161007657806398d35f201161005b57806398d35f2014610188578063bdf95fef1461019d578063c327deef146101b057600080fd5b806373cc48a61461010d5780638da5cb5b1461016857600080fd5b8063020ed8d3146100a857806313af4035146100bd57806328e7677d146100d0578063440f3d42146100e3575b600080fd5b6100bb6100b63660046119c9565b6101e6565b005b6100bb6100cb366004611a00565b61029a565b6100bb6100de3660046119c9565b610305565b6100f66100f1366004611c6a565b6103b1565b604051610104929190611d13565b60405180910390f35b61014361011b366004611d3b565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610104565b6001546101439073ffffffffffffffffffffffffffffffffffffffff1681565b6101906104a3565b6040516101049190611d56565b6100f66101ab366004611d69565b610531565b6101436101be366004611d3b565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461020a57600080fd5b60ff821660008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301527ff73c3c226af96b7f1ba666a21b3ceaf2be3ee6a365e3178fd9cd1eaae0075aa891015b60405180910390a15050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102be57600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032957600080fd5b60ff821660008181526003602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301527f2fcc274c3b72dd483ab201bfa87295e3817e8b9b10693219873b722ca1af00c7910161028e565b6060600080600080546103c390611d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546103ef90611d9e565b801561043c5780601f106104115761010080835404028352916020019161043c565b820191906000526020600020905b81548152906001019060200180831161041f57829003601f168201915b5050505050905060005b855181101561049957600061047587838151811061046657610466611deb565b60200260200101518488610548565b61010081015160a0909101519450925081905061049181611e49565b915050610446565b5091509250929050565b600080546104b090611d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546104dc90611d9e565b80156105295780601f106104fe57610100808354040283529160200191610529565b820191906000526020600020905b81548152906001019060200180831161050c57829003601f168201915b505050505081565b6060600061053f83426103b1565b91509150915091565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c082019290925260e08101829052610100810182905261012081019190915283516105a6906106e8565b905060006105b882836000015161082a565b604083015190915060ff166105ce826000610987565b14610616578082604001516040517fe861b2bd00000000000000000000000000000000000000000000000000000000815260040161060d929190611e81565b60405180910390fd5b6101208201819052608082015161062d90846109ed565b6106795760808201516040517fa784f87e00000000000000000000000000000000000000000000000000000000815263ffffffff9182166004820152908416602482015260440161060d565b610687838360a001516109ed565b6106d35760a08201516040517fbd41036a00000000000000000000000000000000000000000000000000000000815263ffffffff9182166004820152908416602482015260440161060d565b6106df81838787610a06565b505b9392505050565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201819052610100820181905261012082015290610743908390610b10565b61ffff168152610754826002610b38565b60ff166020820152610767826003610b38565b60ff16604082015261077a826004610b5c565b63ffffffff9081166060830152610796908390600890610b5c16565b63ffffffff90811660808301526107b2908390600c90610b5c16565b63ffffffff90811660a08301526107ce908390601090610b1016565b61ffff1660c08201526107e2826012610b86565b60e082018190525161081f906107f9906012611ea6565b8260e00151516012855161080d9190611eb9565b6108179190611eb9565b849190610ba9565b610100820152919050565b6060600061083784610c2b565b90505b8051516020820151101561098057606081015161ffff166001146108965760608101516040517f98a5f31a00000000000000000000000000000000000000000000000000000000815261ffff909116600482015260240161060d565b81516000036108af576108a881610c89565b9150610919565b602081015181516108bf91610caa565b82511415806108e257508051602082015183516108e0928592600092610d04565b155b15610919576040517fcbceee6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8261ffff16816040015161ffff16146109725760408082015190517fa6ff8a8a00000000000000000000000000000000000000000000000000000000815261ffff9182166004820152908416602482015260440161060d565b61097b81610d27565b61083a565b5092915050565b6000805b8351831061099b5761099b611ecc565b60006109a78585610b38565b60ff1690506109b7816001611ea6565b6109c19085611ea6565b9350806000036109d157506109e4565b6109dc600183611ea6565b91505061098b565b90505b92915050565b6000806109fa8385611efb565b60030b12159392505050565b83518360e00151511180610a3c5750610a3a6000858560e00151518751610a2d9190611eb9565b60e0870151929190610e0f565b155b15610a7a5760e08301516040517feaafc59b00000000000000000000000000000000000000000000000000000000815261060d918691600401611f3d565b6000610a868282610e44565b9050602b61ffff16816040015161ffff1603610aac57610aa7848483610ea5565b610b09565b603061ffff16816040015161ffff1603610acb57610aa7848483610fae565b60408082015190517f61529e8700000000000000000000000000000000000000000000000000000000815261ffff909116600482015260240161060d565b5050505050565b8151600090610b20836002611ea6565b1115610b2b57600080fd5b50016002015161ffff1690565b6000828281518110610b4c57610b4c611deb565b016020015160f81c905092915050565b8151600090610b6c836004611ea6565b1115610b7757600080fd5b50016004015163ffffffff1690565b60606000610b948484610caa565b9050610ba1848483610ba9565b949350505050565b8251606090610bb88385611ea6565b1115610bc357600080fd5b60008267ffffffffffffffff811115610bde57610bde611a1d565b6040519080825280601f01601f191660200182016040528015610c08576020820181803683370190505b50905060208082019086860101610c208282876110a8565b509095945050505050565b610c796040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b6109e78261010001516000610e44565b602081015181516060916109e791610ca19082610caa565b84519190610ba9565b6000815b83518110610cbe57610cbe611ecc565b6000610cca8583610b38565b60ff169050610cda816001611ea6565b610ce49083611ea6565b915080600003610cf45750610cfa565b50610cae565b610ba18382611eb9565b6000610d1184848461111c565b610d1c87878561111c565b149695505050505050565b60c08101516020820181905281515111610d3e5750565b6000610d5282600001518360200151610caa565b8260200151610d619190611ea6565b8251909150610d709082610b10565b61ffff166040830152610d84600282611ea6565b8251909150610d939082610b10565b61ffff166060830152610da7600282611ea6565b8251909150610db69082610b5c565b63ffffffff166080830152610dcc600482611ea6565b8251909150600090610dde9083610b10565b61ffff169050610def600283611ea6565b60a084018190529150610e028183611ea6565b60c0909301929092525050565b6000610e288383848651610e239190611eb9565b61111c565b610e3a8686878951610e239190611eb9565b1495945050505050565b610e926040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c081018290526109e781610d27565b6000610eb084610c2b565b90505b80515160208201511015610f7557604081015161ffff16603014610f0f5760408082015190517f61529e8700000000000000000000000000000000000000000000000000000000815261ffff909116600482015260240161060d565b6000610f1a82611140565b90506000610f35600083518461115c9092919063ffffffff16565b9050610f43818388886111fa565b15610f6557610f588660e0015185838561132f565b15610f6557505050505050565b5050610f7081610d27565b610eb3565b508260e001516040517f06cde0f300000000000000000000000000000000000000000000000000000000815260040161060d9190611d56565b80515160208201511015611070576000610fc782610c89565b9050610fe08460e001518261148590919063ffffffff16565b61101e578360e00151816040517fd700ae7e00000000000000000000000000000000000000000000000000000000815260040161060d929190611f3d565b600061102983611140565b90506000611044600083518461115c9092919063ffffffff16565b9050611052818388886111fa565b1561105f57505050505050565b50505061106b81610d27565b610fae565b8260e001516040517f06cde0f300000000000000000000000000000000000000000000000000000000815260040161060d9190611d56565b602081106110e057815183526110bf602084611ea6565b92506110cc602083611ea6565b91506110d9602082611eb9565b90506110a8565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b825160009061112b8385611ea6565b111561113657600080fd5b5091016020012090565b60a081015160c08201516060916109e791610ca1908290611eb9565b604080516080810182526000808252602082018190529181019190915260608082015261119461118d600085611ea6565b8590610b10565b61ffff1681526111af6111a8600285611ea6565b8590610b38565b60ff1660208201526111c56111a8600385611ea6565b60ff1660408201526111ee6111db600485611ea6565b6111e6600485611eb9565b869190610ba9565b60608201529392505050565b6000846020015160ff1660031461121357506000610ba1565b826020015160ff16856040015160ff161461123057506000610ba1565b600061123b856114a3565b90508360c0015161ffff168161ffff161461125a576000915050610ba1565b855161010016600003611271576000915050610ba1565b60408087015160ff16600090815260026020908152908290205485519186015192517fde8f50a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169263de8f50a1926112e4928a9290600401611f6b565b602060405180830381865afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190611fa4565b9695505050505050565b60008061133b836114a3565b90505b8451516020860151101561147957600061135786610c89565b90506113638188611485565b61139d5786816040517fd700ae7e00000000000000000000000000000000000000000000000000000000815260040161060d929190611f3d565b60a086015160c08701516000916113c2916113b9908290611eb9565b8951919061115c565b90508261ffff16816000015161ffff16146113de57505061146b565b856040015160ff16816020015160ff16146113fa57505061146b565b60408051808201909152606081526000602082015261142786518a516114209190611ea6565b82906116e7565b50611432818a61174c565b5061143d818761174c565b50611455826040015182600001518460600151611773565b15611467576001945050505050610ba1565b5050505b61147485610d27565b61133e565b50600095945050505050565b6000815183511480156109e457506109e48360008460008751610d04565b600061200082511115611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c6f6e67206b657973206e6f74207065726d6974746564000000000000000000604482015260640161060d565b60008060005b8451601f01811015611587576000816020870101519050855182602001111561154d5785518290036008026101000390811c901b5b7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff600882901c81169490940193169190910190602001611518565b506010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff160191506010817fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1601905080600883901b0191506020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff160191506040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c8277ffffffffffffffff0000000000000000ffffffffffffffff16019150608082901c826fffffffffffffffffffffffffffffffff16019150601082901c61ffff16820191508192505050919050565b604080518082019091526060815260006020820152611707602083611fc6565b1561172f57611717602083611fc6565b611722906020611eb9565b61172c9083611ea6565b91505b506020828101829052604080518085526000815290920101905290565b6040805180820190915260608152600060208201526109e483846000015151848551611852565b60ff831660009081526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166117a8575060006106e1565b60ff8416600090815260036020526040908190205490517ff7e83aee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f7e83aee906118119086908690600401611f3d565b602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba19190611fa4565b604080518082019091526060815260006020820152825182111561187557600080fd5b60208501516118848386611ea6565b11156118b7576118b7856118a7876020015187866118a29190611ea6565b61195a565b6118b2906002612001565b611971565b6000808651805187602083010193508088870111156118d65787860182525b505050602084015b6020841061191657805182526118f5602083611ea6565b9150611902602082611ea6565b905061190f602085611eb9565b93506118de565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b60008183111561196b5750816109e7565b50919050565b815161197d83836116e7565b50611988838261174c565b50505050565b803560ff8116811461199f57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146119c657600080fd5b50565b600080604083850312156119dc57600080fd5b6119e58361198e565b915060208301356119f5816119a4565b809150509250929050565b600060208284031215611a1257600080fd5b81356109e4816119a4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611a6f57611a6f611a1d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611abc57611abc611a1d565b604052919050565b600082601f830112611ad557600080fd5b813567ffffffffffffffff811115611aef57611aef611a1d565b611b2060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a75565b818152846020838601011115611b3557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611b6357600080fd5b8135602067ffffffffffffffff80831115611b8057611b80611a1d565b8260051b611b8f838201611a75565b9384528581018301938381019088861115611ba957600080fd5b84880192505b85831015611c5e57823584811115611bc75760008081fd5b88016040818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001811315611bfd5760008081fd5b611c05611a4c565b8783013587811115611c175760008081fd5b611c258d8a83870101611ac4565b825250908201359086821115611c3b5760008081fd5b611c498c8984860101611ac4565b81890152845250509184019190840190611baf565b98975050505050505050565b60008060408385031215611c7d57600080fd5b823567ffffffffffffffff811115611c9457600080fd5b611ca085828601611b52565b95602094909401359450505050565b6000815180845260005b81811015611cd557602081850181015186830182015201611cb9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081526000611d266040830185611caf565b905063ffffffff831660208301529392505050565b600060208284031215611d4d57600080fd5b6109e48261198e565b6020815260006109e46020830184611caf565b600060208284031215611d7b57600080fd5b813567ffffffffffffffff811115611d9257600080fd5b610ba184828501611b52565b600181811c90821680611db257607f821691505b60208210810361196b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e7a57611e7a611e1a565b5060010190565b604081526000611e946040830185611caf565b905060ff831660208301529392505050565b808201808211156109e7576109e7611e1a565b818103818111156109e7576109e7611e1a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600382810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008112637fffffff821317156109e7576109e7611e1a565b604081526000611f506040830185611caf565b8281036020840152611f628185611caf565b95945050505050565b606081526000611f7e6060830186611caf565b8281036020840152611f908186611caf565b905082810360408401526113258185611caf565b600060208284031215611fb657600080fd5b815180151581146109e457600080fd5b600082611ffc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b80820281158282048414176109e7576109e7611e1a56fea2646970667358221220c3d5b08c6410542245f7d08e346f164421d4ab3cde6d3e994f2092fd1380f35c64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73CC48A6 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x98D35F20 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x98D35F20 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xBDF95FEF EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0xC327DEEF EQ PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x73CC48A6 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x20ED8D3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x13AF4035 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x28E7677D EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x440F3D42 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x19C9 JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xBB PUSH2 0xCB CALLDATASIZE PUSH1 0x4 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x29A JUMP JUMPDEST PUSH2 0xBB PUSH2 0xDE CALLDATASIZE PUSH1 0x4 PUSH2 0x19C9 JUMP JUMPDEST PUSH2 0x305 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6A JUMP JUMPDEST PUSH2 0x3B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP3 SWAP2 SWAP1 PUSH2 0x1D13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x1D3B JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x143 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x4A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x1D56 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1D69 JUMP JUMPDEST PUSH2 0x531 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1D3B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF73C3C226AF96B7F1BA666A21B3CEAF2BE3EE6A365E3178FD9CD1EAAE0075AA8 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0x2FCC274C3B72DD483AB201BFA87295E3817E8B9B10693219873B722CA1AF00C7 SWAP2 ADD PUSH2 0x28E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SLOAD PUSH2 0x3C3 SWAP1 PUSH2 0x1D9E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3EF SWAP1 PUSH2 0x1D9E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x43C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x411 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x43C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x41F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 PUSH2 0x475 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x466 JUMPI PUSH2 0x466 PUSH2 0x1DEB JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP9 PUSH2 0x548 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0xA0 SWAP1 SWAP2 ADD MLOAD SWAP5 POP SWAP3 POP DUP2 SWAP1 POP PUSH2 0x491 DUP2 PUSH2 0x1E49 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x446 JUMP JUMPDEST POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x4B0 SWAP1 PUSH2 0x1D9E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x4DC SWAP1 PUSH2 0x1D9E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x529 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4FE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x529 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x50C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x53F DUP4 TIMESTAMP PUSH2 0x3B1 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD PUSH2 0x5A6 SWAP1 PUSH2 0x6E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5B8 DUP3 DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0x5CE DUP3 PUSH1 0x0 PUSH2 0x987 JUMP JUMPDEST EQ PUSH2 0x616 JUMPI DUP1 DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xE861B2BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP3 SWAP2 SWAP1 PUSH2 0x1E81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x62D SWAP1 DUP5 PUSH2 0x9ED JUMP JUMPDEST PUSH2 0x679 JUMPI PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xA784F87E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x60D JUMP JUMPDEST PUSH2 0x687 DUP4 DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0x9ED JUMP JUMPDEST PUSH2 0x6D3 JUMPI PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xBD41036A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x60D JUMP JUMPDEST PUSH2 0x6DF DUP2 DUP4 DUP8 DUP8 PUSH2 0xA06 JUMP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x140 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MSTORE SWAP1 PUSH2 0x743 SWAP1 DUP4 SWAP1 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND DUP2 MSTORE PUSH2 0x754 DUP3 PUSH1 0x2 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x767 DUP3 PUSH1 0x3 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x77A DUP3 PUSH1 0x4 PUSH2 0xB5C JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x796 SWAP1 DUP4 SWAP1 PUSH1 0x8 SWAP1 PUSH2 0xB5C AND JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x7B2 SWAP1 DUP4 SWAP1 PUSH1 0xC SWAP1 PUSH2 0xB5C AND JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x7CE SWAP1 DUP4 SWAP1 PUSH1 0x10 SWAP1 PUSH2 0xB10 AND JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x7E2 DUP3 PUSH1 0x12 PUSH2 0xB86 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE MLOAD PUSH2 0x81F SWAP1 PUSH2 0x7F9 SWAP1 PUSH1 0x12 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 PUSH1 0xE0 ADD MLOAD MLOAD PUSH1 0x12 DUP6 MLOAD PUSH2 0x80D SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0x817 SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST DUP5 SWAP2 SWAP1 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x837 DUP5 PUSH2 0xC2B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x980 JUMPI PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0xFFFF AND PUSH1 0x1 EQ PUSH2 0x896 JUMPI PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x98A5F31A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x60D JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SUB PUSH2 0x8AF JUMPI PUSH2 0x8A8 DUP2 PUSH2 0xC89 JUMP JUMPDEST SWAP2 POP PUSH2 0x919 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH2 0x8BF SWAP2 PUSH2 0xCAA JUMP JUMPDEST DUP3 MLOAD EQ ISZERO DUP1 PUSH2 0x8E2 JUMPI POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD DUP4 MLOAD PUSH2 0x8E0 SWAP3 DUP6 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0xD04 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x919 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCBCEEE6F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND EQ PUSH2 0x972 JUMPI PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 MLOAD PUSH32 0xA6FF8A8A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x60D JUMP JUMPDEST PUSH2 0x97B DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH2 0x83A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP4 LT PUSH2 0x99B JUMPI PUSH2 0x99B PUSH2 0x1ECC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A7 DUP6 DUP6 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x9B7 DUP2 PUSH1 0x1 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0x9C1 SWAP1 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST SWAP4 POP DUP1 PUSH1 0x0 SUB PUSH2 0x9D1 JUMPI POP PUSH2 0x9E4 JUMP JUMPDEST PUSH2 0x9DC PUSH1 0x1 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x98B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9FA DUP4 DUP6 PUSH2 0x1EFB JUMP JUMPDEST PUSH1 0x3 SIGNEXTEND SLT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP4 MLOAD DUP4 PUSH1 0xE0 ADD MLOAD MLOAD GT DUP1 PUSH2 0xA3C JUMPI POP PUSH2 0xA3A PUSH1 0x0 DUP6 DUP6 PUSH1 0xE0 ADD MLOAD MLOAD DUP8 MLOAD PUSH2 0xA2D SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0xE0 DUP8 ADD MLOAD SWAP3 SWAP2 SWAP1 PUSH2 0xE0F JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xA7A JUMPI PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xEAAFC59B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x60D SWAP2 DUP7 SWAP2 PUSH1 0x4 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA86 DUP3 DUP3 PUSH2 0xE44 JUMP JUMPDEST SWAP1 POP PUSH1 0x2B PUSH2 0xFFFF AND DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND SUB PUSH2 0xAAC JUMPI PUSH2 0xAA7 DUP5 DUP5 DUP4 PUSH2 0xEA5 JUMP JUMPDEST PUSH2 0xB09 JUMP JUMPDEST PUSH1 0x30 PUSH2 0xFFFF AND DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND SUB PUSH2 0xACB JUMPI PUSH2 0xAA7 DUP5 DUP5 DUP4 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 MLOAD PUSH32 0x61529E8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x60D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xB20 DUP4 PUSH1 0x2 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB4C JUMPI PUSH2 0xB4C PUSH2 0x1DEB JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0xB6C DUP4 PUSH1 0x4 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0xB77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xB94 DUP5 DUP5 PUSH2 0xCAA JUMP JUMPDEST SWAP1 POP PUSH2 0xBA1 DUP5 DUP5 DUP4 PUSH2 0xBA9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xBB8 DUP4 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0xBC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBDE JUMPI PUSH2 0xBDE PUSH2 0x1A1D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0xC20 DUP3 DUP3 DUP8 PUSH2 0x10A8 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC79 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x9E7 DUP3 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0xE44 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 PUSH2 0x9E7 SWAP2 PUSH2 0xCA1 SWAP1 DUP3 PUSH2 0xCAA JUMP JUMPDEST DUP5 MLOAD SWAP2 SWAP1 PUSH2 0xBA9 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0xCBE JUMPI PUSH2 0xCBE PUSH2 0x1ECC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP6 DUP4 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0xCDA DUP2 PUSH1 0x1 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0xCE4 SWAP1 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0xCF4 JUMPI POP PUSH2 0xCFA JUMP JUMPDEST POP PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xBA1 DUP4 DUP3 PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD11 DUP5 DUP5 DUP5 PUSH2 0x111C JUMP JUMPDEST PUSH2 0xD1C DUP8 DUP8 DUP6 PUSH2 0x111C JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0xD3E JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD52 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0xCAA JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0xD61 SWAP2 SWAP1 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0xD70 SWAP1 DUP3 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xD84 PUSH1 0x2 DUP3 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0xD93 SWAP1 DUP3 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xDA7 PUSH1 0x2 DUP3 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0xDB6 SWAP1 DUP3 PUSH2 0xB5C JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0xDCC PUSH1 0x4 DUP3 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xDDE SWAP1 DUP4 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0xDEF PUSH1 0x2 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0xE02 DUP2 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE28 DUP4 DUP4 DUP5 DUP7 MLOAD PUSH2 0xE23 SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0xE3A DUP7 DUP7 DUP8 DUP10 MLOAD PUSH2 0xE23 SWAP2 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST EQ SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE92 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x9E7 DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB0 DUP5 PUSH2 0xC2B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0xF75 JUMPI PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0xFFFF AND PUSH1 0x30 EQ PUSH2 0xF0F JUMPI PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 MLOAD PUSH32 0x61529E8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x60D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF1A DUP3 PUSH2 0x1140 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF35 PUSH1 0x0 DUP4 MLOAD DUP5 PUSH2 0x115C SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0xF43 DUP2 DUP4 DUP9 DUP9 PUSH2 0x11FA JUMP JUMPDEST ISZERO PUSH2 0xF65 JUMPI PUSH2 0xF58 DUP7 PUSH1 0xE0 ADD MLOAD DUP6 DUP4 DUP6 PUSH2 0x132F JUMP JUMPDEST ISZERO PUSH2 0xF65 JUMPI POP POP POP POP POP POP JUMP JUMPDEST POP POP PUSH2 0xF70 DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH2 0xEB3 JUMP JUMPDEST POP DUP3 PUSH1 0xE0 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x6CDE0F300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP2 SWAP1 PUSH2 0x1D56 JUMP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x1070 JUMPI PUSH1 0x0 PUSH2 0xFC7 DUP3 PUSH2 0xC89 JUMP JUMPDEST SWAP1 POP PUSH2 0xFE0 DUP5 PUSH1 0xE0 ADD MLOAD DUP3 PUSH2 0x1485 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x101E JUMPI DUP4 PUSH1 0xE0 ADD MLOAD DUP2 PUSH1 0x40 MLOAD PUSH32 0xD700AE7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP3 SWAP2 SWAP1 PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1029 DUP4 PUSH2 0x1140 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1044 PUSH1 0x0 DUP4 MLOAD DUP5 PUSH2 0x115C SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1052 DUP2 DUP4 DUP9 DUP9 PUSH2 0x11FA JUMP JUMPDEST ISZERO PUSH2 0x105F JUMPI POP POP POP POP POP POP JUMP JUMPDEST POP POP POP PUSH2 0x106B DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH2 0xFAE JUMP JUMPDEST DUP3 PUSH1 0xE0 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x6CDE0F300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP2 SWAP1 PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x10E0 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x10BF PUSH1 0x20 DUP5 PUSH2 0x1EA6 JUMP JUMPDEST SWAP3 POP PUSH2 0x10CC PUSH1 0x20 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP PUSH2 0x10D9 PUSH1 0x20 DUP3 PUSH2 0x1EB9 JUMP JUMPDEST SWAP1 POP PUSH2 0x10A8 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x112B DUP4 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0x1136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 SWAP2 PUSH2 0x9E7 SWAP2 PUSH2 0xCA1 SWAP1 DUP3 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH2 0x1194 PUSH2 0x118D PUSH1 0x0 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0xB10 JUMP JUMPDEST PUSH2 0xFFFF AND DUP2 MSTORE PUSH2 0x11AF PUSH2 0x11A8 PUSH1 0x2 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x11C5 PUSH2 0x11A8 PUSH1 0x3 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x11EE PUSH2 0x11DB PUSH1 0x4 DUP6 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0x11E6 PUSH1 0x4 DUP6 PUSH2 0x1EB9 JUMP JUMPDEST DUP7 SWAP2 SWAP1 PUSH2 0xBA9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0xFF AND PUSH1 0x3 EQ PUSH2 0x1213 JUMPI POP PUSH1 0x0 PUSH2 0xBA1 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0xFF AND DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0xFF AND EQ PUSH2 0x1230 JUMPI POP PUSH1 0x0 PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123B DUP6 PUSH2 0x14A3 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0xC0 ADD MLOAD PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND EQ PUSH2 0x125A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xBA1 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x100 AND PUSH1 0x0 SUB PUSH2 0x1271 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP8 ADD MLOAD PUSH1 0xFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 SLOAD DUP6 MLOAD SWAP2 DUP7 ADD MLOAD SWAP3 MLOAD PUSH32 0xDE8F50A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 PUSH4 0xDE8F50A1 SWAP3 PUSH2 0x12E4 SWAP3 DUP11 SWAP3 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F6B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1301 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1325 SWAP2 SWAP1 PUSH2 0x1FA4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x133B DUP4 PUSH2 0x14A3 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP5 MLOAD MLOAD PUSH1 0x20 DUP7 ADD MLOAD LT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 PUSH2 0x1357 DUP7 PUSH2 0xC89 JUMP JUMPDEST SWAP1 POP PUSH2 0x1363 DUP2 DUP9 PUSH2 0x1485 JUMP JUMPDEST PUSH2 0x139D JUMPI DUP7 DUP2 PUSH1 0x40 MLOAD PUSH32 0xD700AE7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP3 SWAP2 SWAP1 PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0x0 SWAP2 PUSH2 0x13C2 SWAP2 PUSH2 0x13B9 SWAP1 DUP3 SWAP1 PUSH2 0x1EB9 JUMP JUMPDEST DUP10 MLOAD SWAP2 SWAP1 PUSH2 0x115C JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xFFFF AND DUP2 PUSH1 0x0 ADD MLOAD PUSH2 0xFFFF AND EQ PUSH2 0x13DE JUMPI POP POP PUSH2 0x146B JUMP JUMPDEST DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0xFF AND EQ PUSH2 0x13FA JUMPI POP POP PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1427 DUP7 MLOAD DUP11 MLOAD PUSH2 0x1420 SWAP2 SWAP1 PUSH2 0x1EA6 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x16E7 JUMP JUMPDEST POP PUSH2 0x1432 DUP2 DUP11 PUSH2 0x174C JUMP JUMPDEST POP PUSH2 0x143D DUP2 DUP8 PUSH2 0x174C JUMP JUMPDEST POP PUSH2 0x1455 DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x1773 JUMP JUMPDEST ISZERO PUSH2 0x1467 JUMPI PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0xBA1 JUMP JUMPDEST POP POP POP JUMPDEST PUSH2 0x1474 DUP6 PUSH2 0xD27 JUMP JUMPDEST PUSH2 0x133E JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0x9E4 JUMPI POP PUSH2 0x9E4 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0xD04 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2000 DUP3 MLOAD GT ISZERO PUSH2 0x1512 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6F6E67206B657973206E6F74207065726D6974746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x60D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 MLOAD PUSH1 0x1F ADD DUP2 LT ISZERO PUSH2 0x1587 JUMPI PUSH1 0x0 DUP2 PUSH1 0x20 DUP8 ADD ADD MLOAD SWAP1 POP DUP6 MLOAD DUP3 PUSH1 0x20 ADD GT ISZERO PUSH2 0x154D JUMPI DUP6 MLOAD DUP3 SWAP1 SUB PUSH1 0x8 MUL PUSH2 0x100 SUB SWAP1 DUP2 SHR SWAP1 SHL JUMPDEST PUSH31 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF PUSH1 0x8 DUP3 SWAP1 SHR DUP2 AND SWAP5 SWAP1 SWAP5 ADD SWAP4 AND SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x1518 JUMP JUMPDEST POP PUSH1 0x10 DUP3 PUSH32 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 AND SWAP1 SHR DUP3 PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND ADD SWAP2 POP PUSH1 0x10 DUP2 PUSH32 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 AND SWAP1 SHR DUP2 PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND ADD SWAP1 POP DUP1 PUSH1 0x8 DUP4 SWAP1 SHL ADD SWAP2 POP PUSH1 0x20 DUP3 PUSH32 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000 AND SWAP1 SHR DUP3 PUSH28 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF AND ADD SWAP2 POP PUSH1 0x40 DUP3 PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000 AND SWAP1 SHR DUP3 PUSH24 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND ADD SWAP2 POP PUSH1 0x80 DUP3 SWAP1 SHR DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD SWAP2 POP PUSH1 0x10 DUP3 SWAP1 SHR PUSH2 0xFFFF AND DUP3 ADD SWAP2 POP DUP2 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1707 PUSH1 0x20 DUP4 PUSH2 0x1FC6 JUMP JUMPDEST ISZERO PUSH2 0x172F JUMPI PUSH2 0x1717 PUSH1 0x20 DUP4 PUSH2 0x1FC6 JUMP JUMPDEST PUSH2 0x1722 SWAP1 PUSH1 0x20 PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0x172C SWAP1 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP6 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 SWAP3 ADD ADD SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x9E4 DUP4 DUP5 PUSH1 0x0 ADD MLOAD MLOAD DUP5 DUP6 MLOAD PUSH2 0x1852 JUMP JUMPDEST PUSH1 0xFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17A8 JUMPI POP PUSH1 0x0 PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0xFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH32 0xF7E83AEE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7E83AEE SWAP1 PUSH2 0x1811 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x182E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBA1 SWAP2 SWAP1 PUSH2 0x1FA4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 MLOAD DUP3 GT ISZERO PUSH2 0x1875 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH2 0x1884 DUP4 DUP7 PUSH2 0x1EA6 JUMP JUMPDEST GT ISZERO PUSH2 0x18B7 JUMPI PUSH2 0x18B7 DUP6 PUSH2 0x18A7 DUP8 PUSH1 0x20 ADD MLOAD DUP8 DUP7 PUSH2 0x18A2 SWAP2 SWAP1 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0x195A JUMP JUMPDEST PUSH2 0x18B2 SWAP1 PUSH1 0x2 PUSH2 0x2001 JUMP JUMPDEST PUSH2 0x1971 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 MLOAD DUP1 MLOAD DUP8 PUSH1 0x20 DUP4 ADD ADD SWAP4 POP DUP1 DUP9 DUP8 ADD GT ISZERO PUSH2 0x18D6 JUMPI DUP8 DUP7 ADD DUP3 MSTORE JUMPDEST POP POP POP PUSH1 0x20 DUP5 ADD JUMPDEST PUSH1 0x20 DUP5 LT PUSH2 0x1916 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH2 0x18F5 PUSH1 0x20 DUP4 PUSH2 0x1EA6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1902 PUSH1 0x20 DUP3 PUSH2 0x1EA6 JUMP JUMPDEST SWAP1 POP PUSH2 0x190F PUSH1 0x20 DUP6 PUSH2 0x1EB9 JUMP JUMPDEST SWAP4 POP PUSH2 0x18DE JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP7 SWAP1 SUB PUSH2 0x100 EXP ADD SWAP1 DUP2 AND SWAP1 NOT SWAP2 SWAP1 SWAP2 AND OR SWAP1 MSTORE POP DUP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x196B JUMPI POP DUP2 PUSH2 0x9E7 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH2 0x197D DUP4 DUP4 PUSH2 0x16E7 JUMP JUMPDEST POP PUSH2 0x1988 DUP4 DUP3 PUSH2 0x174C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x199F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x19C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19E5 DUP4 PUSH2 0x198E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x19F5 DUP2 PUSH2 0x19A4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9E4 DUP2 PUSH2 0x19A4 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1A6F JUMPI PUSH2 0x1A6F PUSH2 0x1A1D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1ABC JUMPI PUSH2 0x1ABC PUSH2 0x1A1D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AEF JUMPI PUSH2 0x1AEF PUSH2 0x1A1D JUMP JUMPDEST PUSH2 0x1B20 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x1A75 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 GT ISZERO PUSH2 0x1B80 JUMPI PUSH2 0x1B80 PUSH2 0x1A1D JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x1B8F DUP4 DUP3 ADD PUSH2 0x1A75 JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x1BA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x1C5E JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x1BC7 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP9 ADD PUSH1 0x40 DUP2 DUP12 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 SGT ISZERO PUSH2 0x1BFD JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C05 PUSH2 0x1A4C JUMP JUMPDEST DUP8 DUP4 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1C17 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C25 DUP14 DUP11 DUP4 DUP8 ADD ADD PUSH2 0x1AC4 JUMP JUMPDEST DUP3 MSTORE POP SWAP1 DUP3 ADD CALLDATALOAD SWAP1 DUP7 DUP3 GT ISZERO PUSH2 0x1C3B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C49 DUP13 DUP10 DUP5 DUP7 ADD ADD PUSH2 0x1AC4 JUMP JUMPDEST DUP2 DUP10 ADD MSTORE DUP5 MSTORE POP POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1BAF JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CA0 DUP6 DUP3 DUP7 ADD PUSH2 0x1B52 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1CD5 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1CB9 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D26 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1CAF JUMP JUMPDEST SWAP1 POP PUSH4 0xFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E4 DUP3 PUSH2 0x198E JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x9E4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1CAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1D92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA1 DUP5 DUP3 DUP6 ADD PUSH2 0x1B52 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1DB2 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x196B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1E7A JUMPI PUSH2 0x1E7A PUSH2 0x1E1A JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1E94 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1CAF JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9E7 JUMPI PUSH2 0x9E7 PUSH2 0x1E1A JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9E7 JUMPI PUSH2 0x9E7 PUSH2 0x1E1A JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP3 DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000 DUP2 SLT PUSH4 0x7FFFFFFF DUP3 SGT OR ISZERO PUSH2 0x9E7 JUMPI PUSH2 0x9E7 PUSH2 0x1E1A JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1F50 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1CAF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1F62 DUP2 DUP6 PUSH2 0x1CAF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1F7E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1CAF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1F90 DUP2 DUP7 PUSH2 0x1CAF JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x1325 DUP2 DUP6 PUSH2 0x1CAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1FFC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x9E7 JUMPI PUSH2 0x9E7 PUSH2 0x1E1A JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 0xD5 0xB0 DUP13 PUSH5 0x10542245F7 0xD0 DUP15 CALLVALUE PUSH16 0x164421D4AB3CDE6D3E994F2092FD1380 RETURN 0x5C PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "395:14373:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:154;;;;;;:::i;:::-;;:::i;:::-;;273:87:28;;;;;;:::i;:::-;;:::i;2252:148:27:-;;;;;;:::i;:::-;;:::i;3558:551::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1288:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6084:42:111;6072:55;;;6054:74;;6042:2;6027:18;1288:39:27;5893:241:111;100:20:28;;;;;;;;;122::26;;;:::i;:::-;;;;;;;:::i;2829:235:27:-;;;;;;:::i;:::-;;:::i;1237:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1873:154;181:5:28;;;;167:10;:19;159:28;;;;;;1949:14:27::1;::::0;::::1;;::::0;;;:10:::1;:14;::::0;;;;;;;;:21;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1985:35;;7418:36:111;;;7470:18;;;7463:83;1985:35:27::1;::::0;7391:18:111;1985:35:27::1;;;;;;;;1873:154:::0;;:::o;273:87:28:-;181:5;;;;167:10;:19;159:28;;;;;;337:5:::1;:16:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;273:87::o;2252:148:27:-;181:5:28;;;;167:10;:19;159:28;;;;;;2324:11:27::1;::::0;::::1;;::::0;;;:7:::1;:11;::::0;;;;;;;;:20;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;2359:34;;7418:36:111;;;7470:18;;;7463:83;2359:34:27::1;::::0;7391:18:111;2359:34:27::1;7248:304:111::0;3558:551:27;3705:16;3723;3755:18;3776:7;3755:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3798:9;3793:275;3817:5;:12;3813:1;:16;3793:275;;;3850:30;3883:101;3918:5;3924:1;3918:8;;;;;;;;:::i;:::-;;;;;;;3944:5;3967:3;3883:17;:101::i;:::-;4006:10;;;;4042:15;;;;;;-1:-1:-1;4006:10:27;-1:-1:-1;3831:3:27;;-1:-1:-1;3831:3:27;;;:::i;:::-;;;;3793:275;;;-1:-1:-1;4085:5:27;-1:-1:-1;3558:551:27;;;;;:::o;122:20:26:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2829:235:27:-;2965:16;2983;3022:35;3034:5;3041:15;3022:11;:35::i;:::-;3015:42;;;;2829:235;;;:::o;4618:1393::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4814:11:27;;:27;;:25;:27::i;:::-;4806:35;;4916:17;4936:37;4948:5;4955;:17;;;4936:11;:37::i;:::-;5009:12;;;;4916:57;;-1:-1:-1;4987:34:27;;:18;4916:57;5003:1;4987:15;:18::i;:::-;:34;4983:109;;5062:4;5068:5;:12;;;5044:37;;;;;;;;;;;;:::i;:::-;;;;;;;;4983:109;5101:10;;;:17;;;5477:16;;;;5453:54;;5502:3;5453:23;:54::i;:::-;5448:140;;5547:16;;;;5530:47;;;;;9059:10:111;9096:15;;;5530:47:27;;;9078:34:111;9148:15;;;9128:18;;;9121:43;9022:18;;5530:47:27;8879:291:111;5448:140:27;5758:53;5789:3;5795:5;:15;;;5758:23;:53::i;:::-;5753:142;;5855:15;;;;5834:50;;;;;9059:10:111;9096:15;;;5834:50:27;;;9078:34:111;9148:15;;;9128:18;;;9121:43;9022:18;;5834:50:27;8879:291:111;5753:142:27;5939:42;5955:4;5961:5;5968;5975;5939:15;:42::i;:::-;5992:12;4618:1393;;;;;;:::o;2716:743:29:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:27:29;;:4;;:15;:27::i;:::-;2842:46;;;;2915:31;:4;2194:1;2915:14;:31::i;:::-;2898:48;;:14;;;:48;2970:28;:4;2233:1;2970:14;:28::i;:::-;2956:42;;:11;;;:42;3019:26;:4;2269:1;3019:15;:26::i;:::-;3008:37;;;;:8;;;:37;3073:33;;:4;;2312:1;;3073:15;:33;:::i;:::-;3055:51;;;;:15;;;:51;3133:32;;:4;;2354:2;;3133:15;:32;:::i;:::-;3116:49;;;;:14;;;:49;3189:30;;:4;;2395:2;;3189:15;:30;:::i;:::-;3175:44;;:11;;;:44;3247:33;3256:4;2440:2;3247:8;:33::i;:::-;3229:15;;;:51;;;3350:22;3302:150;;3330:42;;2440:2;3330:42;:::i;:::-;3420:4;:15;;;:22;2440:2;3386:4;:11;:31;;;;:::i;:::-;:56;;;;:::i;:::-;3302:4;;:150;:14;:150::i;:::-;3290:9;;;:162;:4;2716:743;-1:-1:-1;2716:743:29:o;6165:1192:27:-;6285:17;6372:30;6405:11;:5;:9;:11::i;:::-;6372:44;;6354:997;4584:9:29;;:16;4569:11;;;;:31;;6354:997:27;;6547:10;;;;:25;;562:1;6547:25;6543:95;;6612:10;;;;6599:24;;;;;9612:6:111;9600:19;;;6599:24:27;;;9582:38:111;9555:18;;6599:24:27;9438:188:111;6543:95:27;6656:4;:11;6671:1;6656:16;6652:473;;6699:11;:4;:9;:11::i;:::-;6692:18;;6652:473;;;6942:11;;;;6921:9;;:33;;:20;:33::i;:::-;6906:4;:11;:48;;:124;;;-1:-1:-1;6994:9:27;;7005:11;;;;7018;;6979:51;;7018:4;;6991:1;;6979:11;:51::i;:::-;6978:52;6906:124;6881:230;;;7078:14;;;;;;;;;;;;;;6881:230;7240:11;7224:27;;:4;:12;;;:27;;;7220:121;;7300:12;;;;;7278:48;;;;;9811:6:111;9844:15;;;7278:48:27;;;9826:34:111;9896:15;;;9876:18;;;9869:43;9774:18;;7278:48:27;9631:287:111;7220:121:27;6456:11;:4;:9;:11::i;:::-;6354:997;;;;6165:1192;;;;:::o;1685:431:29:-;1787:7;;1837:251;1880:4;:11;1871:6;:20;1864:28;;;;:::i;:::-;1906:16;1925:22;:4;1940:6;1925:14;:22::i;:::-;1906:41;;;-1:-1:-1;1971:12:29;1906:41;1982:1;1971:12;:::i;:::-;1961:22;;;;:::i;:::-;;;2001:8;2013:1;2001:13;1997:57;;2034:5;;;1997:57;2067:10;2076:1;2067:10;;:::i;:::-;;;1850:238;1837:251;;;2104:5;-1:-1:-1;1685:431:29;;;;;:::o;9270:154::-;9364:4;;9391:21;9409:2;9397;9391:21;:::i;:::-;:26;;;;;9270:154;-1:-1:-1;;;9270:154:29:o;7703:978:27:-;8053:4;:11;8027:5;:16;;;:23;:37;:187;;;;8081:133;8122:1;8141:4;8177:5;:16;;;:23;8163:4;:11;:37;;;;:::i;:::-;8081:16;;;;;:133;;:23;:133::i;:::-;8080:134;8027:187;8010:288;;;8270:16;;;;8246:41;;;;;;;8264:4;;8246:41;;;:::i;8010:288::-;8308:33;8344:19;:5;8308:33;8344:16;:19::i;:::-;8308:55;;599:2;8404:29;;:7;:15;;;:29;;;8400:275;;8449:34;8462:5;8469:4;8475:7;8449:12;:34::i;:::-;8400:275;;;640:2;8504:33;;:7;:15;;;:33;;;8500:175;;8553:40;8572:5;8579:4;8585:7;8553:18;:40::i;8500:175::-;8648:15;;;;;8631:33;;;;;9612:6:111;9600:19;;;8631:33:27;;;9582:38:111;9555:18;;8631:33:27;9438:188:111;8500:175:27;7883:798;7703:978;;;;:::o;6152:254:25:-;6296:11;;6251:10;;6285:7;:3;6291:1;6285:7;:::i;:::-;:22;;6277:31;;;;;;-1:-1:-1;6358:22:25;6372:1;6358:22;6352:29;6383:6;6348:42;;6152:254::o;5750:153::-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;:::o;6655:258::-;6799:11;;6754:10;;6788:7;:3;6794:1;6788:7;:::i;:::-;:22;;6780:31;;;;;;-1:-1:-1;6861:22:25;6875:1;6861:22;6855:29;6886:10;6851:46;;6655:258::o;1179:221:29:-;1279:16;1311:11;1325:24;1336:4;1342:6;1325:10;:24::i;:::-;1311:38;-1:-1:-1;1366:27:29;:4;1381:6;1311:38;1366:14;:27::i;:::-;1359:34;1179:221;-1:-1:-1;;;;1179:221:29:o;9465:436:25:-;9633:11;;9585:12;;9617;9626:3;9617:6;:12;:::i;:::-;:27;;9609:36;;;;;;9656:16;9685:3;9675:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:14:25;-1:-1:-1;9656:33:25;-1:-1:-1;9783:2:25;9774:12;;;;9806:26;;;;9851:22;9774:12;9806:26;9869:3;9851:6;:22::i;:::-;-1:-1:-1;9891:3:25;;9465:436;-1:-1:-1;;;;;9465:436:25:o;3465:156:29:-;3549:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3549:17:29;3589:25;3600:5;:10;;;3612:1;3589:10;:25::i;5601:225::-;5742:11;;;;5782:9;;5662:12;;5705:114;;5771:34;;5742:11;5771:10;:34::i;:::-;5705:9;;;:114;:19;:114::i;541:408::-;643:7;680:6;696:218;736:4;:11;730:3;:17;723:25;;;;:::i;:::-;762:16;781:19;:4;796:3;781:14;:19::i;:::-;762:38;;;-1:-1:-1;821:12:29;762:38;832:1;821:12;:::i;:::-;814:19;;;;:::i;:::-;;;851:8;863:1;851:13;847:57;;884:5;;;847:57;709:205;696:218;;;930:12;936:6;930:3;:12;:::i;3439:264:25:-;3613:4;3665:31;3672:5;3679:11;3692:3;3665:6;:31::i;:::-;3636:25;3643:4;3649:6;3657:3;3636:6;:25::i;:::-;:60;;3439:264;-1:-1:-1;;;;;;3439:264:25:o;4733:688:29:-;4809:15;;;;4795:11;;;:29;;;4853:9;;:16;-1:-1:-1;4834:68:29;;4733:688;:::o;4834:68::-;4937:11;4965:34;4976:4;:9;;;4987:4;:11;;;4965:10;:34::i;:::-;4951:4;:11;;;:48;;;;:::i;:::-;5062:9;;4937:62;;-1:-1:-1;5062:25:29;;4937:62;5062:20;:25::i;:::-;5047:40;;:12;;;:40;5097:8;5104:1;5097:8;;:::i;:::-;5128:9;;5097:8;;-1:-1:-1;5128:25:29;;5097:8;5128:20;:25::i;:::-;5115:38;;:10;;;:38;5163:8;5170:1;5163:8;;:::i;:::-;5192:9;;5163:8;;-1:-1:-1;5192:25:29;;5163:8;5192:20;:25::i;:::-;5181:36;;:8;;;:36;5227:8;5234:1;5227:8;;:::i;:::-;5294:9;;5227:8;;-1:-1:-1;5272:19:29;;5294:25;;5227:8;5294:20;:25::i;:::-;5272:47;;;-1:-1:-1;5329:8:29;5336:1;5329:8;;:::i;:::-;5347:16;;;:22;;;5329:8;-1:-1:-1;5397:17:29;5403:11;5329:8;5397:17;:::i;:::-;5379:15;;;;:35;;;;-1:-1:-1;;4733:688:29:o;4093:307:25:-;4246:4;4339:54;4346:5;4353:11;4381;4366:5;:12;:26;;;;:::i;:::-;4339:6;:54::i;:::-;4281:42;4288:4;4294:6;4316;4302:4;:11;:20;;;;:::i;4281:42::-;:112;;4093:307;-1:-1:-1;;;;;4093:307:25:o;4097:213:29:-;4199:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:21:29;4236:15;;;4261:14;;;:23;;;4294:9;4236:3;4294:4;:9::i;11713:990:27:-;11904:30;11937:11;:5;:9;:11::i;:::-;11904:44;;11886:761;4584:9:29;;:16;4569:11;;;;:31;;11886:761:27;;12028:12;;;;:30;;640:2;12028:30;12024:106;;12102:12;;;;;12085:30;;;;;9612:6:111;9600:19;;;12085:30:27;;;9582:38:111;9555:18;;12085:30:27;9438:188:111;12024:106:27;12144:21;12168:12;:4;:10;:12::i;:::-;12144:36;;12194:28;12225:85;12262:1;12281:8;:15;12225:8;:19;;:85;;;;;:::i;:::-;12194:116;;12328:53;12351:6;12359:8;12369:5;12376:4;12328:22;:53::i;:::-;12324:313;;;12499:58;12515:5;:16;;;12533:5;12540:6;12548:8;12499:15;:58::i;:::-;12474:149;;;12598:7;;;11713:990;;;:::o;12474:149::-;12010:637;;11988:11;:4;:9;:11::i;:::-;11886:761;;;;12679:5;:16;;;12663:33;;;;;;;;;;;:::i;8971:844::-;4584:9:29;;:16;4569:11;;;;:31;;9228:531:27;;9278:22;9303:12;:5;:10;:12::i;:::-;9278:37;;9334:34;9351:5;:16;;;9334:9;:16;;:34;;;;:::i;:::-;9329:127;;9413:5;:16;;;9431:9;9395:46;;;;;;;;;;;;:::i;9329:127::-;9470:21;9494:13;:5;:11;:13::i;:::-;9470:37;;9521:28;9552:85;9589:1;9608:8;:15;9552:8;:19;;:85;;;;;:::i;:::-;9521:116;;9655:53;9678:6;9686:8;9696:5;9703:4;9655:22;:53::i;:::-;9651:98;;;9728:7;;;8971:844;;;:::o;9651:98::-;9264:495;;;9250:12;:5;:10;:12::i;:::-;9228:531;;;9791:5;:16;;;9775:33;;;;;;;;;;;:::i;8595:645:25:-;8768:2;8761:3;:9;8754:165;;8837:10;;8824:24;;8875:10;8883:2;8831:4;8875:10;:::i;:::-;;-1:-1:-1;8899:9:25;8906:2;8899:9;;:::i;:::-;;-1:-1:-1;8772:9:25;8779:2;8772:9;;:::i;:::-;;;8754:165;;;9081:10;;9140:11;;9007:2;:8;;;;9001:3;:15;9000:21;;9093:9;;9077:26;;;9136:22;;9188:21;9175:35;;8595:645::o;311:274::-;475:11;;428;;459:12;468:3;459:6;:12;:::i;:::-;:27;;451:36;;;;;;-1:-1:-1;537:26:25;;551:2;537:26;527:42;;311:274::o;6003:259:29:-;6173:16;;;;6207:15;;;;6089:12;;6136:119;;6207:34;;6173:16;;6207:34;:::i;6556:469::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6723:38:29;6739:21;6300:1;6739:6;:21;:::i;:::-;6723:4;;:15;:38::i;:::-;6710:51;;;;6787:40;6802:24;6342:1;6802:6;:24;:::i;:::-;6787:4;;:14;:40::i;:::-;6771:56;;:13;;;:56;6854:41;6869:25;6385:1;6869:6;:25;:::i;6854:41::-;6837:58;;:14;;;:58;6922:96;6950:22;6425:1;6950:6;:22;:::i;:::-;6986;6425:1;6986:6;:22;:::i;:::-;6922:4;;:96;:14;:96::i;:::-;6905:14;;;:113;:4;6556:469;-1:-1:-1;;;6556:469:29:o;10158:1221:27:-;10368:4;10522:6;:15;;;:20;;10541:1;10522:20;10518:63;;-1:-1:-1;10565:5:27;10558:12;;10518:63;10816:5;:15;;;10796:35;;:6;:16;;;:35;;;10792:78;;-1:-1:-1;10854:5:27;10847:12;;10792:78;10879:21;10903:24;:8;:22;:24::i;:::-;10879:48;;10959:5;:12;;;10941:30;;:14;:30;;;10937:73;;10994:5;10987:12;;;;;10937:73;11198:12;;688:5;11198:34;:12;:39;11194:82;;11260:5;11253:12;;;;;11194:82;11316:16;;;;;11305:28;;;;;;:10;:28;;;;;;;;;11351:10;;11363:8;;;;11305:67;;;;;:28;;;;;:35;;:67;;11341:8;;11363;11305:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11286:86;10158:1221;-1:-1:-1;;;;;;10158:1221:27:o;13066:1109::-;13260:4;13276:13;13292:24;:8;:22;:24::i;:::-;13276:40;;13326:821;4584:9:29;;:16;4569:11;;;;:31;;13326:821:27;;13376:22;13401:12;:5;:10;:12::i;:::-;13376:37;-1:-1:-1;13432:25:27;13376:37;13449:7;13432:16;:25::i;:::-;13427:109;;13502:7;13511:9;13484:37;;;;;;;;;;;;:::i;13427:109::-;13608:17;;;;13643:16;;;;13550:20;;13573:120;;13643:36;;13608:17;;13643:36;:::i;:::-;13573:10;;;:120;:17;:120::i;:::-;13550:143;;13724:6;13711:19;;:2;:9;;;:19;;;13707:66;;13750:8;;;;13707:66;13806:6;:16;;;13790:32;;:2;:12;;;:32;;;13786:79;;13842:8;;;;13786:79;-1:-1:-1;;;;;;;;;;;;;;;;;13917:42:27;13943:8;:15;13926:7;:14;:32;;;;:::i;:::-;13917:3;;:8;:42::i;:::-;-1:-1:-1;13973:19:27;:3;13984:7;13973:10;:19::i;:::-;-1:-1:-1;14006:20:27;:3;14017:8;14006:10;:20::i;:::-;;14044:47;14057:2;:13;;;14072:3;:7;;;14081:2;:9;;;14044:12;:47::i;:::-;14040:97;;;14118:4;14111:11;;;;;;;;14040:97;13362:785;;;13326:821;13348:12;:5;:10;:12::i;:::-;13326:821;;;-1:-1:-1;14163:5:27;;13066:1109;-1:-1:-1;;;;;13066:1109:27:o;5274:229:25:-;5376:4;5430:5;:12;5415:4;:11;:27;:81;;;;;5458:38;5465:4;5471:1;5474:5;5481:1;5484:4;:11;5458:6;:38::i;9758:3992:29:-;9823:6;11614:4;11599;:11;:19;;11591:55;;;;;;;11774:2:111;11591:55:29;;;11756:21:111;11813:2;11793:18;;;11786:30;11852:25;11832:18;;;11825:53;11895:18;;11591:55:29;11572:347:111;11591:55:29;11660:11;11685;11715:9;11710:670;11734:4;:11;11748:2;11734:16;11730:1;:20;11710:670;;;11779:12;11873:1;11868:2;11862:4;11858:13;11854:21;11848:28;11840:36;;11924:4;:11;11915:1;11919:2;11915:6;:20;11911:166;;;11983:11;;:15;;;12002:1;11982:21;11976:3;:27;12033:14;;;12032:26;;11911:166;12121:124;12244:1;12121:124;;;;;12094:151;;;;;12271:93;12263:102;;;;;11757:2;11752:7;11710:670;;;;12647:2;12530:3;12556:66;12530:92;12529:120;;12416:3;12442:66;12416:92;12415:235;12393:257;;12918:2;12801:3;12827:66;12801:92;12800:120;;12687:3;12713:66;12687:92;12686:235;12664:257;;12954:3;12949:1;12942:3;:8;;12941:16;12935:22;;13225:2;13108:3;13134:66;13108:92;13107:120;;12994:3;13020:66;12994:92;12993:235;12971:257;;13496:2;13379:3;13405:66;13379:92;13378:120;;13265:3;13291:66;13265:92;13264:235;13242:257;;13656:3;13649;:10;;13536:3;13562:66;13536:92;13535:125;13513:147;;13689:2;13682:3;:9;;13695:6;13681:20;13674:27;;;;13729:3;13715:18;;;;9758:3992;;;:::o;977:455:0:-;-1:-1:-1;;;;;;;;;;;;;;;;;1076:13:0;1087:2;1076:8;:13;:::i;:::-;:18;1072:81;;1128:13;1139:2;1128:8;:13;:::i;:::-;1122:20;;:2;:20;:::i;:::-;1110:32;;;;:::i;:::-;;;1072:81;-1:-1:-1;1208:12:0;;;;:23;;;1281:4;1275:11;;1299:16;;;-1:-1:-1;1328:14:0;;1376:18;;;1368:27;1355:41;;1208:12;977:455::o;5001:161::-;-1:-1:-1;;;;;;;;;;;;;;;;;5110:45:0;5116:3;5121;:7;;;:14;5137:4;5143;:11;5110:5;:45::i;14469:297:27:-;14630:19;;;14602:4;14630:19;;;:7;:19;;;;;;14622:42;14630:19;14618:85;;-1:-1:-1;14687:5:27;14680:12;;14618:85;14719:19;;;;;;;:7;:19;;;;;;;;:40;;;;;:19;;;;;:26;;:40;;14746:4;;14752:6;;14719:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2874:1382:0:-;-1:-1:-1;;;;;;;;;;;;;;;;;3009:4:0;:11;3002:3;:18;;2994:27;;;;;;3048:12;;;;3036:9;3042:3;3036;:9;:::i;:::-;:24;3032:100;;;3076:45;3083:3;3088:28;3092:3;:12;;;3112:3;3106;:9;;;;:::i;:::-;3088:3;:28::i;:::-;:32;;3119:1;3088:32;:::i;:::-;3076:6;:45::i;:::-;3142:9;3161:8;3271:3;3265:10;3354:6;3348:13;3482:3;3477:2;3469:6;3465:15;3461:25;3453:33;;3578:6;3572:3;3567;3563:13;3560:25;3557:90;;;3628:3;3623;3619:13;3611:6;3604:29;3557:90;-1:-1:-1;;;3677:2:0;3667:13;;3750:165;3764:2;3757:3;:9;3750:165;;3833:10;;3820:24;;3871:10;3879:2;3827:4;3871:10;:::i;:::-;;-1:-1:-1;3895:9:0;3902:2;3895:9;;:::i;:::-;;-1:-1:-1;3768:9:0;3775:2;3768:9;;:::i;:::-;;;3750:165;;;4076:10;4135:11;;3993:23;4002:2;:8;;;3994:3;:17;3993:23;4131:22;;;4088:9;;4072:26;;;;4183:21;4170:35;;-1:-1:-1;4246:3:0;2874:1382;;;;;;:::o;2034:134::-;2084:4;2108:1;2104;:5;2100:44;;;-1:-1:-1;2132:1:0;2125:8;;2100:44;-1:-1:-1;2160:1:0;2034:134;-1:-1:-1;2034:134:0:o;1861:167::-;1956:7;;1973:19;1956:3;1983:8;1973:4;:19::i;:::-;;2002;2009:3;2014:6;2002;:19::i;:::-;;1924:104;1861:167;;:::o;14:156:111:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:165::-;272:42;265:5;261:54;254:5;251:65;241:93;;330:1;327;320:12;241:93;175:165;:::o;345:346::-;429:6;437;490:2;478:9;469:7;465:23;461:32;458:52;;;506:1;503;496:12;458:52;529:27;546:9;529:27;:::i;:::-;519:37;;606:2;595:9;591:18;578:32;619:42;655:5;619:42;:::i;:::-;680:5;670:15;;;345:346;;;;;:::o;696:258::-;755:6;808:2;796:9;787:7;783:23;779:32;776:52;;;824:1;821;814:12;776:52;863:9;850:23;882:42;918:5;882:42;:::i;1307:184::-;1359:77;1356:1;1349:88;1456:4;1453:1;1446:15;1480:4;1477:1;1470:15;1496:257;1568:4;1562:11;;;1600:17;;1647:18;1632:34;;1668:22;;;1629:62;1626:88;;;1694:18;;:::i;:::-;1730:4;1723:24;1496:257;:::o;1758:334::-;1829:2;1823:9;1885:2;1875:13;;1890:66;1871:86;1859:99;;1988:18;1973:34;;2009:22;;;1970:62;1967:88;;;2035:18;;:::i;:::-;2071:2;2064:22;1758:334;;-1:-1:-1;1758:334:111:o;2097:589::-;2139:5;2192:3;2185:4;2177:6;2173:17;2169:27;2159:55;;2210:1;2207;2200:12;2159:55;2246:6;2233:20;2272:18;2268:2;2265:26;2262:52;;;2294:18;;:::i;:::-;2338:114;2446:4;2377:66;2370:4;2366:2;2362:13;2358:86;2354:97;2338:114;:::i;:::-;2477:2;2468:7;2461:19;2523:3;2516:4;2511:2;2503:6;2499:15;2495:26;2492:35;2489:55;;;2540:1;2537;2530:12;2489:55;2605:2;2598:4;2590:6;2586:17;2579:4;2570:7;2566:18;2553:55;2653:1;2628:16;;;2646:4;2624:27;2617:38;;;;2632:7;2097:589;-1:-1:-1;;;2097:589:111:o;2691:1741::-;2763:5;2816:3;2809:4;2801:6;2797:17;2793:27;2783:55;;2834:1;2831;2824:12;2783:55;2870:6;2857:20;2896:4;2919:18;2956:2;2952;2949:10;2946:36;;;2962:18;;:::i;:::-;3008:2;3005:1;3001:10;3031:28;3055:2;3051;3047:11;3031:28;:::i;:::-;3093:15;;;3163;;;3159:24;;;3124:12;;;;3195:15;;;3192:35;;;3223:1;3220;3213:12;3192:35;3259:2;3251:6;3247:15;3236:26;;3271:1132;3287:6;3282:3;3279:15;3271:1132;;;3373:3;3360:17;3409:2;3396:11;3393:19;3390:109;;;3453:1;3482:2;3478;3471:14;3390:109;3522:24;;3569:4;3597:12;;;3611:66;3593:85;3589:94;-1:-1:-1;3586:184:111;;;3724:1;3753:2;3749;3742:14;3586:184;3796:22;;:::i;:::-;3868:2;3864;3860:11;3847:25;3901:2;3891:8;3888:16;3885:106;;;3945:1;3974:2;3970;3963:14;3885:106;4018:49;4063:3;4058:2;4047:8;4043:2;4039:17;4035:26;4018:49;:::i;:::-;4004:64;;-1:-1:-1;4110:11:111;;;4097:25;;4138:16;;;4135:109;;;4196:1;4226:3;4221;4214:16;4135:109;4280:49;4325:3;4320:2;4309:8;4305:2;4301:17;4297:26;4280:49;:::i;:::-;4264:14;;;4257:73;4343:18;;-1:-1:-1;;3304:12:111;;;;4381;;;;3271:1132;;;4421:5;2691:1741;-1:-1:-1;;;;;;;;2691:1741:111:o;4437:470::-;4566:6;4574;4627:2;4615:9;4606:7;4602:23;4598:32;4595:52;;;4643:1;4640;4633:12;4595:52;4683:9;4670:23;4716:18;4708:6;4705:30;4702:50;;;4748:1;4745;4738:12;4702:50;4771:79;4842:7;4833:6;4822:9;4818:22;4771:79;:::i;:::-;4761:89;4897:2;4882:18;;;;4869:32;;-1:-1:-1;;;;4437:470:111:o;4912:481::-;4953:3;4991:5;4985:12;5018:6;5013:3;5006:19;5043:1;5053:162;5067:6;5064:1;5061:13;5053:162;;;5129:4;5185:13;;;5181:22;;5175:29;5157:11;;;5153:20;;5146:59;5082:12;5053:162;;;5057:3;5260:1;5253:4;5244:6;5239:3;5235:16;5231:27;5224:38;5382:4;5312:66;5307:2;5299:6;5295:15;5291:88;5286:3;5282:98;5278:109;5271:116;;;4912:481;;;;:::o;5398:303::-;5571:2;5560:9;5553:21;5534:4;5591:44;5631:2;5620:9;5616:18;5608:6;5591:44;:::i;:::-;5583:52;;5683:10;5675:6;5671:23;5666:2;5655:9;5651:18;5644:51;5398:303;;;;;:::o;5706:182::-;5763:6;5816:2;5804:9;5795:7;5791:23;5787:32;5784:52;;;5832:1;5829;5822:12;5784:52;5855:27;5872:9;5855:27;:::i;6370:217::-;6517:2;6506:9;6499:21;6480:4;6537:44;6577:2;6566:9;6562:18;6554:6;6537:44;:::i;6592:402::-;6712:6;6765:2;6753:9;6744:7;6740:23;6736:32;6733:52;;;6781:1;6778;6771:12;6733:52;6821:9;6808:23;6854:18;6846:6;6843:30;6840:50;;;6886:1;6883;6876:12;6840:50;6909:79;6980:7;6971:6;6960:9;6956:22;6909:79;:::i;7557:437::-;7636:1;7632:12;;;;7679;;;7700:61;;7754:4;7746:6;7742:17;7732:27;;7700:61;7807:2;7799:6;7796:14;7776:18;7773:38;7770:218;;7844:77;7841:1;7834:88;7945:4;7942:1;7935:15;7973:4;7970:1;7963:15;7999:184;8051:77;8048:1;8041:88;8148:4;8145:1;8138:15;8172:4;8169:1;8162:15;8188:184;8240:77;8237:1;8230:88;8337:4;8334:1;8327:15;8361:4;8358:1;8351:15;8377:195;8416:3;8447:66;8440:5;8437:77;8434:103;;8517:18;;:::i;:::-;-1:-1:-1;8564:1:111;8553:13;;8377:195::o;8577:297::-;8750:2;8739:9;8732:21;8713:4;8770:44;8810:2;8799:9;8795:18;8787:6;8770:44;:::i;:::-;8762:52;;8862:4;8854:6;8850:17;8845:2;8834:9;8830:18;8823:45;8577:297;;;;;:::o;9175:125::-;9240:9;;;9261:10;;;9258:36;;;9274:18;;:::i;9305:128::-;9372:9;;;9393:11;;;9390:37;;;9407:18;;:::i;9923:184::-;9975:77;9972:1;9965:88;10072:4;10069:1;10062:15;10096:4;10093:1;10086:15;10112:249;10210:1;10199:16;;;10181;;;;10177:39;10241:66;10231:77;;10320:10;10310:21;;10228:104;10225:130;;;10335:18;;:::i;10366:377::-;10559:2;10548:9;10541:21;10522:4;10585:44;10625:2;10614:9;10610:18;10602:6;10585:44;:::i;:::-;10677:9;10669:6;10665:22;10660:2;10649:9;10645:18;10638:50;10705:32;10730:6;10722;10705:32;:::i;:::-;10697:40;10366:377;-1:-1:-1;;;;;10366:377:111:o;10748:537::-;10987:2;10976:9;10969:21;10950:4;11013:44;11053:2;11042:9;11038:18;11030:6;11013:44;:::i;:::-;11105:9;11097:6;11093:22;11088:2;11077:9;11073:18;11066:50;11139:32;11164:6;11156;11139:32;:::i;:::-;11125:46;;11219:9;11211:6;11207:22;11202:2;11191:9;11187:18;11180:50;11247:32;11272:6;11264;11247:32;:::i;11290:277::-;11357:6;11410:2;11398:9;11389:7;11385:23;11381:32;11378:52;;;11426:1;11423;11416:12;11378:52;11458:9;11452:16;11511:5;11504:13;11497:21;11490:5;11487:32;11477:60;;11533:1;11530;11523:12;11924:266;11956:1;11982;11972:189;;12017:77;12014:1;12007:88;12118:4;12115:1;12108:15;12146:4;12143:1;12136:15;11972:189;-1:-1:-1;12175:9:111;;11924:266::o;12195:168::-;12268:9;;;12299;;12316:15;;;12310:22;;12296:37;12286:71;;12337:18;;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1654000",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "algorithms(uint8)": "2592",
                "anchors()": "infinite",
                "digests(uint8)": "2549",
                "owner()": "2358",
                "setAlgorithm(uint8,address)": "28161",
                "setDigest(uint8,address)": "28216",
                "setOwner(address)": "26681",
                "verifyRRSet((bytes,bytes)[])": "infinite",
                "verifyRRSet((bytes,bytes)[],uint256)": "infinite"
              },
              "internal": {
                "validateRRs(struct RRUtils.SignedSet memory,uint16)": "infinite",
                "validateSignedSet(struct DNSSEC.RRSetWithSignature memory,bytes memory,uint256)": "infinite",
                "verifyDSHash(uint8,bytes memory,bytes memory)": "infinite",
                "verifyKeyWithDS(bytes memory,struct RRUtils.RRIterator memory,struct RRUtils.DNSKEY memory,bytes memory)": "infinite",
                "verifySignature(bytes memory,struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory,bytes memory)": "infinite",
                "verifySignatureWithKey(struct RRUtils.DNSKEY memory,bytes memory,struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory)": "infinite",
                "verifyWithDS(struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory,struct RRUtils.RRIterator memory)": "infinite",
                "verifyWithKnownKey(struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory,struct RRUtils.RRIterator memory)": "infinite"
              }
            },
            "methodIdentifiers": {
              "algorithms(uint8)": "c327deef",
              "anchors()": "98d35f20",
              "digests(uint8)": "73cc48a6",
              "owner()": "8da5cb5b",
              "setAlgorithm(uint8,address)": "020ed8d3",
              "setDigest(uint8,address)": "28e7677d",
              "setOwner(address)": "13af4035",
              "verifyRRSet((bytes,bytes)[])": "bdf95fef",
              "verifyRRSet((bytes,bytes)[],uint256)": "440f3d42"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_anchors\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"class\",\"type\":\"uint16\"}],\"name\":\"InvalidClass\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"labelsExpected\",\"type\":\"uint256\"}],\"name\":\"InvalidLabelCount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"proofType\",\"type\":\"uint16\"}],\"name\":\"InvalidProofType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRRSet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"rrsetName\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signerName\",\"type\":\"bytes\"}],\"name\":\"InvalidSignerName\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signerName\",\"type\":\"bytes\"}],\"name\":\"NoMatchingProof\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signerName\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proofName\",\"type\":\"bytes\"}],\"name\":\"ProofNameMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"expiration\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"now\",\"type\":\"uint32\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"inception\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"now\",\"type\":\"uint32\"}],\"name\":\"SignatureNotValidYet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"rrsetType\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"sigType\",\"type\":\"uint16\"}],\"name\":\"SignatureTypeMismatch\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"AlgorithmUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"DigestUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"algorithms\",\"outputs\":[{\"internalType\":\"contract Algorithm\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"anchors\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"digests\",\"outputs\":[{\"internalType\":\"contract Digest\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"contract Algorithm\",\"name\":\"algo\",\"type\":\"address\"}],\"name\":\"setAlgorithm\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"contract Digest\",\"name\":\"digest\",\"type\":\"address\"}],\"name\":\"setDigest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature[]\",\"name\":\"input\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"now\",\"type\":\"uint256\"}],\"name\":\"verifyRRSet\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"rrs\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"inception\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature[]\",\"name\":\"input\",\"type\":\"tuple[]\"}],\"name\":\"verifyRRSet\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"rrs\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"inception\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor.\",\"params\":{\"_anchors\":\"The binary format RR entries for the root DS records.\"}},\"setAlgorithm(uint8,address)\":{\"details\":\"Sets the contract address for a signature verification algorithm.      Callable only by the owner.\",\"params\":{\"algo\":\"The address of the algorithm contract.\",\"id\":\"The algorithm ID\"}},\"setDigest(uint8,address)\":{\"details\":\"Sets the contract address for a digest verification algorithm.      Callable only by the owner.\",\"params\":{\"digest\":\"The address of the digest contract.\",\"id\":\"The digest ID\"}},\"verifyRRSet((bytes,bytes)[])\":{\"details\":\"Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.\",\"params\":{\"input\":\"A list of signed RRSets.\"},\"returns\":{\"inception\":\"The inception time of the signed record set.\",\"rrs\":\"The RRData from the last RRSet in the chain.\"}},\"verifyRRSet((bytes,bytes)[],uint256)\":{\"details\":\"Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.\",\"params\":{\"input\":\"A list of signed RRSets.\",\"now\":\"The Unix timestamp to validate the records at.\"},\"returns\":{\"inception\":\"The inception time of the signed record set.\",\"rrs\":\"The RRData from the last RRSet in the chain.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/DNSSECImpl.sol\":\"DNSSECImpl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/DNSSEC.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\npragma experimental ABIEncoderV2;\\n\\nabstract contract DNSSEC {\\n    bytes public anchors;\\n\\n    struct RRSetWithSignature {\\n        bytes rrset;\\n        bytes sig;\\n    }\\n\\n    event AlgorithmUpdated(uint8 id, address addr);\\n    event DigestUpdated(uint8 id, address addr);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input)\\n        external\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n\\n    function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\\n        public\\n        view\\n        virtual\\n        returns (bytes memory rrs, uint32 inception);\\n}\\n\",\"keccak256\":\"0xaa9bd0b4e3533e757b73939e47a9e6c2a4fd383fb00fc4ccf33f101bdea93263\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/DNSSECImpl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"./Owned.sol\\\";\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"./RRUtils.sol\\\";\\nimport \\\"./DNSSEC.sol\\\";\\nimport \\\"./algorithms/Algorithm.sol\\\";\\nimport \\\"./digests/Digest.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/*\\n * @dev An oracle contract that verifies and stores DNSSEC-validated DNS records.\\n */\\ncontract DNSSECImpl is DNSSEC, Owned {\\n    using Buffer for Buffer.buffer;\\n    using BytesUtils for bytes;\\n    using RRUtils for *;\\n\\n    uint16 constant DNSCLASS_IN = 1;\\n\\n    uint16 constant DNSTYPE_DS = 43;\\n    uint16 constant DNSTYPE_DNSKEY = 48;\\n\\n    uint256 constant DNSKEY_FLAG_ZONEKEY = 0x100;\\n\\n    error InvalidLabelCount(bytes name, uint256 labelsExpected);\\n    error SignatureNotValidYet(uint32 inception, uint32 now);\\n    error SignatureExpired(uint32 expiration, uint32 now);\\n    error InvalidClass(uint16 class);\\n    error InvalidRRSet();\\n    error SignatureTypeMismatch(uint16 rrsetType, uint16 sigType);\\n    error InvalidSignerName(bytes rrsetName, bytes signerName);\\n    error InvalidProofType(uint16 proofType);\\n    error ProofNameMismatch(bytes signerName, bytes proofName);\\n    error NoMatchingProof(bytes signerName);\\n\\n    mapping(uint8 => Algorithm) public algorithms;\\n    mapping(uint8 => Digest) public digests;\\n\\n    /**\\n     * @dev Constructor.\\n     * @param _anchors The binary format RR entries for the root DS records.\\n     */\\n    constructor(bytes memory _anchors) {\\n        // Insert the 'trust anchors' - the key hashes that start the chain\\n        // of trust for all other records.\\n        anchors = _anchors;\\n    }\\n\\n    /**\\n     * @dev Sets the contract address for a signature verification algorithm.\\n     *      Callable only by the owner.\\n     * @param id The algorithm ID\\n     * @param algo The address of the algorithm contract.\\n     */\\n    function setAlgorithm(uint8 id, Algorithm algo) public owner_only {\\n        algorithms[id] = algo;\\n        emit AlgorithmUpdated(id, address(algo));\\n    }\\n\\n    /**\\n     * @dev Sets the contract address for a digest verification algorithm.\\n     *      Callable only by the owner.\\n     * @param id The digest ID\\n     * @param digest The address of the digest contract.\\n     */\\n    function setDigest(uint8 id, Digest digest) public owner_only {\\n        digests[id] = digest;\\n        emit DigestUpdated(id, address(digest));\\n    }\\n\\n    /**\\n     * @dev Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.\\n     *      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.\\n     * @param input A list of signed RRSets.\\n     * @return rrs The RRData from the last RRSet in the chain.\\n     * @return inception The inception time of the signed record set.\\n     */\\n    function verifyRRSet(RRSetWithSignature[] memory input)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory rrs, uint32 inception)\\n    {\\n        return verifyRRSet(input, block.timestamp);\\n    }\\n\\n    /**\\n     * @dev Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.\\n     *      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.\\n     * @param input A list of signed RRSets.\\n     * @param now The Unix timestamp to validate the records at.\\n     * @return rrs The RRData from the last RRSet in the chain.\\n     * @return inception The inception time of the signed record set.\\n     */\\n    function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bytes memory rrs, uint32 inception)\\n    {\\n        bytes memory proof = anchors;\\n        for (uint256 i = 0; i < input.length; i++) {\\n            RRUtils.SignedSet memory rrset = validateSignedSet(\\n                input[i],\\n                proof,\\n                now\\n            );\\n            proof = rrset.data;\\n            inception = rrset.inception;\\n        }\\n        return (proof, inception);\\n    }\\n\\n    /**\\n     * @dev Validates an RRSet against the already trusted RR provided in `proof`.\\n     *\\n     * @param input The signed RR set. This is in the format described in section\\n     *        5.3.2 of RFC4035: The RRDATA section from the RRSIG without the signature\\n     *        data, followed by a series of canonicalised RR records that the signature\\n     *        applies to.\\n     * @param proof The DNSKEY or DS to validate the signature against.\\n     * @param now The current timestamp.\\n     */\\n    function validateSignedSet(\\n        RRSetWithSignature memory input,\\n        bytes memory proof,\\n        uint256 now\\n    ) internal view returns (RRUtils.SignedSet memory rrset) {\\n        rrset = input.rrset.readSignedSet();\\n\\n        // Do some basic checks on the RRs and extract the name\\n        bytes memory name = validateRRs(rrset, rrset.typeCovered);\\n        if (name.labelCount(0) != rrset.labels) {\\n            revert InvalidLabelCount(name, rrset.labels);\\n        }\\n        rrset.name = name;\\n\\n        // All comparisons involving the Signature Expiration and\\n        // Inception fields MUST use \\\"serial number arithmetic\\\", as\\n        // defined in RFC 1982\\n\\n        // o  The validator's notion of the current time MUST be less than or\\n        //    equal to the time listed in the RRSIG RR's Expiration field.\\n        if (!RRUtils.serialNumberGte(rrset.expiration, uint32(now))) {\\n            revert SignatureExpired(rrset.expiration, uint32(now));\\n        }\\n\\n        // o  The validator's notion of the current time MUST be greater than or\\n        //    equal to the time listed in the RRSIG RR's Inception field.\\n        if (!RRUtils.serialNumberGte(uint32(now), rrset.inception)) {\\n            revert SignatureNotValidYet(rrset.inception, uint32(now));\\n        }\\n\\n        // Validate the signature\\n        verifySignature(name, rrset, input, proof);\\n\\n        return rrset;\\n    }\\n\\n    /**\\n     * @dev Validates a set of RRs.\\n     * @param rrset The RR set.\\n     * @param typecovered The type covered by the RRSIG record.\\n     */\\n    function validateRRs(RRUtils.SignedSet memory rrset, uint16 typecovered)\\n        internal\\n        pure\\n        returns (bytes memory name)\\n    {\\n        // Iterate over all the RRs\\n        for (\\n            RRUtils.RRIterator memory iter = rrset.rrs();\\n            !iter.done();\\n            iter.next()\\n        ) {\\n            // We only support class IN (Internet)\\n            if (iter.class != DNSCLASS_IN) {\\n                revert InvalidClass(iter.class);\\n            }\\n\\n            if (name.length == 0) {\\n                name = iter.name();\\n            } else {\\n                // Name must be the same on all RRs. We do things this way to avoid copying the name\\n                // repeatedly.\\n                if (\\n                    name.length != iter.data.nameLength(iter.offset) ||\\n                    !name.equals(0, iter.data, iter.offset, name.length)\\n                ) {\\n                    revert InvalidRRSet();\\n                }\\n            }\\n\\n            // o  The RRSIG RR's Type Covered field MUST equal the RRset's type.\\n            if (iter.dnstype != typecovered) {\\n                revert SignatureTypeMismatch(iter.dnstype, typecovered);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs signature verification.\\n     *\\n     * Throws or reverts if unable to verify the record.\\n     *\\n     * @param name The name of the RRSIG record, in DNS label-sequence format.\\n     * @param data The original data to verify.\\n     * @param proof A DS or DNSKEY record that's already verified by the oracle.\\n     */\\n    function verifySignature(\\n        bytes memory name,\\n        RRUtils.SignedSet memory rrset,\\n        RRSetWithSignature memory data,\\n        bytes memory proof\\n    ) internal view {\\n        // o  The RRSIG RR's Signer's Name field MUST be the name of the zone\\n        //    that contains the RRset.\\n        if (\\n            rrset.signerName.length > name.length ||\\n            !rrset.signerName.equals(\\n                0,\\n                name,\\n                name.length - rrset.signerName.length\\n            )\\n        ) {\\n            revert InvalidSignerName(name, rrset.signerName);\\n        }\\n\\n        RRUtils.RRIterator memory proofRR = proof.iterateRRs(0);\\n        // Check the proof\\n        if (proofRR.dnstype == DNSTYPE_DS) {\\n            verifyWithDS(rrset, data, proofRR);\\n        } else if (proofRR.dnstype == DNSTYPE_DNSKEY) {\\n            verifyWithKnownKey(rrset, data, proofRR);\\n        } else {\\n            revert InvalidProofType(proofRR.dnstype);\\n        }\\n    }\\n\\n    /**\\n     * @dev Attempts to verify a signed RRSET against an already known public key.\\n     * @param rrset The signed set to verify.\\n     * @param data The original data the signed set was read from.\\n     * @param proof The serialized DS or DNSKEY record to use as proof.\\n     */\\n    function verifyWithKnownKey(\\n        RRUtils.SignedSet memory rrset,\\n        RRSetWithSignature memory data,\\n        RRUtils.RRIterator memory proof\\n    ) internal view {\\n        // Check the DNSKEY's owner name matches the signer name on the RRSIG\\n        for (; !proof.done(); proof.next()) {\\n            bytes memory proofName = proof.name();\\n            if (!proofName.equals(rrset.signerName)) {\\n                revert ProofNameMismatch(rrset.signerName, proofName);\\n            }\\n\\n            bytes memory keyrdata = proof.rdata();\\n            RRUtils.DNSKEY memory dnskey = keyrdata.readDNSKEY(\\n                0,\\n                keyrdata.length\\n            );\\n            if (verifySignatureWithKey(dnskey, keyrdata, rrset, data)) {\\n                return;\\n            }\\n        }\\n        revert NoMatchingProof(rrset.signerName);\\n    }\\n\\n    /**\\n     * @dev Attempts to verify some data using a provided key and a signature.\\n     * @param dnskey The dns key record to verify the signature with.\\n     * @param rrset The signed RRSET being verified.\\n     * @param data The original data `rrset` was decoded from.\\n     * @return True iff the key verifies the signature.\\n     */\\n    function verifySignatureWithKey(\\n        RRUtils.DNSKEY memory dnskey,\\n        bytes memory keyrdata,\\n        RRUtils.SignedSet memory rrset,\\n        RRSetWithSignature memory data\\n    ) internal view returns (bool) {\\n        // TODO: Check key isn't expired, unless updating key itself\\n\\n        // The Protocol Field MUST have value 3 (RFC4034 2.1.2)\\n        if (dnskey.protocol != 3) {\\n            return false;\\n        }\\n\\n        // o The RRSIG RR's Signer's Name, Algorithm, and Key Tag fields MUST\\n        //   match the owner name, algorithm, and key tag for some DNSKEY RR in\\n        //   the zone's apex DNSKEY RRset.\\n        if (dnskey.algorithm != rrset.algorithm) {\\n            return false;\\n        }\\n        uint16 computedkeytag = keyrdata.computeKeytag();\\n        if (computedkeytag != rrset.keytag) {\\n            return false;\\n        }\\n\\n        // o The matching DNSKEY RR MUST be present in the zone's apex DNSKEY\\n        //   RRset, and MUST have the Zone Flag bit (DNSKEY RDATA Flag bit 7)\\n        //   set.\\n        if (dnskey.flags & DNSKEY_FLAG_ZONEKEY == 0) {\\n            return false;\\n        }\\n\\n        return\\n            algorithms[dnskey.algorithm].verify(keyrdata, data.rrset, data.sig);\\n    }\\n\\n    /**\\n     * @dev Attempts to verify a signed RRSET against an already known hash. This function assumes\\n     *      that the record\\n     * @param rrset The signed set to verify.\\n     * @param data The original data the signed set was read from.\\n     * @param proof The serialized DS or DNSKEY record to use as proof.\\n     */\\n    function verifyWithDS(\\n        RRUtils.SignedSet memory rrset,\\n        RRSetWithSignature memory data,\\n        RRUtils.RRIterator memory proof\\n    ) internal view {\\n        for (\\n            RRUtils.RRIterator memory iter = rrset.rrs();\\n            !iter.done();\\n            iter.next()\\n        ) {\\n            if (iter.dnstype != DNSTYPE_DNSKEY) {\\n                revert InvalidProofType(iter.dnstype);\\n            }\\n\\n            bytes memory keyrdata = iter.rdata();\\n            RRUtils.DNSKEY memory dnskey = keyrdata.readDNSKEY(\\n                0,\\n                keyrdata.length\\n            );\\n            if (verifySignatureWithKey(dnskey, keyrdata, rrset, data)) {\\n                // It's self-signed - look for a DS record to verify it.\\n                if (\\n                    verifyKeyWithDS(rrset.signerName, proof, dnskey, keyrdata)\\n                ) {\\n                    return;\\n                }\\n            }\\n        }\\n        revert NoMatchingProof(rrset.signerName);\\n    }\\n\\n    /**\\n     * @dev Attempts to verify a key using DS records.\\n     * @param keyname The DNS name of the key, in DNS label-sequence format.\\n     * @param dsrrs The DS records to use in verification.\\n     * @param dnskey The dnskey to verify.\\n     * @param keyrdata The RDATA section of the key.\\n     * @return True if a DS record verifies this key.\\n     */\\n    function verifyKeyWithDS(\\n        bytes memory keyname,\\n        RRUtils.RRIterator memory dsrrs,\\n        RRUtils.DNSKEY memory dnskey,\\n        bytes memory keyrdata\\n    ) internal view returns (bool) {\\n        uint16 keytag = keyrdata.computeKeytag();\\n        for (; !dsrrs.done(); dsrrs.next()) {\\n            bytes memory proofName = dsrrs.name();\\n            if (!proofName.equals(keyname)) {\\n                revert ProofNameMismatch(keyname, proofName);\\n            }\\n\\n            RRUtils.DS memory ds = dsrrs.data.readDS(\\n                dsrrs.rdataOffset,\\n                dsrrs.nextOffset - dsrrs.rdataOffset\\n            );\\n            if (ds.keytag != keytag) {\\n                continue;\\n            }\\n            if (ds.algorithm != dnskey.algorithm) {\\n                continue;\\n            }\\n\\n            Buffer.buffer memory buf;\\n            buf.init(keyname.length + keyrdata.length);\\n            buf.append(keyname);\\n            buf.append(keyrdata);\\n            if (verifyDSHash(ds.digestType, buf.buf, ds.digest)) {\\n                return true;\\n            }\\n        }\\n        return false;\\n    }\\n\\n    /**\\n     * @dev Attempts to verify a DS record's hash value against some data.\\n     * @param digesttype The digest ID from the DS record.\\n     * @param data The data to digest.\\n     * @param digest The digest data to check against.\\n     * @return True iff the digest matches.\\n     */\\n    function verifyDSHash(\\n        uint8 digesttype,\\n        bytes memory data,\\n        bytes memory digest\\n    ) internal view returns (bool) {\\n        if (address(digests[digesttype]) == address(0)) {\\n            return false;\\n        }\\n        return digests[digesttype].verify(data, digest);\\n    }\\n}\\n\",\"keccak256\":\"0x117f322225db656ad6fade727bbc3b9812dc5a7a34ffd79fbd251c2d81e65592\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/Owned.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev Contract mixin for 'owned' contracts.\\n */\\ncontract Owned {\\n    address public owner;\\n\\n    modifier owner_only() {\\n        require(msg.sender == owner);\\n        _;\\n    }\\n\\n    constructor() public {\\n        owner = msg.sender;\\n    }\\n\\n    function setOwner(address newOwner) public owner_only {\\n        owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x49f57dcb9d79015f917e569b4318b766bee9920f72e11a1f5331eabebfc1eb24\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"},\"contracts/dnssec-oracle/algorithms/Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC (signing) algorithm.\\n */\\ninterface Algorithm {\\n    /**\\n     * @dev Verifies a signature.\\n     * @param key The public key to verify with.\\n     * @param data The signed data to verify.\\n     * @param signature The signature to verify.\\n     * @return True iff the signature is valid.\\n     */\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata signature\\n    ) external view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0xaf6825f9852c69f8e36540821d067b4550dd2263497af9d645309b6a0c457ba6\"},\"contracts/dnssec-oracle/digests/Digest.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC digest.\\n */\\ninterface Digest {\\n    /**\\n     * @dev Verifies a cryptographic hash.\\n     * @param data The data to hash.\\n     * @param hash The hash to compare to.\\n     * @return True iff the hashed data matches the provided hash value.\\n     */\\n    function verify(bytes calldata data, bytes calldata hash)\\n        external\\n        pure\\n        virtual\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf082904d13f33cbbd613ad733ae86c5d79b5aa9afd61d6d99714d7fe8986be34\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 5022,
                "contract": "contracts/dnssec-oracle/DNSSECImpl.sol:DNSSECImpl",
                "label": "anchors",
                "offset": 0,
                "slot": "0",
                "type": "t_bytes_storage"
              },
              {
                "astId": 5979,
                "contract": "contracts/dnssec-oracle/DNSSECImpl.sol:DNSSECImpl",
                "label": "owner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 5154,
                "contract": "contracts/dnssec-oracle/DNSSECImpl.sol:DNSSECImpl",
                "label": "algorithms",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint8,t_contract(Algorithm)7075)"
              },
              {
                "astId": 5159,
                "contract": "contracts/dnssec-oracle/DNSSECImpl.sol:DNSSECImpl",
                "label": "digests",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_uint8,t_contract(Digest)8916)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_contract(Algorithm)7075": {
                "encoding": "inplace",
                "label": "contract Algorithm",
                "numberOfBytes": "20"
              },
              "t_contract(Digest)8916": {
                "encoding": "inplace",
                "label": "contract Digest",
                "numberOfBytes": "20"
              },
              "t_mapping(t_uint8,t_contract(Algorithm)7075)": {
                "encoding": "mapping",
                "key": "t_uint8",
                "label": "mapping(uint8 => contract Algorithm)",
                "numberOfBytes": "32",
                "value": "t_contract(Algorithm)7075"
              },
              "t_mapping(t_uint8,t_contract(Digest)8916)": {
                "encoding": "mapping",
                "key": "t_uint8",
                "label": "mapping(uint8 => contract Digest)",
                "numberOfBytes": "32",
                "value": "t_contract(Digest)8916"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/Owned.sol": {
        "Owned": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "setOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Contract mixin for 'owned' contracts.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_5999": {
                  "entryPoint": null,
                  "id": 5999,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610177806100326000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313af40351461003b5780638da5cb5b14610050575b600080fd5b61004e610049366004610104565b610099565b005b6000546100709073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff1633146100bd57600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006020828403121561011657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461013a57600080fd5b939250505056fea264697066735822122012abd5a6b5ea72557b00fa4832e71e363eebd52505bfbad735650431c565044a64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x177 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x104 JUMP JUMPDEST PUSH2 0x99 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x70 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0xAB 0xD5 0xA6 0xB5 0xEA PUSH19 0x557B00FA4832E71E363EEBD52505BFBAD73565 DIV BALANCE 0xC5 PUSH6 0x44A64736F6C PUSH4 0x43000811 STOP CALLER ",
              "sourceMap": "79:283:28:-:0;;;211:56;;;;;;;;;-1:-1:-1;242:5:28;:18;;-1:-1:-1;;;;;;242:18:28;250:10;242:18;;;79:283;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@owner_5979": {
                  "entryPoint": null,
                  "id": 5979,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setOwner_6011": {
                  "entryPoint": 153,
                  "id": 6011,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 260,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:556:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:239:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "277:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "286:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "289:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "279:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "279:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "213:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "224:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "231:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "220:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "220:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "210:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "210:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "203:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "203:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "200:93:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "302:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "312:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:309:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "429:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "439:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "451:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "462:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "447:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "447:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "439:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "481:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "496:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "504:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "492:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "492:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "474:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "474:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "474:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "398:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "409:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "420:4:111",
                            "type": ""
                          }
                        ],
                        "src": "328:226:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c806313af40351461003b5780638da5cb5b14610050575b600080fd5b61004e610049366004610104565b610099565b005b6000546100709073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff1633146100bd57600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006020828403121561011657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461013a57600080fd5b939250505056fea264697066735822122012abd5a6b5ea72557b00fa4832e71e363eebd52505bfbad735650431c565044a64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x104 JUMP JUMPDEST PUSH2 0x99 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x70 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0xAB 0xD5 0xA6 0xB5 0xEA PUSH19 0x557B00FA4832E71E363EEBD52505BFBAD73565 DIV BALANCE 0xC5 PUSH6 0x44A64736F6C PUSH4 0x43000811 STOP CALLER ",
              "sourceMap": "79:283:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:87;;;;;;:::i;:::-;;:::i;:::-;;100:20;;;;;;;;;;;;504:42:111;492:55;;;474:74;;462:2;447:18;100:20:28;;;;;;;273:87;181:5;;;;167:10;:19;159:28;;;;;;337:5:::1;:16:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;273:87::o;14:309:111:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;200:93;312:5;14:309;-1:-1:-1;;;14:309:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "75000",
                "executionCost": "24358",
                "totalCost": "99358"
              },
              "external": {
                "owner()": "2301",
                "setOwner(address)": "26603"
              }
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "setOwner(address)": "13af4035"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract mixin for 'owned' contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/Owned.sol\":\"Owned\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/Owned.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev Contract mixin for 'owned' contracts.\\n */\\ncontract Owned {\\n    address public owner;\\n\\n    modifier owner_only() {\\n        require(msg.sender == owner);\\n        _;\\n    }\\n\\n    constructor() public {\\n        owner = msg.sender;\\n    }\\n\\n    function setOwner(address newOwner) public owner_only {\\n        owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x49f57dcb9d79015f917e569b4318b766bee9920f72e11a1f5331eabebfc1eb24\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 5979,
                "contract": "contracts/dnssec-oracle/Owned.sol:Owned",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/RRUtils.sol": {
        "RRUtils": {
          "abi": [],
          "devdoc": {
            "details": "RRUtils is a library that provides utilities for parsing DNS resource records.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122012dead88f9f09927831ef031dad439df66993417f551313b7b7b3aa9bcf0229664736f6c63430008110033",
              "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 SLT 0xDE 0xAD DUP9 0xF9 CREATE SWAP10 0x27 DUP4 0x1E CREATE BALANCE 0xDA 0xD4 CODECOPY 0xDF PUSH7 0x993417F551313B PUSH28 0x7B3AA9BCF0229664736F6C6343000811003300000000000000000000 ",
              "sourceMap": "198:13554:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;198:13554:29;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122012dead88f9f09927831ef031dad439df66993417f551313b7b7b3aa9bcf0229664736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0xDE 0xAD DUP9 0xF9 CREATE SWAP10 0x27 DUP4 0x1E CREATE BALANCE 0xDA 0xD4 CODECOPY 0xDF PUSH7 0x993417F551313B PUSH28 0x7B3AA9BCF0229664736F6C6343000811003300000000000000000000 ",
              "sourceMap": "198:13554:29:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "compareNames(bytes memory,bytes memory)": "infinite",
                "computeKeytag(bytes memory)": "infinite",
                "done(struct RRUtils.RRIterator memory)": "infinite",
                "iterateRRs(bytes memory,uint256)": "infinite",
                "labelCount(bytes memory,uint256)": "infinite",
                "name(struct RRUtils.RRIterator memory)": "infinite",
                "nameLength(bytes memory,uint256)": "infinite",
                "next(struct RRUtils.RRIterator memory)": "infinite",
                "progress(bytes memory,uint256)": "infinite",
                "rdata(struct RRUtils.RRIterator memory)": "infinite",
                "readDNSKEY(bytes memory,uint256,uint256)": "infinite",
                "readDS(bytes memory,uint256,uint256)": "infinite",
                "readName(bytes memory,uint256)": "infinite",
                "readSignedSet(bytes memory)": "infinite",
                "rrs(struct RRUtils.SignedSet memory)": "infinite",
                "serialNumberGte(uint32,uint32)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"RRUtils is a library that provides utilities for parsing DNS resource records.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/RRUtils.sol\":\"RRUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/algorithms/Algorithm.sol": {
        "Algorithm": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "key",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "An interface for contracts implementing a DNSSEC (signing) algorithm.",
            "kind": "dev",
            "methods": {
              "verify(bytes,bytes,bytes)": {
                "details": "Verifies a signature.",
                "params": {
                  "data": "The signed data to verify.",
                  "key": "The public key to verify with.",
                  "signature": "The signature to verify."
                },
                "returns": {
                  "_0": "True iff the signature is valid."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "verify(bytes,bytes,bytes)": "de8f50a1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An interface for contracts implementing a DNSSEC (signing) algorithm.\",\"kind\":\"dev\",\"methods\":{\"verify(bytes,bytes,bytes)\":{\"details\":\"Verifies a signature.\",\"params\":{\"data\":\"The signed data to verify.\",\"key\":\"The public key to verify with.\",\"signature\":\"The signature to verify.\"},\"returns\":{\"_0\":\"True iff the signature is valid.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/algorithms/Algorithm.sol\":\"Algorithm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/algorithms/Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC (signing) algorithm.\\n */\\ninterface Algorithm {\\n    /**\\n     * @dev Verifies a signature.\\n     * @param key The public key to verify with.\\n     * @param data The signed data to verify.\\n     * @param signature The signature to verify.\\n     * @return True iff the signature is valid.\\n     */\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata signature\\n    ) external view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0xaf6825f9852c69f8e36540821d067b4550dd2263497af9d645309b6a0c457ba6\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol": {
        "DummyAlgorithm": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implements a dummy DNSSEC (signing) algorithm that approves all      signatures, for testing.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610177806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de8f50a114610030575b600080fd5b61004a61003e3660046100a7565b60019695505050505050565b604051901515815260200160405180910390f35b60008083601f84011261007057600080fd5b50813567ffffffffffffffff81111561008857600080fd5b6020830191508360208285010111156100a057600080fd5b9250929050565b600080600080600080606087890312156100c057600080fd5b863567ffffffffffffffff808211156100d857600080fd5b6100e48a838b0161005e565b909850965060208901359150808211156100fd57600080fd5b6101098a838b0161005e565b9096509450604089013591508082111561012257600080fd5b5061012f89828a0161005e565b979a969950949750929593949250505056fea2646970667358221220cc3568502069916784070b6ad8559b252304722319e2bf483bc44df81ede157564736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE8F50A1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xA7 JUMP JUMPDEST PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE4 DUP11 DUP4 DUP12 ADD PUSH2 0x5E JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x109 DUP11 DUP4 DUP12 ADD PUSH2 0x5E JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12F DUP10 DUP3 DUP11 ADD PUSH2 0x5E JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC CALLDATALOAD PUSH9 0x502069916784070B6A 0xD8 SSTORE SWAP12 0x25 0x23 DIV PUSH19 0x2319E2BF483BC44DF81EDE157564736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "165:205:31:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@verify_7096": {
                  "entryPoint": null,
                  "id": 7096,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 94,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 167,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1564:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "527:843:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "573:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "582:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "585:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "575:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "575:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "575:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "548:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "544:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "544:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "569:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "537:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "598:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "625:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "612:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "602:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "644:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "654:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "648:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "699:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "708:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "711:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "701:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "701:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "701:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "695:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "684:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "684:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "681:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "724:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "780:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "791:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "776:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "776:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "800:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "728:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "738:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "817:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "827:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "817:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "844:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "854:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "844:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "871:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "904:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "915:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "900:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "900:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "887:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "887:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "875:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "948:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "957:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "960:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "950:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "950:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "950:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "934:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "944:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "931:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "931:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "928:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "973:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1029:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1040:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1025:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1025:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1051:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "999:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "999:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "977:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "987:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1068:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1078:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1068:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1095:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "1105:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1095:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1122:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1155:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1166:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1151:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1151:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1138:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1138:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1126:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1199:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1208:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1211:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1201:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1201:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1201:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1185:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1195:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1182:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1182:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1179:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1224:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1280:9:111"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1291:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1276:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1276:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1302:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1250:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1250:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1228:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1238:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1319:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "1329:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1319:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1346:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "1356:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1346:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "453:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "464:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "476:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "484:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "492:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "500:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "508:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "516:6:111",
                            "type": ""
                          }
                        ],
                        "src": "366:1004:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1470:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1480:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1492:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1503:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1488:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1488:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1480:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1522:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1547:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1540:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1540:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1533:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1533:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1515:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1515:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1515:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1439:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1450:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1461:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1375:187:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de8f50a114610030575b600080fd5b61004a61003e3660046100a7565b60019695505050505050565b604051901515815260200160405180910390f35b60008083601f84011261007057600080fd5b50813567ffffffffffffffff81111561008857600080fd5b6020830191508360208285010111156100a057600080fd5b9250929050565b600080600080600080606087890312156100c057600080fd5b863567ffffffffffffffff808211156100d857600080fd5b6100e48a838b0161005e565b909850965060208901359150808211156100fd57600080fd5b6101098a838b0161005e565b9096509450604089013591508082111561012257600080fd5b5061012f89828a0161005e565b979a969950949750929593949250505056fea2646970667358221220cc3568502069916784070b6ad8559b252304722319e2bf483bc44df81ede157564736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE8F50A1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xA7 JUMP JUMPDEST PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE4 DUP11 DUP4 DUP12 ADD PUSH2 0x5E JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x109 DUP11 DUP4 DUP12 ADD PUSH2 0x5E JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12F DUP10 DUP3 DUP11 ADD PUSH2 0x5E JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC CALLDATALOAD PUSH9 0x502069916784070B6A 0xD8 SSTORE SWAP12 0x25 0x23 DIV PUSH19 0x2319E2BF483BC44DF81EDE157564736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "165:205:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;208:160;;;;;;:::i;:::-;357:4;208:160;;;;;;;;;;;;1540:14:111;;1533:22;1515:41;;1503:2;1488:18;208:160:31;;;;;;;14:347:111;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:111;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:1004::-;476:6;484;492;500;508;516;569:2;557:9;548:7;544:23;540:32;537:52;;;585:1;582;575:12;537:52;625:9;612:23;654:18;695:2;687:6;684:14;681:34;;;711:1;708;701:12;681:34;750:58;800:7;791:6;780:9;776:22;750:58;:::i;:::-;827:8;;-1:-1:-1;724:84:111;-1:-1:-1;915:2:111;900:18;;887:32;;-1:-1:-1;931:16:111;;;928:36;;;960:1;957;950:12;928:36;999:60;1051:7;1040:8;1029:9;1025:24;999:60;:::i;:::-;1078:8;;-1:-1:-1;973:86:111;-1:-1:-1;1166:2:111;1151:18;;1138:32;;-1:-1:-1;1182:16:111;;;1179:36;;;1211:1;1208;1201:12;1179:36;;1250:60;1302:7;1291:8;1280:9;1276:24;1250:60;:::i;:::-;366:1004;;;;-1:-1:-1;366:1004:111;;-1:-1:-1;366:1004:111;;1329:8;;366:1004;-1:-1:-1;;;366:1004:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "75000",
                "executionCost": "123",
                "totalCost": "75123"
              },
              "external": {
                "verify(bytes,bytes,bytes)": "infinite"
              }
            },
            "methodIdentifiers": {
              "verify(bytes,bytes,bytes)": "de8f50a1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements a dummy DNSSEC (signing) algorithm that approves all      signatures, for testing.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol\":\"DummyAlgorithm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/algorithms/Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC (signing) algorithm.\\n */\\ninterface Algorithm {\\n    /**\\n     * @dev Verifies a signature.\\n     * @param key The public key to verify with.\\n     * @param data The signed data to verify.\\n     * @param signature The signature to verify.\\n     * @return True iff the signature is valid.\\n     */\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata signature\\n    ) external view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0xaf6825f9852c69f8e36540821d067b4550dd2263497af9d645309b6a0c457ba6\"},\"contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./Algorithm.sol\\\";\\n\\n/**\\n * @dev Implements a dummy DNSSEC (signing) algorithm that approves all\\n *      signatures, for testing.\\n */\\ncontract DummyAlgorithm is Algorithm {\\n    function verify(\\n        bytes calldata,\\n        bytes calldata,\\n        bytes calldata\\n    ) external view override returns (bool) {\\n        return true;\\n    }\\n}\\n\",\"keccak256\":\"0x0df474d4178b1659d2869aefe90ee6680b966d9432c5b28ef388134ea6d67b58\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/algorithms/EllipticCurve.sol": {
        "EllipticCurve": {
          "abi": [],
          "devdoc": {
            "author": "Tilman Drerup;",
            "details": "NOTE: To disambiguate public keys when verifying signatures, activate          condition 'rs[1] > lowSmax' in validateSignature().",
            "kind": "dev",
            "methods": {},
            "title": "EllipticCurve",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122041beb553be2b43c1aad3020439c0ed656a7a1f42a75a5e6a69aee09848b2409764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0xBE 0xB5 MSTORE8 0xBE 0x2B NUMBER 0xC1 0xAA 0xD3 MUL DIV CODECOPY 0xC0 0xED PUSH6 0x6A7A1F42A75A 0x5E PUSH11 0x69AEE09848B2409764736F PUSH13 0x63430008110033000000000000 ",
              "sourceMap": "611:10587:32:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea264697066735822122041beb553be2b43c1aad3020439c0ed656a7a1f42a75a5e6a69aee09848b2409764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0xBE 0xB5 MSTORE8 0xBE 0x2B NUMBER 0xC1 0xAA 0xD3 MUL DIV CODECOPY 0xC0 0xED PUSH6 0x6A7A1F42A75A 0x5E PUSH11 0x69AEE09848B2409764736F PUSH13 0x63430008110033000000000000 ",
              "sourceMap": "611:10587:32:-:0;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "12600",
                "executionCost": "66",
                "totalCost": "12666"
              },
              "internal": {
                "add(uint256,uint256,uint256,uint256)": "infinite",
                "addAndReturnProjectivePoint(uint256,uint256,uint256,uint256)": "infinite",
                "addProj(uint256,uint256,uint256,uint256,uint256,uint256)": "infinite",
                "addProj2(uint256,uint256,uint256,uint256,uint256)": "infinite",
                "inverseMod(uint256,uint256)": "infinite",
                "isOnCurve(uint256,uint256)": "infinite",
                "isZeroCurve(uint256,uint256)": "infinite",
                "multipleGeneratorByScalar(uint256)": "infinite",
                "multiplyPowerBase2(uint256,uint256,uint256)": "infinite",
                "multiplyScalar(uint256,uint256,uint256)": "infinite",
                "toAffinePoint(uint256,uint256,uint256)": "infinite",
                "toProjectivePoint(uint256,uint256)": "infinite",
                "twice(uint256,uint256)": "infinite",
                "twiceProj(uint256,uint256,uint256)": "infinite",
                "validateSignature(bytes32,uint256[2] memory,uint256[2] memory)": "infinite",
                "zeroAffine()": "infinite",
                "zeroProj()": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Tilman Drerup;\",\"details\":\"NOTE: To disambiguate public keys when verifying signatures, activate          condition 'rs[1] > lowSmax' in validateSignature().\",\"kind\":\"dev\",\"methods\":{},\"title\":\"EllipticCurve\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Implements elliptic curve math; Parametrized for SECP256R1.          Includes components of code by Andreas Olofsson, Alexander Vlasov          (https://github.com/BANKEX/CurveArithmetics), and Avi Asayag          (https://github.com/orbs-network/elliptic-curve-solidity)          Source: https://github.com/tdrerup/elliptic-curve-solidity\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/algorithms/EllipticCurve.sol\":\"EllipticCurve\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/algorithms/EllipticCurve.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @title   EllipticCurve\\n *\\n * @author  Tilman Drerup;\\n *\\n * @notice  Implements elliptic curve math; Parametrized for SECP256R1.\\n *\\n *          Includes components of code by Andreas Olofsson, Alexander Vlasov\\n *          (https://github.com/BANKEX/CurveArithmetics), and Avi Asayag\\n *          (https://github.com/orbs-network/elliptic-curve-solidity)\\n *\\n *          Source: https://github.com/tdrerup/elliptic-curve-solidity\\n *\\n * @dev     NOTE: To disambiguate public keys when verifying signatures, activate\\n *          condition 'rs[1] > lowSmax' in validateSignature().\\n */\\ncontract EllipticCurve {\\n    // Set parameters for curve.\\n    uint256 constant a =\\n        0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC;\\n    uint256 constant b =\\n        0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B;\\n    uint256 constant gx =\\n        0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296;\\n    uint256 constant gy =\\n        0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5;\\n    uint256 constant p =\\n        0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\\n    uint256 constant n =\\n        0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551;\\n\\n    uint256 constant lowSmax =\\n        0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0;\\n\\n    /**\\n     * @dev Inverse of u in the field of modulo m.\\n     */\\n    function inverseMod(uint256 u, uint256 m) internal pure returns (uint256) {\\n        unchecked {\\n            if (u == 0 || u == m || m == 0) return 0;\\n            if (u > m) u = u % m;\\n\\n            int256 t1;\\n            int256 t2 = 1;\\n            uint256 r1 = m;\\n            uint256 r2 = u;\\n            uint256 q;\\n\\n            while (r2 != 0) {\\n                q = r1 / r2;\\n                (t1, t2, r1, r2) = (t2, t1 - int256(q) * t2, r2, r1 - q * r2);\\n            }\\n\\n            if (t1 < 0) return (m - uint256(-t1));\\n\\n            return uint256(t1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Transform affine coordinates into projective coordinates.\\n     */\\n    function toProjectivePoint(uint256 x0, uint256 y0)\\n        internal\\n        pure\\n        returns (uint256[3] memory P)\\n    {\\n        P[2] = addmod(0, 1, p);\\n        P[0] = mulmod(x0, P[2], p);\\n        P[1] = mulmod(y0, P[2], p);\\n    }\\n\\n    /**\\n     * @dev Add two points in affine coordinates and return projective point.\\n     */\\n    function addAndReturnProjectivePoint(\\n        uint256 x1,\\n        uint256 y1,\\n        uint256 x2,\\n        uint256 y2\\n    ) internal pure returns (uint256[3] memory P) {\\n        uint256 x;\\n        uint256 y;\\n        (x, y) = add(x1, y1, x2, y2);\\n        P = toProjectivePoint(x, y);\\n    }\\n\\n    /**\\n     * @dev Transform from projective to affine coordinates.\\n     */\\n    function toAffinePoint(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 z0\\n    ) internal pure returns (uint256 x1, uint256 y1) {\\n        uint256 z0Inv;\\n        z0Inv = inverseMod(z0, p);\\n        x1 = mulmod(x0, z0Inv, p);\\n        y1 = mulmod(y0, z0Inv, p);\\n    }\\n\\n    /**\\n     * @dev Return the zero curve in projective coordinates.\\n     */\\n    function zeroProj()\\n        internal\\n        pure\\n        returns (\\n            uint256 x,\\n            uint256 y,\\n            uint256 z\\n        )\\n    {\\n        return (0, 1, 0);\\n    }\\n\\n    /**\\n     * @dev Return the zero curve in affine coordinates.\\n     */\\n    function zeroAffine() internal pure returns (uint256 x, uint256 y) {\\n        return (0, 0);\\n    }\\n\\n    /**\\n     * @dev Check if the curve is the zero curve.\\n     */\\n    function isZeroCurve(uint256 x0, uint256 y0)\\n        internal\\n        pure\\n        returns (bool isZero)\\n    {\\n        if (x0 == 0 && y0 == 0) {\\n            return true;\\n        }\\n        return false;\\n    }\\n\\n    /**\\n     * @dev Check if a point in affine coordinates is on the curve.\\n     */\\n    function isOnCurve(uint256 x, uint256 y) internal pure returns (bool) {\\n        if (0 == x || x == p || 0 == y || y == p) {\\n            return false;\\n        }\\n\\n        uint256 LHS = mulmod(y, y, p); // y^2\\n        uint256 RHS = mulmod(mulmod(x, x, p), x, p); // x^3\\n\\n        if (a != 0) {\\n            RHS = addmod(RHS, mulmod(x, a, p), p); // x^3 + a*x\\n        }\\n        if (b != 0) {\\n            RHS = addmod(RHS, b, p); // x^3 + a*x + b\\n        }\\n\\n        return LHS == RHS;\\n    }\\n\\n    /**\\n     * @dev Double an elliptic curve point in projective coordinates. See\\n     * https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates\\n     */\\n    function twiceProj(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 z0\\n    )\\n        internal\\n        pure\\n        returns (\\n            uint256 x1,\\n            uint256 y1,\\n            uint256 z1\\n        )\\n    {\\n        uint256 t;\\n        uint256 u;\\n        uint256 v;\\n        uint256 w;\\n\\n        if (isZeroCurve(x0, y0)) {\\n            return zeroProj();\\n        }\\n\\n        u = mulmod(y0, z0, p);\\n        u = mulmod(u, 2, p);\\n\\n        v = mulmod(u, x0, p);\\n        v = mulmod(v, y0, p);\\n        v = mulmod(v, 2, p);\\n\\n        x0 = mulmod(x0, x0, p);\\n        t = mulmod(x0, 3, p);\\n\\n        z0 = mulmod(z0, z0, p);\\n        z0 = mulmod(z0, a, p);\\n        t = addmod(t, z0, p);\\n\\n        w = mulmod(t, t, p);\\n        x0 = mulmod(2, v, p);\\n        w = addmod(w, p - x0, p);\\n\\n        x0 = addmod(v, p - w, p);\\n        x0 = mulmod(t, x0, p);\\n        y0 = mulmod(y0, u, p);\\n        y0 = mulmod(y0, y0, p);\\n        y0 = mulmod(2, y0, p);\\n        y1 = addmod(x0, p - y0, p);\\n\\n        x1 = mulmod(u, w, p);\\n\\n        z1 = mulmod(u, u, p);\\n        z1 = mulmod(z1, u, p);\\n    }\\n\\n    /**\\n     * @dev Add two elliptic curve points in projective coordinates. See\\n     * https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates\\n     */\\n    function addProj(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 z0,\\n        uint256 x1,\\n        uint256 y1,\\n        uint256 z1\\n    )\\n        internal\\n        pure\\n        returns (\\n            uint256 x2,\\n            uint256 y2,\\n            uint256 z2\\n        )\\n    {\\n        uint256 t0;\\n        uint256 t1;\\n        uint256 u0;\\n        uint256 u1;\\n\\n        if (isZeroCurve(x0, y0)) {\\n            return (x1, y1, z1);\\n        } else if (isZeroCurve(x1, y1)) {\\n            return (x0, y0, z0);\\n        }\\n\\n        t0 = mulmod(y0, z1, p);\\n        t1 = mulmod(y1, z0, p);\\n\\n        u0 = mulmod(x0, z1, p);\\n        u1 = mulmod(x1, z0, p);\\n\\n        if (u0 == u1) {\\n            if (t0 == t1) {\\n                return twiceProj(x0, y0, z0);\\n            } else {\\n                return zeroProj();\\n            }\\n        }\\n\\n        (x2, y2, z2) = addProj2(mulmod(z0, z1, p), u0, u1, t1, t0);\\n    }\\n\\n    /**\\n     * @dev Helper function that splits addProj to avoid too many local variables.\\n     */\\n    function addProj2(\\n        uint256 v,\\n        uint256 u0,\\n        uint256 u1,\\n        uint256 t1,\\n        uint256 t0\\n    )\\n        private\\n        pure\\n        returns (\\n            uint256 x2,\\n            uint256 y2,\\n            uint256 z2\\n        )\\n    {\\n        uint256 u;\\n        uint256 u2;\\n        uint256 u3;\\n        uint256 w;\\n        uint256 t;\\n\\n        t = addmod(t0, p - t1, p);\\n        u = addmod(u0, p - u1, p);\\n        u2 = mulmod(u, u, p);\\n\\n        w = mulmod(t, t, p);\\n        w = mulmod(w, v, p);\\n        u1 = addmod(u1, u0, p);\\n        u1 = mulmod(u1, u2, p);\\n        w = addmod(w, p - u1, p);\\n\\n        x2 = mulmod(u, w, p);\\n\\n        u3 = mulmod(u2, u, p);\\n        u0 = mulmod(u0, u2, p);\\n        u0 = addmod(u0, p - w, p);\\n        t = mulmod(t, u0, p);\\n        t0 = mulmod(t0, u3, p);\\n\\n        y2 = addmod(t, p - t0, p);\\n\\n        z2 = mulmod(u3, v, p);\\n    }\\n\\n    /**\\n     * @dev Add two elliptic curve points in affine coordinates.\\n     */\\n    function add(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 x1,\\n        uint256 y1\\n    ) internal pure returns (uint256, uint256) {\\n        uint256 z0;\\n\\n        (x0, y0, z0) = addProj(x0, y0, 1, x1, y1, 1);\\n\\n        return toAffinePoint(x0, y0, z0);\\n    }\\n\\n    /**\\n     * @dev Double an elliptic curve point in affine coordinates.\\n     */\\n    function twice(uint256 x0, uint256 y0)\\n        internal\\n        pure\\n        returns (uint256, uint256)\\n    {\\n        uint256 z0;\\n\\n        (x0, y0, z0) = twiceProj(x0, y0, 1);\\n\\n        return toAffinePoint(x0, y0, z0);\\n    }\\n\\n    /**\\n     * @dev Multiply an elliptic curve point by a 2 power base (i.e., (2^exp)*P)).\\n     */\\n    function multiplyPowerBase2(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 exp\\n    ) internal pure returns (uint256, uint256) {\\n        uint256 base2X = x0;\\n        uint256 base2Y = y0;\\n        uint256 base2Z = 1;\\n\\n        for (uint256 i = 0; i < exp; i++) {\\n            (base2X, base2Y, base2Z) = twiceProj(base2X, base2Y, base2Z);\\n        }\\n\\n        return toAffinePoint(base2X, base2Y, base2Z);\\n    }\\n\\n    /**\\n     * @dev Multiply an elliptic curve point by a scalar.\\n     */\\n    function multiplyScalar(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 scalar\\n    ) internal pure returns (uint256 x1, uint256 y1) {\\n        if (scalar == 0) {\\n            return zeroAffine();\\n        } else if (scalar == 1) {\\n            return (x0, y0);\\n        } else if (scalar == 2) {\\n            return twice(x0, y0);\\n        }\\n\\n        uint256 base2X = x0;\\n        uint256 base2Y = y0;\\n        uint256 base2Z = 1;\\n        uint256 z1 = 1;\\n        x1 = x0;\\n        y1 = y0;\\n\\n        if (scalar % 2 == 0) {\\n            x1 = y1 = 0;\\n        }\\n\\n        scalar = scalar >> 1;\\n\\n        while (scalar > 0) {\\n            (base2X, base2Y, base2Z) = twiceProj(base2X, base2Y, base2Z);\\n\\n            if (scalar % 2 == 1) {\\n                (x1, y1, z1) = addProj(base2X, base2Y, base2Z, x1, y1, z1);\\n            }\\n\\n            scalar = scalar >> 1;\\n        }\\n\\n        return toAffinePoint(x1, y1, z1);\\n    }\\n\\n    /**\\n     * @dev Multiply the curve's generator point by a scalar.\\n     */\\n    function multipleGeneratorByScalar(uint256 scalar)\\n        internal\\n        pure\\n        returns (uint256, uint256)\\n    {\\n        return multiplyScalar(gx, gy, scalar);\\n    }\\n\\n    /**\\n     * @dev Validate combination of message, signature, and public key.\\n     */\\n    function validateSignature(\\n        bytes32 message,\\n        uint256[2] memory rs,\\n        uint256[2] memory Q\\n    ) internal pure returns (bool) {\\n        // To disambiguate between public key solutions, include comment below.\\n        if (rs[0] == 0 || rs[0] >= n || rs[1] == 0) {\\n            // || rs[1] > lowSmax)\\n            return false;\\n        }\\n        if (!isOnCurve(Q[0], Q[1])) {\\n            return false;\\n        }\\n\\n        uint256 x1;\\n        uint256 x2;\\n        uint256 y1;\\n        uint256 y2;\\n\\n        uint256 sInv = inverseMod(rs[1], n);\\n        (x1, y1) = multiplyScalar(gx, gy, mulmod(uint256(message), sInv, n));\\n        (x2, y2) = multiplyScalar(Q[0], Q[1], mulmod(rs[0], sInv, n));\\n        uint256[3] memory P = addAndReturnProjectivePoint(x1, y1, x2, y2);\\n\\n        if (P[2] == 0) {\\n            return false;\\n        }\\n\\n        uint256 Px = inverseMod(P[2], p);\\n        Px = mulmod(P[0], mulmod(Px, Px, p), p);\\n\\n        return Px % n == rs[0];\\n    }\\n}\\n\",\"keccak256\":\"0xbe9e9eed22695317ed119b4e930a70d1427ec4449960ab6e3481dcba26ad532d\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Implements elliptic curve math; Parametrized for SECP256R1.          Includes components of code by Andreas Olofsson, Alexander Vlasov          (https://github.com/BANKEX/CurveArithmetics), and Avi Asayag          (https://github.com/orbs-network/elliptic-curve-solidity)          Source: https://github.com/tdrerup/elliptic-curve-solidity",
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol": {
        "ModexpPrecompile": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e1c90e74498cbaf52303b0fa5e22abeb786a73700c33c3369bc6f2feaa944b764736f6c63430008110033",
              "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 0xE SHR SWAP1 0xE7 DIFFICULTY SWAP9 0xCB 0xAF MSTORE ADDRESS EXTCODESIZE 0xF 0xA5 0xE2 0x2A 0xBE 0xB7 DUP7 0xA7 CALLDATACOPY STOP 0xC3 EXTCODECOPY CALLER PUSH10 0xBC6F2FEAA944B764736F PUSH13 0x63430008110033000000000000 ",
              "sourceMap": "25:810:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;25:810:33;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e1c90e74498cbaf52303b0fa5e22abeb786a73700c33c3369bc6f2feaa944b764736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE SHR SWAP1 0xE7 DIFFICULTY SWAP9 0xCB 0xAF MSTORE ADDRESS EXTCODESIZE 0xF 0xA5 0xE2 0x2A 0xBE 0xB7 DUP7 0xA7 CALLDATACOPY STOP 0xC3 EXTCODECOPY CALLER PUSH10 0xBC6F2FEAA944B764736F PUSH13 0x63430008110033000000000000 ",
              "sourceMap": "25:810:33:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "modexp(bytes memory,bytes memory,bytes memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol\":\"ModexpPrecompile\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary ModexpPrecompile {\\n    /**\\n     * @dev Computes (base ^ exponent) % modulus over big numbers.\\n     */\\n    function modexp(\\n        bytes memory base,\\n        bytes memory exponent,\\n        bytes memory modulus\\n    ) internal view returns (bool success, bytes memory output) {\\n        bytes memory input = abi.encodePacked(\\n            uint256(base.length),\\n            uint256(exponent.length),\\n            uint256(modulus.length),\\n            base,\\n            exponent,\\n            modulus\\n        );\\n\\n        output = new bytes(modulus.length);\\n\\n        assembly {\\n            success := staticcall(\\n                gas(),\\n                5,\\n                add(input, 32),\\n                mload(input),\\n                add(output, 32),\\n                mload(modulus)\\n            )\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb3d46284534eb99061d4c79968c2d0420b63a6649d118ef2ea3608396b85de3f\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol": {
        "P256SHA256Algorithm": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "key",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "verify(bytes,bytes,bytes)": {
                "details": "Verifies a signature.",
                "params": {
                  "data": "The signed data to verify.",
                  "key": "The public key to verify with.",
                  "signature": "The signature to verify."
                },
                "returns": {
                  "_0": "True iff the signature is valid."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061114c806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de8f50a114610030575b600080fd5b61004361003e366004610f94565b610057565b604051901515815260200160405180910390f35b60006101316002868660405161006e92919061102e565b602060405180830381855afa15801561008b573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906100ae919061103e565b6100ed85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061013c92505050565b61012c8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506101e592505050565b61027e565b979650505050505050565b610144610f16565b81516040146101b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c69642070323536207369676e6174757265206c656e67746800000060448201526064015b60405180910390fd5b60408051808201909152806101ca846000610485565b81526020908101906101dd908590610485565b905292915050565b6101ed610f16565b8151604414610258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642070323536206b6579206c656e67746800000000000000000060448201526064016101ab565b604080518082019091528061026e846004610485565b81526020016101dd846024610485565b815160009015806102b0575082517fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63255111155b806102bd57506020830151155b156102ca5750600061047e565b815160208301516102db91906104a9565b6102e75750600061047e565b60008080808061031e88600160200201517fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325516105cf565b905061038e7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f57fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551848d09610669565b885160208a01518b519398509195506103ce929091907fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63255190859009610669565b909450915060006103e186858786610739565b60408101519091506000036103ff576000965050505050505061047e565b600061042682600260200201516ffffffffeffffffffffffffffffffffff60601b196105cf565b90506ffffffffeffffffffffffffffffffffff60601b19808283098351098a519091506104737fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63255183611086565b149750505050505050505b9392505050565b81516000906104958360206110f0565b11156104a057600080fd5b50016020015190565b60008215806104cb57506ffffffffeffffffffffffffffffffffff60601b1983145b806104d4575081155b806104f257506ffffffffeffffffffffffffffffffffff60601b1982145b156104ff575060006105c9565b60006ffffffffeffffffffffffffffffffffff60601b19838409905060006ffffffffeffffffffffffffffffffffff60601b19856ffffffffeffffffffffffffffffffffff60601b198788090990506ffffffffeffffffffffffffffffffffff60601b19807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709820890506ffffffffeffffffffffffffffffffffff60601b197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b820890501490505b92915050565b60008215806105dd57508183145b806105e6575081155b156105f3575060006105c9565b8183111561060e5781838161060a5761060a611057565b0692505b600060018385835b81156106455781838161062b5761062b611057565b949594048581029094039391928383029003919050610616565b600085121561065d5750505090830191506105c99050565b50929695505050505050565b60008082600003610681576000805b91509150610731565b82600103610693575083905082610731565b826002036106a557610678858561075f565b508390508281816001806106ba600288611086565b6000036106c957600094508495505b600187901c96505b861561071d576106e284848461078f565b919550935091506106f4600288611086565b60010361071157610709848484898986610a83565b919750955090505b600187901c96506106d1565b610728868683610ba6565b95509550505050505b935093915050565b610741610f34565b60008061075087878787610c08565b90925090506101318282610c3d565b60008060006107708585600161078f565b91965094509050610782858583610ba6565b92509250505b9250929050565b60008060008060008060006107a48a8a610ca8565b156107bd57600060018196509650965050505050610a7a565b6ffffffffeffffffffffffffffffffffff60601b19888a0992506ffffffffeffffffffffffffffffffffff60601b196002840992506ffffffffeffffffffffffffffffffffff60601b198a840991506ffffffffeffffffffffffffffffffffff60601b1989830991506ffffffffeffffffffffffffffffffffff60601b196002830991506ffffffffeffffffffffffffffffffffff60601b198a8b0999506ffffffffeffffffffffffffffffffffff60601b1960038b0993506ffffffffeffffffffffffffffffffffff60601b1988890997506ffffffffeffffffffffffffffffffffff60601b197fffffffff00000001000000000000000000000000fffffffffffffffffffffffc890997506ffffffffeffffffffffffffffffffffff60601b1988850893506ffffffffeffffffffffffffffffffffff60601b1984850990506ffffffffeffffffffffffffffffffffff60601b198260020999506ffffffffeffffffffffffffffffffffff60601b1961094c8b6ffffffffeffffffffffffffffffffffff60601b19611103565b820890506ffffffffeffffffffffffffffffffffff60601b19610983826ffffffffeffffffffffffffffffffffff60601b19611103565b830899506ffffffffeffffffffffffffffffffffff60601b198a850999506ffffffffeffffffffffffffffffffffff60601b19838a0998506ffffffffeffffffffffffffffffffffff60601b19898a0998506ffffffffeffffffffffffffffffffffff60601b198960020998506ffffffffeffffffffffffffffffffffff60601b19610a238a6ffffffffeffffffffffffffffffffffff60601b19611103565b8b0895506ffffffffeffffffffffffffffffffffff60601b1981840996506ffffffffeffffffffffffffffffffffff60601b1983840994506ffffffffeffffffffffffffffffffffff60601b198386099450505050505b93509350939050565b6000806000806000806000610a988d8d610ca8565b15610aaf5789898996509650965050505050610b9a565b610ab98a8a610ca8565b15610ad0578c8c8c96509650965050505050610b9a565b6ffffffffeffffffffffffffffffffffff60601b19888d0993506ffffffffeffffffffffffffffffffffff60601b198b8a0992506ffffffffeffffffffffffffffffffffff60601b19888e0991506ffffffffeffffffffffffffffffffffff60601b198b8b099050808203610b6a57828403610b6057610b518d8d8d61078f565b96509650965050505050610b9a565b6000600181610b51565b610b8e6ffffffffeffffffffffffffffffffffff60601b19898d0983838688610ccc565b91985096509450505050505b96509650969350505050565b6000806000610bc9846ffffffffeffffffffffffffffffffffff60601b196105cf565b90506ffffffffeffffffffffffffffffffffff60601b1981870992506ffffffffeffffffffffffffffffffffff60601b19818609915050935093915050565b6000806000610c1d8787600188886001610a83565b91985096509050610c2f878783610ba6565b925092505094509492505050565b610c45610f34565b6ffffffffeffffffffffffffffffffffff60601b196001600008604082018190526ffffffffeffffffffffffffffffffffff60601b19908409815260408101516ffffffffeffffffffffffffffffffffff60601b19908309602082015292915050565b600082158015610cb6575081155b15610cc3575060016105c9565b50600092915050565b6000808080808080806ffffffffeffffffffffffffffffffffff60601b19610d088b6ffffffffeffffffffffffffffffffffff60601b19611103565b8a0890506ffffffffeffffffffffffffffffffffff60601b19610d3f8c6ffffffffeffffffffffffffffffffffff60601b19611103565b8d0894506ffffffffeffffffffffffffffffffffff60601b1985860993506ffffffffeffffffffffffffffffffffff60601b1981820991506ffffffffeffffffffffffffffffffffff60601b198d830991506ffffffffeffffffffffffffffffffffff60601b198c8c089a506ffffffffeffffffffffffffffffffffff60601b19848c099a506ffffffffeffffffffffffffffffffffff60601b19610df88c6ffffffffeffffffffffffffffffffffff60601b19611103565b830891506ffffffffeffffffffffffffffffffffff60601b1982860997506ffffffffeffffffffffffffffffffffff60601b1985850992506ffffffffeffffffffffffffffffffffff60601b19848d099b506ffffffffeffffffffffffffffffffffff60601b19610e7d836ffffffffeffffffffffffffffffffffff60601b19611103565b8d089b506ffffffffeffffffffffffffffffffffff60601b198c820990506ffffffffeffffffffffffffffffffffff60601b19838a0998506ffffffffeffffffffffffffffffffffff60601b19610ee88a6ffffffffeffffffffffffffffffffffff60601b19611103565b820896506ffffffffeffffffffffffffffffffffff60601b198d840995505050505050955095509592505050565b60405180604001604052806002906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60008083601f840112610f6457600080fd5b50813567ffffffffffffffff811115610f7c57600080fd5b60208301915083602082850101111561078857600080fd5b60008060008060008060608789031215610fad57600080fd5b863567ffffffffffffffff80821115610fc557600080fd5b610fd18a838b01610f52565b90985096506020890135915080821115610fea57600080fd5b610ff68a838b01610f52565b9096509450604089013591508082111561100f57600080fd5b5061101c89828a01610f52565b979a9699509497509295939492505050565b8183823760009101908152919050565b60006020828403121561105057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826110bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105c9576105c96110c1565b818103818111156105c9576105c96110c156fea26469706673582212209e8b22686411df24f52aa7eaef7c99f89298dd4cc69e8163d2245205268fec1164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE8F50A1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x131 PUSH1 0x2 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x6E SWAP3 SWAP2 SWAP1 PUSH2 0x102E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x103E JUMP JUMPDEST PUSH2 0xED DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x13C SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x12C DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1E5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x27E JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x144 PUSH2 0xF16 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 EQ PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642070323536207369676E6174757265206C656E677468000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x1CA DUP5 PUSH1 0x0 PUSH2 0x485 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1DD SWAP1 DUP6 SWAP1 PUSH2 0x485 JUMP JUMPDEST SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1ED PUSH2 0xF16 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x44 EQ PUSH2 0x258 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642070323536206B6579206C656E677468000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x26E DUP5 PUSH1 0x4 PUSH2 0x485 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DD DUP5 PUSH1 0x24 PUSH2 0x485 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 ISZERO DUP1 PUSH2 0x2B0 JUMPI POP DUP3 MLOAD PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 GT ISZERO JUMPDEST DUP1 PUSH2 0x2BD JUMPI POP PUSH1 0x20 DUP4 ADD MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x2CA JUMPI POP PUSH1 0x0 PUSH2 0x47E JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x2DB SWAP2 SWAP1 PUSH2 0x4A9 JUMP JUMPDEST PUSH2 0x2E7 JUMPI POP PUSH1 0x0 PUSH2 0x47E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x31E DUP9 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 PUSH2 0x5CF JUMP JUMPDEST SWAP1 POP PUSH2 0x38E PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 DUP5 DUP14 MULMOD PUSH2 0x669 JUMP JUMPDEST DUP9 MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP12 MLOAD SWAP4 SWAP9 POP SWAP2 SWAP6 POP PUSH2 0x3CE SWAP3 SWAP1 SWAP2 SWAP1 PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 SWAP1 DUP6 SWAP1 MULMOD PUSH2 0x669 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 PUSH2 0x3E1 DUP7 DUP6 DUP8 DUP7 PUSH2 0x739 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SUB PUSH2 0x3FF JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x47E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x426 DUP3 PUSH1 0x2 PUSH1 0x20 MUL ADD MLOAD PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x5CF JUMP JUMPDEST SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP1 DUP3 DUP4 MULMOD DUP4 MLOAD MULMOD DUP11 MLOAD SWAP1 SWAP2 POP PUSH2 0x473 PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 DUP4 PUSH2 0x1086 JUMP JUMPDEST EQ SWAP8 POP POP POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x495 DUP4 PUSH1 0x20 PUSH2 0x10F0 JUMP JUMPDEST GT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4CB JUMPI POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 EQ JUMPDEST DUP1 PUSH2 0x4D4 JUMPI POP DUP2 ISZERO JUMPDEST DUP1 PUSH2 0x4F2 JUMPI POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP3 EQ JUMPDEST ISZERO PUSH2 0x4FF JUMPI POP PUSH1 0x0 PUSH2 0x5C9 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP5 MULMOD SWAP1 POP PUSH1 0x0 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP6 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP8 DUP9 MULMOD MULMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP1 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC DUP8 MULMOD DUP3 ADDMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH32 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B DUP3 ADDMOD SWAP1 POP EQ SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x5DD JUMPI POP DUP2 DUP4 EQ JUMPDEST DUP1 PUSH2 0x5E6 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x5F3 JUMPI POP PUSH1 0x0 PUSH2 0x5C9 JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x60E JUMPI DUP2 DUP4 DUP2 PUSH2 0x60A JUMPI PUSH2 0x60A PUSH2 0x1057 JUMP JUMPDEST MOD SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP6 DUP4 JUMPDEST DUP2 ISZERO PUSH2 0x645 JUMPI DUP2 DUP4 DUP2 PUSH2 0x62B JUMPI PUSH2 0x62B PUSH2 0x1057 JUMP JUMPDEST SWAP5 SWAP6 SWAP5 DIV DUP6 DUP2 MUL SWAP1 SWAP5 SUB SWAP4 SWAP2 SWAP3 DUP4 DUP4 MUL SWAP1 SUB SWAP2 SWAP1 POP PUSH2 0x616 JUMP JUMPDEST PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x65D JUMPI POP POP POP SWAP1 DUP4 ADD SWAP2 POP PUSH2 0x5C9 SWAP1 POP JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x0 SUB PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x731 JUMP JUMPDEST DUP3 PUSH1 0x1 SUB PUSH2 0x693 JUMPI POP DUP4 SWAP1 POP DUP3 PUSH2 0x731 JUMP JUMPDEST DUP3 PUSH1 0x2 SUB PUSH2 0x6A5 JUMPI PUSH2 0x678 DUP6 DUP6 PUSH2 0x75F JUMP JUMPDEST POP DUP4 SWAP1 POP DUP3 DUP2 DUP2 PUSH1 0x1 DUP1 PUSH2 0x6BA PUSH1 0x2 DUP9 PUSH2 0x1086 JUMP JUMPDEST PUSH1 0x0 SUB PUSH2 0x6C9 JUMPI PUSH1 0x0 SWAP5 POP DUP5 SWAP6 POP JUMPDEST PUSH1 0x1 DUP8 SWAP1 SHR SWAP7 POP JUMPDEST DUP7 ISZERO PUSH2 0x71D JUMPI PUSH2 0x6E2 DUP5 DUP5 DUP5 PUSH2 0x78F JUMP JUMPDEST SWAP2 SWAP6 POP SWAP4 POP SWAP2 POP PUSH2 0x6F4 PUSH1 0x2 DUP9 PUSH2 0x1086 JUMP JUMPDEST PUSH1 0x1 SUB PUSH2 0x711 JUMPI PUSH2 0x709 DUP5 DUP5 DUP5 DUP10 DUP10 DUP7 PUSH2 0xA83 JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP JUMPDEST PUSH1 0x1 DUP8 SWAP1 SHR SWAP7 POP PUSH2 0x6D1 JUMP JUMPDEST PUSH2 0x728 DUP7 DUP7 DUP4 PUSH2 0xBA6 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x741 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x750 DUP8 DUP8 DUP8 DUP8 PUSH2 0xC08 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x131 DUP3 DUP3 PUSH2 0xC3D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x770 DUP6 DUP6 PUSH1 0x1 PUSH2 0x78F JUMP JUMPDEST SWAP2 SWAP7 POP SWAP5 POP SWAP1 POP PUSH2 0x782 DUP6 DUP6 DUP4 PUSH2 0xBA6 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x7A4 DUP11 DUP11 PUSH2 0xCA8 JUMP JUMPDEST ISZERO PUSH2 0x7BD JUMPI PUSH1 0x0 PUSH1 0x1 DUP2 SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP POP PUSH2 0xA7A JUMP JUMPDEST PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP11 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH1 0x2 DUP5 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP11 DUP5 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP10 DUP4 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH1 0x2 DUP4 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP11 DUP12 MULMOD SWAP10 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH1 0x3 DUP12 MULMOD SWAP4 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP10 MULMOD SWAP8 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC DUP10 MULMOD SWAP8 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP6 ADDMOD SWAP4 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP5 DUP6 MULMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP3 PUSH1 0x2 MULMOD SWAP10 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x94C DUP12 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP3 ADDMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x983 DUP3 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP4 ADDMOD SWAP10 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP11 DUP6 MULMOD SWAP10 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP11 MULMOD SWAP9 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP10 DUP11 MULMOD SWAP9 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP10 PUSH1 0x2 MULMOD SWAP9 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xA23 DUP11 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP12 ADDMOD SWAP6 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP2 DUP5 MULMOD SWAP7 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP5 MULMOD SWAP5 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP7 MULMOD SWAP5 POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA98 DUP14 DUP14 PUSH2 0xCA8 JUMP JUMPDEST ISZERO PUSH2 0xAAF JUMPI DUP10 DUP10 DUP10 SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP POP PUSH2 0xB9A JUMP JUMPDEST PUSH2 0xAB9 DUP11 DUP11 PUSH2 0xCA8 JUMP JUMPDEST ISZERO PUSH2 0xAD0 JUMPI DUP13 DUP13 DUP13 SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP POP PUSH2 0xB9A JUMP JUMPDEST PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP14 MULMOD SWAP4 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP12 DUP11 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP15 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP12 DUP12 MULMOD SWAP1 POP DUP1 DUP3 SUB PUSH2 0xB6A JUMPI DUP3 DUP5 SUB PUSH2 0xB60 JUMPI PUSH2 0xB51 DUP14 DUP14 DUP14 PUSH2 0x78F JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP POP PUSH2 0xB9A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0xB51 JUMP JUMPDEST PUSH2 0xB8E PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP10 DUP14 MULMOD DUP4 DUP4 DUP7 DUP9 PUSH2 0xCCC JUMP JUMPDEST SWAP2 SWAP9 POP SWAP7 POP SWAP5 POP POP POP POP POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBC9 DUP5 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x5CF JUMP JUMPDEST SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP2 DUP8 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP2 DUP7 MULMOD SWAP2 POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC1D DUP8 DUP8 PUSH1 0x1 DUP9 DUP9 PUSH1 0x1 PUSH2 0xA83 JUMP JUMPDEST SWAP2 SWAP9 POP SWAP7 POP SWAP1 POP PUSH2 0xC2F DUP8 DUP8 DUP4 PUSH2 0xBA6 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC45 PUSH2 0xF34 JUMP JUMPDEST PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH1 0x1 PUSH1 0x0 ADDMOD PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 DUP5 MULMOD DUP2 MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 DUP4 MULMOD PUSH1 0x20 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO PUSH2 0xCB6 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xCC3 JUMPI POP PUSH1 0x1 PUSH2 0x5C9 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xD08 DUP12 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP11 ADDMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xD3F DUP13 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP14 ADDMOD SWAP5 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP6 DUP7 MULMOD SWAP4 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP2 DUP3 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP14 DUP4 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP13 DUP13 ADDMOD SWAP11 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP5 DUP13 MULMOD SWAP11 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xDF8 DUP13 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP4 ADDMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP3 DUP7 MULMOD SWAP8 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP6 DUP6 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP5 DUP14 MULMOD SWAP12 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xE7D DUP4 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP14 ADDMOD SWAP12 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP13 DUP3 MULMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP11 MULMOD SWAP9 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xEE8 DUP11 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP3 ADDMOD SWAP7 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP14 DUP5 MULMOD SWAP6 POP POP POP POP POP POP SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xF64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xFAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFD1 DUP11 DUP4 DUP12 ADD PUSH2 0xF52 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xFEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFF6 DUP11 DUP4 DUP12 ADD PUSH2 0xF52 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x100F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101C DUP10 DUP3 DUP11 ADD PUSH2 0xF52 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1050 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x10BC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x10C1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x10C1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 DUP12 0x22 PUSH9 0x6411DF24F52AA7EAEF PUSH29 0x99F89298DD4CC69E8163D2245205268FEC1164736F6C63430008110033 ",
              "sourceMap": "110:1192:34:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@addAndReturnProjectivePoint_7315": {
                  "entryPoint": 1849,
                  "id": 7315,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@addProj2_8013": {
                  "entryPoint": 3276,
                  "id": 8013,
                  "parameterSlots": 5,
                  "returnSlots": 3
                },
                "@addProj_7839": {
                  "entryPoint": 2691,
                  "id": 7839,
                  "parameterSlots": 6,
                  "returnSlots": 3
                },
                "@add_8053": {
                  "entryPoint": 3080,
                  "id": 8053,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@inverseMod_7227": {
                  "entryPoint": 1487,
                  "id": 7227,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isOnCurve_7493": {
                  "entryPoint": 1193,
                  "id": 7493,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isZeroCurve_7409": {
                  "entryPoint": 3240,
                  "id": 7409,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@multiplyScalar_8276": {
                  "entryPoint": 1641,
                  "id": 8276,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@parseKey_8612": {
                  "entryPoint": 485,
                  "id": 8612,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@parseSignature_8578": {
                  "entryPoint": 316,
                  "id": 8578,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@readBytes32_4612": {
                  "entryPoint": 1157,
                  "id": 4612,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@toAffinePoint_7356": {
                  "entryPoint": 2982,
                  "id": 7356,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@toProjectivePoint_7274": {
                  "entryPoint": 3133,
                  "id": 7274,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@twiceProj_7713": {
                  "entryPoint": 1935,
                  "id": 7713,
                  "parameterSlots": 3,
                  "returnSlots": 3
                },
                "@twice_8086": {
                  "entryPoint": 1887,
                  "id": 8086,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@validateSignature_8455": {
                  "entryPoint": 638,
                  "id": 8455,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@verify_8544": {
                  "entryPoint": 87,
                  "id": 8544,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@zeroAffine_7385": {
                  "entryPoint": null,
                  "id": 7385,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@zeroProj_7372": {
                  "entryPoint": null,
                  "id": 7372,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 3922,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 4158,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 3988,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 4142,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_27aebb422726d9dacb6497ba4421df0cdeaf42405bd6cfb285d8371f2f1f07dc__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f4db4179b6b12b07a3e6afd09ae307d93537f5fd420df2f4d89b9e7e20b6a8a6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 4336,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 4355,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 4230,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 4289,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 4183,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3840:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "527:843:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "573:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "582:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "585:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "575:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "575:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "575:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "548:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "544:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "544:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "569:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "537:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "598:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "625:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "612:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "602:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "644:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "654:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "648:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "699:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "708:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "711:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "701:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "701:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "701:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "695:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "684:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "684:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "681:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "724:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "780:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "791:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "776:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "776:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "800:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "728:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "738:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "817:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "827:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "817:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "844:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "854:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "844:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "871:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "904:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "915:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "900:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "900:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "887:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "887:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "875:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "948:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "957:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "960:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "950:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "950:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "950:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "934:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "944:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "931:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "931:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "928:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "973:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1029:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1040:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1025:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1025:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1051:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "999:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "999:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "977:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "987:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1068:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1078:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1068:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1095:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "1105:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1095:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1122:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1155:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1166:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1151:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1151:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1138:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1138:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1126:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1199:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1208:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1211:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1201:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1201:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1201:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1185:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1195:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1182:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1182:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1179:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1224:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1280:9:111"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1291:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1276:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1276:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1302:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1250:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1250:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1228:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1238:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1319:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "1329:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1319:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1346:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "1356:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1346:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "453:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "464:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "476:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "484:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "492:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "500:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "508:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "516:6:111",
                            "type": ""
                          }
                        ],
                        "src": "366:1004:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1470:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1480:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1492:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1503:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1488:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1488:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1480:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1522:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1547:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1540:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1540:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1533:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1533:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1515:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1515:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1515:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1439:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1450:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1461:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1375:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1714:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1737:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1742:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1750:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1724:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1724:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1724:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1766:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1780:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1785:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1776:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1776:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1770:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1808:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1812:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1801:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1801:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1801:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1823:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1830:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1823:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1682:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1687:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1695:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1706:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1567:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1924:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1970:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1979:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1982:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1972:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1972:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1972:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1945:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1954:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1941:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1941:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1966:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1937:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1937:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1934:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1995:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2011:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2005:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2005:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1995:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1890:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1901:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1913:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1843:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2206:179:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2223:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2234:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2216:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2216:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2216:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2257:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2268:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2253:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2253:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2273:2:111",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2246:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2246:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2246:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2296:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2307:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2292:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2292:18:111"
                                  },
                                  {
                                    "hexValue": "496e76616c69642070323536207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2312:31:111",
                                    "type": "",
                                    "value": "Invalid p256 signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2285:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2285:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2285:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2353:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2365:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2376:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2361:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2361:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2353:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f4db4179b6b12b07a3e6afd09ae307d93537f5fd420df2f4d89b9e7e20b6a8a6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2183:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2197:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2032:353:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2564:173:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2581:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2592:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2574:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2574:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2574:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2615:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2626:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2611:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2611:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2631:2:111",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2604:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2604:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2604:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2654:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2665:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2650:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2650:18:111"
                                  },
                                  {
                                    "hexValue": "496e76616c69642070323536206b6579206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2670:25:111",
                                    "type": "",
                                    "value": "Invalid p256 key length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2643:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2643:53:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2643:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2705:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2717:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2728:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2713:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2713:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2705:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_27aebb422726d9dacb6497ba4421df0cdeaf42405bd6cfb285d8371f2f1f07dc__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2541:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2555:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2390:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2774:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2791:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2794:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2784:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2784:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2784:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2888:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2891:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2881:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2881:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2881:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2912:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2915:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2905:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2905:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2905:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2742:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2963:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2980:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2983:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2973:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2973:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2973:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3077:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:4:111",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3070:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3070:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3070:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3101:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3104:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3094:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3094:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3094:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2931:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3158:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3189:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3210:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3213:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3203:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3203:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3203:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3311:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3314:4:111",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3304:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3304:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3304:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3339:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3342:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3332:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3332:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3332:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3178:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3171:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3171:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3168:189:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3366:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3375:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3378:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "3371:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3371:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "3366:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3143:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3146:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "3152:1:111",
                            "type": ""
                          }
                        ],
                        "src": "3120:266:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3423:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3440:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3443:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3433:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3433:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3433:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3537:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3540:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3530:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3530:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3530:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3561:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3564:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3554:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3554:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3554:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3391:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3628:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3638:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3649:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3652:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3645:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3645:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "3638:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3677:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3679:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3679:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3679:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3669:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "3672:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3666:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3663:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3611:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3614:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "3620:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3580:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3759:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3769:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3781:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3784:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "3777:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3777:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "3769:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3810:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3812:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3812:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3812:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "3801:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3807:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3798:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3798:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3795:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3741:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3744:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "3750:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3710:128:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_f4db4179b6b12b07a3e6afd09ae307d93537f5fd420df2f4d89b9e7e20b6a8a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Invalid p256 signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_27aebb422726d9dacb6497ba4421df0cdeaf42405bd6cfb285d8371f2f1f07dc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Invalid p256 key length\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := mod(x, y)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de8f50a114610030575b600080fd5b61004361003e366004610f94565b610057565b604051901515815260200160405180910390f35b60006101316002868660405161006e92919061102e565b602060405180830381855afa15801561008b573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906100ae919061103e565b6100ed85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061013c92505050565b61012c8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506101e592505050565b61027e565b979650505050505050565b610144610f16565b81516040146101b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c69642070323536207369676e6174757265206c656e67746800000060448201526064015b60405180910390fd5b60408051808201909152806101ca846000610485565b81526020908101906101dd908590610485565b905292915050565b6101ed610f16565b8151604414610258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642070323536206b6579206c656e67746800000000000000000060448201526064016101ab565b604080518082019091528061026e846004610485565b81526020016101dd846024610485565b815160009015806102b0575082517fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63255111155b806102bd57506020830151155b156102ca5750600061047e565b815160208301516102db91906104a9565b6102e75750600061047e565b60008080808061031e88600160200201517fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325516105cf565b905061038e7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f57fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551848d09610669565b885160208a01518b519398509195506103ce929091907fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63255190859009610669565b909450915060006103e186858786610739565b60408101519091506000036103ff576000965050505050505061047e565b600061042682600260200201516ffffffffeffffffffffffffffffffffff60601b196105cf565b90506ffffffffeffffffffffffffffffffffff60601b19808283098351098a519091506104737fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63255183611086565b149750505050505050505b9392505050565b81516000906104958360206110f0565b11156104a057600080fd5b50016020015190565b60008215806104cb57506ffffffffeffffffffffffffffffffffff60601b1983145b806104d4575081155b806104f257506ffffffffeffffffffffffffffffffffff60601b1982145b156104ff575060006105c9565b60006ffffffffeffffffffffffffffffffffff60601b19838409905060006ffffffffeffffffffffffffffffffffff60601b19856ffffffffeffffffffffffffffffffffff60601b198788090990506ffffffffeffffffffffffffffffffffff60601b19807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709820890506ffffffffeffffffffffffffffffffffff60601b197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b820890501490505b92915050565b60008215806105dd57508183145b806105e6575081155b156105f3575060006105c9565b8183111561060e5781838161060a5761060a611057565b0692505b600060018385835b81156106455781838161062b5761062b611057565b949594048581029094039391928383029003919050610616565b600085121561065d5750505090830191506105c99050565b50929695505050505050565b60008082600003610681576000805b91509150610731565b82600103610693575083905082610731565b826002036106a557610678858561075f565b508390508281816001806106ba600288611086565b6000036106c957600094508495505b600187901c96505b861561071d576106e284848461078f565b919550935091506106f4600288611086565b60010361071157610709848484898986610a83565b919750955090505b600187901c96506106d1565b610728868683610ba6565b95509550505050505b935093915050565b610741610f34565b60008061075087878787610c08565b90925090506101318282610c3d565b60008060006107708585600161078f565b91965094509050610782858583610ba6565b92509250505b9250929050565b60008060008060008060006107a48a8a610ca8565b156107bd57600060018196509650965050505050610a7a565b6ffffffffeffffffffffffffffffffffff60601b19888a0992506ffffffffeffffffffffffffffffffffff60601b196002840992506ffffffffeffffffffffffffffffffffff60601b198a840991506ffffffffeffffffffffffffffffffffff60601b1989830991506ffffffffeffffffffffffffffffffffff60601b196002830991506ffffffffeffffffffffffffffffffffff60601b198a8b0999506ffffffffeffffffffffffffffffffffff60601b1960038b0993506ffffffffeffffffffffffffffffffffff60601b1988890997506ffffffffeffffffffffffffffffffffff60601b197fffffffff00000001000000000000000000000000fffffffffffffffffffffffc890997506ffffffffeffffffffffffffffffffffff60601b1988850893506ffffffffeffffffffffffffffffffffff60601b1984850990506ffffffffeffffffffffffffffffffffff60601b198260020999506ffffffffeffffffffffffffffffffffff60601b1961094c8b6ffffffffeffffffffffffffffffffffff60601b19611103565b820890506ffffffffeffffffffffffffffffffffff60601b19610983826ffffffffeffffffffffffffffffffffff60601b19611103565b830899506ffffffffeffffffffffffffffffffffff60601b198a850999506ffffffffeffffffffffffffffffffffff60601b19838a0998506ffffffffeffffffffffffffffffffffff60601b19898a0998506ffffffffeffffffffffffffffffffffff60601b198960020998506ffffffffeffffffffffffffffffffffff60601b19610a238a6ffffffffeffffffffffffffffffffffff60601b19611103565b8b0895506ffffffffeffffffffffffffffffffffff60601b1981840996506ffffffffeffffffffffffffffffffffff60601b1983840994506ffffffffeffffffffffffffffffffffff60601b198386099450505050505b93509350939050565b6000806000806000806000610a988d8d610ca8565b15610aaf5789898996509650965050505050610b9a565b610ab98a8a610ca8565b15610ad0578c8c8c96509650965050505050610b9a565b6ffffffffeffffffffffffffffffffffff60601b19888d0993506ffffffffeffffffffffffffffffffffff60601b198b8a0992506ffffffffeffffffffffffffffffffffff60601b19888e0991506ffffffffeffffffffffffffffffffffff60601b198b8b099050808203610b6a57828403610b6057610b518d8d8d61078f565b96509650965050505050610b9a565b6000600181610b51565b610b8e6ffffffffeffffffffffffffffffffffff60601b19898d0983838688610ccc565b91985096509450505050505b96509650969350505050565b6000806000610bc9846ffffffffeffffffffffffffffffffffff60601b196105cf565b90506ffffffffeffffffffffffffffffffffff60601b1981870992506ffffffffeffffffffffffffffffffffff60601b19818609915050935093915050565b6000806000610c1d8787600188886001610a83565b91985096509050610c2f878783610ba6565b925092505094509492505050565b610c45610f34565b6ffffffffeffffffffffffffffffffffff60601b196001600008604082018190526ffffffffeffffffffffffffffffffffff60601b19908409815260408101516ffffffffeffffffffffffffffffffffff60601b19908309602082015292915050565b600082158015610cb6575081155b15610cc3575060016105c9565b50600092915050565b6000808080808080806ffffffffeffffffffffffffffffffffff60601b19610d088b6ffffffffeffffffffffffffffffffffff60601b19611103565b8a0890506ffffffffeffffffffffffffffffffffff60601b19610d3f8c6ffffffffeffffffffffffffffffffffff60601b19611103565b8d0894506ffffffffeffffffffffffffffffffffff60601b1985860993506ffffffffeffffffffffffffffffffffff60601b1981820991506ffffffffeffffffffffffffffffffffff60601b198d830991506ffffffffeffffffffffffffffffffffff60601b198c8c089a506ffffffffeffffffffffffffffffffffff60601b19848c099a506ffffffffeffffffffffffffffffffffff60601b19610df88c6ffffffffeffffffffffffffffffffffff60601b19611103565b830891506ffffffffeffffffffffffffffffffffff60601b1982860997506ffffffffeffffffffffffffffffffffff60601b1985850992506ffffffffeffffffffffffffffffffffff60601b19848d099b506ffffffffeffffffffffffffffffffffff60601b19610e7d836ffffffffeffffffffffffffffffffffff60601b19611103565b8d089b506ffffffffeffffffffffffffffffffffff60601b198c820990506ffffffffeffffffffffffffffffffffff60601b19838a0998506ffffffffeffffffffffffffffffffffff60601b19610ee88a6ffffffffeffffffffffffffffffffffff60601b19611103565b820896506ffffffffeffffffffffffffffffffffff60601b198d840995505050505050955095509592505050565b60405180604001604052806002906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60008083601f840112610f6457600080fd5b50813567ffffffffffffffff811115610f7c57600080fd5b60208301915083602082850101111561078857600080fd5b60008060008060008060608789031215610fad57600080fd5b863567ffffffffffffffff80821115610fc557600080fd5b610fd18a838b01610f52565b90985096506020890135915080821115610fea57600080fd5b610ff68a838b01610f52565b9096509450604089013591508082111561100f57600080fd5b5061101c89828a01610f52565b979a9699509497509295939492505050565b8183823760009101908152919050565b60006020828403121561105057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826110bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105c9576105c96110c1565b818103818111156105c9576105c96110c156fea26469706673582212209e8b22686411df24f52aa7eaef7c99f89298dd4cc69e8163d2245205268fec1164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE8F50A1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x131 PUSH1 0x2 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x6E SWAP3 SWAP2 SWAP1 PUSH2 0x102E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x103E JUMP JUMPDEST PUSH2 0xED DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x13C SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x12C DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1E5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x27E JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x144 PUSH2 0xF16 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 EQ PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642070323536207369676E6174757265206C656E677468000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x1CA DUP5 PUSH1 0x0 PUSH2 0x485 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1DD SWAP1 DUP6 SWAP1 PUSH2 0x485 JUMP JUMPDEST SWAP1 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1ED PUSH2 0xF16 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x44 EQ PUSH2 0x258 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642070323536206B6579206C656E677468000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x26E DUP5 PUSH1 0x4 PUSH2 0x485 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DD DUP5 PUSH1 0x24 PUSH2 0x485 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 ISZERO DUP1 PUSH2 0x2B0 JUMPI POP DUP3 MLOAD PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 GT ISZERO JUMPDEST DUP1 PUSH2 0x2BD JUMPI POP PUSH1 0x20 DUP4 ADD MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x2CA JUMPI POP PUSH1 0x0 PUSH2 0x47E JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x2DB SWAP2 SWAP1 PUSH2 0x4A9 JUMP JUMPDEST PUSH2 0x2E7 JUMPI POP PUSH1 0x0 PUSH2 0x47E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x31E DUP9 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 PUSH2 0x5CF JUMP JUMPDEST SWAP1 POP PUSH2 0x38E PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 DUP5 DUP14 MULMOD PUSH2 0x669 JUMP JUMPDEST DUP9 MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP12 MLOAD SWAP4 SWAP9 POP SWAP2 SWAP6 POP PUSH2 0x3CE SWAP3 SWAP1 SWAP2 SWAP1 PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 SWAP1 DUP6 SWAP1 MULMOD PUSH2 0x669 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 PUSH2 0x3E1 DUP7 DUP6 DUP8 DUP7 PUSH2 0x739 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SUB PUSH2 0x3FF JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x47E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x426 DUP3 PUSH1 0x2 PUSH1 0x20 MUL ADD MLOAD PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x5CF JUMP JUMPDEST SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP1 DUP3 DUP4 MULMOD DUP4 MLOAD MULMOD DUP11 MLOAD SWAP1 SWAP2 POP PUSH2 0x473 PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 DUP4 PUSH2 0x1086 JUMP JUMPDEST EQ SWAP8 POP POP POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x495 DUP4 PUSH1 0x20 PUSH2 0x10F0 JUMP JUMPDEST GT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x4CB JUMPI POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 EQ JUMPDEST DUP1 PUSH2 0x4D4 JUMPI POP DUP2 ISZERO JUMPDEST DUP1 PUSH2 0x4F2 JUMPI POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP3 EQ JUMPDEST ISZERO PUSH2 0x4FF JUMPI POP PUSH1 0x0 PUSH2 0x5C9 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP5 MULMOD SWAP1 POP PUSH1 0x0 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP6 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP8 DUP9 MULMOD MULMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP1 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC DUP8 MULMOD DUP3 ADDMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH32 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B DUP3 ADDMOD SWAP1 POP EQ SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x5DD JUMPI POP DUP2 DUP4 EQ JUMPDEST DUP1 PUSH2 0x5E6 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x5F3 JUMPI POP PUSH1 0x0 PUSH2 0x5C9 JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x60E JUMPI DUP2 DUP4 DUP2 PUSH2 0x60A JUMPI PUSH2 0x60A PUSH2 0x1057 JUMP JUMPDEST MOD SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 DUP6 DUP4 JUMPDEST DUP2 ISZERO PUSH2 0x645 JUMPI DUP2 DUP4 DUP2 PUSH2 0x62B JUMPI PUSH2 0x62B PUSH2 0x1057 JUMP JUMPDEST SWAP5 SWAP6 SWAP5 DIV DUP6 DUP2 MUL SWAP1 SWAP5 SUB SWAP4 SWAP2 SWAP3 DUP4 DUP4 MUL SWAP1 SUB SWAP2 SWAP1 POP PUSH2 0x616 JUMP JUMPDEST PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x65D JUMPI POP POP POP SWAP1 DUP4 ADD SWAP2 POP PUSH2 0x5C9 SWAP1 POP JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x0 SUB PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x731 JUMP JUMPDEST DUP3 PUSH1 0x1 SUB PUSH2 0x693 JUMPI POP DUP4 SWAP1 POP DUP3 PUSH2 0x731 JUMP JUMPDEST DUP3 PUSH1 0x2 SUB PUSH2 0x6A5 JUMPI PUSH2 0x678 DUP6 DUP6 PUSH2 0x75F JUMP JUMPDEST POP DUP4 SWAP1 POP DUP3 DUP2 DUP2 PUSH1 0x1 DUP1 PUSH2 0x6BA PUSH1 0x2 DUP9 PUSH2 0x1086 JUMP JUMPDEST PUSH1 0x0 SUB PUSH2 0x6C9 JUMPI PUSH1 0x0 SWAP5 POP DUP5 SWAP6 POP JUMPDEST PUSH1 0x1 DUP8 SWAP1 SHR SWAP7 POP JUMPDEST DUP7 ISZERO PUSH2 0x71D JUMPI PUSH2 0x6E2 DUP5 DUP5 DUP5 PUSH2 0x78F JUMP JUMPDEST SWAP2 SWAP6 POP SWAP4 POP SWAP2 POP PUSH2 0x6F4 PUSH1 0x2 DUP9 PUSH2 0x1086 JUMP JUMPDEST PUSH1 0x1 SUB PUSH2 0x711 JUMPI PUSH2 0x709 DUP5 DUP5 DUP5 DUP10 DUP10 DUP7 PUSH2 0xA83 JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP JUMPDEST PUSH1 0x1 DUP8 SWAP1 SHR SWAP7 POP PUSH2 0x6D1 JUMP JUMPDEST PUSH2 0x728 DUP7 DUP7 DUP4 PUSH2 0xBA6 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x741 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x750 DUP8 DUP8 DUP8 DUP8 PUSH2 0xC08 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x131 DUP3 DUP3 PUSH2 0xC3D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x770 DUP6 DUP6 PUSH1 0x1 PUSH2 0x78F JUMP JUMPDEST SWAP2 SWAP7 POP SWAP5 POP SWAP1 POP PUSH2 0x782 DUP6 DUP6 DUP4 PUSH2 0xBA6 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x7A4 DUP11 DUP11 PUSH2 0xCA8 JUMP JUMPDEST ISZERO PUSH2 0x7BD JUMPI PUSH1 0x0 PUSH1 0x1 DUP2 SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP POP PUSH2 0xA7A JUMP JUMPDEST PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP11 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH1 0x2 DUP5 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP11 DUP5 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP10 DUP4 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH1 0x2 DUP4 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP11 DUP12 MULMOD SWAP10 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH1 0x3 DUP12 MULMOD SWAP4 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP10 MULMOD SWAP8 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC DUP10 MULMOD SWAP8 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP6 ADDMOD SWAP4 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP5 DUP6 MULMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP3 PUSH1 0x2 MULMOD SWAP10 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x94C DUP12 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP3 ADDMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x983 DUP3 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP4 ADDMOD SWAP10 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP11 DUP6 MULMOD SWAP10 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP11 MULMOD SWAP9 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP10 DUP11 MULMOD SWAP9 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP10 PUSH1 0x2 MULMOD SWAP9 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xA23 DUP11 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP12 ADDMOD SWAP6 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP2 DUP5 MULMOD SWAP7 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP5 MULMOD SWAP5 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP7 MULMOD SWAP5 POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA98 DUP14 DUP14 PUSH2 0xCA8 JUMP JUMPDEST ISZERO PUSH2 0xAAF JUMPI DUP10 DUP10 DUP10 SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP POP PUSH2 0xB9A JUMP JUMPDEST PUSH2 0xAB9 DUP11 DUP11 PUSH2 0xCA8 JUMP JUMPDEST ISZERO PUSH2 0xAD0 JUMPI DUP13 DUP13 DUP13 SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP POP PUSH2 0xB9A JUMP JUMPDEST PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP14 MULMOD SWAP4 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP12 DUP11 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP9 DUP15 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP12 DUP12 MULMOD SWAP1 POP DUP1 DUP3 SUB PUSH2 0xB6A JUMPI DUP3 DUP5 SUB PUSH2 0xB60 JUMPI PUSH2 0xB51 DUP14 DUP14 DUP14 PUSH2 0x78F JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP POP PUSH2 0xB9A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0xB51 JUMP JUMPDEST PUSH2 0xB8E PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP10 DUP14 MULMOD DUP4 DUP4 DUP7 DUP9 PUSH2 0xCCC JUMP JUMPDEST SWAP2 SWAP9 POP SWAP7 POP SWAP5 POP POP POP POP POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBC9 DUP5 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x5CF JUMP JUMPDEST SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP2 DUP8 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP2 DUP7 MULMOD SWAP2 POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC1D DUP8 DUP8 PUSH1 0x1 DUP9 DUP9 PUSH1 0x1 PUSH2 0xA83 JUMP JUMPDEST SWAP2 SWAP9 POP SWAP7 POP SWAP1 POP PUSH2 0xC2F DUP8 DUP8 DUP4 PUSH2 0xBA6 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC45 PUSH2 0xF34 JUMP JUMPDEST PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH1 0x1 PUSH1 0x0 ADDMOD PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 DUP5 MULMOD DUP2 MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 DUP4 MULMOD PUSH1 0x20 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO PUSH2 0xCB6 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xCC3 JUMPI POP PUSH1 0x1 PUSH2 0x5C9 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xD08 DUP12 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP11 ADDMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xD3F DUP13 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP14 ADDMOD SWAP5 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP6 DUP7 MULMOD SWAP4 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP2 DUP3 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP14 DUP4 MULMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP13 DUP13 ADDMOD SWAP11 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP5 DUP13 MULMOD SWAP11 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xDF8 DUP13 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP4 ADDMOD SWAP2 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP3 DUP7 MULMOD SWAP8 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP6 DUP6 MULMOD SWAP3 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP5 DUP14 MULMOD SWAP12 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xE7D DUP4 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP14 ADDMOD SWAP12 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP13 DUP3 MULMOD SWAP1 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP4 DUP11 MULMOD SWAP9 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0xEE8 DUP11 PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT PUSH2 0x1103 JUMP JUMPDEST DUP3 ADDMOD SWAP7 POP PUSH16 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 SHL NOT DUP14 DUP5 MULMOD SWAP6 POP POP POP POP POP POP SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xF64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xFAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFD1 DUP11 DUP4 DUP12 ADD PUSH2 0xF52 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xFEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFF6 DUP11 DUP4 DUP12 ADD PUSH2 0xF52 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x100F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101C DUP10 DUP3 DUP11 ADD PUSH2 0xF52 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1050 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x10BC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x10C1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x5C9 JUMPI PUSH2 0x5C9 PUSH2 0x10C1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 DUP12 0x22 PUSH9 0x6411DF24F52AA7EAEF PUSH29 0x99F89298DD4CC69E8163D2245205268FEC1164736F6C63430008110033 ",
              "sourceMap": "110:1192:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;444:322;;;;;;:::i;:::-;;:::i;:::-;;;1540:14:111;;1533:22;1515:41;;1503:2;1488:18;444:322:34;;;;;;;;589:4;624:135;659:12;666:4;;659:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;689:25;704:9;;689:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;689:14:34;;-1:-1:-1;;;689:25:34:i;:::-;732:13;741:3;;732:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;732:8:34;;-1:-1:-1;;;732:13:34:i;:::-;624:17;:135::i;:::-;605:154;444:322;-1:-1:-1;;;;;;;444:322:34:o;772:267::-;862:17;;:::i;:::-;903:4;:11;918:2;903:17;895:59;;;;;;;2234:2:111;895:59:34;;;2216:21:111;2273:2;2253:18;;;2246:30;2312:31;2292:18;;;2285:59;2361:18;;895:59:34;;;;;;;;;964:68;;;;;;;;;;980:19;:4;-1:-1:-1;980:16:34;:19::i;:::-;964:68;;;;;;;1010:20;;:4;;:16;:20::i;:::-;964:68;;;772:267;-1:-1:-1;;772:267:34:o;1045:255::-;1129:17;;:::i;:::-;1170:4;:11;1185:2;1170:17;1162:53;;;;;;;2592:2:111;1162:53:34;;;2574:21:111;2631:2;2611:18;;;2604:30;2670:25;2650:18;;;2643:53;2713:18;;1162:53:34;2390:347:111;1162:53:34;1225:68;;;;;;;;;;1241:19;:4;1258:1;1241:16;:19::i;:::-;1225:68;;;;1271:20;:4;1288:2;1271:16;:20::i;10226:970:32:-;10466:5;;10366:4;;10466:10;;:24;;-1:-1:-1;10480:5:32;;1209:66;-1:-1:-1;10480:10:32;10466:24;:38;;;-1:-1:-1;10494:5:32;;;;:10;10466:38;10462:116;;;-1:-1:-1;10562:5:32;10555:12;;10462:116;10602:4;;;10608;;;10592:21;;10602:4;10592:9;:21::i;:::-;10587:65;;-1:-1:-1;10636:5:32;10629:12;;10587:65;10662:10;;;;;10758:20;10769:2;10772:1;10769:5;;;;1209:66;10758:10;:20::i;:::-;10743:35;-1:-1:-1;10799:57:32;905:66;1007;1209;10847:4;10837:7;10822:33;10799:14;:57::i;:::-;10892:4;;;10898;;;10911:5;;10788:68;;-1:-1:-1;10788:68:32;;-1:-1:-1;10877:50:32;;10892:4;;10898;1209:66;;10918:4;;10904:22;10877:14;:50::i;:::-;10866:61;;-1:-1:-1;10866:61:32;-1:-1:-1;10937:19:32;10959:43;10987:2;10991;10866:61;;10959:27;:43::i;:::-;11017:4;;;;10937:65;;-1:-1:-1;11025:1:32;11017:9;11013:52;;11049:5;11042:12;;;;;;;;;;11013:52;11075:10;11088:19;11099:1;11101;11099:4;;;;-1:-1:-1;;;;11088:10:32;:19::i;:::-;11075:32;-1:-1:-1;;;;;1108:66:32;11146:2;11142;11135:17;11129:4;;11122:34;11184:5;;11117:39;;-1:-1:-1;11174:6:32;1209:66;11117:39;11174:6;:::i;:::-;:15;11167:22;;;;;;;;;10226:970;;;;;;:::o;7136:245:25:-;7283:11;;7236;;7271:8;:3;7277:2;7271:8;:::i;:::-;:23;;7263:32;;;;;;-1:-1:-1;7341:23:25;7355:2;7341:23;7335:30;;7136:245::o;3902:483:32:-;3966:4;3986:6;;;:16;;;-1:-1:-1;;;;3996:1:32;:6;3986:16;:26;;;-1:-1:-1;4006:6:32;;3986:26;:36;;;;-1:-1:-1;;;;4016:1:32;:6;3986:36;3982:79;;;-1:-1:-1;4045:5:32;4038:12;;3982:79;4071:11;-1:-1:-1;;;;4095:1:32;4092;4085:15;4071:29;-1:-1:-1;4117:11:32;-1:-1:-1;;;;4155:1:32;-1:-1:-1;;;;4148:1:32;4145;4138:15;4131:29;4117:43;-1:-1:-1;;;;;1108:66:32;702;4229:1;4222:15;4217:3;4210:31;4204:37;;-1:-1:-1;;;;803:66:32;4313:3;4306:17;4300:23;;4368:10;;-1:-1:-1;3902:483:32;;;;;:::o;1457:567::-;1522:7;1569:6;;;:16;;;1584:1;1579;:6;1569:16;:26;;;-1:-1:-1;1589:6:32;;1569:26;1565:40;;;-1:-1:-1;1604:1:32;1597:8;;1565:40;1627:1;1623;:5;1619:20;;;1638:1;1634;:5;;;;;:::i;:::-;;1630:9;;1619:20;1654:9;1689:1;1717;1745;1654:9;1784:139;1791:7;;1784:139;;1827:2;1822;:7;;;;;:::i;:::-;1867:2;;1822:7;;1876:14;;;1871:19;;;;1892:2;;1901:6;;;1896:11;;;1822:7;-1:-1:-1;1784:139:32;;;1946:1;1941:2;:6;1937:37;;;-1:-1:-1;;;1957:16:32;;;;-1:-1:-1;1949:25:32;;-1:-1:-1;1949:25:32;1937:37;-1:-1:-1;2004:2:32;;1457:567;-1:-1:-1;;;;;;1457:567:32:o;8964:910::-;9081:10;9093;9119:6;9129:1;9119:11;9115:192;;3481:9;;9153:12;9146:19;;;;;;9115:192;9186:6;9196:1;9186:11;9182:125;;-1:-1:-1;9221:2:32;;-1:-1:-1;9225:2:32;9213:15;;9182:125;9249:6;9259:1;9249:11;9245:62;;9283:13;9289:2;9293;9283:5;:13::i;9245:62::-;-1:-1:-1;9334:2:32;;-1:-1:-1;9363:2:32;9334;9363;9392:1;;9466:10;9475:1;9466:6;:10;:::i;:::-;9480:1;9466:15;9462:57;;9507:1;9502:6;;;9497:11;;9462:57;9548:1;9538:6;:11;;9529:20;;9560:265;9567:10;;9560:265;;9620:33;9630:6;9638;9646;9620:9;:33::i;:::-;9593:60;;-1:-1:-1;9593:60:32;-1:-1:-1;9593:60:32;-1:-1:-1;9672:10:32;9681:1;9672:6;:10;:::i;:::-;9686:1;9672:15;9668:112;;9722:43;9730:6;9738;9746;9754:2;9758;9762;9722:7;:43::i;:::-;9707:58;;-1:-1:-1;9707:58:32;-1:-1:-1;9707:58:32;-1:-1:-1;9668:112:32;9813:1;9803:6;:11;;9794:20;;9560:265;;;9842:25;9856:2;9860;9864;9842:13;:25::i;:::-;9835:32;;;;;;;;8964:910;;;;;;;:::o;2450:287::-;2596:19;;:::i;:::-;2627:9;2646;2674:19;2678:2;2682;2686;2690;2674:3;:19::i;:::-;2665:28;;-1:-1:-1;2665:28:32;-1:-1:-1;2707:23:32;2665:28;;2707:17;:23::i;8142:224::-;8228:7;8237;8260:10;8296:20;8306:2;8310;8314:1;8296:9;:20::i;:::-;8281:35;;-1:-1:-1;8281:35:32;-1:-1:-1;8281:35:32;-1:-1:-1;8334:25:32;8281:35;;;8334:13;:25::i;:::-;8327:32;;;;;8142:224;;;;;;:::o;4571:1069::-;4716:10;4740;4764;4799:9;4818;4837;4856;4880:19;4892:2;4896;4880:11;:19::i;:::-;4876:67;;;3254:9;3345:1;3254:9;4915:17;;;;;;;;;;;;4876:67;-1:-1:-1;;;;4968:2:32;4964;4957:17;4953:21;-1:-1:-1;;;;;4998:1:32;4995;4988:15;4984:19;-1:-1:-1;;;;;5028:2:32;5025:1;5018:16;5014:20;-1:-1:-1;;;;;5058:2:32;5055:1;5048:16;5044:20;-1:-1:-1;;;;;5088:1:32;5085;5078:15;5074:19;-1:-1:-1;;;;;5120:2:32;5116;5109:17;5104:22;-1:-1:-1;;;;;5151:1:32;5147:2;5140:16;5136:20;-1:-1:-1;;;;;5183:2:32;5179;5172:17;5167:22;-1:-1:-1;;;;;702:66:32;5211:2;5204:16;5199:21;-1:-1:-1;;;;;5244:2:32;5241:1;5234:16;5230:20;-1:-1:-1;;;;;5275:1:32;5272;5265:15;5261:19;-1:-1:-1;;;;;5305:1:32;5302;5295:15;5290:20;-1:-1:-1;;;;;5334:6:32;5338:2;-1:-1:-1;;;;5334:6:32;:::i;:::-;5331:1;5324:20;5320:24;-1:-1:-1;;;;;5370:5:32;5374:1;-1:-1:-1;;;;5370:5:32;:::i;:::-;5367:1;5360:19;5355:24;-1:-1:-1;;;;;5404:2:32;5401:1;5394:16;5389:21;-1:-1:-1;;;;;5436:1:32;5432:2;5425:16;5420:21;-1:-1:-1;;;;;5467:2:32;5463;5456:17;5451:22;-1:-1:-1;;;;;5498:2:32;5495:1;5488:16;5483:21;-1:-1:-1;;;;;5530:6:32;5534:2;-1:-1:-1;;;;5530:6:32;:::i;:::-;5526:2;5519:21;5514:26;-1:-1:-1;;;;;5566:1:32;5563;5556:15;5551:20;-1:-1:-1;;;;;5597:1:32;5594;5587:15;5582:20;-1:-1:-1;;;;;5628:1:32;5624:2;5617:16;5612:21;;4789:851;;;;4571:1069;;;;;;;;:::o;5825:895::-;6028:10;6052;6076;6111;6131;6151;6171;6196:19;6208:2;6212;6196:11;:19::i;:::-;6192:144;;;6239:2;6243;6247;6231:19;;;;;;;;;;;;6192:144;6271:19;6283:2;6287;6271:11;:19::i;:::-;6267:69;;;6314:2;6318;6322;6306:19;;;;;;;;;;;;6267:69;-1:-1:-1;;;;6362:2:32;6358;6351:17;6346:22;-1:-1:-1;;;;;6394:2:32;6390;6383:17;6378:22;-1:-1:-1;;;;;6427:2:32;6423;6416:17;6411:22;-1:-1:-1;;;;;6459:2:32;6455;6448:17;6443:22;;6486:2;6480;:8;6476:169;;6514:2;6508;:8;6504:131;;6543:21;6553:2;6557;6561;6543:9;:21::i;:::-;6536:28;;;;;;;;;;;;6504:131;3254:9;3345:1;3254:9;6610:10;3174:183;6504:131;6670:43;-1:-1:-1;;;;6690:2:32;6686;6679:17;6698:2;6702;6706;6710;6670:8;:43::i;:::-;6655:58;;-1:-1:-1;6655:58:32;-1:-1:-1;6655:58:32;-1:-1:-1;;;;;5825:895:32;;;;;;;;;;;:::o;2820:271::-;2932:10;2944;2966:13;2997:17;3008:2;-1:-1:-1;;;;2997:10:32;:17::i;:::-;2989:25;-1:-1:-1;;;;;3040:5:32;3036:2;3029:20;3024:25;-1:-1:-1;;;;;3075:5:32;3071:2;3064:20;3059:25;;2956:135;2820:271;;;;;;:::o;7789:265::-;7911:7;7920;7939:10;7975:29;7983:2;7987;7991:1;7994:2;7998;8002:1;7975:7;:29::i;:::-;7960:44;;-1:-1:-1;7960:44:32;-1:-1:-1;7960:44:32;-1:-1:-1;8022:25:32;7960:44;;;8022:13;:25::i;:::-;8015:32;;;;;7789:265;;;;;;;:::o;2116:234::-;2214:19;;:::i;:::-;-1:-1:-1;;;;2266:1:32;2263;2256:15;2249:4;;;:22;;;-1:-1:-1;;;;1108:66:32;2295:2;2288:19;2281:26;;2335:4;;;;-1:-1:-1;;;;1108:66:32;2331:2;2324:19;2317:4;;;:26;:1;2116:234;-1:-1:-1;;2116:234:32:o;3605:207::-;3697:11;3728:7;;:18;;;;-1:-1:-1;3739:7:32;;3728:18;3724:60;;;-1:-1:-1;3769:4:32;3762:11;;3724:60;-1:-1:-1;3800:5:32;3605:207;;;;:::o;6825:877::-;7007:10;;;;;;;;-1:-1:-1;;;;7203:6:32;7207:2;-1:-1:-1;;;;7203:6:32;:::i;:::-;7199:2;7192:21;7188:25;-1:-1:-1;;;;;7238:6:32;7242:2;-1:-1:-1;;;;7238:6:32;:::i;:::-;7234:2;7227:21;7223:25;-1:-1:-1;;;;;7273:1:32;7270;7263:15;7258:20;-1:-1:-1;;;;;7303:1:32;7300;7293:15;7289:19;-1:-1:-1;;;;;7332:1:32;7329;7322:15;7318:19;-1:-1:-1;;;;;7363:2:32;7359;7352:17;7347:22;-1:-1:-1;;;;;7395:2:32;7391;7384:17;7379:22;-1:-1:-1;;;;;7425:6:32;7429:2;-1:-1:-1;;;;7425:6:32;:::i;:::-;7422:1;7415:20;7411:24;-1:-1:-1;;;;;7461:1:32;7458;7451:15;7446:20;-1:-1:-1;;;;;7493:1:32;7489:2;7482:16;7477:21;-1:-1:-1;;;;;7524:2:32;7520;7513:17;7508:22;-1:-1:-1;;;;;7556:5:32;7560:1;-1:-1:-1;;;;7556:5:32;:::i;:::-;7552:2;7545:20;7540:25;-1:-1:-1;;;;;7589:2:32;7586:1;7579:16;7575:20;-1:-1:-1;;;;;7621:2:32;7617;7610:17;7605:22;-1:-1:-1;;;;;7653:6:32;7657:2;-1:-1:-1;;;;7653:6:32;:::i;:::-;7650:1;7643:20;7638:25;-1:-1:-1;;;;;7690:1:32;7686:2;7679:16;7674:21;;7080:622;;;;;6825:877;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:347:111:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:111;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;366:1004;476:6;484;492;500;508;516;569:2;557:9;548:7;544:23;540:32;537:52;;;585:1;582;575:12;537:52;625:9;612:23;654:18;695:2;687:6;684:14;681:34;;;711:1;708;701:12;681:34;750:58;800:7;791:6;780:9;776:22;750:58;:::i;:::-;827:8;;-1:-1:-1;724:84:111;-1:-1:-1;915:2:111;900:18;;887:32;;-1:-1:-1;931:16:111;;;928:36;;;960:1;957;950:12;928:36;999:60;1051:7;1040:8;1029:9;1025:24;999:60;:::i;:::-;1078:8;;-1:-1:-1;973:86:111;-1:-1:-1;1166:2:111;1151:18;;1138:32;;-1:-1:-1;1182:16:111;;;1179:36;;;1211:1;1208;1201:12;1179:36;;1250:60;1302:7;1291:8;1280:9;1276:24;1250:60;:::i;:::-;366:1004;;;;-1:-1:-1;366:1004:111;;-1:-1:-1;366:1004:111;;1329:8;;366:1004;-1:-1:-1;;;366:1004:111:o;1567:271::-;1750:6;1742;1737:3;1724:33;1706:3;1776:16;;1801:13;;;1776:16;1567:271;-1:-1:-1;1567:271:111:o;1843:184::-;1913:6;1966:2;1954:9;1945:7;1941:23;1937:32;1934:52;;;1982:1;1979;1972:12;1934:52;-1:-1:-1;2005:16:111;;1843:184;-1:-1:-1;1843:184:111:o;2931:::-;2983:77;2980:1;2973:88;3080:4;3077:1;3070:15;3104:4;3101:1;3094:15;3120:266;3152:1;3178;3168:189;;3213:77;3210:1;3203:88;3314:4;3311:1;3304:15;3342:4;3339:1;3332:15;3168:189;-1:-1:-1;3371:9:111;;3120:266::o;3391:184::-;3443:77;3440:1;3433:88;3540:4;3537:1;3530:15;3564:4;3561:1;3554:15;3580:125;3645:9;;;3666:10;;;3663:36;;;3679:18;;:::i;3710:128::-;3777:9;;;3798:11;;;3795:37;;;3812:18;;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "885600",
                "executionCost": "922",
                "totalCost": "886522"
              },
              "external": {
                "verify(bytes,bytes,bytes)": "infinite"
              },
              "internal": {
                "parseKey(bytes memory)": "infinite",
                "parseSignature(bytes memory)": "infinite"
              }
            },
            "methodIdentifiers": {
              "verify(bytes,bytes,bytes)": "de8f50a1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"verify(bytes,bytes,bytes)\":{\"details\":\"Verifies a signature.\",\"params\":{\"data\":\"The signed data to verify.\",\"key\":\"The public key to verify with.\",\"signature\":\"The signature to verify.\"},\"returns\":{\"_0\":\"True iff the signature is valid.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol\":\"P256SHA256Algorithm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/algorithms/Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC (signing) algorithm.\\n */\\ninterface Algorithm {\\n    /**\\n     * @dev Verifies a signature.\\n     * @param key The public key to verify with.\\n     * @param data The signed data to verify.\\n     * @param signature The signature to verify.\\n     * @return True iff the signature is valid.\\n     */\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata signature\\n    ) external view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0xaf6825f9852c69f8e36540821d067b4550dd2263497af9d645309b6a0c457ba6\"},\"contracts/dnssec-oracle/algorithms/EllipticCurve.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @title   EllipticCurve\\n *\\n * @author  Tilman Drerup;\\n *\\n * @notice  Implements elliptic curve math; Parametrized for SECP256R1.\\n *\\n *          Includes components of code by Andreas Olofsson, Alexander Vlasov\\n *          (https://github.com/BANKEX/CurveArithmetics), and Avi Asayag\\n *          (https://github.com/orbs-network/elliptic-curve-solidity)\\n *\\n *          Source: https://github.com/tdrerup/elliptic-curve-solidity\\n *\\n * @dev     NOTE: To disambiguate public keys when verifying signatures, activate\\n *          condition 'rs[1] > lowSmax' in validateSignature().\\n */\\ncontract EllipticCurve {\\n    // Set parameters for curve.\\n    uint256 constant a =\\n        0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC;\\n    uint256 constant b =\\n        0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B;\\n    uint256 constant gx =\\n        0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296;\\n    uint256 constant gy =\\n        0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5;\\n    uint256 constant p =\\n        0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\\n    uint256 constant n =\\n        0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551;\\n\\n    uint256 constant lowSmax =\\n        0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0;\\n\\n    /**\\n     * @dev Inverse of u in the field of modulo m.\\n     */\\n    function inverseMod(uint256 u, uint256 m) internal pure returns (uint256) {\\n        unchecked {\\n            if (u == 0 || u == m || m == 0) return 0;\\n            if (u > m) u = u % m;\\n\\n            int256 t1;\\n            int256 t2 = 1;\\n            uint256 r1 = m;\\n            uint256 r2 = u;\\n            uint256 q;\\n\\n            while (r2 != 0) {\\n                q = r1 / r2;\\n                (t1, t2, r1, r2) = (t2, t1 - int256(q) * t2, r2, r1 - q * r2);\\n            }\\n\\n            if (t1 < 0) return (m - uint256(-t1));\\n\\n            return uint256(t1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Transform affine coordinates into projective coordinates.\\n     */\\n    function toProjectivePoint(uint256 x0, uint256 y0)\\n        internal\\n        pure\\n        returns (uint256[3] memory P)\\n    {\\n        P[2] = addmod(0, 1, p);\\n        P[0] = mulmod(x0, P[2], p);\\n        P[1] = mulmod(y0, P[2], p);\\n    }\\n\\n    /**\\n     * @dev Add two points in affine coordinates and return projective point.\\n     */\\n    function addAndReturnProjectivePoint(\\n        uint256 x1,\\n        uint256 y1,\\n        uint256 x2,\\n        uint256 y2\\n    ) internal pure returns (uint256[3] memory P) {\\n        uint256 x;\\n        uint256 y;\\n        (x, y) = add(x1, y1, x2, y2);\\n        P = toProjectivePoint(x, y);\\n    }\\n\\n    /**\\n     * @dev Transform from projective to affine coordinates.\\n     */\\n    function toAffinePoint(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 z0\\n    ) internal pure returns (uint256 x1, uint256 y1) {\\n        uint256 z0Inv;\\n        z0Inv = inverseMod(z0, p);\\n        x1 = mulmod(x0, z0Inv, p);\\n        y1 = mulmod(y0, z0Inv, p);\\n    }\\n\\n    /**\\n     * @dev Return the zero curve in projective coordinates.\\n     */\\n    function zeroProj()\\n        internal\\n        pure\\n        returns (\\n            uint256 x,\\n            uint256 y,\\n            uint256 z\\n        )\\n    {\\n        return (0, 1, 0);\\n    }\\n\\n    /**\\n     * @dev Return the zero curve in affine coordinates.\\n     */\\n    function zeroAffine() internal pure returns (uint256 x, uint256 y) {\\n        return (0, 0);\\n    }\\n\\n    /**\\n     * @dev Check if the curve is the zero curve.\\n     */\\n    function isZeroCurve(uint256 x0, uint256 y0)\\n        internal\\n        pure\\n        returns (bool isZero)\\n    {\\n        if (x0 == 0 && y0 == 0) {\\n            return true;\\n        }\\n        return false;\\n    }\\n\\n    /**\\n     * @dev Check if a point in affine coordinates is on the curve.\\n     */\\n    function isOnCurve(uint256 x, uint256 y) internal pure returns (bool) {\\n        if (0 == x || x == p || 0 == y || y == p) {\\n            return false;\\n        }\\n\\n        uint256 LHS = mulmod(y, y, p); // y^2\\n        uint256 RHS = mulmod(mulmod(x, x, p), x, p); // x^3\\n\\n        if (a != 0) {\\n            RHS = addmod(RHS, mulmod(x, a, p), p); // x^3 + a*x\\n        }\\n        if (b != 0) {\\n            RHS = addmod(RHS, b, p); // x^3 + a*x + b\\n        }\\n\\n        return LHS == RHS;\\n    }\\n\\n    /**\\n     * @dev Double an elliptic curve point in projective coordinates. See\\n     * https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates\\n     */\\n    function twiceProj(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 z0\\n    )\\n        internal\\n        pure\\n        returns (\\n            uint256 x1,\\n            uint256 y1,\\n            uint256 z1\\n        )\\n    {\\n        uint256 t;\\n        uint256 u;\\n        uint256 v;\\n        uint256 w;\\n\\n        if (isZeroCurve(x0, y0)) {\\n            return zeroProj();\\n        }\\n\\n        u = mulmod(y0, z0, p);\\n        u = mulmod(u, 2, p);\\n\\n        v = mulmod(u, x0, p);\\n        v = mulmod(v, y0, p);\\n        v = mulmod(v, 2, p);\\n\\n        x0 = mulmod(x0, x0, p);\\n        t = mulmod(x0, 3, p);\\n\\n        z0 = mulmod(z0, z0, p);\\n        z0 = mulmod(z0, a, p);\\n        t = addmod(t, z0, p);\\n\\n        w = mulmod(t, t, p);\\n        x0 = mulmod(2, v, p);\\n        w = addmod(w, p - x0, p);\\n\\n        x0 = addmod(v, p - w, p);\\n        x0 = mulmod(t, x0, p);\\n        y0 = mulmod(y0, u, p);\\n        y0 = mulmod(y0, y0, p);\\n        y0 = mulmod(2, y0, p);\\n        y1 = addmod(x0, p - y0, p);\\n\\n        x1 = mulmod(u, w, p);\\n\\n        z1 = mulmod(u, u, p);\\n        z1 = mulmod(z1, u, p);\\n    }\\n\\n    /**\\n     * @dev Add two elliptic curve points in projective coordinates. See\\n     * https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates\\n     */\\n    function addProj(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 z0,\\n        uint256 x1,\\n        uint256 y1,\\n        uint256 z1\\n    )\\n        internal\\n        pure\\n        returns (\\n            uint256 x2,\\n            uint256 y2,\\n            uint256 z2\\n        )\\n    {\\n        uint256 t0;\\n        uint256 t1;\\n        uint256 u0;\\n        uint256 u1;\\n\\n        if (isZeroCurve(x0, y0)) {\\n            return (x1, y1, z1);\\n        } else if (isZeroCurve(x1, y1)) {\\n            return (x0, y0, z0);\\n        }\\n\\n        t0 = mulmod(y0, z1, p);\\n        t1 = mulmod(y1, z0, p);\\n\\n        u0 = mulmod(x0, z1, p);\\n        u1 = mulmod(x1, z0, p);\\n\\n        if (u0 == u1) {\\n            if (t0 == t1) {\\n                return twiceProj(x0, y0, z0);\\n            } else {\\n                return zeroProj();\\n            }\\n        }\\n\\n        (x2, y2, z2) = addProj2(mulmod(z0, z1, p), u0, u1, t1, t0);\\n    }\\n\\n    /**\\n     * @dev Helper function that splits addProj to avoid too many local variables.\\n     */\\n    function addProj2(\\n        uint256 v,\\n        uint256 u0,\\n        uint256 u1,\\n        uint256 t1,\\n        uint256 t0\\n    )\\n        private\\n        pure\\n        returns (\\n            uint256 x2,\\n            uint256 y2,\\n            uint256 z2\\n        )\\n    {\\n        uint256 u;\\n        uint256 u2;\\n        uint256 u3;\\n        uint256 w;\\n        uint256 t;\\n\\n        t = addmod(t0, p - t1, p);\\n        u = addmod(u0, p - u1, p);\\n        u2 = mulmod(u, u, p);\\n\\n        w = mulmod(t, t, p);\\n        w = mulmod(w, v, p);\\n        u1 = addmod(u1, u0, p);\\n        u1 = mulmod(u1, u2, p);\\n        w = addmod(w, p - u1, p);\\n\\n        x2 = mulmod(u, w, p);\\n\\n        u3 = mulmod(u2, u, p);\\n        u0 = mulmod(u0, u2, p);\\n        u0 = addmod(u0, p - w, p);\\n        t = mulmod(t, u0, p);\\n        t0 = mulmod(t0, u3, p);\\n\\n        y2 = addmod(t, p - t0, p);\\n\\n        z2 = mulmod(u3, v, p);\\n    }\\n\\n    /**\\n     * @dev Add two elliptic curve points in affine coordinates.\\n     */\\n    function add(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 x1,\\n        uint256 y1\\n    ) internal pure returns (uint256, uint256) {\\n        uint256 z0;\\n\\n        (x0, y0, z0) = addProj(x0, y0, 1, x1, y1, 1);\\n\\n        return toAffinePoint(x0, y0, z0);\\n    }\\n\\n    /**\\n     * @dev Double an elliptic curve point in affine coordinates.\\n     */\\n    function twice(uint256 x0, uint256 y0)\\n        internal\\n        pure\\n        returns (uint256, uint256)\\n    {\\n        uint256 z0;\\n\\n        (x0, y0, z0) = twiceProj(x0, y0, 1);\\n\\n        return toAffinePoint(x0, y0, z0);\\n    }\\n\\n    /**\\n     * @dev Multiply an elliptic curve point by a 2 power base (i.e., (2^exp)*P)).\\n     */\\n    function multiplyPowerBase2(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 exp\\n    ) internal pure returns (uint256, uint256) {\\n        uint256 base2X = x0;\\n        uint256 base2Y = y0;\\n        uint256 base2Z = 1;\\n\\n        for (uint256 i = 0; i < exp; i++) {\\n            (base2X, base2Y, base2Z) = twiceProj(base2X, base2Y, base2Z);\\n        }\\n\\n        return toAffinePoint(base2X, base2Y, base2Z);\\n    }\\n\\n    /**\\n     * @dev Multiply an elliptic curve point by a scalar.\\n     */\\n    function multiplyScalar(\\n        uint256 x0,\\n        uint256 y0,\\n        uint256 scalar\\n    ) internal pure returns (uint256 x1, uint256 y1) {\\n        if (scalar == 0) {\\n            return zeroAffine();\\n        } else if (scalar == 1) {\\n            return (x0, y0);\\n        } else if (scalar == 2) {\\n            return twice(x0, y0);\\n        }\\n\\n        uint256 base2X = x0;\\n        uint256 base2Y = y0;\\n        uint256 base2Z = 1;\\n        uint256 z1 = 1;\\n        x1 = x0;\\n        y1 = y0;\\n\\n        if (scalar % 2 == 0) {\\n            x1 = y1 = 0;\\n        }\\n\\n        scalar = scalar >> 1;\\n\\n        while (scalar > 0) {\\n            (base2X, base2Y, base2Z) = twiceProj(base2X, base2Y, base2Z);\\n\\n            if (scalar % 2 == 1) {\\n                (x1, y1, z1) = addProj(base2X, base2Y, base2Z, x1, y1, z1);\\n            }\\n\\n            scalar = scalar >> 1;\\n        }\\n\\n        return toAffinePoint(x1, y1, z1);\\n    }\\n\\n    /**\\n     * @dev Multiply the curve's generator point by a scalar.\\n     */\\n    function multipleGeneratorByScalar(uint256 scalar)\\n        internal\\n        pure\\n        returns (uint256, uint256)\\n    {\\n        return multiplyScalar(gx, gy, scalar);\\n    }\\n\\n    /**\\n     * @dev Validate combination of message, signature, and public key.\\n     */\\n    function validateSignature(\\n        bytes32 message,\\n        uint256[2] memory rs,\\n        uint256[2] memory Q\\n    ) internal pure returns (bool) {\\n        // To disambiguate between public key solutions, include comment below.\\n        if (rs[0] == 0 || rs[0] >= n || rs[1] == 0) {\\n            // || rs[1] > lowSmax)\\n            return false;\\n        }\\n        if (!isOnCurve(Q[0], Q[1])) {\\n            return false;\\n        }\\n\\n        uint256 x1;\\n        uint256 x2;\\n        uint256 y1;\\n        uint256 y2;\\n\\n        uint256 sInv = inverseMod(rs[1], n);\\n        (x1, y1) = multiplyScalar(gx, gy, mulmod(uint256(message), sInv, n));\\n        (x2, y2) = multiplyScalar(Q[0], Q[1], mulmod(rs[0], sInv, n));\\n        uint256[3] memory P = addAndReturnProjectivePoint(x1, y1, x2, y2);\\n\\n        if (P[2] == 0) {\\n            return false;\\n        }\\n\\n        uint256 Px = inverseMod(P[2], p);\\n        Px = mulmod(P[0], mulmod(Px, Px, p), p);\\n\\n        return Px % n == rs[0];\\n    }\\n}\\n\",\"keccak256\":\"0xbe9e9eed22695317ed119b4e930a70d1427ec4449960ab6e3481dcba26ad532d\"},\"contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./Algorithm.sol\\\";\\nimport \\\"./EllipticCurve.sol\\\";\\nimport \\\"../BytesUtils.sol\\\";\\n\\ncontract P256SHA256Algorithm is Algorithm, EllipticCurve {\\n    using BytesUtils for *;\\n\\n    /**\\n     * @dev Verifies a signature.\\n     * @param key The public key to verify with.\\n     * @param data The signed data to verify.\\n     * @param signature The signature to verify.\\n     * @return True iff the signature is valid.\\n     */\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata signature\\n    ) external view override returns (bool) {\\n        return\\n            validateSignature(\\n                sha256(data),\\n                parseSignature(signature),\\n                parseKey(key)\\n            );\\n    }\\n\\n    function parseSignature(bytes memory data)\\n        internal\\n        pure\\n        returns (uint256[2] memory)\\n    {\\n        require(data.length == 64, \\\"Invalid p256 signature length\\\");\\n        return [uint256(data.readBytes32(0)), uint256(data.readBytes32(32))];\\n    }\\n\\n    function parseKey(bytes memory data)\\n        internal\\n        pure\\n        returns (uint256[2] memory)\\n    {\\n        require(data.length == 68, \\\"Invalid p256 key length\\\");\\n        return [uint256(data.readBytes32(4)), uint256(data.readBytes32(36))];\\n    }\\n}\\n\",\"keccak256\":\"0x6848ece185305c285c8f2d1a1f665068b2acd957a8bb5cdfc47726a0e4b83c46\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/algorithms/RSASHA1Algorithm.sol": {
        "RSASHA1Algorithm": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "key",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "sig",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implements the DNSSEC RSASHA1 algorithm.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610d79806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de8f50a114610030575b600080fd5b61004361003e366004610b68565b610057565b604051901515815260200160405180910390f35b600060608060006100a260048b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506103139050565b60ff169050801561016e576100f760058261ffff168c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294939250506103389050565b9250610167610107826005610c31565b61ffff9081169060059061011d9085168d610c53565b6101279190610c53565b8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294939250506103389050565b9150610227565b6101b260058b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506103bc9050565b90506101fe60078261ffff168c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294939250506103389050565b925061022461020e826007610c31565b61ffff9081169060079061011d9085168d610c53565b91505b6000606061026c84868a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103e492505050565b909250905081801561030357506102916014825161028a9190610c53565b82906103ff565b6bffffffffffffffffffffffff19166102df8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061044592505050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016145b9c9b505050505050505050505050565b600082828151811061032757610327610c66565b016020015160f81c90505b92915050565b82516060906103478385610c95565b111561035257600080fd5b60008267ffffffffffffffff81111561036d5761036d610ca8565b6040519080825280601f01601f191660200182016040528015610397576020820181803683370190505b509050602080820190868601016103af828287610a14565b50909150505b9392505050565b81516000906103cc836002610c95565b11156103d757600080fd5b50016002015161ffff1690565b600060606103f3838587610a88565b91509150935093915050565b815160009061040f836014610c95565b111561041a57600080fd5b5001602001517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690565b60006040518251602084019350604067ffffffffffffffc060018301160160098282031060018103610478576040820191505b50776745230100efcdab890098badcfe001032547600c3d2e1f06104e8565b6000838310156103b5575080820151928290039260208410156103b5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208590036101000a0119169392505050565b60005b82811015610994576104fe848289610497565b855261050e846020830189610497565b60208601526040818503106001810361052a5760808286038701535b506040830381146001810361054757602086018051600887021790525b5060405b6080811015610647578581017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc88201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff48401516002911891909218189081027ffffffffefffffffefffffffefffffffefffffffefffffffefffffffefffffffe1663800000009091047c010000000100000001000000010000000100000001000000010000000116179052600c0161054b565b5060805b610140811015610748578581017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe88401516004911891909218189081027ffffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffc1663400000009091047c03000000030000000300000003000000030000000300000003000000031617905260180161064b565b508160008060005b605081101561096a5760148104801561078057600181146107bc57600281146107f657600381146108355761086b565b6501000000000085046a0100000000000000000000860481186f01000000000000000000000000000000870416189350635a827999925061086b565b6501000000000085046f0100000000000000000000000000000086046a0100000000000000000000870418189350636ed9eba1925061086b565b6a010000000000000000000085046f010000000000000000000000000000008604818117650100000000008804169116179350638f1bbcdc925061086b565b6501000000000085046f0100000000000000000000000000000086046a010000000000000000000087041818935063ca62c1d692505b50601f770800000000000000000000000000000000000000000000008504168063ffffffe073080000000000000000000000000000000000000087041617905080840190508063ffffffff86160190508083019050807c0100000000000000000000000000000000000000000000000000000000600484028c015104019050740100000000000000000000000000000000000000008102650100000000008604179450506a0100000000000000000000633fffffff6a040000000000000000000086041663c00000006604000000000000870416170277ffffffff00ffffffff000000000000ffffffff00ffffffff8516179350600181019050610750565b5050509190910177ffffffff00ffffffff00ffffffff00ffffffff00ffffffff16906040016104eb565b506c0100000000000000000000000063ffffffff821667ffffffff000000006101008404166bffffffff0000000000000000620100008504166fffffffff000000000000000000000000630100000086041673ffffffff000000000000000000000000000000006401000000008704161717171702945050505050919050565b60208110610a4c5781518352610a2b602084610c95565b9250610a38602083610c95565b9150610a45602082610c53565b9050610a14565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b600060606000855185518551888888604051602001610aac96959493929190610d07565b6040516020818303038152906040529050835167ffffffffffffffff811115610ad757610ad7610ca8565b6040519080825280601f01601f191660200182016040528015610b01576020820181803683370190505b50915083516020830182516020840160055afa925050935093915050565b60008083601f840112610b3157600080fd5b50813567ffffffffffffffff811115610b4957600080fd5b602083019150836020828501011115610b6157600080fd5b9250929050565b60008060008060008060608789031215610b8157600080fd5b863567ffffffffffffffff80821115610b9957600080fd5b610ba58a838b01610b1f565b90985096506020890135915080821115610bbe57600080fd5b610bca8a838b01610b1f565b90965094506040890135915080821115610be357600080fd5b50610bf089828a01610b1f565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61ffff818116838216019080821115610c4c57610c4c610c02565b5092915050565b8181038181111561033257610332610c02565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8082018082111561033257610332610c02565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815160005b81811015610cf85760208185018101518683015201610cde565b50600093019283525090919050565b8681528560208201528460408201526000610d37610d31610d2b6060850188610cd7565b86610cd7565b84610cd7565b9897505050505050505056fea2646970667358221220a2683d34799ef7ccc317a41a04f1d85b70c95c29f3ab963f5400723dedd0d41264736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD79 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE8F50A1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xB68 JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0xA2 PUSH1 0x4 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x313 SWAP1 POP JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP DUP1 ISZERO PUSH2 0x16E JUMPI PUSH2 0xF7 PUSH1 0x5 DUP3 PUSH2 0xFFFF AND DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x338 SWAP1 POP JUMP JUMPDEST SWAP3 POP PUSH2 0x167 PUSH2 0x107 DUP3 PUSH1 0x5 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0xFFFF SWAP1 DUP2 AND SWAP1 PUSH1 0x5 SWAP1 PUSH2 0x11D SWAP1 DUP6 AND DUP14 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x127 SWAP2 SWAP1 PUSH2 0xC53 JUMP JUMPDEST DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x338 SWAP1 POP JUMP JUMPDEST SWAP2 POP PUSH2 0x227 JUMP JUMPDEST PUSH2 0x1B2 PUSH1 0x5 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x3BC SWAP1 POP JUMP JUMPDEST SWAP1 POP PUSH2 0x1FE PUSH1 0x7 DUP3 PUSH2 0xFFFF AND DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x338 SWAP1 POP JUMP JUMPDEST SWAP3 POP PUSH2 0x224 PUSH2 0x20E DUP3 PUSH1 0x7 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0xFFFF SWAP1 DUP2 AND SWAP1 PUSH1 0x7 SWAP1 PUSH2 0x11D SWAP1 DUP6 AND DUP14 PUSH2 0xC53 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x26C DUP5 DUP7 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3E4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0x303 JUMPI POP PUSH2 0x291 PUSH1 0x14 DUP3 MLOAD PUSH2 0x28A SWAP2 SWAP1 PUSH2 0xC53 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x3FF JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH2 0x2DF DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x445 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND EQ JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x327 JUMPI PUSH2 0x327 PUSH2 0xC66 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x347 DUP4 DUP6 PUSH2 0xC95 JUMP JUMPDEST GT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36D JUMPI PUSH2 0x36D PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x397 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0x3AF DUP3 DUP3 DUP8 PUSH2 0xA14 JUMP JUMPDEST POP SWAP1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3CC DUP4 PUSH1 0x2 PUSH2 0xC95 JUMP JUMPDEST GT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x3F3 DUP4 DUP6 DUP8 PUSH2 0xA88 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x40F DUP4 PUSH1 0x14 PUSH2 0xC95 JUMP JUMPDEST GT ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x40 PUSH8 0xFFFFFFFFFFFFFFC0 PUSH1 0x1 DUP4 ADD AND ADD PUSH1 0x9 DUP3 DUP3 SUB LT PUSH1 0x1 DUP2 SUB PUSH2 0x478 JUMPI PUSH1 0x40 DUP3 ADD SWAP2 POP JUMPDEST POP PUSH24 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0 PUSH2 0x4E8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 LT ISZERO PUSH2 0x3B5 JUMPI POP DUP1 DUP3 ADD MLOAD SWAP3 DUP3 SWAP1 SUB SWAP3 PUSH1 0x20 DUP5 LT ISZERO PUSH2 0x3B5 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP6 SWAP1 SUB PUSH2 0x100 EXP ADD NOT AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x994 JUMPI PUSH2 0x4FE DUP5 DUP3 DUP10 PUSH2 0x497 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x50E DUP5 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x497 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP2 DUP6 SUB LT PUSH1 0x1 DUP2 SUB PUSH2 0x52A JUMPI PUSH1 0x80 DUP3 DUP7 SUB DUP8 ADD MSTORE8 JUMPDEST POP PUSH1 0x40 DUP4 SUB DUP2 EQ PUSH1 0x1 DUP2 SUB PUSH2 0x547 JUMPI PUSH1 0x20 DUP7 ADD DUP1 MLOAD PUSH1 0x8 DUP8 MUL OR SWAP1 MSTORE JUMPDEST POP PUSH1 0x40 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x647 JUMPI DUP6 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP2 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 DUP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 DUP5 ADD MLOAD PUSH1 0x2 SWAP2 XOR SWAP2 SWAP1 SWAP3 XOR XOR SWAP1 DUP2 MUL PUSH32 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE AND PUSH4 0x80000000 SWAP1 SWAP2 DIV PUSH29 0x100000001000000010000000100000001000000010000000100000001 AND OR SWAP1 MSTORE PUSH1 0xC ADD PUSH2 0x54B JUMP JUMPDEST POP PUSH1 0x80 JUMPDEST PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x748 JUMPI DUP6 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP2 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 DUP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 DUP5 ADD MLOAD PUSH1 0x4 SWAP2 XOR SWAP2 SWAP1 SWAP3 XOR XOR SWAP1 DUP2 MUL PUSH32 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC AND PUSH4 0x40000000 SWAP1 SWAP2 DIV PUSH29 0x300000003000000030000000300000003000000030000000300000003 AND OR SWAP1 MSTORE PUSH1 0x18 ADD PUSH2 0x64B JUMP JUMPDEST POP DUP2 PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x50 DUP2 LT ISZERO PUSH2 0x96A JUMPI PUSH1 0x14 DUP2 DIV DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x7BC JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x7F6 JUMPI PUSH1 0x3 DUP2 EQ PUSH2 0x835 JUMPI PUSH2 0x86B JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH11 0x100000000000000000000 DUP7 DIV DUP2 XOR PUSH16 0x1000000000000000000000000000000 DUP8 DIV AND XOR SWAP4 POP PUSH4 0x5A827999 SWAP3 POP PUSH2 0x86B JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV PUSH11 0x100000000000000000000 DUP8 DIV XOR XOR SWAP4 POP PUSH4 0x6ED9EBA1 SWAP3 POP PUSH2 0x86B JUMP JUMPDEST PUSH11 0x100000000000000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV DUP2 DUP2 OR PUSH6 0x10000000000 DUP9 DIV AND SWAP2 AND OR SWAP4 POP PUSH4 0x8F1BBCDC SWAP3 POP PUSH2 0x86B JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV PUSH11 0x100000000000000000000 DUP8 DIV XOR XOR SWAP4 POP PUSH4 0xCA62C1D6 SWAP3 POP JUMPDEST POP PUSH1 0x1F PUSH24 0x80000000000000000000000000000000000000000000000 DUP6 DIV AND DUP1 PUSH4 0xFFFFFFE0 PUSH20 0x800000000000000000000000000000000000000 DUP8 DIV AND OR SWAP1 POP DUP1 DUP5 ADD SWAP1 POP DUP1 PUSH4 0xFFFFFFFF DUP7 AND ADD SWAP1 POP DUP1 DUP4 ADD SWAP1 POP DUP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x4 DUP5 MUL DUP13 ADD MLOAD DIV ADD SWAP1 POP PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL PUSH6 0x10000000000 DUP7 DIV OR SWAP5 POP POP PUSH11 0x100000000000000000000 PUSH4 0x3FFFFFFF PUSH11 0x400000000000000000000 DUP7 DIV AND PUSH4 0xC0000000 PUSH7 0x4000000000000 DUP8 DIV AND OR MUL PUSH24 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF DUP6 AND OR SWAP4 POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x750 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH24 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF AND SWAP1 PUSH1 0x40 ADD PUSH2 0x4EB JUMP JUMPDEST POP PUSH13 0x1000000000000000000000000 PUSH4 0xFFFFFFFF DUP3 AND PUSH8 0xFFFFFFFF00000000 PUSH2 0x100 DUP5 DIV AND PUSH12 0xFFFFFFFF0000000000000000 PUSH3 0x10000 DUP6 DIV AND PUSH16 0xFFFFFFFF000000000000000000000000 PUSH4 0x1000000 DUP7 DIV AND PUSH20 0xFFFFFFFF00000000000000000000000000000000 PUSH5 0x100000000 DUP8 DIV AND OR OR OR OR MUL SWAP5 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0xA4C JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0xA2B PUSH1 0x20 DUP5 PUSH2 0xC95 JUMP JUMPDEST SWAP3 POP PUSH2 0xA38 PUSH1 0x20 DUP4 PUSH2 0xC95 JUMP JUMPDEST SWAP2 POP PUSH2 0xA45 PUSH1 0x20 DUP3 PUSH2 0xC53 JUMP JUMPDEST SWAP1 POP PUSH2 0xA14 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 DUP6 MLOAD DUP6 MLOAD DUP6 MLOAD DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAAC SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD07 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAD7 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB01 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 MLOAD PUSH1 0x20 DUP4 ADD DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x5 GAS STATICCALL SWAP3 POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xB61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xB81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA5 DUP11 DUP4 DUP12 ADD PUSH2 0xB1F JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBCA DUP11 DUP4 DUP12 ADD PUSH2 0xB1F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBF0 DUP10 DUP3 DUP11 ADD PUSH2 0xB1F JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0xC4C JUMPI PUSH2 0xC4C PUSH2 0xC02 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x332 JUMPI PUSH2 0x332 PUSH2 0xC02 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x332 JUMPI PUSH2 0x332 PUSH2 0xC02 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xCF8 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0xCDE JUMP JUMPDEST POP PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST DUP7 DUP2 MSTORE DUP6 PUSH1 0x20 DUP3 ADD MSTORE DUP5 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xD37 PUSH2 0xD31 PUSH2 0xD2B PUSH1 0x60 DUP6 ADD DUP9 PUSH2 0xCD7 JUMP JUMPDEST DUP7 PUSH2 0xCD7 JUMP JUMPDEST DUP5 PUSH2 0xCD7 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 PUSH9 0x3D34799EF7CCC317A4 BYTE DIV CALL 0xD8 JUMPDEST PUSH17 0xC95C29F3AB963F5400723DEDD0D4126473 PUSH16 0x6C634300081100330000000000000000 ",
              "sourceMap": "212:1116:35:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@memcpy_4702": {
                  "entryPoint": 2580,
                  "id": 4702,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@modexp_8506": {
                  "entryPoint": 2696,
                  "id": 8506,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@readBytes20_4632": {
                  "entryPoint": 1023,
                  "id": 4632,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint16_4572": {
                  "entryPoint": 956,
                  "id": 4572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 787,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@rsarecover_8901": {
                  "entryPoint": 996,
                  "id": 8901,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@sha1_536": {
                  "entryPoint": 1093,
                  "id": 536,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@substring_4745": {
                  "entryPoint": 824,
                  "id": 4745,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@verify_8744": {
                  "entryPoint": 87,
                  "id": 8744,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 2847,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 2920,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_encode_bytes": {
                  "entryPoint": 3287,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 3335,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint16": {
                  "entryPoint": 3121,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3221,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 3155,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3074,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3174,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3240,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3427:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "527:843:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "573:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "582:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "585:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "575:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "575:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "575:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "548:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "544:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "544:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "569:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "537:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "598:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "625:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "612:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "602:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "644:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "654:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "648:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "699:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "708:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "711:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "701:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "701:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "701:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "695:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "684:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "684:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "681:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "724:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "780:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "791:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "776:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "776:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "800:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "728:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "738:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "817:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "827:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "817:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "844:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "854:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "844:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "871:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "904:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "915:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "900:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "900:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "887:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "887:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "875:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "948:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "957:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "960:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "950:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "950:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "950:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "934:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "944:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "931:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "931:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "928:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "973:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1029:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1040:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1025:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1025:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1051:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "999:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "999:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "977:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "987:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1068:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1078:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1068:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1095:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "1105:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1095:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1122:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1155:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1166:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1151:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1151:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1138:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1138:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1126:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1199:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1208:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1211:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1201:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1201:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1201:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1185:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1195:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1182:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1182:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1179:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1224:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1280:9:111"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1291:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1276:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1276:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1302:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1250:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1250:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1228:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1238:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1319:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "1329:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1319:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1346:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "1356:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1346:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "453:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "464:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "476:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "484:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "492:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "500:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "508:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "516:6:111",
                            "type": ""
                          }
                        ],
                        "src": "366:1004:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1470:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1480:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1492:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1503:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1488:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1488:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1480:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1522:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1547:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1540:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1540:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1533:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1533:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1515:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1515:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1515:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1439:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1450:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1461:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1375:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1599:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1616:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1619:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1609:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1609:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1609:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1713:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1716:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1706:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1706:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1706:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1737:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1740:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1567:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1803:121:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1813:16:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1823:6:111",
                                "type": "",
                                "value": "0xffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1817:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1838:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "1853:1:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1856:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1849:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1849:10:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "1865:1:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1868:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1861:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1861:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1845:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1845:27:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "1838:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1896:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "1898:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1898:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1898:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "1887:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1892:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1884:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1884:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1881:37:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1786:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1789:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "1795:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1756:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1978:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1988:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2000:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2003:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1996:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1996:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "1988:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2029:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2031:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2031:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2031:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "2020:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2026:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2017:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2017:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2014:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1960:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1963:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "1969:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1929:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2094:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2111:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2114:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2104:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2104:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2104:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2208:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2211:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2201:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2201:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2201:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2232:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2235:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2225:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2225:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2225:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2062:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2299:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2309:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2320:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2323:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2316:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2316:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "2309:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2348:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2350:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2350:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2350:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2340:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "2343:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2337:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2337:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2334:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2282:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2285:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "2291:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2251:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2413:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2430:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2433:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2423:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2423:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2423:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2527:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2530:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2520:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2520:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2520:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2551:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2554:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2544:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2544:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2544:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2381:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2619:273:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2629:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2649:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2643:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2643:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2633:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2664:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2673:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2668:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2735:76:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "2760:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2765:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2756:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2756:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2783:5:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2790:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2779:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2779:13:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2794:4:111",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2775:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2775:24:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2769:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2769:31:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2749:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2749:52:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2749:52:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2694:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2697:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2691:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2691:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2705:21:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2707:17:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2716:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2719:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2712:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2712:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2707:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2687:3:111",
                                "statements": []
                              },
                              "src": "2683:128:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2820:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2834:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2839:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2830:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2830:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2824:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2862:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2855:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2855:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2855:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2877:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "2884:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2877:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2596:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2603:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2611:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2570:322:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3210:215:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3227:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3232:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3220:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3220:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3220:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3259:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3264:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3255:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3255:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3269:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3248:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3248:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3248:28:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3296:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3301:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3292:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3292:12:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3306:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3285:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3285:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3285:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3322:97:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "3346:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3371:6:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3396:6:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "3408:3:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3413:2:111",
                                                "type": "",
                                                "value": "96"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3404:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3404:12:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "3379:16:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3379:38:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "3354:16:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3354:64:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3329:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3329:90:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3322:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3146:3:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3151:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3159:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3167:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3175:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3183:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3191:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3202:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2897:528:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint16(x, y) -> sum\n    {\n        let _1 := 0xffff\n        sum := add(and(x, _1), and(y, _1))\n        if gt(sum, _1) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        mstore(add(pos, 64), value2)\n        end := abi_encode_bytes(value5, abi_encode_bytes(value4, abi_encode_bytes(value3, add(pos, 96))))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de8f50a114610030575b600080fd5b61004361003e366004610b68565b610057565b604051901515815260200160405180910390f35b600060608060006100a260048b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506103139050565b60ff169050801561016e576100f760058261ffff168c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294939250506103389050565b9250610167610107826005610c31565b61ffff9081169060059061011d9085168d610c53565b6101279190610c53565b8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294939250506103389050565b9150610227565b6101b260058b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506103bc9050565b90506101fe60078261ffff168c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294939250506103389050565b925061022461020e826007610c31565b61ffff9081169060079061011d9085168d610c53565b91505b6000606061026c84868a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103e492505050565b909250905081801561030357506102916014825161028a9190610c53565b82906103ff565b6bffffffffffffffffffffffff19166102df8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061044592505050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016145b9c9b505050505050505050505050565b600082828151811061032757610327610c66565b016020015160f81c90505b92915050565b82516060906103478385610c95565b111561035257600080fd5b60008267ffffffffffffffff81111561036d5761036d610ca8565b6040519080825280601f01601f191660200182016040528015610397576020820181803683370190505b509050602080820190868601016103af828287610a14565b50909150505b9392505050565b81516000906103cc836002610c95565b11156103d757600080fd5b50016002015161ffff1690565b600060606103f3838587610a88565b91509150935093915050565b815160009061040f836014610c95565b111561041a57600080fd5b5001602001517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690565b60006040518251602084019350604067ffffffffffffffc060018301160160098282031060018103610478576040820191505b50776745230100efcdab890098badcfe001032547600c3d2e1f06104e8565b6000838310156103b5575080820151928290039260208410156103b5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208590036101000a0119169392505050565b60005b82811015610994576104fe848289610497565b855261050e846020830189610497565b60208601526040818503106001810361052a5760808286038701535b506040830381146001810361054757602086018051600887021790525b5060405b6080811015610647578581017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc88201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff48401516002911891909218189081027ffffffffefffffffefffffffefffffffefffffffefffffffefffffffefffffffe1663800000009091047c010000000100000001000000010000000100000001000000010000000116179052600c0161054b565b5060805b610140811015610748578581017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe88401516004911891909218189081027ffffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffc1663400000009091047c03000000030000000300000003000000030000000300000003000000031617905260180161064b565b508160008060005b605081101561096a5760148104801561078057600181146107bc57600281146107f657600381146108355761086b565b6501000000000085046a0100000000000000000000860481186f01000000000000000000000000000000870416189350635a827999925061086b565b6501000000000085046f0100000000000000000000000000000086046a0100000000000000000000870418189350636ed9eba1925061086b565b6a010000000000000000000085046f010000000000000000000000000000008604818117650100000000008804169116179350638f1bbcdc925061086b565b6501000000000085046f0100000000000000000000000000000086046a010000000000000000000087041818935063ca62c1d692505b50601f770800000000000000000000000000000000000000000000008504168063ffffffe073080000000000000000000000000000000000000087041617905080840190508063ffffffff86160190508083019050807c0100000000000000000000000000000000000000000000000000000000600484028c015104019050740100000000000000000000000000000000000000008102650100000000008604179450506a0100000000000000000000633fffffff6a040000000000000000000086041663c00000006604000000000000870416170277ffffffff00ffffffff000000000000ffffffff00ffffffff8516179350600181019050610750565b5050509190910177ffffffff00ffffffff00ffffffff00ffffffff00ffffffff16906040016104eb565b506c0100000000000000000000000063ffffffff821667ffffffff000000006101008404166bffffffff0000000000000000620100008504166fffffffff000000000000000000000000630100000086041673ffffffff000000000000000000000000000000006401000000008704161717171702945050505050919050565b60208110610a4c5781518352610a2b602084610c95565b9250610a38602083610c95565b9150610a45602082610c53565b9050610a14565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b600060606000855185518551888888604051602001610aac96959493929190610d07565b6040516020818303038152906040529050835167ffffffffffffffff811115610ad757610ad7610ca8565b6040519080825280601f01601f191660200182016040528015610b01576020820181803683370190505b50915083516020830182516020840160055afa925050935093915050565b60008083601f840112610b3157600080fd5b50813567ffffffffffffffff811115610b4957600080fd5b602083019150836020828501011115610b6157600080fd5b9250929050565b60008060008060008060608789031215610b8157600080fd5b863567ffffffffffffffff80821115610b9957600080fd5b610ba58a838b01610b1f565b90985096506020890135915080821115610bbe57600080fd5b610bca8a838b01610b1f565b90965094506040890135915080821115610be357600080fd5b50610bf089828a01610b1f565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61ffff818116838216019080821115610c4c57610c4c610c02565b5092915050565b8181038181111561033257610332610c02565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8082018082111561033257610332610c02565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815160005b81811015610cf85760208185018101518683015201610cde565b50600093019283525090919050565b8681528560208201528460408201526000610d37610d31610d2b6060850188610cd7565b86610cd7565b84610cd7565b9897505050505050505056fea2646970667358221220a2683d34799ef7ccc317a41a04f1d85b70c95c29f3ab963f5400723dedd0d41264736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE8F50A1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xB68 JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0xA2 PUSH1 0x4 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x313 SWAP1 POP JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP DUP1 ISZERO PUSH2 0x16E JUMPI PUSH2 0xF7 PUSH1 0x5 DUP3 PUSH2 0xFFFF AND DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x338 SWAP1 POP JUMP JUMPDEST SWAP3 POP PUSH2 0x167 PUSH2 0x107 DUP3 PUSH1 0x5 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0xFFFF SWAP1 DUP2 AND SWAP1 PUSH1 0x5 SWAP1 PUSH2 0x11D SWAP1 DUP6 AND DUP14 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x127 SWAP2 SWAP1 PUSH2 0xC53 JUMP JUMPDEST DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x338 SWAP1 POP JUMP JUMPDEST SWAP2 POP PUSH2 0x227 JUMP JUMPDEST PUSH2 0x1B2 PUSH1 0x5 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x3BC SWAP1 POP JUMP JUMPDEST SWAP1 POP PUSH2 0x1FE PUSH1 0x7 DUP3 PUSH2 0xFFFF AND DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x338 SWAP1 POP JUMP JUMPDEST SWAP3 POP PUSH2 0x224 PUSH2 0x20E DUP3 PUSH1 0x7 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0xFFFF SWAP1 DUP2 AND SWAP1 PUSH1 0x7 SWAP1 PUSH2 0x11D SWAP1 DUP6 AND DUP14 PUSH2 0xC53 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x26C DUP5 DUP7 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3E4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0x303 JUMPI POP PUSH2 0x291 PUSH1 0x14 DUP3 MLOAD PUSH2 0x28A SWAP2 SWAP1 PUSH2 0xC53 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x3FF JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH2 0x2DF DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x445 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND EQ JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x327 JUMPI PUSH2 0x327 PUSH2 0xC66 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x347 DUP4 DUP6 PUSH2 0xC95 JUMP JUMPDEST GT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36D JUMPI PUSH2 0x36D PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x397 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0x3AF DUP3 DUP3 DUP8 PUSH2 0xA14 JUMP JUMPDEST POP SWAP1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3CC DUP4 PUSH1 0x2 PUSH2 0xC95 JUMP JUMPDEST GT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x3F3 DUP4 DUP6 DUP8 PUSH2 0xA88 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x40F DUP4 PUSH1 0x14 PUSH2 0xC95 JUMP JUMPDEST GT ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x40 PUSH8 0xFFFFFFFFFFFFFFC0 PUSH1 0x1 DUP4 ADD AND ADD PUSH1 0x9 DUP3 DUP3 SUB LT PUSH1 0x1 DUP2 SUB PUSH2 0x478 JUMPI PUSH1 0x40 DUP3 ADD SWAP2 POP JUMPDEST POP PUSH24 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0 PUSH2 0x4E8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 LT ISZERO PUSH2 0x3B5 JUMPI POP DUP1 DUP3 ADD MLOAD SWAP3 DUP3 SWAP1 SUB SWAP3 PUSH1 0x20 DUP5 LT ISZERO PUSH2 0x3B5 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP6 SWAP1 SUB PUSH2 0x100 EXP ADD NOT AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x994 JUMPI PUSH2 0x4FE DUP5 DUP3 DUP10 PUSH2 0x497 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x50E DUP5 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x497 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP2 DUP6 SUB LT PUSH1 0x1 DUP2 SUB PUSH2 0x52A JUMPI PUSH1 0x80 DUP3 DUP7 SUB DUP8 ADD MSTORE8 JUMPDEST POP PUSH1 0x40 DUP4 SUB DUP2 EQ PUSH1 0x1 DUP2 SUB PUSH2 0x547 JUMPI PUSH1 0x20 DUP7 ADD DUP1 MLOAD PUSH1 0x8 DUP8 MUL OR SWAP1 MSTORE JUMPDEST POP PUSH1 0x40 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x647 JUMPI DUP6 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP2 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 DUP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 DUP5 ADD MLOAD PUSH1 0x2 SWAP2 XOR SWAP2 SWAP1 SWAP3 XOR XOR SWAP1 DUP2 MUL PUSH32 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE AND PUSH4 0x80000000 SWAP1 SWAP2 DIV PUSH29 0x100000001000000010000000100000001000000010000000100000001 AND OR SWAP1 MSTORE PUSH1 0xC ADD PUSH2 0x54B JUMP JUMPDEST POP PUSH1 0x80 JUMPDEST PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x748 JUMPI DUP6 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP2 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 DUP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 DUP5 ADD MLOAD PUSH1 0x4 SWAP2 XOR SWAP2 SWAP1 SWAP3 XOR XOR SWAP1 DUP2 MUL PUSH32 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC AND PUSH4 0x40000000 SWAP1 SWAP2 DIV PUSH29 0x300000003000000030000000300000003000000030000000300000003 AND OR SWAP1 MSTORE PUSH1 0x18 ADD PUSH2 0x64B JUMP JUMPDEST POP DUP2 PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x50 DUP2 LT ISZERO PUSH2 0x96A JUMPI PUSH1 0x14 DUP2 DIV DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x7BC JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x7F6 JUMPI PUSH1 0x3 DUP2 EQ PUSH2 0x835 JUMPI PUSH2 0x86B JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH11 0x100000000000000000000 DUP7 DIV DUP2 XOR PUSH16 0x1000000000000000000000000000000 DUP8 DIV AND XOR SWAP4 POP PUSH4 0x5A827999 SWAP3 POP PUSH2 0x86B JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV PUSH11 0x100000000000000000000 DUP8 DIV XOR XOR SWAP4 POP PUSH4 0x6ED9EBA1 SWAP3 POP PUSH2 0x86B JUMP JUMPDEST PUSH11 0x100000000000000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV DUP2 DUP2 OR PUSH6 0x10000000000 DUP9 DIV AND SWAP2 AND OR SWAP4 POP PUSH4 0x8F1BBCDC SWAP3 POP PUSH2 0x86B JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV PUSH11 0x100000000000000000000 DUP8 DIV XOR XOR SWAP4 POP PUSH4 0xCA62C1D6 SWAP3 POP JUMPDEST POP PUSH1 0x1F PUSH24 0x80000000000000000000000000000000000000000000000 DUP6 DIV AND DUP1 PUSH4 0xFFFFFFE0 PUSH20 0x800000000000000000000000000000000000000 DUP8 DIV AND OR SWAP1 POP DUP1 DUP5 ADD SWAP1 POP DUP1 PUSH4 0xFFFFFFFF DUP7 AND ADD SWAP1 POP DUP1 DUP4 ADD SWAP1 POP DUP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x4 DUP5 MUL DUP13 ADD MLOAD DIV ADD SWAP1 POP PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL PUSH6 0x10000000000 DUP7 DIV OR SWAP5 POP POP PUSH11 0x100000000000000000000 PUSH4 0x3FFFFFFF PUSH11 0x400000000000000000000 DUP7 DIV AND PUSH4 0xC0000000 PUSH7 0x4000000000000 DUP8 DIV AND OR MUL PUSH24 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF DUP6 AND OR SWAP4 POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x750 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH24 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF AND SWAP1 PUSH1 0x40 ADD PUSH2 0x4EB JUMP JUMPDEST POP PUSH13 0x1000000000000000000000000 PUSH4 0xFFFFFFFF DUP3 AND PUSH8 0xFFFFFFFF00000000 PUSH2 0x100 DUP5 DIV AND PUSH12 0xFFFFFFFF0000000000000000 PUSH3 0x10000 DUP6 DIV AND PUSH16 0xFFFFFFFF000000000000000000000000 PUSH4 0x1000000 DUP7 DIV AND PUSH20 0xFFFFFFFF00000000000000000000000000000000 PUSH5 0x100000000 DUP8 DIV AND OR OR OR OR MUL SWAP5 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0xA4C JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0xA2B PUSH1 0x20 DUP5 PUSH2 0xC95 JUMP JUMPDEST SWAP3 POP PUSH2 0xA38 PUSH1 0x20 DUP4 PUSH2 0xC95 JUMP JUMPDEST SWAP2 POP PUSH2 0xA45 PUSH1 0x20 DUP3 PUSH2 0xC53 JUMP JUMPDEST SWAP1 POP PUSH2 0xA14 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 DUP6 MLOAD DUP6 MLOAD DUP6 MLOAD DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAAC SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD07 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAD7 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB01 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 MLOAD PUSH1 0x20 DUP4 ADD DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x5 GAS STATICCALL SWAP3 POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xB61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xB81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA5 DUP11 DUP4 DUP12 ADD PUSH2 0xB1F JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBCA DUP11 DUP4 DUP12 ADD PUSH2 0xB1F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBF0 DUP10 DUP3 DUP11 ADD PUSH2 0xB1F JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0xC4C JUMPI PUSH2 0xC4C PUSH2 0xC02 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x332 JUMPI PUSH2 0x332 PUSH2 0xC02 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x332 JUMPI PUSH2 0x332 PUSH2 0xC02 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xCF8 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0xCDE JUMP JUMPDEST POP PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST DUP7 DUP2 MSTORE DUP6 PUSH1 0x20 DUP3 ADD MSTORE DUP5 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xD37 PUSH2 0xD31 PUSH2 0xD2B PUSH1 0x60 DUP6 ADD DUP9 PUSH2 0xCD7 JUMP JUMPDEST DUP7 PUSH2 0xCD7 JUMP JUMPDEST DUP5 PUSH2 0xCD7 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 PUSH9 0x3D34799EF7CCC317A4 BYTE DIV CALL 0xD8 JUMPDEST PUSH17 0xC95C29F3AB963F5400723DEDD0D4126473 PUSH16 0x6C634300081100330000000000000000 ",
              "sourceMap": "212:1116:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;286:1040;;;;;;:::i;:::-;;:::i;:::-;;;1540:14:111;;1533:22;1515:41;;1503:2;1488:18;286:1040:35;;;;;;;;425:4;441:21;472:20;503:18;531:16;545:1;531:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;531:13:35;;:16;-1:-1:-1;;531:13:35;:16;-1:-1:-1;531:16:35:i;:::-;524:24;;;-1:-1:-1;562:16:35;;558:463;;605:29;619:1;622:11;605:29;;:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;605:13:35;;:29;;-1:-1:-1;;605:13:35;:29;-1:-1:-1;605:29:35:i;:::-;594:40;-1:-1:-1;658:106:35;689:15;:11;703:1;689:15;:::i;:::-;658:106;;;;;749:1;;722:24;;;;:3;:24;:::i;:::-;:28;;;;:::i;:::-;658:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;658:13:35;;:106;;-1:-1:-1;;658:13:35;:106;-1:-1:-1;658:106:35:i;:::-;648:116;;558:463;;;809:17;824:1;809:3;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;809:14:35;;:17;-1:-1:-1;;809:14:35;:17;-1:-1:-1;809:17:35:i;:::-;795:31;;851:29;865:1;868:11;851:29;;:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:13:35;;:29;;-1:-1:-1;;851:13:35;:29;-1:-1:-1;851:29:35:i;:::-;840:40;-1:-1:-1;904:106:35;935:15;:11;949:1;935:15;:::i;:::-;904:106;;;;;995:1;;968:24;;;;:3;:24;:::i;904:106::-;894:116;;558:463;1081:7;1098:19;1142:44;1163:7;1172:8;1182:3;;1142:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1142:20:35;;-1:-1:-1;;;1142:44:35:i;:::-;1127:59;;-1:-1:-1;1127:59:35;-1:-1:-1;1127:59:35;1256:63;;;;;1281:38;1316:2;1300:6;:13;:18;;;;:::i;:::-;1281:6;;:18;:38::i;:::-;1262:57;;;:15;1272:4;;1262:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1262:9:35;;-1:-1:-1;;;1262:15:35:i;:::-;:57;;;1256:63;1249:70;286:1040;-1:-1:-1;;;;;;;;;;;;286:1040:35:o;5750:153:25:-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;;:::o;9465:436::-;9633:11;;9585:12;;9617;9626:3;9617:6;:12;:::i;:::-;:27;;9609:36;;;;;;9656:16;9685:3;9675:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:14:25;-1:-1:-1;9656:33:25;-1:-1:-1;9783:2:25;9774:12;;;;9806:26;;;;9851:22;9774:12;9806:26;9869:3;9851:6;:22::i;:::-;-1:-1:-1;9891:3:25;;-1:-1:-1;;9465:436:25;;;;;;:::o;6152:254::-;6296:11;;6251:10;;6285:7;:3;6291:1;6285:7;:::i;:::-;:22;;6277:31;;;;;;-1:-1:-1;6358:22:25;6372:1;6358:22;6352:29;6383:6;6348:42;;6152:254::o;383:197:37:-;504:4;510:12;541:32;565:1;568;571;541:23;:32::i;:::-;534:39;;;;383:197;;;;;;:::o;7604:364:25:-;7751:11;;7704;;7739:8;:3;7745:2;7739:8;:::i;:::-;:23;;7731:32;;;;;;-1:-1:-1;7830:23:25;7844:2;7830:23;7824:30;7872:66;7803:149;;7604:364::o;73:5661:1:-;128:11;238:4;232:11;343:4;337:11;379:2;373:4;369:13;361:21;;499:2;478:18;474:1;469:3;465:11;461:36;457:45;545:1;539:3;529:8;525:18;522:25;565:1;560:40;;515:85;560:40;595:2;585:8;581:17;569:29;;515:85;;623:50;687:425;;;725:6;789:5;784:3;781:14;778:320;;;-1:-1:-1;834:13:1;;;828:20;878:15;;;;;927:2;917:13;;914:166;;;973:32;990:2;986:14;;;981:3;977:24;973:32;969:37;1041:17;687:425;;;;;:::o;:::-;1141:1;1126:4284;1151:8;1148:1;1145:15;1126:4284;;;1215:22;1233:3;1230:1;1224:4;1215:22;:::i;:::-;1206:7;1199:39;1280:31;1307:3;1302:2;1299:1;1295:10;1289:4;1280:31;:::i;:::-;1275:2;1266:7;1262:16;1255:57;1426:2;1422:1;1417:3;1413:11;1410:19;1451:1;1446:51;;1403:94;1446:51;1490:4;1485:1;1480:3;1476:11;1467:7;1463:25;1455:40;1403:94;;1605:2;1595:8;1591:17;1588:1;1585:24;1631:1;1626:77;;1578:125;1626:77;1682:2;1669:16;;1663:23;;1697:1;1688:11;;1660:40;1635:66;;1578:125;;1790:2;1775:512;1801:3;1798:1;1795:10;1775:512;;;1978:24;;;1991:10;1978:24;;1972:31;1958:10;1945:24;;1939:31;1920:10;1907:24;;1901:31;1887:10;1874:24;;1868:31;2051:1;1864:69;;1935;;;;1860:145;2041:12;;;2055:66;2037:85;2138:10;2128:21;;;2151:66;2124:94;2034:185;2240:29;;1894:2;1813:10;1775:512;;;1779:15;2319:3;2304:515;2331:3;2328:1;2325:10;2304:515;;;2509:25;;;2522:11;2509:25;;2503:32;2488:11;2475:25;;2469:32;2450:10;2437:24;;2431:31;2417:10;2404:24;;2398:31;2583:1;2394:69;;2465:71;;;;2390:147;2573:12;;;2587:66;2569:85;2670:10;2660:21;;;2683:66;2656:94;2566:185;2772:29;;2424:2;2343:10;2304:515;;;2308:16;2846:1;2873;2900;2933;2918:2389;2943:2;2940:1;2937:9;2918:2389;;;3002:2;2995:10;;3026:352;;;;3404:1;3399:282;;;;3707:1;3702:414;;;;4142:1;4137:283;;;;2988:1432;;3026:352;3163:13;3156:21;;3130:23;3123:31;;3119:59;;3219:33;3212:41;;3208:49;3287:29;;-1:-1:-1;3346:10:1;;-1:-1:-1;3026:352:1;;3399:282;3601:13;3594:21;;3492:33;3485:41;;3535:23;3528:31;;3481:79;3590:29;;-1:-1:-1;3649:10:1;;-1:-1:-1;3399:282:1;;3702:414;3854:23;3847:31;;3811:33;3804:41;;3801:78;;;3920:13;3913:21;;3909:29;3971:79;;3968:86;;-1:-1:-1;4084:10:1;;-1:-1:-1;3702:414:1;;4137:283;4340:13;4333:21;;4231:33;4224:41;;4274:23;4267:31;;4220:79;4329:29;;-1:-1:-1;4388:10:1;;-1:-1:-1;2988:1432:1;;4582:4;4530:49;4527:1;4523:57;4519:68;4687:4;4674:10;4630:41;4627:1;4623:49;4619:66;4616:76;4608:84;;4728:4;4725:1;4721:12;4713:20;;4786:4;4773:10;4770:1;4766:18;4762:29;4754:37;;4827:4;4824:1;4820:12;4812:20;;4963:4;4901:59;4895:1;4892;4888:9;4879:7;4875:23;4869:30;4865:96;4861:107;4853:115;;5030:43;5024:4;5020:54;5004:13;5001:1;4997:21;4994:81;4989:86;;;5264:23;5250:10;5224:23;5221:1;5217:31;5213:48;5200:10;5182:15;5179:1;5175:23;5171:40;5168:94;5164:124;5111:50;5108:1;5104:58;5101:188;5096:193;;2961:1;2958;2954:9;2949:14;;2918:2389;;;-1:-1:-1;;;5334:9:1;;;;5345:50;5330:66;;1175:2;1168:10;1126:4284;;;1130:14;5690:27;5676:10;5673:1;5669:18;5647;5639:5;5636:1;5632:13;5628:38;5598:26;5588:7;5585:1;5581:15;5577:48;5539:34;5527:9;5524:1;5520:17;5516:58;5471:42;5457:11;5454:1;5450:19;5446:68;5443:132;5440:186;5437:230;5434:254;5430:288;5423:295;;;;;;73:5661;;;:::o;8595:645:25:-;8768:2;8761:3;:9;8754:165;;8837:10;;8824:24;;8875:10;8883:2;8831:4;8875:10;:::i;:::-;;-1:-1:-1;8899:9:25;8906:2;8899:9;;:::i;:::-;;-1:-1:-1;8772:9:25;8779:2;8772:9;;:::i;:::-;;;8754:165;;;9081:10;;9140:11;;9007:2;:8;;;;9001:3;:15;9000:21;;9093:9;;9077:26;;;9136:22;;9188:21;9175:35;;8595:645::o;139:694:33:-;272:12;286:19;317:18;376:4;:11;410:8;:15;448:7;:14;477:4;495:8;517:7;338:196;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;317:217;;564:7;:14;554:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;554:25:33;;545:34;;795:7;789:14;768:2;760:6;756:15;732:5;726:12;705:2;698:5;694:14;675:1;652:5;624:193;613:204;;599:228;139:694;;;;;;:::o;14:347:111:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:111;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:1004::-;476:6;484;492;500;508;516;569:2;557:9;548:7;544:23;540:32;537:52;;;585:1;582;575:12;537:52;625:9;612:23;654:18;695:2;687:6;684:14;681:34;;;711:1;708;701:12;681:34;750:58;800:7;791:6;780:9;776:22;750:58;:::i;:::-;827:8;;-1:-1:-1;724:84:111;-1:-1:-1;915:2:111;900:18;;887:32;;-1:-1:-1;931:16:111;;;928:36;;;960:1;957;950:12;928:36;999:60;1051:7;1040:8;1029:9;1025:24;999:60;:::i;:::-;1078:8;;-1:-1:-1;973:86:111;-1:-1:-1;1166:2:111;1151:18;;1138:32;;-1:-1:-1;1182:16:111;;;1179:36;;;1211:1;1208;1201:12;1179:36;;1250:60;1302:7;1291:8;1280:9;1276:24;1250:60;:::i;:::-;366:1004;;;;-1:-1:-1;366:1004:111;;-1:-1:-1;366:1004:111;;1329:8;;366:1004;-1:-1:-1;;;366:1004:111:o;1567:184::-;1619:77;1616:1;1609:88;1716:4;1713:1;1706:15;1740:4;1737:1;1730:15;1756:168;1823:6;1849:10;;;1861;;;1845:27;;1884:11;;;1881:37;;;1898:18;;:::i;:::-;1881:37;1756:168;;;;:::o;1929:128::-;1996:9;;;2017:11;;;2014:37;;;2031:18;;:::i;2062:184::-;2114:77;2111:1;2104:88;2211:4;2208:1;2201:15;2235:4;2232:1;2225:15;2251:125;2316:9;;;2337:10;;;2334:36;;;2350:18;;:::i;2381:184::-;2433:77;2430:1;2423:88;2530:4;2527:1;2520:15;2554:4;2551:1;2544:15;2570:322;2611:3;2649:5;2643:12;2673:1;2683:128;2697:6;2694:1;2691:13;2683:128;;;2794:4;2779:13;;;2775:24;;2769:31;2756:11;;;2749:52;2712:12;2683:128;;;-1:-1:-1;2866:1:111;2830:16;;2855:13;;;-1:-1:-1;2830:16:111;;2570:322;-1:-1:-1;2570:322:111:o;2897:528::-;3232:6;3227:3;3220:19;3269:6;3264:2;3259:3;3255:12;3248:28;3306:6;3301:2;3296:3;3292:12;3285:28;3202:3;3329:90;3354:64;3379:38;3413:2;3408:3;3404:12;3396:6;3379:38;:::i;:::-;3371:6;3354:64;:::i;:::-;3346:6;3329:90;:::i;:::-;3322:97;2897:528;-1:-1:-1;;;;;;;;2897:528:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "689800",
                "executionCost": "721",
                "totalCost": "690521"
              },
              "external": {
                "verify(bytes,bytes,bytes)": "infinite"
              }
            },
            "methodIdentifiers": {
              "verify(bytes,bytes,bytes)": "de8f50a1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements the DNSSEC RSASHA1 algorithm.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/algorithms/RSASHA1Algorithm.sol\":\"RSASHA1Algorithm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/solsha1/contracts/SHA1.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary SHA1 {\\n    event Debug(bytes32 x);\\n\\n    function sha1(bytes memory data) internal pure returns(bytes20 ret) {\\n        assembly {\\n            // Get a safe scratch location\\n            let scratch := mload(0x40)\\n\\n            // Get the data length, and point data at the first byte\\n            let len := mload(data)\\n            data := add(data, 32)\\n\\n            // Find the length after padding\\n            let totallen := add(and(add(len, 1), 0xFFFFFFFFFFFFFFC0), 64)\\n            switch lt(sub(totallen, len), 9)\\n            case 1 { totallen := add(totallen, 64) }\\n\\n            let h := 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0\\n\\n            function readword(ptr, off, count) -> result {\\n                result := 0\\n                if lt(off, count) {\\n                    result := mload(add(ptr, off))\\n                    count := sub(count, off)\\n                    if lt(count, 32) {\\n                        let mask := not(sub(exp(256, sub(32, count)), 1))\\n                        result := and(result, mask)\\n                    }\\n                }\\n            }\\n\\n            for { let i := 0 } lt(i, totallen) { i := add(i, 64) } {\\n                mstore(scratch, readword(data, i, len))\\n                mstore(add(scratch, 32), readword(data, add(i, 32), len))\\n\\n                // If we loaded the last byte, store the terminator byte\\n                switch lt(sub(len, i), 64)\\n                case 1 { mstore8(add(scratch, sub(len, i)), 0x80) }\\n\\n                // If this is the last block, store the length\\n                switch eq(i, sub(totallen, 64))\\n                case 1 { mstore(add(scratch, 32), or(mload(add(scratch, 32)), mul(len, 8))) }\\n\\n                // Expand the 16 32-bit words into 80\\n                for { let j := 64 } lt(j, 128) { j := add(j, 12) } {\\n                    let temp := xor(xor(mload(add(scratch, sub(j, 12))), mload(add(scratch, sub(j, 32)))), xor(mload(add(scratch, sub(j, 56))), mload(add(scratch, sub(j, 64)))))\\n                    temp := or(and(mul(temp, 2), 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE), and(div(temp, 0x80000000), 0x0000000100000001000000010000000100000001000000010000000100000001))\\n                    mstore(add(scratch, j), temp)\\n                }\\n                for { let j := 128 } lt(j, 320) { j := add(j, 24) } {\\n                    let temp := xor(xor(mload(add(scratch, sub(j, 24))), mload(add(scratch, sub(j, 64)))), xor(mload(add(scratch, sub(j, 112))), mload(add(scratch, sub(j, 128)))))\\n                    temp := or(and(mul(temp, 4), 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC), and(div(temp, 0x40000000), 0x0000000300000003000000030000000300000003000000030000000300000003))\\n                    mstore(add(scratch, j), temp)\\n                }\\n\\n                let x := h\\n                let f := 0\\n                let k := 0\\n                for { let j := 0 } lt(j, 80) { j := add(j, 1) } {\\n                    switch div(j, 20)\\n                    case 0 {\\n                        // f = d xor (b and (c xor d))\\n                        f := xor(div(x, 0x100000000000000000000), div(x, 0x10000000000))\\n                        f := and(div(x, 0x1000000000000000000000000000000), f)\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0x5A827999\\n                    }\\n                    case 1{\\n                        // f = b xor c xor d\\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0x6ED9EBA1\\n                    }\\n                    case 2 {\\n                        // f = (b and c) or (d and (b or c))\\n                        f := or(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := and(div(x, 0x10000000000), f)\\n                        f := or(and(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000)), f)\\n                        k := 0x8F1BBCDC\\n                    }\\n                    case 3 {\\n                        // f = b xor c xor d\\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0xCA62C1D6\\n                    }\\n                    // temp = (a leftrotate 5) + f + e + k + w[i]\\n                    let temp := and(div(x, 0x80000000000000000000000000000000000000000000000), 0x1F)\\n                    temp := or(and(div(x, 0x800000000000000000000000000000000000000), 0xFFFFFFE0), temp)\\n                    temp := add(f, temp)\\n                    temp := add(and(x, 0xFFFFFFFF), temp)\\n                    temp := add(k, temp)\\n                    temp := add(div(mload(add(scratch, mul(j, 4))), 0x100000000000000000000000000000000000000000000000000000000), temp)\\n                    x := or(div(x, 0x10000000000), mul(temp, 0x10000000000000000000000000000000000000000))\\n                    x := or(and(x, 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF), mul(or(and(div(x, 0x4000000000000), 0xC0000000), and(div(x, 0x400000000000000000000), 0x3FFFFFFF)), 0x100000000000000000000))\\n                }\\n\\n                h := and(add(h, x), 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF)\\n            }\\n            ret := mul(or(or(or(or(and(div(h, 0x100000000), 0xFFFFFFFF00000000000000000000000000000000), and(div(h, 0x1000000), 0xFFFFFFFF000000000000000000000000)), and(div(h, 0x10000), 0xFFFFFFFF0000000000000000)), and(div(h, 0x100), 0xFFFFFFFF00000000)), and(h, 0xFFFFFFFF)), 0x1000000000000000000000000)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x746d9b85de197afbc13182cbe4ba4f7917f19594e07c655d6a0c85fdf7460a8a\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/algorithms/Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC (signing) algorithm.\\n */\\ninterface Algorithm {\\n    /**\\n     * @dev Verifies a signature.\\n     * @param key The public key to verify with.\\n     * @param data The signed data to verify.\\n     * @param signature The signature to verify.\\n     * @return True iff the signature is valid.\\n     */\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata signature\\n    ) external view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0xaf6825f9852c69f8e36540821d067b4550dd2263497af9d645309b6a0c457ba6\"},\"contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary ModexpPrecompile {\\n    /**\\n     * @dev Computes (base ^ exponent) % modulus over big numbers.\\n     */\\n    function modexp(\\n        bytes memory base,\\n        bytes memory exponent,\\n        bytes memory modulus\\n    ) internal view returns (bool success, bytes memory output) {\\n        bytes memory input = abi.encodePacked(\\n            uint256(base.length),\\n            uint256(exponent.length),\\n            uint256(modulus.length),\\n            base,\\n            exponent,\\n            modulus\\n        );\\n\\n        output = new bytes(modulus.length);\\n\\n        assembly {\\n            success := staticcall(\\n                gas(),\\n                5,\\n                add(input, 32),\\n                mload(input),\\n                add(output, 32),\\n                mload(modulus)\\n            )\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb3d46284534eb99061d4c79968c2d0420b63a6649d118ef2ea3608396b85de3f\"},\"contracts/dnssec-oracle/algorithms/RSASHA1Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./Algorithm.sol\\\";\\nimport \\\"../BytesUtils.sol\\\";\\nimport \\\"./RSAVerify.sol\\\";\\nimport \\\"@ensdomains/solsha1/contracts/SHA1.sol\\\";\\n\\n/**\\n * @dev Implements the DNSSEC RSASHA1 algorithm.\\n */\\ncontract RSASHA1Algorithm is Algorithm {\\n    using BytesUtils for *;\\n\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata sig\\n    ) external view override returns (bool) {\\n        bytes memory exponent;\\n        bytes memory modulus;\\n\\n        uint16 exponentLen = uint16(key.readUint8(4));\\n        if (exponentLen != 0) {\\n            exponent = key.substring(5, exponentLen);\\n            modulus = key.substring(\\n                exponentLen + 5,\\n                key.length - exponentLen - 5\\n            );\\n        } else {\\n            exponentLen = key.readUint16(5);\\n            exponent = key.substring(7, exponentLen);\\n            modulus = key.substring(\\n                exponentLen + 7,\\n                key.length - exponentLen - 7\\n            );\\n        }\\n\\n        // Recover the message from the signature\\n        bool ok;\\n        bytes memory result;\\n        (ok, result) = RSAVerify.rsarecover(modulus, exponent, sig);\\n\\n        // Verify it ends with the hash of our data\\n        return ok && SHA1.sha1(data) == result.readBytes20(result.length - 20);\\n    }\\n}\\n\",\"keccak256\":\"0x5dee71f5a212ef48761ab4154fd68fb738eaefe145ee6c3a30d0ed6c63782b55\"},\"contracts/dnssec-oracle/algorithms/RSAVerify.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"../BytesUtils.sol\\\";\\nimport \\\"./ModexpPrecompile.sol\\\";\\n\\nlibrary RSAVerify {\\n    /**\\n     * @dev Recovers the input data from an RSA signature, returning the result in S.\\n     * @param N The RSA public modulus.\\n     * @param E The RSA public exponent.\\n     * @param S The signature to recover.\\n     * @return True if the recovery succeeded.\\n     */\\n    function rsarecover(\\n        bytes memory N,\\n        bytes memory E,\\n        bytes memory S\\n    ) internal view returns (bool, bytes memory) {\\n        return ModexpPrecompile.modexp(S, E, N);\\n    }\\n}\\n\",\"keccak256\":\"0xb386daa80070f79399a2cb97a534f31660161ccd50662fabcf63e26cce064506\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/algorithms/RSASHA256Algorithm.sol": {
        "RSASHA256Algorithm": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "key",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "sig",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implements the DNSSEC RSASHA256 algorithm.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610791806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de8f50a114610030575b600080fd5b61004361003e366004610557565b610057565b604051901515815260200160405180910390f35b600060608060006100a260048b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506102f59050565b60ff169050801561016e576100f760058261ffff168c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505061031a9050565b9250610167610107826005610620565b61ffff9081169060059061011d9085168d610642565b6101279190610642565b8c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505061031a9050565b9150610227565b6101b260058b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061039c9050565b90506101fe60078261ffff168c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505061031a9050565b925061022461020e826007610620565b61ffff9081169060079061011d9085168d610642565b91505b6000606061026c84868a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103c492505050565b90925090508180156102e557506102916020825161028a9190610642565b82906103df565b60028b8b6040516102a3929190610655565b602060405180830381855afa1580156102c0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906102e39190610665565b145b9c9b505050505050505050505050565b60008282815181106103095761030961067e565b016020015160f81c90505b92915050565b825160609061032983856106ad565b111561033457600080fd5b60008267ffffffffffffffff81111561034f5761034f6106c0565b6040519080825280601f01601f191660200182016040528015610379576020820181803683370190505b50905060208082019086860101610391828287610403565b509095945050505050565b81516000906103ac8360026106ad565b11156103b757600080fd5b50016002015161ffff1690565b600060606103d3838587610477565b91509150935093915050565b81516000906103ef8360206106ad565b11156103fa57600080fd5b50016020015190565b6020811061043b578151835261041a6020846106ad565b92506104276020836106ad565b9150610434602082610642565b9050610403565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b60006060600085518551855188888860405160200161049b9695949392919061071f565b6040516020818303038152906040529050835167ffffffffffffffff8111156104c6576104c66106c0565b6040519080825280601f01601f1916602001820160405280156104f0576020820181803683370190505b50915083516020830182516020840160055afa925050935093915050565b60008083601f84011261052057600080fd5b50813567ffffffffffffffff81111561053857600080fd5b60208301915083602082850101111561055057600080fd5b9250929050565b6000806000806000806060878903121561057057600080fd5b863567ffffffffffffffff8082111561058857600080fd5b6105948a838b0161050e565b909850965060208901359150808211156105ad57600080fd5b6105b98a838b0161050e565b909650945060408901359150808211156105d257600080fd5b506105df89828a0161050e565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61ffff81811683821601908082111561063b5761063b6105f1565b5092915050565b81810381811115610314576103146105f1565b8183823760009101908152919050565b60006020828403121561067757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610314576103146105f1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815160005b8181101561071057602081850181015186830152016106f6565b50600093019283525090919050565b868152856020820152846040820152600061074f61074961074360608501886106ef565b866106ef565b846106ef565b9897505050505050505056fea26469706673582212206158f9e8d5ae361bc1463f5bbc5682e291b9e7ba3848f12e26322f23e5bb43fc64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x791 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE8F50A1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x557 JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0xA2 PUSH1 0x4 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x2F5 SWAP1 POP JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP DUP1 ISZERO PUSH2 0x16E JUMPI PUSH2 0xF7 PUSH1 0x5 DUP3 PUSH2 0xFFFF AND DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x31A SWAP1 POP JUMP JUMPDEST SWAP3 POP PUSH2 0x167 PUSH2 0x107 DUP3 PUSH1 0x5 PUSH2 0x620 JUMP JUMPDEST PUSH2 0xFFFF SWAP1 DUP2 AND SWAP1 PUSH1 0x5 SWAP1 PUSH2 0x11D SWAP1 DUP6 AND DUP14 PUSH2 0x642 JUMP JUMPDEST PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x642 JUMP JUMPDEST DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x31A SWAP1 POP JUMP JUMPDEST SWAP2 POP PUSH2 0x227 JUMP JUMPDEST PUSH2 0x1B2 PUSH1 0x5 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x39C SWAP1 POP JUMP JUMPDEST SWAP1 POP PUSH2 0x1FE PUSH1 0x7 DUP3 PUSH2 0xFFFF AND DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x31A SWAP1 POP JUMP JUMPDEST SWAP3 POP PUSH2 0x224 PUSH2 0x20E DUP3 PUSH1 0x7 PUSH2 0x620 JUMP JUMPDEST PUSH2 0xFFFF SWAP1 DUP2 AND SWAP1 PUSH1 0x7 SWAP1 PUSH2 0x11D SWAP1 DUP6 AND DUP14 PUSH2 0x642 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x26C DUP5 DUP7 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3C4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0x2E5 JUMPI POP PUSH2 0x291 PUSH1 0x20 DUP3 MLOAD PUSH2 0x28A SWAP2 SWAP1 PUSH2 0x642 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x2 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP3 SWAP2 SWAP1 PUSH2 0x655 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x665 JUMP JUMPDEST EQ JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x309 JUMPI PUSH2 0x309 PUSH2 0x67E JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x329 DUP4 DUP6 PUSH2 0x6AD JUMP JUMPDEST GT ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x34F JUMPI PUSH2 0x34F PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0x391 DUP3 DUP3 DUP8 PUSH2 0x403 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3AC DUP4 PUSH1 0x2 PUSH2 0x6AD JUMP JUMPDEST GT ISZERO PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x3D3 DUP4 DUP6 DUP8 PUSH2 0x477 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3EF DUP4 PUSH1 0x20 PUSH2 0x6AD JUMP JUMPDEST GT ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x43B JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x41A PUSH1 0x20 DUP5 PUSH2 0x6AD JUMP JUMPDEST SWAP3 POP PUSH2 0x427 PUSH1 0x20 DUP4 PUSH2 0x6AD JUMP JUMPDEST SWAP2 POP PUSH2 0x434 PUSH1 0x20 DUP3 PUSH2 0x642 JUMP JUMPDEST SWAP1 POP PUSH2 0x403 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 DUP6 MLOAD DUP6 MLOAD DUP6 MLOAD DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x49B SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x71F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C6 PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 MLOAD PUSH1 0x20 DUP4 ADD DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x5 GAS STATICCALL SWAP3 POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x594 DUP11 DUP4 DUP12 ADD PUSH2 0x50E JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5B9 DUP11 DUP4 DUP12 ADD PUSH2 0x50E JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5DF DUP10 DUP3 DUP11 ADD PUSH2 0x50E JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x63B JUMPI PUSH2 0x63B PUSH2 0x5F1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x314 JUMPI PUSH2 0x314 PUSH2 0x5F1 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x314 JUMPI PUSH2 0x314 PUSH2 0x5F1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x710 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x6F6 JUMP JUMPDEST POP PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST DUP7 DUP2 MSTORE DUP6 PUSH1 0x20 DUP3 ADD MSTORE DUP5 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x74F PUSH2 0x749 PUSH2 0x743 PUSH1 0x60 DUP6 ADD DUP9 PUSH2 0x6EF JUMP JUMPDEST DUP7 PUSH2 0x6EF JUMP JUMPDEST DUP5 PUSH2 0x6EF JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0x58F9 0xE8 0xD5 0xAE CALLDATASIZE SHL 0xC1 CHAINID EXTCODEHASH JUMPDEST 0xBC JUMP DUP3 0xE2 SWAP2 0xB9 0xE7 0xBA CODESIZE BASEFEE CALL 0x2E 0x26 ORIGIN 0x2F 0x23 0xE5 0xBB NUMBER 0xFC PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "165:1115:36:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@memcpy_4702": {
                  "entryPoint": 1027,
                  "id": 4702,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@modexp_8506": {
                  "entryPoint": 1143,
                  "id": 8506,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@readBytes32_4612": {
                  "entryPoint": 991,
                  "id": 4612,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint16_4572": {
                  "entryPoint": 924,
                  "id": 4572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 757,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@rsarecover_8901": {
                  "entryPoint": 964,
                  "id": 8901,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@substring_4745": {
                  "entryPoint": 794,
                  "id": 4745,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@verify_8874": {
                  "entryPoint": 87,
                  "id": 8874,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 1294,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 1637,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 1367,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_encode_bytes": {
                  "entryPoint": 1775,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1621,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1823,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint16": {
                  "entryPoint": 1568,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 1709,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 1602,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 1521,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 1662,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 1728,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3892:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "527:843:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "573:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "582:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "585:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "575:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "575:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "575:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "548:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "544:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "544:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "569:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "537:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "598:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "625:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "612:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "602:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "644:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "654:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "648:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "699:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "708:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "711:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "701:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "701:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "701:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "695:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "684:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "684:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "681:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "724:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "780:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "791:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "776:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "776:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "800:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "728:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "738:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "817:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "827:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "817:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "844:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "854:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "844:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "871:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "904:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "915:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "900:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "900:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "887:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "887:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "875:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "948:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "957:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "960:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "950:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "950:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "950:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "934:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "944:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "931:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "931:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "928:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "973:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1029:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1040:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1025:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1025:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1051:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "999:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "999:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "977:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "987:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1068:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1078:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1068:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1095:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "1105:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1095:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1122:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1155:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1166:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1151:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1151:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1138:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1138:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1126:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1199:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1208:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1211:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1201:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1201:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1201:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1185:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1195:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1182:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1182:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1179:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1224:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1280:9:111"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1291:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1276:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1276:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1302:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1250:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1250:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1228:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1238:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1319:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "1329:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1319:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1346:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "1356:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1346:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "453:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "464:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "476:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "484:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "492:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "500:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "508:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "516:6:111",
                            "type": ""
                          }
                        ],
                        "src": "366:1004:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1470:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1480:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1492:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1503:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1488:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1488:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1480:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1522:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1547:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1540:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1540:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1533:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1533:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1515:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1515:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1515:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1439:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1450:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1461:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1375:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1599:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1616:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1619:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1609:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1609:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1609:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1713:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1716:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1706:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1706:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1706:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1737:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1740:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1567:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1803:121:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1813:16:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1823:6:111",
                                "type": "",
                                "value": "0xffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1817:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1838:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "1853:1:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1856:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1849:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1849:10:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "1865:1:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1868:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1861:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1861:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1845:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1845:27:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "1838:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1896:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "1898:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1898:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1898:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "1887:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1892:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1884:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1884:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1881:37:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1786:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1789:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "1795:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1756:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1978:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1988:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2000:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2003:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1996:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1996:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "1988:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2029:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2031:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2031:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2031:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "2020:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2026:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2017:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2017:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2014:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1960:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1963:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "1969:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1929:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2209:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2232:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2237:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2245:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2219:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2219:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2219:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2261:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2275:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2280:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2271:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2271:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2265:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2303:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2307:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2296:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2296:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2296:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2318:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "2325:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2318:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2177:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2182:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2190:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2201:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2062:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2419:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2465:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2474:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2477:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2467:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2467:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2467:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2440:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2449:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2436:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2436:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2461:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2432:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2432:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2429:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2490:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2506:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2500:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2500:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2490:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2385:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2396:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2408:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2338:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2559:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2576:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2579:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2569:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2569:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2569:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2673:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2676:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2666:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2666:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2666:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2697:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2700:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2690:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2690:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2690:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2527:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2764:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2774:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2785:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2788:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2781:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2781:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "2774:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2813:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2815:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2815:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2815:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2805:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "2808:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2802:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2802:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2799:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2747:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2750:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "2756:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2716:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2878:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2895:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2898:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2888:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2888:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2888:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2992:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2995:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2985:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2985:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2985:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3016:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3019:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3009:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3009:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3009:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2846:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3084:273:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3094:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3114:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3108:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3108:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3098:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3129:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3138:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3133:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3200:76:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "3225:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "3230:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3221:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3221:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3248:5:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3255:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3244:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3244:13:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3259:4:111",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3240:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3240:24:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3234:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3234:31:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3214:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3214:52:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3214:52:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3159:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3162:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3156:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3156:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3170:21:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3172:17:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "3181:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3184:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3177:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3177:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3172:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3152:3:111",
                                "statements": []
                              },
                              "src": "3148:128:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3285:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3299:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3304:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3295:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3295:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3289:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3327:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3331:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3320:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3320:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3320:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3342:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "3349:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3342:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3061:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3068:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3076:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3035:322:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3675:215:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3692:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3697:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3685:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3685:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3685:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3724:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3729:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3720:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3720:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3734:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3713:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3713:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3713:28:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3761:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3766:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3757:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3757:12:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3771:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3750:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3750:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3750:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3787:97:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "3811:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3836:6:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3861:6:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "3873:3:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3878:2:111",
                                                "type": "",
                                                "value": "96"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3869:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3869:12:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "3844:16:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3844:38:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "3819:16:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3819:64:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3794:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3794:90:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3787:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3611:3:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3616:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3624:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3632:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3640:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3648:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3656:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3667:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3362:528:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint16(x, y) -> sum\n    {\n        let _1 := 0xffff\n        sum := add(and(x, _1), and(y, _1))\n        if gt(sum, _1) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        mstore(add(pos, 64), value2)\n        end := abi_encode_bytes(value5, abi_encode_bytes(value4, abi_encode_bytes(value3, add(pos, 96))))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de8f50a114610030575b600080fd5b61004361003e366004610557565b610057565b604051901515815260200160405180910390f35b600060608060006100a260048b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506102f59050565b60ff169050801561016e576100f760058261ffff168c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505061031a9050565b9250610167610107826005610620565b61ffff9081169060059061011d9085168d610642565b6101279190610642565b8c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505061031a9050565b9150610227565b6101b260058b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061039c9050565b90506101fe60078261ffff168c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505061031a9050565b925061022461020e826007610620565b61ffff9081169060079061011d9085168d610642565b91505b6000606061026c84868a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103c492505050565b90925090508180156102e557506102916020825161028a9190610642565b82906103df565b60028b8b6040516102a3929190610655565b602060405180830381855afa1580156102c0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906102e39190610665565b145b9c9b505050505050505050505050565b60008282815181106103095761030961067e565b016020015160f81c90505b92915050565b825160609061032983856106ad565b111561033457600080fd5b60008267ffffffffffffffff81111561034f5761034f6106c0565b6040519080825280601f01601f191660200182016040528015610379576020820181803683370190505b50905060208082019086860101610391828287610403565b509095945050505050565b81516000906103ac8360026106ad565b11156103b757600080fd5b50016002015161ffff1690565b600060606103d3838587610477565b91509150935093915050565b81516000906103ef8360206106ad565b11156103fa57600080fd5b50016020015190565b6020811061043b578151835261041a6020846106ad565b92506104276020836106ad565b9150610434602082610642565b9050610403565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b60006060600085518551855188888860405160200161049b9695949392919061071f565b6040516020818303038152906040529050835167ffffffffffffffff8111156104c6576104c66106c0565b6040519080825280601f01601f1916602001820160405280156104f0576020820181803683370190505b50915083516020830182516020840160055afa925050935093915050565b60008083601f84011261052057600080fd5b50813567ffffffffffffffff81111561053857600080fd5b60208301915083602082850101111561055057600080fd5b9250929050565b6000806000806000806060878903121561057057600080fd5b863567ffffffffffffffff8082111561058857600080fd5b6105948a838b0161050e565b909850965060208901359150808211156105ad57600080fd5b6105b98a838b0161050e565b909650945060408901359150808211156105d257600080fd5b506105df89828a0161050e565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61ffff81811683821601908082111561063b5761063b6105f1565b5092915050565b81810381811115610314576103146105f1565b8183823760009101908152919050565b60006020828403121561067757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610314576103146105f1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815160005b8181101561071057602081850181015186830152016106f6565b50600093019283525090919050565b868152856020820152846040820152600061074f61074961074360608501886106ef565b866106ef565b846106ef565b9897505050505050505056fea26469706673582212206158f9e8d5ae361bc1463f5bbc5682e291b9e7ba3848f12e26322f23e5bb43fc64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE8F50A1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x557 JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0xA2 PUSH1 0x4 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x2F5 SWAP1 POP JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP DUP1 ISZERO PUSH2 0x16E JUMPI PUSH2 0xF7 PUSH1 0x5 DUP3 PUSH2 0xFFFF AND DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x31A SWAP1 POP JUMP JUMPDEST SWAP3 POP PUSH2 0x167 PUSH2 0x107 DUP3 PUSH1 0x5 PUSH2 0x620 JUMP JUMPDEST PUSH2 0xFFFF SWAP1 DUP2 AND SWAP1 PUSH1 0x5 SWAP1 PUSH2 0x11D SWAP1 DUP6 AND DUP14 PUSH2 0x642 JUMP JUMPDEST PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x642 JUMP JUMPDEST DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x31A SWAP1 POP JUMP JUMPDEST SWAP2 POP PUSH2 0x227 JUMP JUMPDEST PUSH2 0x1B2 PUSH1 0x5 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x39C SWAP1 POP JUMP JUMPDEST SWAP1 POP PUSH2 0x1FE PUSH1 0x7 DUP3 PUSH2 0xFFFF AND DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP PUSH2 0x31A SWAP1 POP JUMP JUMPDEST SWAP3 POP PUSH2 0x224 PUSH2 0x20E DUP3 PUSH1 0x7 PUSH2 0x620 JUMP JUMPDEST PUSH2 0xFFFF SWAP1 DUP2 AND SWAP1 PUSH1 0x7 SWAP1 PUSH2 0x11D SWAP1 DUP6 AND DUP14 PUSH2 0x642 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x26C DUP5 DUP7 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3C4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0x2E5 JUMPI POP PUSH2 0x291 PUSH1 0x20 DUP3 MLOAD PUSH2 0x28A SWAP2 SWAP1 PUSH2 0x642 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x2 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP3 SWAP2 SWAP1 PUSH2 0x655 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x665 JUMP JUMPDEST EQ JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x309 JUMPI PUSH2 0x309 PUSH2 0x67E JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x329 DUP4 DUP6 PUSH2 0x6AD JUMP JUMPDEST GT ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x34F JUMPI PUSH2 0x34F PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0x391 DUP3 DUP3 DUP8 PUSH2 0x403 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3AC DUP4 PUSH1 0x2 PUSH2 0x6AD JUMP JUMPDEST GT ISZERO PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x3D3 DUP4 DUP6 DUP8 PUSH2 0x477 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3EF DUP4 PUSH1 0x20 PUSH2 0x6AD JUMP JUMPDEST GT ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x43B JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x41A PUSH1 0x20 DUP5 PUSH2 0x6AD JUMP JUMPDEST SWAP3 POP PUSH2 0x427 PUSH1 0x20 DUP4 PUSH2 0x6AD JUMP JUMPDEST SWAP2 POP PUSH2 0x434 PUSH1 0x20 DUP3 PUSH2 0x642 JUMP JUMPDEST SWAP1 POP PUSH2 0x403 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 DUP6 MLOAD DUP6 MLOAD DUP6 MLOAD DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x49B SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x71F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C6 PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 MLOAD PUSH1 0x20 DUP4 ADD DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x5 GAS STATICCALL SWAP3 POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x594 DUP11 DUP4 DUP12 ADD PUSH2 0x50E JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5B9 DUP11 DUP4 DUP12 ADD PUSH2 0x50E JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5DF DUP10 DUP3 DUP11 ADD PUSH2 0x50E JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x63B JUMPI PUSH2 0x63B PUSH2 0x5F1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x314 JUMPI PUSH2 0x314 PUSH2 0x5F1 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x314 JUMPI PUSH2 0x314 PUSH2 0x5F1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x710 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x6F6 JUMP JUMPDEST POP PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST DUP7 DUP2 MSTORE DUP6 PUSH1 0x20 DUP3 ADD MSTORE DUP5 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x74F PUSH2 0x749 PUSH2 0x743 PUSH1 0x60 DUP6 ADD DUP9 PUSH2 0x6EF JUMP JUMPDEST DUP7 PUSH2 0x6EF JUMP JUMPDEST DUP5 PUSH2 0x6EF JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0x58F9 0xE8 0xD5 0xAE CALLDATASIZE SHL 0xC1 CHAINID EXTCODEHASH JUMPDEST 0xBC JUMP DUP3 0xE2 SWAP2 0xB9 0xE7 0xBA CODESIZE BASEFEE CALL 0x2E 0x26 ORIGIN 0x2F 0x23 0xE5 0xBB NUMBER 0xFC PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "165:1115:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;241:1037;;;;;;:::i;:::-;;:::i;:::-;;;1540:14:111;;1533:22;1515:41;;1503:2;1488:18;241:1037:36;;;;;;;;380:4;396:21;427:20;458:18;486:16;500:1;486:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;486:13:36;;:16;-1:-1:-1;;486:13:36;:16;-1:-1:-1;486:16:36:i;:::-;479:24;;;-1:-1:-1;517:16:36;;513:463;;560:29;574:1;577:11;560:29;;:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;560:13:36;;:29;;-1:-1:-1;;560:13:36;:29;-1:-1:-1;560:29:36:i;:::-;549:40;-1:-1:-1;613:106:36;644:15;:11;658:1;644:15;:::i;:::-;613:106;;;;;704:1;;677:24;;;;:3;:24;:::i;:::-;:28;;;;:::i;:::-;613:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;613:13:36;;:106;;-1:-1:-1;;613:13:36;:106;-1:-1:-1;613:106:36:i;:::-;603:116;;513:463;;;764:17;779:1;764:3;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;764:14:36;;:17;-1:-1:-1;;764:14:36;:17;-1:-1:-1;764:17:36:i;:::-;750:31;;806:29;820:1;823:11;806:29;;:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;806:13:36;;:29;;-1:-1:-1;;806:13:36;:29;-1:-1:-1;806:29:36:i;:::-;795:40;-1:-1:-1;859:106:36;890:15;:11;904:1;890:15;:::i;:::-;859:106;;;;;950:1;;923:24;;;;:3;:24;:::i;859:106::-;849:116;;513:463;1036:7;1053:19;1097:44;1118:7;1127:8;1137:3;;1097:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1097:20:36;;-1:-1:-1;;;1097:44:36:i;:::-;1082:59;;-1:-1:-1;1082:59:36;-1:-1:-1;1082:59:36;1211:60;;;;;1233:38;1268:2;1252:6;:13;:18;;;;:::i;:::-;1233:6;;:18;:38::i;:::-;1217:12;1224:4;;1217:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;1211:60;1204:67;241:1037;-1:-1:-1;;;;;;;;;;;;241:1037:36:o;5750:153:25:-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;;:::o;9465:436::-;9633:11;;9585:12;;9617;9626:3;9617:6;:12;:::i;:::-;:27;;9609:36;;;;;;9656:16;9685:3;9675:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:14:25;-1:-1:-1;9656:33:25;-1:-1:-1;9783:2:25;9774:12;;;;9806:26;;;;9851:22;9774:12;9806:26;9869:3;9851:6;:22::i;:::-;-1:-1:-1;9891:3:25;;9465:436;-1:-1:-1;;;;;9465:436:25:o;6152:254::-;6296:11;;6251:10;;6285:7;:3;6291:1;6285:7;:::i;:::-;:22;;6277:31;;;;;;-1:-1:-1;6358:22:25;6372:1;6358:22;6352:29;6383:6;6348:42;;6152:254::o;383:197:37:-;504:4;510:12;541:32;565:1;568;571;541:23;:32::i;:::-;534:39;;;;383:197;;;;;;:::o;7136:245:25:-;7283:11;;7236;;7271:8;:3;7277:2;7271:8;:::i;:::-;:23;;7263:32;;;;;;-1:-1:-1;7341:23:25;7355:2;7341:23;7335:30;;7136:245::o;8595:645::-;8768:2;8761:3;:9;8754:165;;8837:10;;8824:24;;8875:10;8883:2;8831:4;8875:10;:::i;:::-;;-1:-1:-1;8899:9:25;8906:2;8899:9;;:::i;:::-;;-1:-1:-1;8772:9:25;8779:2;8772:9;;:::i;:::-;;;8754:165;;;9081:10;;9140:11;;9007:2;:8;;;;9001:3;:15;9000:21;;9093:9;;9077:26;;;9136:22;;9188:21;9175:35;;8595:645::o;139:694:33:-;272:12;286:19;317:18;376:4;:11;410:8;:15;448:7;:14;477:4;495:8;517:7;338:196;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;317:217;;564:7;:14;554:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;554:25:33;;545:34;;795:7;789:14;768:2;760:6;756:15;732:5;726:12;705:2;698:5;694:14;675:1;652:5;624:193;613:204;;599:228;139:694;;;;;;:::o;14:347:111:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:111;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:1004::-;476:6;484;492;500;508;516;569:2;557:9;548:7;544:23;540:32;537:52;;;585:1;582;575:12;537:52;625:9;612:23;654:18;695:2;687:6;684:14;681:34;;;711:1;708;701:12;681:34;750:58;800:7;791:6;780:9;776:22;750:58;:::i;:::-;827:8;;-1:-1:-1;724:84:111;-1:-1:-1;915:2:111;900:18;;887:32;;-1:-1:-1;931:16:111;;;928:36;;;960:1;957;950:12;928:36;999:60;1051:7;1040:8;1029:9;1025:24;999:60;:::i;:::-;1078:8;;-1:-1:-1;973:86:111;-1:-1:-1;1166:2:111;1151:18;;1138:32;;-1:-1:-1;1182:16:111;;;1179:36;;;1211:1;1208;1201:12;1179:36;;1250:60;1302:7;1291:8;1280:9;1276:24;1250:60;:::i;:::-;366:1004;;;;-1:-1:-1;366:1004:111;;-1:-1:-1;366:1004:111;;1329:8;;366:1004;-1:-1:-1;;;366:1004:111:o;1567:184::-;1619:77;1616:1;1609:88;1716:4;1713:1;1706:15;1740:4;1737:1;1730:15;1756:168;1823:6;1849:10;;;1861;;;1845:27;;1884:11;;;1881:37;;;1898:18;;:::i;:::-;1881:37;1756:168;;;;:::o;1929:128::-;1996:9;;;2017:11;;;2014:37;;;2031:18;;:::i;2062:271::-;2245:6;2237;2232:3;2219:33;2201:3;2271:16;;2296:13;;;2271:16;2062:271;-1:-1:-1;2062:271:111:o;2338:184::-;2408:6;2461:2;2449:9;2440:7;2436:23;2432:32;2429:52;;;2477:1;2474;2467:12;2429:52;-1:-1:-1;2500:16:111;;2338:184;-1:-1:-1;2338:184:111:o;2527:::-;2579:77;2576:1;2569:88;2676:4;2673:1;2666:15;2700:4;2697:1;2690:15;2716:125;2781:9;;;2802:10;;;2799:36;;;2815:18;;:::i;2846:184::-;2898:77;2895:1;2888:88;2995:4;2992:1;2985:15;3019:4;3016:1;3009:15;3035:322;3076:3;3114:5;3108:12;3138:1;3148:128;3162:6;3159:1;3156:13;3148:128;;;3259:4;3244:13;;;3240:24;;3234:31;3221:11;;;3214:52;3177:12;3148:128;;;-1:-1:-1;3331:1:111;3295:16;;3320:13;;;-1:-1:-1;3295:16:111;;3035:322;-1:-1:-1;3035:322:111:o;3362:528::-;3697:6;3692:3;3685:19;3734:6;3729:2;3724:3;3720:12;3713:28;3771:6;3766:2;3761:3;3757:12;3750:28;3667:3;3794:90;3819:64;3844:38;3878:2;3873:3;3869:12;3861:6;3844:38;:::i;:::-;3836:6;3819:64;:::i;:::-;3811:6;3794:90;:::i;:::-;3787:97;3362:528;-1:-1:-1;;;;;;;;3362:528:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "387400",
                "executionCost": "424",
                "totalCost": "387824"
              },
              "external": {
                "verify(bytes,bytes,bytes)": "infinite"
              }
            },
            "methodIdentifiers": {
              "verify(bytes,bytes,bytes)": "de8f50a1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements the DNSSEC RSASHA256 algorithm.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/algorithms/RSASHA256Algorithm.sol\":\"RSASHA256Algorithm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/algorithms/Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC (signing) algorithm.\\n */\\ninterface Algorithm {\\n    /**\\n     * @dev Verifies a signature.\\n     * @param key The public key to verify with.\\n     * @param data The signed data to verify.\\n     * @param signature The signature to verify.\\n     * @return True iff the signature is valid.\\n     */\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata signature\\n    ) external view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0xaf6825f9852c69f8e36540821d067b4550dd2263497af9d645309b6a0c457ba6\"},\"contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary ModexpPrecompile {\\n    /**\\n     * @dev Computes (base ^ exponent) % modulus over big numbers.\\n     */\\n    function modexp(\\n        bytes memory base,\\n        bytes memory exponent,\\n        bytes memory modulus\\n    ) internal view returns (bool success, bytes memory output) {\\n        bytes memory input = abi.encodePacked(\\n            uint256(base.length),\\n            uint256(exponent.length),\\n            uint256(modulus.length),\\n            base,\\n            exponent,\\n            modulus\\n        );\\n\\n        output = new bytes(modulus.length);\\n\\n        assembly {\\n            success := staticcall(\\n                gas(),\\n                5,\\n                add(input, 32),\\n                mload(input),\\n                add(output, 32),\\n                mload(modulus)\\n            )\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb3d46284534eb99061d4c79968c2d0420b63a6649d118ef2ea3608396b85de3f\"},\"contracts/dnssec-oracle/algorithms/RSASHA256Algorithm.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./Algorithm.sol\\\";\\nimport \\\"../BytesUtils.sol\\\";\\nimport \\\"./RSAVerify.sol\\\";\\n\\n/**\\n * @dev Implements the DNSSEC RSASHA256 algorithm.\\n */\\ncontract RSASHA256Algorithm is Algorithm {\\n    using BytesUtils for *;\\n\\n    function verify(\\n        bytes calldata key,\\n        bytes calldata data,\\n        bytes calldata sig\\n    ) external view override returns (bool) {\\n        bytes memory exponent;\\n        bytes memory modulus;\\n\\n        uint16 exponentLen = uint16(key.readUint8(4));\\n        if (exponentLen != 0) {\\n            exponent = key.substring(5, exponentLen);\\n            modulus = key.substring(\\n                exponentLen + 5,\\n                key.length - exponentLen - 5\\n            );\\n        } else {\\n            exponentLen = key.readUint16(5);\\n            exponent = key.substring(7, exponentLen);\\n            modulus = key.substring(\\n                exponentLen + 7,\\n                key.length - exponentLen - 7\\n            );\\n        }\\n\\n        // Recover the message from the signature\\n        bool ok;\\n        bytes memory result;\\n        (ok, result) = RSAVerify.rsarecover(modulus, exponent, sig);\\n\\n        // Verify it ends with the hash of our data\\n        return ok && sha256(data) == result.readBytes32(result.length - 32);\\n    }\\n}\\n\",\"keccak256\":\"0x1d6ba44f41e957f9c53e6e5b88150cbb6c9f46e9da196502984ee0a53e9ac5a9\"},\"contracts/dnssec-oracle/algorithms/RSAVerify.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"../BytesUtils.sol\\\";\\nimport \\\"./ModexpPrecompile.sol\\\";\\n\\nlibrary RSAVerify {\\n    /**\\n     * @dev Recovers the input data from an RSA signature, returning the result in S.\\n     * @param N The RSA public modulus.\\n     * @param E The RSA public exponent.\\n     * @param S The signature to recover.\\n     * @return True if the recovery succeeded.\\n     */\\n    function rsarecover(\\n        bytes memory N,\\n        bytes memory E,\\n        bytes memory S\\n    ) internal view returns (bool, bytes memory) {\\n        return ModexpPrecompile.modexp(S, E, N);\\n    }\\n}\\n\",\"keccak256\":\"0xb386daa80070f79399a2cb97a534f31660161ccd50662fabcf63e26cce064506\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/algorithms/RSAVerify.sol": {
        "RSAVerify": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122066695be220298339f0b014903038932e360d0e030bbf89b1bd5833291cd0f59b64736f6c63430008110033",
              "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 PUSH7 0x695BE220298339 CREATE 0xB0 EQ SWAP1 ADDRESS CODESIZE SWAP4 0x2E CALLDATASIZE 0xD 0xE SUB SIGNEXTEND 0xBF DUP10 0xB1 0xBD PC CALLER 0x29 SHR 0xD0 CREATE2 SWAP12 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "87:495:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;87:495:37;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122066695be220298339f0b014903038932e360d0e030bbf89b1bd5833291cd0f59b64736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x695BE220298339 CREATE 0xB0 EQ SWAP1 ADDRESS CODESIZE SWAP4 0x2E CALLDATASIZE 0xD 0xE SUB SIGNEXTEND 0xBF DUP10 0xB1 0xBD PC CALLER 0x29 SHR 0xD0 CREATE2 SWAP12 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "87:495:37:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "rsarecover(bytes memory,bytes memory,bytes memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/algorithms/RSAVerify.sol\":\"RSAVerify\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary ModexpPrecompile {\\n    /**\\n     * @dev Computes (base ^ exponent) % modulus over big numbers.\\n     */\\n    function modexp(\\n        bytes memory base,\\n        bytes memory exponent,\\n        bytes memory modulus\\n    ) internal view returns (bool success, bytes memory output) {\\n        bytes memory input = abi.encodePacked(\\n            uint256(base.length),\\n            uint256(exponent.length),\\n            uint256(modulus.length),\\n            base,\\n            exponent,\\n            modulus\\n        );\\n\\n        output = new bytes(modulus.length);\\n\\n        assembly {\\n            success := staticcall(\\n                gas(),\\n                5,\\n                add(input, 32),\\n                mload(input),\\n                add(output, 32),\\n                mload(modulus)\\n            )\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb3d46284534eb99061d4c79968c2d0420b63a6649d118ef2ea3608396b85de3f\"},\"contracts/dnssec-oracle/algorithms/RSAVerify.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"../BytesUtils.sol\\\";\\nimport \\\"./ModexpPrecompile.sol\\\";\\n\\nlibrary RSAVerify {\\n    /**\\n     * @dev Recovers the input data from an RSA signature, returning the result in S.\\n     * @param N The RSA public modulus.\\n     * @param E The RSA public exponent.\\n     * @param S The signature to recover.\\n     * @return True if the recovery succeeded.\\n     */\\n    function rsarecover(\\n        bytes memory N,\\n        bytes memory E,\\n        bytes memory S\\n    ) internal view returns (bool, bytes memory) {\\n        return ModexpPrecompile.modexp(S, E, N);\\n    }\\n}\\n\",\"keccak256\":\"0xb386daa80070f79399a2cb97a534f31660161ccd50662fabcf63e26cce064506\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/digests/Digest.sol": {
        "Digest": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "An interface for contracts implementing a DNSSEC digest.",
            "kind": "dev",
            "methods": {
              "verify(bytes,bytes)": {
                "details": "Verifies a cryptographic hash.",
                "params": {
                  "data": "The data to hash.",
                  "hash": "The hash to compare to."
                },
                "returns": {
                  "_0": "True iff the hashed data matches the provided hash value."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "verify(bytes,bytes)": "f7e83aee"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An interface for contracts implementing a DNSSEC digest.\",\"kind\":\"dev\",\"methods\":{\"verify(bytes,bytes)\":{\"details\":\"Verifies a cryptographic hash.\",\"params\":{\"data\":\"The data to hash.\",\"hash\":\"The hash to compare to.\"},\"returns\":{\"_0\":\"True iff the hashed data matches the provided hash value.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/digests/Digest.sol\":\"Digest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/digests/Digest.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC digest.\\n */\\ninterface Digest {\\n    /**\\n     * @dev Verifies a cryptographic hash.\\n     * @param data The data to hash.\\n     * @param hash The hash to compare to.\\n     * @return True iff the hashed data matches the provided hash value.\\n     */\\n    function verify(bytes calldata data, bytes calldata hash)\\n        external\\n        pure\\n        virtual\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf082904d13f33cbbd613ad733ae86c5d79b5aa9afd61d6d99714d7fe8986be34\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/digests/DummyDigest.sol": {
        "DummyDigest": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implements a dummy DNSSEC digest that approves all hashes, for testing.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610147806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f7e83aee14610030575b600080fd5b61004861003e3660046100a5565b6001949350505050565b604051901515815260200160405180910390f35b60008083601f84011261006e57600080fd5b50813567ffffffffffffffff81111561008657600080fd5b60208301915083602082850101111561009e57600080fd5b9250929050565b600080600080604085870312156100bb57600080fd5b843567ffffffffffffffff808211156100d357600080fd5b6100df8883890161005c565b909650945060208701359150808211156100f857600080fd5b506101058782880161005c565b9598949750955050505056fea26469706673582212201f5559753b3e941f7890b8114d9c83addb8e9c605f5003a174dd89d4ed90f60264736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x147 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF7E83AEE EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xA5 JUMP JUMPDEST PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDF DUP9 DUP4 DUP10 ADD PUSH2 0x5C JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x105 DUP8 DUP3 DUP9 ADD PUSH2 0x5C JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F SSTORE MSIZE PUSH22 0x3B3E941F7890B8114D9C83ADDB8E9C605F5003A174DD DUP10 0xD4 0xED SWAP1 0xF6 MUL PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "137:189:39:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@verify_8935": {
                  "entryPoint": null,
                  "id": 8935,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 92,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 165,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1277:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "491:592:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "537:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "546:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "549:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "539:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "539:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "539:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "512:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "521:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "508:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "508:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "533:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "504:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "504:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "501:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "562:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "589:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "576:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "576:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "566:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "608:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "618:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "612:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "663:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "672:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "675:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "665:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "665:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "665:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "651:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "659:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "648:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "648:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "645:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "688:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "744:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "755:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "740:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "740:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "764:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "714:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "714:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "692:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "702:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "781:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "791:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "781:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "808:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "818:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "808:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "835:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "868:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "879:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "864:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "864:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "851:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "851:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "839:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "912:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "921:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "924:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "914:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "914:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "914:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "898:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "908:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "895:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "895:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "892:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "937:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "993:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "989:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1015:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "963:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "963:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "941:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "951:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1032:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1042:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1032:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1059:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "1069:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "433:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "444:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "456:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "464:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "472:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "480:6:111",
                            "type": ""
                          }
                        ],
                        "src": "366:717:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1183:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1193:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1205:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1216:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1193:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1235:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1260:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1253:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1253:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1246:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1246:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1228:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1228:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1152:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1163:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1174:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1088:187:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f7e83aee14610030575b600080fd5b61004861003e3660046100a5565b6001949350505050565b604051901515815260200160405180910390f35b60008083601f84011261006e57600080fd5b50813567ffffffffffffffff81111561008657600080fd5b60208301915083602082850101111561009e57600080fd5b9250929050565b600080600080604085870312156100bb57600080fd5b843567ffffffffffffffff808211156100d357600080fd5b6100df8883890161005c565b909650945060208701359150808211156100f857600080fd5b506101058782880161005c565b9598949750955050505056fea26469706673582212201f5559753b3e941f7890b8114d9c83addb8e9c605f5003a174dd89d4ed90f60264736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF7E83AEE EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xA5 JUMP JUMPDEST PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDF DUP9 DUP4 DUP10 ADD PUSH2 0x5C JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x105 DUP8 DUP3 DUP9 ADD PUSH2 0x5C JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F SSTORE MSIZE PUSH22 0x3B3E941F7890B8114D9C83ADDB8E9C605F5003A174DD DUP10 0xD4 0xED SWAP1 0xF6 MUL PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "137:189:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;174:150;;;;;;:::i;:::-;313:4;174:150;;;;;;;;;;1253:14:111;;1246:22;1228:41;;1216:2;1201:18;174:150:39;;;;;;;14:347:111;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:111;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:717::-;456:6;464;472;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;618:18;659:2;651:6;648:14;645:34;;;675:1;672;665:12;645:34;714:58;764:7;755:6;744:9;740:22;714:58;:::i;:::-;791:8;;-1:-1:-1;688:84:111;-1:-1:-1;879:2:111;864:18;;851:32;;-1:-1:-1;895:16:111;;;892:36;;;924:1;921;914:12;892:36;;963:60;1015:7;1004:8;993:9;989:24;963:60;:::i;:::-;366:717;;;;-1:-1:-1;1042:8:111;-1:-1:-1;;;;366:717:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "65400",
                "executionCost": "117",
                "totalCost": "65517"
              },
              "external": {
                "verify(bytes,bytes)": "infinite"
              }
            },
            "methodIdentifiers": {
              "verify(bytes,bytes)": "f7e83aee"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements a dummy DNSSEC digest that approves all hashes, for testing.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/digests/DummyDigest.sol\":\"DummyDigest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/digests/Digest.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC digest.\\n */\\ninterface Digest {\\n    /**\\n     * @dev Verifies a cryptographic hash.\\n     * @param data The data to hash.\\n     * @param hash The hash to compare to.\\n     * @return True iff the hashed data matches the provided hash value.\\n     */\\n    function verify(bytes calldata data, bytes calldata hash)\\n        external\\n        pure\\n        virtual\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf082904d13f33cbbd613ad733ae86c5d79b5aa9afd61d6d99714d7fe8986be34\"},\"contracts/dnssec-oracle/digests/DummyDigest.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./Digest.sol\\\";\\n\\n/**\\n * @dev Implements a dummy DNSSEC digest that approves all hashes, for testing.\\n */\\ncontract DummyDigest is Digest {\\n    function verify(bytes calldata, bytes calldata)\\n        external\\n        pure\\n        override\\n        returns (bool)\\n    {\\n        return true;\\n    }\\n}\\n\",\"keccak256\":\"0xeb2d4ff6cec271ed4e3bfaef3a699e90bab35121c1a33f47b38d754c37d3c0e6\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/digests/SHA1Digest.sol": {
        "SHA1Digest": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implements the DNSSEC SHA1 digest.",
            "kind": "dev",
            "methods": {
              "verify(bytes,bytes)": {
                "details": "Verifies a cryptographic hash.",
                "params": {
                  "data": "The data to hash.",
                  "hash": "The hash to compare to."
                },
                "returns": {
                  "_0": "True iff the hashed data matches the provided hash value."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506108d0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f7e83aee14610030575b600080fd5b61004361003e3660046107ee565b610057565b604051901515815260200160405180910390f35b6000601482146100c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420736861312068617368206c656e6774680000000000000000604482015260640160405180910390fd5b600061010d600085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061018f9050565b6bffffffffffffffffffffffff19169050600061015f87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506101d592505050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919091149695505050505050565b815160009061019f83601461085a565b11156101aa57600080fd5b5001602001517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690565b60006040518251602084019350604067ffffffffffffffc060018301160160098282031060018103610208576040820191505b50776745230100efcdab890098badcfe001032547600c3d2e1f0610279565b60008383101561027257508082015192829003926020841015610272577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208590036101000a0119165b9392505050565b60005b828110156107255761028f848289610227565b855261029f846020830189610227565b6020860152604081850310600181036102bb5760808286038701535b50604083038114600181036102d857602086018051600887021790525b5060405b60808110156103d8578581017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc88201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff48401516002911891909218189081027ffffffffefffffffefffffffefffffffefffffffefffffffefffffffefffffffe1663800000009091047c010000000100000001000000010000000100000001000000010000000116179052600c016102dc565b5060805b6101408110156104d9578581017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe88401516004911891909218189081027ffffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffc1663400000009091047c0300000003000000030000000300000003000000030000000300000003161790526018016103dc565b508160008060005b60508110156106fb57601481048015610511576001811461054d576002811461058757600381146105c6576105fc565b6501000000000085046a0100000000000000000000860481186f01000000000000000000000000000000870416189350635a82799992506105fc565b6501000000000085046f0100000000000000000000000000000086046a0100000000000000000000870418189350636ed9eba192506105fc565b6a010000000000000000000085046f010000000000000000000000000000008604818117650100000000008804169116179350638f1bbcdc92506105fc565b6501000000000085046f0100000000000000000000000000000086046a010000000000000000000087041818935063ca62c1d692505b50601f770800000000000000000000000000000000000000000000008504168063ffffffe073080000000000000000000000000000000000000087041617905080840190508063ffffffff86160190508083019050807c0100000000000000000000000000000000000000000000000000000000600484028c015104019050740100000000000000000000000000000000000000008102650100000000008604179450506a0100000000000000000000633fffffff6a040000000000000000000086041663c00000006604000000000000870416170277ffffffff00ffffffff000000000000ffffffff00ffffffff85161793506001810190506104e1565b5050509190910177ffffffff00ffffffff00ffffffff00ffffffff00ffffffff169060400161027c565b506c0100000000000000000000000063ffffffff821667ffffffff000000006101008404166bffffffff0000000000000000620100008504166fffffffff000000000000000000000000630100000086041673ffffffff000000000000000000000000000000006401000000008704161717171702945050505050919050565b60008083601f8401126107b757600080fd5b50813567ffffffffffffffff8111156107cf57600080fd5b6020830191508360208285010111156107e757600080fd5b9250929050565b6000806000806040858703121561080457600080fd5b843567ffffffffffffffff8082111561081c57600080fd5b610828888389016107a5565b9096509450602087013591508082111561084157600080fd5b5061084e878288016107a5565b95989497509550505050565b80820180821115610894577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea264697066735822122003ed89e193e6fe1b3a81cb6c2bc7f2e635d41d1e58dceb07bbf548364251ddf764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D0 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF7E83AEE EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x14 DUP3 EQ PUSH2 0xC7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420736861312068617368206C656E6774680000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10D PUSH1 0x0 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x18F SWAP1 POP JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 POP PUSH1 0x0 PUSH2 0x15F DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D5 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP2 SWAP1 SWAP2 EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x19F DUP4 PUSH1 0x14 PUSH2 0x85A JUMP JUMPDEST GT ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x40 PUSH8 0xFFFFFFFFFFFFFFC0 PUSH1 0x1 DUP4 ADD AND ADD PUSH1 0x9 DUP3 DUP3 SUB LT PUSH1 0x1 DUP2 SUB PUSH2 0x208 JUMPI PUSH1 0x40 DUP3 ADD SWAP2 POP JUMPDEST POP PUSH24 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0 PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 LT ISZERO PUSH2 0x272 JUMPI POP DUP1 DUP3 ADD MLOAD SWAP3 DUP3 SWAP1 SUB SWAP3 PUSH1 0x20 DUP5 LT ISZERO PUSH2 0x272 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP6 SWAP1 SUB PUSH2 0x100 EXP ADD NOT AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x725 JUMPI PUSH2 0x28F DUP5 DUP3 DUP10 PUSH2 0x227 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x29F DUP5 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x227 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP2 DUP6 SUB LT PUSH1 0x1 DUP2 SUB PUSH2 0x2BB JUMPI PUSH1 0x80 DUP3 DUP7 SUB DUP8 ADD MSTORE8 JUMPDEST POP PUSH1 0x40 DUP4 SUB DUP2 EQ PUSH1 0x1 DUP2 SUB PUSH2 0x2D8 JUMPI PUSH1 0x20 DUP7 ADD DUP1 MLOAD PUSH1 0x8 DUP8 MUL OR SWAP1 MSTORE JUMPDEST POP PUSH1 0x40 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI DUP6 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP2 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 DUP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 DUP5 ADD MLOAD PUSH1 0x2 SWAP2 XOR SWAP2 SWAP1 SWAP3 XOR XOR SWAP1 DUP2 MUL PUSH32 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE AND PUSH4 0x80000000 SWAP1 SWAP2 DIV PUSH29 0x100000001000000010000000100000001000000010000000100000001 AND OR SWAP1 MSTORE PUSH1 0xC ADD PUSH2 0x2DC JUMP JUMPDEST POP PUSH1 0x80 JUMPDEST PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI DUP6 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP2 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 DUP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 DUP5 ADD MLOAD PUSH1 0x4 SWAP2 XOR SWAP2 SWAP1 SWAP3 XOR XOR SWAP1 DUP2 MUL PUSH32 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC AND PUSH4 0x40000000 SWAP1 SWAP2 DIV PUSH29 0x300000003000000030000000300000003000000030000000300000003 AND OR SWAP1 MSTORE PUSH1 0x18 ADD PUSH2 0x3DC JUMP JUMPDEST POP DUP2 PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x50 DUP2 LT ISZERO PUSH2 0x6FB JUMPI PUSH1 0x14 DUP2 DIV DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x54D JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x587 JUMPI PUSH1 0x3 DUP2 EQ PUSH2 0x5C6 JUMPI PUSH2 0x5FC JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH11 0x100000000000000000000 DUP7 DIV DUP2 XOR PUSH16 0x1000000000000000000000000000000 DUP8 DIV AND XOR SWAP4 POP PUSH4 0x5A827999 SWAP3 POP PUSH2 0x5FC JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV PUSH11 0x100000000000000000000 DUP8 DIV XOR XOR SWAP4 POP PUSH4 0x6ED9EBA1 SWAP3 POP PUSH2 0x5FC JUMP JUMPDEST PUSH11 0x100000000000000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV DUP2 DUP2 OR PUSH6 0x10000000000 DUP9 DIV AND SWAP2 AND OR SWAP4 POP PUSH4 0x8F1BBCDC SWAP3 POP PUSH2 0x5FC JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV PUSH11 0x100000000000000000000 DUP8 DIV XOR XOR SWAP4 POP PUSH4 0xCA62C1D6 SWAP3 POP JUMPDEST POP PUSH1 0x1F PUSH24 0x80000000000000000000000000000000000000000000000 DUP6 DIV AND DUP1 PUSH4 0xFFFFFFE0 PUSH20 0x800000000000000000000000000000000000000 DUP8 DIV AND OR SWAP1 POP DUP1 DUP5 ADD SWAP1 POP DUP1 PUSH4 0xFFFFFFFF DUP7 AND ADD SWAP1 POP DUP1 DUP4 ADD SWAP1 POP DUP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x4 DUP5 MUL DUP13 ADD MLOAD DIV ADD SWAP1 POP PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL PUSH6 0x10000000000 DUP7 DIV OR SWAP5 POP POP PUSH11 0x100000000000000000000 PUSH4 0x3FFFFFFF PUSH11 0x400000000000000000000 DUP7 DIV AND PUSH4 0xC0000000 PUSH7 0x4000000000000 DUP8 DIV AND OR MUL PUSH24 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF DUP6 AND OR SWAP4 POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4E1 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH24 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF AND SWAP1 PUSH1 0x40 ADD PUSH2 0x27C JUMP JUMPDEST POP PUSH13 0x1000000000000000000000000 PUSH4 0xFFFFFFFF DUP3 AND PUSH8 0xFFFFFFFF00000000 PUSH2 0x100 DUP5 DIV AND PUSH12 0xFFFFFFFF0000000000000000 PUSH3 0x10000 DUP6 DIV AND PUSH16 0xFFFFFFFF000000000000000000000000 PUSH4 0x1000000 DUP7 DIV AND PUSH20 0xFFFFFFFF00000000000000000000000000000000 PUSH5 0x100000000 DUP8 DIV AND OR OR OR OR MUL SWAP5 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x828 DUP9 DUP4 DUP10 ADD PUSH2 0x7A5 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84E DUP8 DUP3 DUP9 ADD PUSH2 0x7A5 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x894 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB 0xED DUP10 0xE1 SWAP4 0xE6 INVALID SHL GASPRICE DUP2 0xCB PUSH13 0x2BC7F2E635D41D1E58DCEB07BB CREATE2 BASEFEE CALLDATASIZE TIMESTAMP MLOAD 0xDD 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "177:399:40:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@readBytes20_4632": {
                  "entryPoint": 399,
                  "id": 4632,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@sha1_536": {
                  "entryPoint": 469,
                  "id": 536,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verify_8983": {
                  "entryPoint": 87,
                  "id": 8983,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 1957,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 2030,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9f91942562eaedb97d293286665fd857d2506d48f8db6e8d72947fb7bd5840be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2138,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1914:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "491:592:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "537:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "546:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "549:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "539:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "539:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "539:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "512:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "521:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "508:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "508:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "533:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "504:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "504:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "501:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "562:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "589:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "576:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "576:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "566:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "608:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "618:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "612:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "663:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "672:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "675:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "665:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "665:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "665:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "651:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "659:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "648:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "648:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "645:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "688:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "744:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "755:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "740:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "740:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "764:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "714:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "714:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "692:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "702:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "781:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "791:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "781:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "808:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "818:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "808:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "835:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "868:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "879:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "864:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "864:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "851:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "851:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "839:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "912:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "921:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "924:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "914:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "914:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "914:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "898:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "908:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "895:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "895:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "892:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "937:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "993:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "989:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1015:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "963:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "963:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "941:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "951:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1032:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1042:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1032:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1059:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "1069:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "433:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "444:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "456:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "464:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "472:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "480:6:111",
                            "type": ""
                          }
                        ],
                        "src": "366:717:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1183:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1193:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1205:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1216:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1193:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1235:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1260:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1253:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1253:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1246:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1246:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1228:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1228:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1152:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1163:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1174:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1088:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1454:174:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1471:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1482:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1464:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1464:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1464:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1505:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1516:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1501:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1501:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1521:2:111",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1494:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1494:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1544:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1555:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1540:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1540:18:111"
                                  },
                                  {
                                    "hexValue": "496e76616c696420736861312068617368206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1560:26:111",
                                    "type": "",
                                    "value": "Invalid sha1 hash length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1533:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1533:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1533:54:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1596:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1608:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1619:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1604:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1604:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1596:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9f91942562eaedb97d293286665fd857d2506d48f8db6e8d72947fb7bd5840be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1431:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1445:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1280:348:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1681:231:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1691:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1702:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1705:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1698:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1698:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "1691:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1738:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1759:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1762:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1752:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1752:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1752:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1860:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1863:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1853:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1853:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1853:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1888:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1891:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1881:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1881:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1881:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1722:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "1725:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1719:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1719:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1716:190:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1664:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1667:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "1673:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1633:279:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_stringliteral_9f91942562eaedb97d293286665fd857d2506d48f8db6e8d72947fb7bd5840be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Invalid sha1 hash length\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f7e83aee14610030575b600080fd5b61004361003e3660046107ee565b610057565b604051901515815260200160405180910390f35b6000601482146100c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420736861312068617368206c656e6774680000000000000000604482015260640160405180910390fd5b600061010d600085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061018f9050565b6bffffffffffffffffffffffff19169050600061015f87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506101d592505050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919091149695505050505050565b815160009061019f83601461085a565b11156101aa57600080fd5b5001602001517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690565b60006040518251602084019350604067ffffffffffffffc060018301160160098282031060018103610208576040820191505b50776745230100efcdab890098badcfe001032547600c3d2e1f0610279565b60008383101561027257508082015192829003926020841015610272577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208590036101000a0119165b9392505050565b60005b828110156107255761028f848289610227565b855261029f846020830189610227565b6020860152604081850310600181036102bb5760808286038701535b50604083038114600181036102d857602086018051600887021790525b5060405b60808110156103d8578581017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc88201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff48401516002911891909218189081027ffffffffefffffffefffffffefffffffefffffffefffffffefffffffefffffffe1663800000009091047c010000000100000001000000010000000100000001000000010000000116179052600c016102dc565b5060805b6101408110156104d9578581017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe88401516004911891909218189081027ffffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffc1663400000009091047c0300000003000000030000000300000003000000030000000300000003161790526018016103dc565b508160008060005b60508110156106fb57601481048015610511576001811461054d576002811461058757600381146105c6576105fc565b6501000000000085046a0100000000000000000000860481186f01000000000000000000000000000000870416189350635a82799992506105fc565b6501000000000085046f0100000000000000000000000000000086046a0100000000000000000000870418189350636ed9eba192506105fc565b6a010000000000000000000085046f010000000000000000000000000000008604818117650100000000008804169116179350638f1bbcdc92506105fc565b6501000000000085046f0100000000000000000000000000000086046a010000000000000000000087041818935063ca62c1d692505b50601f770800000000000000000000000000000000000000000000008504168063ffffffe073080000000000000000000000000000000000000087041617905080840190508063ffffffff86160190508083019050807c0100000000000000000000000000000000000000000000000000000000600484028c015104019050740100000000000000000000000000000000000000008102650100000000008604179450506a0100000000000000000000633fffffff6a040000000000000000000086041663c00000006604000000000000870416170277ffffffff00ffffffff000000000000ffffffff00ffffffff85161793506001810190506104e1565b5050509190910177ffffffff00ffffffff00ffffffff00ffffffff00ffffffff169060400161027c565b506c0100000000000000000000000063ffffffff821667ffffffff000000006101008404166bffffffff0000000000000000620100008504166fffffffff000000000000000000000000630100000086041673ffffffff000000000000000000000000000000006401000000008704161717171702945050505050919050565b60008083601f8401126107b757600080fd5b50813567ffffffffffffffff8111156107cf57600080fd5b6020830191508360208285010111156107e757600080fd5b9250929050565b6000806000806040858703121561080457600080fd5b843567ffffffffffffffff8082111561081c57600080fd5b610828888389016107a5565b9096509450602087013591508082111561084157600080fd5b5061084e878288016107a5565b95989497509550505050565b80820180821115610894577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea264697066735822122003ed89e193e6fe1b3a81cb6c2bc7f2e635d41d1e58dceb07bbf548364251ddf764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF7E83AEE EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x14 DUP3 EQ PUSH2 0xC7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420736861312068617368206C656E6774680000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10D PUSH1 0x0 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x18F SWAP1 POP JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 POP PUSH1 0x0 PUSH2 0x15F DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D5 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP2 SWAP1 SWAP2 EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x19F DUP4 PUSH1 0x14 PUSH2 0x85A JUMP JUMPDEST GT ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x40 PUSH8 0xFFFFFFFFFFFFFFC0 PUSH1 0x1 DUP4 ADD AND ADD PUSH1 0x9 DUP3 DUP3 SUB LT PUSH1 0x1 DUP2 SUB PUSH2 0x208 JUMPI PUSH1 0x40 DUP3 ADD SWAP2 POP JUMPDEST POP PUSH24 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0 PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 LT ISZERO PUSH2 0x272 JUMPI POP DUP1 DUP3 ADD MLOAD SWAP3 DUP3 SWAP1 SUB SWAP3 PUSH1 0x20 DUP5 LT ISZERO PUSH2 0x272 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP6 SWAP1 SUB PUSH2 0x100 EXP ADD NOT AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x725 JUMPI PUSH2 0x28F DUP5 DUP3 DUP10 PUSH2 0x227 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x29F DUP5 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x227 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP2 DUP6 SUB LT PUSH1 0x1 DUP2 SUB PUSH2 0x2BB JUMPI PUSH1 0x80 DUP3 DUP7 SUB DUP8 ADD MSTORE8 JUMPDEST POP PUSH1 0x40 DUP4 SUB DUP2 EQ PUSH1 0x1 DUP2 SUB PUSH2 0x2D8 JUMPI PUSH1 0x20 DUP7 ADD DUP1 MLOAD PUSH1 0x8 DUP8 MUL OR SWAP1 MSTORE JUMPDEST POP PUSH1 0x40 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI DUP6 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP2 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 DUP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 DUP5 ADD MLOAD PUSH1 0x2 SWAP2 XOR SWAP2 SWAP1 SWAP3 XOR XOR SWAP1 DUP2 MUL PUSH32 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE AND PUSH4 0x80000000 SWAP1 SWAP2 DIV PUSH29 0x100000001000000010000000100000001000000010000000100000001 AND OR SWAP1 MSTORE PUSH1 0xC ADD PUSH2 0x2DC JUMP JUMPDEST POP PUSH1 0x80 JUMPDEST PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI DUP6 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP2 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 DUP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 DUP5 ADD MLOAD PUSH1 0x4 SWAP2 XOR SWAP2 SWAP1 SWAP3 XOR XOR SWAP1 DUP2 MUL PUSH32 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC AND PUSH4 0x40000000 SWAP1 SWAP2 DIV PUSH29 0x300000003000000030000000300000003000000030000000300000003 AND OR SWAP1 MSTORE PUSH1 0x18 ADD PUSH2 0x3DC JUMP JUMPDEST POP DUP2 PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x50 DUP2 LT ISZERO PUSH2 0x6FB JUMPI PUSH1 0x14 DUP2 DIV DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x54D JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x587 JUMPI PUSH1 0x3 DUP2 EQ PUSH2 0x5C6 JUMPI PUSH2 0x5FC JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH11 0x100000000000000000000 DUP7 DIV DUP2 XOR PUSH16 0x1000000000000000000000000000000 DUP8 DIV AND XOR SWAP4 POP PUSH4 0x5A827999 SWAP3 POP PUSH2 0x5FC JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV PUSH11 0x100000000000000000000 DUP8 DIV XOR XOR SWAP4 POP PUSH4 0x6ED9EBA1 SWAP3 POP PUSH2 0x5FC JUMP JUMPDEST PUSH11 0x100000000000000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV DUP2 DUP2 OR PUSH6 0x10000000000 DUP9 DIV AND SWAP2 AND OR SWAP4 POP PUSH4 0x8F1BBCDC SWAP3 POP PUSH2 0x5FC JUMP JUMPDEST PUSH6 0x10000000000 DUP6 DIV PUSH16 0x1000000000000000000000000000000 DUP7 DIV PUSH11 0x100000000000000000000 DUP8 DIV XOR XOR SWAP4 POP PUSH4 0xCA62C1D6 SWAP3 POP JUMPDEST POP PUSH1 0x1F PUSH24 0x80000000000000000000000000000000000000000000000 DUP6 DIV AND DUP1 PUSH4 0xFFFFFFE0 PUSH20 0x800000000000000000000000000000000000000 DUP8 DIV AND OR SWAP1 POP DUP1 DUP5 ADD SWAP1 POP DUP1 PUSH4 0xFFFFFFFF DUP7 AND ADD SWAP1 POP DUP1 DUP4 ADD SWAP1 POP DUP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x4 DUP5 MUL DUP13 ADD MLOAD DIV ADD SWAP1 POP PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL PUSH6 0x10000000000 DUP7 DIV OR SWAP5 POP POP PUSH11 0x100000000000000000000 PUSH4 0x3FFFFFFF PUSH11 0x400000000000000000000 DUP7 DIV AND PUSH4 0xC0000000 PUSH7 0x4000000000000 DUP8 DIV AND OR MUL PUSH24 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF DUP6 AND OR SWAP4 POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4E1 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH24 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF AND SWAP1 PUSH1 0x40 ADD PUSH2 0x27C JUMP JUMPDEST POP PUSH13 0x1000000000000000000000000 PUSH4 0xFFFFFFFF DUP3 AND PUSH8 0xFFFFFFFF00000000 PUSH2 0x100 DUP5 DIV AND PUSH12 0xFFFFFFFF0000000000000000 PUSH3 0x10000 DUP6 DIV AND PUSH16 0xFFFFFFFF000000000000000000000000 PUSH4 0x1000000 DUP7 DIV AND PUSH20 0xFFFFFFFF00000000000000000000000000000000 PUSH5 0x100000000 DUP8 DIV AND OR OR OR OR MUL SWAP5 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x828 DUP9 DUP4 DUP10 ADD PUSH2 0x7A5 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84E DUP8 DUP3 DUP9 ADD PUSH2 0x7A5 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x894 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB 0xED DUP10 0xE1 SWAP4 0xE6 INVALID SHL GASPRICE DUP2 0xCB PUSH13 0x2BC7F2E635D41D1E58DCEB07BB CREATE2 BASEFEE CALLDATASIZE TIMESTAMP MLOAD 0xDD 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "177:399:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;242:332;;;;;;:::i;:::-;;:::i;:::-;;;1253:14:111;;1246:22;1228:41;;1216:2;1201:18;242:332:40;;;;;;;;364:4;407:2;392:17;;384:54;;;;;;;1482:2:111;384:54:40;;;1464:21:111;1521:2;1501:18;;;1494:30;1560:26;1540:18;;;1533:54;1604:18;;384:54:40;;;;;;;;448:16;467:19;484:1;467:4;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;467:16:40;;:19;-1:-1:-1;;467:16:40;:19;-1:-1:-1;467:19:40:i;:::-;448:38;;;;;496:16;515:15;525:4;;515:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;515:9:40;;-1:-1:-1;;;515:15:40:i;:::-;547:20;;;;;;;242:332;-1:-1:-1;;;;;;242:332:40:o;7604:364:25:-;7751:11;;7704;;7739:8;:3;7745:2;7739:8;:::i;:::-;:23;;7731:32;;;;;;-1:-1:-1;7830:23:25;7844:2;7830:23;7824:30;7872:66;7803:149;;7604:364::o;73:5661:1:-;128:11;238:4;232:11;343:4;337:11;379:2;373:4;369:13;361:21;;499:2;478:18;474:1;469:3;465:11;461:36;457:45;545:1;539:3;529:8;525:18;522:25;565:1;560:40;;515:85;560:40;595:2;585:8;581:17;569:29;;515:85;;623:50;687:425;;;725:6;789:5;784:3;781:14;778:320;;;-1:-1:-1;834:13:1;;;828:20;878:15;;;;;927:2;917:13;;914:166;;;973:32;990:2;986:14;;;981:3;977:24;973:32;969:37;1041:17;914:166;687:425;;;;;:::o;:::-;1141:1;1126:4284;1151:8;1148:1;1145:15;1126:4284;;;1215:22;1233:3;1230:1;1224:4;1215:22;:::i;:::-;1206:7;1199:39;1280:31;1307:3;1302:2;1299:1;1295:10;1289:4;1280:31;:::i;:::-;1275:2;1266:7;1262:16;1255:57;1426:2;1422:1;1417:3;1413:11;1410:19;1451:1;1446:51;;1403:94;1446:51;1490:4;1485:1;1480:3;1476:11;1467:7;1463:25;1455:40;1403:94;;1605:2;1595:8;1591:17;1588:1;1585:24;1631:1;1626:77;;1578:125;1626:77;1682:2;1669:16;;1663:23;;1697:1;1688:11;;1660:40;1635:66;;1578:125;;1790:2;1775:512;1801:3;1798:1;1795:10;1775:512;;;1978:24;;;1991:10;1978:24;;1972:31;1958:10;1945:24;;1939:31;1920:10;1907:24;;1901:31;1887:10;1874:24;;1868:31;2051:1;1864:69;;1935;;;;1860:145;2041:12;;;2055:66;2037:85;2138:10;2128:21;;;2151:66;2124:94;2034:185;2240:29;;1894:2;1813:10;1775:512;;;1779:15;2319:3;2304:515;2331:3;2328:1;2325:10;2304:515;;;2509:25;;;2522:11;2509:25;;2503:32;2488:11;2475:25;;2469:32;2450:10;2437:24;;2431:31;2417:10;2404:24;;2398:31;2583:1;2394:69;;2465:71;;;;2390:147;2573:12;;;2587:66;2569:85;2670:10;2660:21;;;2683:66;2656:94;2566:185;2772:29;;2424:2;2343:10;2304:515;;;2308:16;2846:1;2873;2900;2933;2918:2389;2943:2;2940:1;2937:9;2918:2389;;;3002:2;2995:10;;3026:352;;;;3404:1;3399:282;;;;3707:1;3702:414;;;;4142:1;4137:283;;;;2988:1432;;3026:352;3163:13;3156:21;;3130:23;3123:31;;3119:59;;3219:33;3212:41;;3208:49;3287:29;;-1:-1:-1;3346:10:1;;-1:-1:-1;3026:352:1;;3399:282;3601:13;3594:21;;3492:33;3485:41;;3535:23;3528:31;;3481:79;3590:29;;-1:-1:-1;3649:10:1;;-1:-1:-1;3399:282:1;;3702:414;3854:23;3847:31;;3811:33;3804:41;;3801:78;;;3920:13;3913:21;;3909:29;3971:79;;3968:86;;-1:-1:-1;4084:10:1;;-1:-1:-1;3702:414:1;;4137:283;4340:13;4333:21;;4231:33;4224:41;;4274:23;4267:31;;4220:79;4329:29;;-1:-1:-1;4388:10:1;;-1:-1:-1;2988:1432:1;;4582:4;4530:49;4527:1;4523:57;4519:68;4687:4;4674:10;4630:41;4627:1;4623:49;4619:66;4616:76;4608:84;;4728:4;4725:1;4721:12;4713:20;;4786:4;4773:10;4770:1;4766:18;4762:29;4754:37;;4827:4;4824:1;4820:12;4812:20;;4963:4;4901:59;4895:1;4892;4888:9;4879:7;4875:23;4869:30;4865:96;4861:107;4853:115;;5030:43;5024:4;5020:54;5004:13;5001:1;4997:21;4994:81;4989:86;;;5264:23;5250:10;5224:23;5221:1;5217:31;5213:48;5200:10;5182:15;5179:1;5175:23;5171:40;5168:94;5164:124;5111:50;5108:1;5104:58;5101:188;5096:193;;2961:1;2958;2954:9;2949:14;;2918:2389;;;-1:-1:-1;;;5334:9:1;;;;5345:50;5330:66;;1175:2;1168:10;1126:4284;;;1130:14;5690:27;5676:10;5673:1;5669:18;5647;5639:5;5636:1;5632:13;5628:38;5598:26;5588:7;5585:1;5581:15;5577:48;5539:34;5527:9;5524:1;5520:17;5516:58;5471:42;5457:11;5454:1;5450:19;5446:68;5443:132;5440:186;5437:230;5434:254;5430:288;5423:295;;;;;;73:5661;;;:::o;14:347:111:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:111;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:717::-;456:6;464;472;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;618:18;659:2;651:6;648:14;645:34;;;675:1;672;665:12;645:34;714:58;764:7;755:6;744:9;740:22;714:58;:::i;:::-;791:8;;-1:-1:-1;688:84:111;-1:-1:-1;879:2:111;864:18;;851:32;;-1:-1:-1;895:16:111;;;892:36;;;924:1;921;914:12;892:36;;963:60;1015:7;1004:8;993:9;989:24;963:60;:::i;:::-;366:717;;;;-1:-1:-1;1042:8:111;-1:-1:-1;;;;366:717:111:o;1633:279::-;1698:9;;;1719:10;;;1716:190;;;1762:77;1759:1;1752:88;1863:4;1860:1;1853:15;1891:4;1888:1;1881:15;1716:190;1633:279;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "451200",
                "executionCost": "486",
                "totalCost": "451686"
              },
              "external": {
                "verify(bytes,bytes)": "infinite"
              }
            },
            "methodIdentifiers": {
              "verify(bytes,bytes)": "f7e83aee"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements the DNSSEC SHA1 digest.\",\"kind\":\"dev\",\"methods\":{\"verify(bytes,bytes)\":{\"details\":\"Verifies a cryptographic hash.\",\"params\":{\"data\":\"The data to hash.\",\"hash\":\"The hash to compare to.\"},\"returns\":{\"_0\":\"True iff the hashed data matches the provided hash value.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/digests/SHA1Digest.sol\":\"SHA1Digest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/solsha1/contracts/SHA1.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary SHA1 {\\n    event Debug(bytes32 x);\\n\\n    function sha1(bytes memory data) internal pure returns(bytes20 ret) {\\n        assembly {\\n            // Get a safe scratch location\\n            let scratch := mload(0x40)\\n\\n            // Get the data length, and point data at the first byte\\n            let len := mload(data)\\n            data := add(data, 32)\\n\\n            // Find the length after padding\\n            let totallen := add(and(add(len, 1), 0xFFFFFFFFFFFFFFC0), 64)\\n            switch lt(sub(totallen, len), 9)\\n            case 1 { totallen := add(totallen, 64) }\\n\\n            let h := 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0\\n\\n            function readword(ptr, off, count) -> result {\\n                result := 0\\n                if lt(off, count) {\\n                    result := mload(add(ptr, off))\\n                    count := sub(count, off)\\n                    if lt(count, 32) {\\n                        let mask := not(sub(exp(256, sub(32, count)), 1))\\n                        result := and(result, mask)\\n                    }\\n                }\\n            }\\n\\n            for { let i := 0 } lt(i, totallen) { i := add(i, 64) } {\\n                mstore(scratch, readword(data, i, len))\\n                mstore(add(scratch, 32), readword(data, add(i, 32), len))\\n\\n                // If we loaded the last byte, store the terminator byte\\n                switch lt(sub(len, i), 64)\\n                case 1 { mstore8(add(scratch, sub(len, i)), 0x80) }\\n\\n                // If this is the last block, store the length\\n                switch eq(i, sub(totallen, 64))\\n                case 1 { mstore(add(scratch, 32), or(mload(add(scratch, 32)), mul(len, 8))) }\\n\\n                // Expand the 16 32-bit words into 80\\n                for { let j := 64 } lt(j, 128) { j := add(j, 12) } {\\n                    let temp := xor(xor(mload(add(scratch, sub(j, 12))), mload(add(scratch, sub(j, 32)))), xor(mload(add(scratch, sub(j, 56))), mload(add(scratch, sub(j, 64)))))\\n                    temp := or(and(mul(temp, 2), 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE), and(div(temp, 0x80000000), 0x0000000100000001000000010000000100000001000000010000000100000001))\\n                    mstore(add(scratch, j), temp)\\n                }\\n                for { let j := 128 } lt(j, 320) { j := add(j, 24) } {\\n                    let temp := xor(xor(mload(add(scratch, sub(j, 24))), mload(add(scratch, sub(j, 64)))), xor(mload(add(scratch, sub(j, 112))), mload(add(scratch, sub(j, 128)))))\\n                    temp := or(and(mul(temp, 4), 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC), and(div(temp, 0x40000000), 0x0000000300000003000000030000000300000003000000030000000300000003))\\n                    mstore(add(scratch, j), temp)\\n                }\\n\\n                let x := h\\n                let f := 0\\n                let k := 0\\n                for { let j := 0 } lt(j, 80) { j := add(j, 1) } {\\n                    switch div(j, 20)\\n                    case 0 {\\n                        // f = d xor (b and (c xor d))\\n                        f := xor(div(x, 0x100000000000000000000), div(x, 0x10000000000))\\n                        f := and(div(x, 0x1000000000000000000000000000000), f)\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0x5A827999\\n                    }\\n                    case 1{\\n                        // f = b xor c xor d\\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0x6ED9EBA1\\n                    }\\n                    case 2 {\\n                        // f = (b and c) or (d and (b or c))\\n                        f := or(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := and(div(x, 0x10000000000), f)\\n                        f := or(and(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000)), f)\\n                        k := 0x8F1BBCDC\\n                    }\\n                    case 3 {\\n                        // f = b xor c xor d\\n                        f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\\n                        f := xor(div(x, 0x10000000000), f)\\n                        k := 0xCA62C1D6\\n                    }\\n                    // temp = (a leftrotate 5) + f + e + k + w[i]\\n                    let temp := and(div(x, 0x80000000000000000000000000000000000000000000000), 0x1F)\\n                    temp := or(and(div(x, 0x800000000000000000000000000000000000000), 0xFFFFFFE0), temp)\\n                    temp := add(f, temp)\\n                    temp := add(and(x, 0xFFFFFFFF), temp)\\n                    temp := add(k, temp)\\n                    temp := add(div(mload(add(scratch, mul(j, 4))), 0x100000000000000000000000000000000000000000000000000000000), temp)\\n                    x := or(div(x, 0x10000000000), mul(temp, 0x10000000000000000000000000000000000000000))\\n                    x := or(and(x, 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF), mul(or(and(div(x, 0x4000000000000), 0xC0000000), and(div(x, 0x400000000000000000000), 0x3FFFFFFF)), 0x100000000000000000000))\\n                }\\n\\n                h := and(add(h, x), 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF)\\n            }\\n            ret := mul(or(or(or(or(and(div(h, 0x100000000), 0xFFFFFFFF00000000000000000000000000000000), and(div(h, 0x1000000), 0xFFFFFFFF000000000000000000000000)), and(div(h, 0x10000), 0xFFFFFFFF0000000000000000)), and(div(h, 0x100), 0xFFFFFFFF00000000)), and(h, 0xFFFFFFFF)), 0x1000000000000000000000000)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x746d9b85de197afbc13182cbe4ba4f7917f19594e07c655d6a0c85fdf7460a8a\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/digests/Digest.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC digest.\\n */\\ninterface Digest {\\n    /**\\n     * @dev Verifies a cryptographic hash.\\n     * @param data The data to hash.\\n     * @param hash The hash to compare to.\\n     * @return True iff the hashed data matches the provided hash value.\\n     */\\n    function verify(bytes calldata data, bytes calldata hash)\\n        external\\n        pure\\n        virtual\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf082904d13f33cbbd613ad733ae86c5d79b5aa9afd61d6d99714d7fe8986be34\"},\"contracts/dnssec-oracle/digests/SHA1Digest.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./Digest.sol\\\";\\nimport \\\"../BytesUtils.sol\\\";\\nimport \\\"@ensdomains/solsha1/contracts/SHA1.sol\\\";\\n\\n/**\\n * @dev Implements the DNSSEC SHA1 digest.\\n */\\ncontract SHA1Digest is Digest {\\n    using BytesUtils for *;\\n\\n    function verify(bytes calldata data, bytes calldata hash)\\n        external\\n        pure\\n        override\\n        returns (bool)\\n    {\\n        require(hash.length == 20, \\\"Invalid sha1 hash length\\\");\\n        bytes32 expected = hash.readBytes20(0);\\n        bytes20 computed = SHA1.sha1(data);\\n        return expected == computed;\\n    }\\n}\\n\",\"keccak256\":\"0x6cce8ad48b20eb129b92ce818361611be14b1a049a87fffdd1e40ddb1bcf381b\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/dnssec-oracle/digests/SHA256Digest.sol": {
        "SHA256Digest": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implements the DNSSEC SHA256 digest.",
            "kind": "dev",
            "methods": {
              "verify(bytes,bytes)": {
                "details": "Verifies a cryptographic hash.",
                "params": {
                  "data": "The data to hash.",
                  "hash": "The hash to compare to."
                },
                "returns": {
                  "_0": "True iff the hashed data matches the provided hash value."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506102df806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f7e83aee14610030575b600080fd5b61004361003e3660046101d4565b610057565b604051901515815260200160405180910390f35b6000602082146100c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c6964207368613235362068617368206c656e677468000000000000604482015260640160405180910390fd5b61010b600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506101679050565b6002868660405161011d929190610240565b602060405180830381855afa15801561013a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061015d9190610250565b1495945050505050565b8151600090610177836020610269565b111561018257600080fd5b50016020015190565b60008083601f84011261019d57600080fd5b50813567ffffffffffffffff8111156101b557600080fd5b6020830191508360208285010111156101cd57600080fd5b9250929050565b600080600080604085870312156101ea57600080fd5b843567ffffffffffffffff8082111561020257600080fd5b61020e8883890161018b565b9096509450602087013591508082111561022757600080fd5b506102348782880161018b565b95989497509550505050565b8183823760009101908152919050565b60006020828403121561026257600080fd5b5051919050565b808201808211156102a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220d5afb4aee36385124edf0607aa013f867fab946983d20edf104bcb4c9c8e046364736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DF DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF7E83AEE EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x1D4 JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 EQ PUSH2 0xC7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207368613235362068617368206C656E677468000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10B PUSH1 0x0 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x167 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x11D SWAP3 SWAP2 SWAP1 PUSH2 0x240 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15D SWAP2 SWAP1 PUSH2 0x250 JUMP JUMPDEST EQ SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x177 DUP4 PUSH1 0x20 PUSH2 0x269 JUMP JUMPDEST GT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20E DUP9 DUP4 DUP10 ADD PUSH2 0x18B JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 DUP8 DUP3 DUP9 ADD PUSH2 0x18B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2A3 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 0xAF 0xB4 0xAE 0xE3 PUSH4 0x85124EDF MOD SMOD 0xAA ADD EXTCODEHASH DUP7 PUSH32 0xAB946983D20EDF104BCB4C9C8E046364736F6C63430008110033000000000000 ",
              "sourceMap": "130:326:41:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@readBytes32_4612": {
                  "entryPoint": 359,
                  "id": 4612,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@verify_9021": {
                  "entryPoint": 87,
                  "id": 9021,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 395,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 592,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 468,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 576,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ce42e9cf504331e2152a55e3e3f9b91901c3b1835c33cad24b208b6714eed29a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 617,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2381:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "491:592:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "537:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "546:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "549:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "539:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "539:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "539:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "512:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "521:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "508:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "508:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "533:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "504:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "504:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "501:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "562:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "589:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "576:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "576:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "566:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "608:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "618:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "612:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "663:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "672:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "675:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "665:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "665:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "665:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "651:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "659:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "648:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "648:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "645:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "688:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "744:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "755:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "740:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "740:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "764:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "714:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "714:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "692:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "702:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "781:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "791:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "781:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "808:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "818:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "808:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "835:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "868:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "879:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "864:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "864:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "851:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "851:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "839:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "912:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "921:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "924:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "914:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "914:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "914:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "898:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "908:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "895:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "895:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "892:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "937:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "993:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "989:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1015:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "963:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "963:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "941:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "951:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1032:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1042:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1032:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1059:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "1069:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "433:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "444:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "456:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "464:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "472:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "480:6:111",
                            "type": ""
                          }
                        ],
                        "src": "366:717:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1183:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1193:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1205:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1216:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1193:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1235:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1260:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1253:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1253:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1246:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1246:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1228:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1228:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1152:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1163:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1174:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1088:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1454:176:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1471:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1482:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1464:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1464:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1464:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1505:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1516:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1501:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1501:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1521:2:111",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1494:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1494:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1544:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1555:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1540:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1540:18:111"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207368613235362068617368206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1560:28:111",
                                    "type": "",
                                    "value": "Invalid sha256 hash length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1533:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1533:56:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1533:56:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1598:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1610:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1621:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1606:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1606:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1598:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ce42e9cf504331e2152a55e3e3f9b91901c3b1835c33cad24b208b6714eed29a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1431:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1445:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1280:350:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1782:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1805:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1810:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1818:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1792:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1792:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1792:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1834:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1848:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1853:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1844:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1844:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1838:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1876:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1880:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1869:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1869:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1869:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1891:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1898:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1891:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1750:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1755:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1763:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1774:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1635:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1992:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2038:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2047:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2050:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2040:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2040:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2040:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2013:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2022:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2009:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2009:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2034:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2005:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2005:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2002:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2063:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2079:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2073:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2073:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2063:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1958:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1969:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1981:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1911:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2148:231:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2158:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2169:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2172:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2165:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2165:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "2158:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2205:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2226:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2229:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2219:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2219:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2219:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2327:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2330:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2320:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2320:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2320:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2355:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2358:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2348:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2348:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2348:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2189:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "2192:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2186:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2186:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2183:190:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2131:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2134:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "2140:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2100:279:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_stringliteral_ce42e9cf504331e2152a55e3e3f9b91901c3b1835c33cad24b208b6714eed29a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Invalid sha256 hash length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f7e83aee14610030575b600080fd5b61004361003e3660046101d4565b610057565b604051901515815260200160405180910390f35b6000602082146100c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c6964207368613235362068617368206c656e677468000000000000604482015260640160405180910390fd5b61010b600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506101679050565b6002868660405161011d929190610240565b602060405180830381855afa15801561013a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061015d9190610250565b1495945050505050565b8151600090610177836020610269565b111561018257600080fd5b50016020015190565b60008083601f84011261019d57600080fd5b50813567ffffffffffffffff8111156101b557600080fd5b6020830191508360208285010111156101cd57600080fd5b9250929050565b600080600080604085870312156101ea57600080fd5b843567ffffffffffffffff8082111561020257600080fd5b61020e8883890161018b565b9096509450602087013591508082111561022757600080fd5b506102348782880161018b565b95989497509550505050565b8183823760009101908152919050565b60006020828403121561026257600080fd5b5051919050565b808201808211156102a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220d5afb4aee36385124edf0607aa013f867fab946983d20edf104bcb4c9c8e046364736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF7E83AEE EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x1D4 JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 EQ PUSH2 0xC7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207368613235362068617368206C656E677468000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10B PUSH1 0x0 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x167 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x11D SWAP3 SWAP2 SWAP1 PUSH2 0x240 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15D SWAP2 SWAP1 PUSH2 0x250 JUMP JUMPDEST EQ SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x177 DUP4 PUSH1 0x20 PUSH2 0x269 JUMP JUMPDEST GT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20E DUP9 DUP4 DUP10 ADD PUSH2 0x18B JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 DUP8 DUP3 DUP9 ADD PUSH2 0x18B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2A3 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 0xAF 0xB4 0xAE 0xE3 PUSH4 0x85124EDF MOD SMOD 0xAA ADD EXTCODEHASH DUP7 PUSH32 0xAB946983D20EDF104BCB4C9C8E046364736F6C63430008110033000000000000 ",
              "sourceMap": "130:326:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:257;;;;;;:::i;:::-;;:::i;:::-;;;1253:14:111;;1246:22;1228:41;;1216:2;1201:18;197:257:41;;;;;;;;319:4;362:2;347:17;;339:56;;;;;;;1482:2:111;339:56:41;;;1464:21:111;1521:2;1501:18;;;1494:30;1560:28;1540:18;;;1533:56;1606:18;;339:56:41;;;;;;;;428:19;445:1;428:4;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;428:16:41;;:19;-1:-1:-1;;428:16:41;:19;-1:-1:-1;428:19:41:i;:::-;412:12;419:4;;412:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;197:257;-1:-1:-1;;;;;197:257:41:o;7136:245:25:-;7283:11;;7236;;7271:8;:3;7277:2;7271:8;:::i;:::-;:23;;7263:32;;;;;;-1:-1:-1;7341:23:25;7355:2;7341:23;7335:30;;7136:245::o;14:347:111:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:111;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:717::-;456:6;464;472;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;618:18;659:2;651:6;648:14;645:34;;;675:1;672;665:12;645:34;714:58;764:7;755:6;744:9;740:22;714:58;:::i;:::-;791:8;;-1:-1:-1;688:84:111;-1:-1:-1;879:2:111;864:18;;851:32;;-1:-1:-1;895:16:111;;;892:36;;;924:1;921;914:12;892:36;;963:60;1015:7;1004:8;993:9;989:24;963:60;:::i;:::-;366:717;;;;-1:-1:-1;1042:8:111;-1:-1:-1;;;;366:717:111:o;1635:271::-;1818:6;1810;1805:3;1792:33;1774:3;1844:16;;1869:13;;;1844:16;1635:271;-1:-1:-1;1635:271:111:o;1911:184::-;1981:6;2034:2;2022:9;2013:7;2009:23;2005:32;2002:52;;;2050:1;2047;2040:12;2002:52;-1:-1:-1;2073:16:111;;1911:184;-1:-1:-1;1911:184:111:o;2100:279::-;2165:9;;;2186:10;;;2183:190;;;2229:77;2226:1;2219:88;2330:4;2327:1;2320:15;2358:4;2355:1;2348:15;2183:190;2100:279;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "147000",
                "executionCost": "190",
                "totalCost": "147190"
              },
              "external": {
                "verify(bytes,bytes)": "infinite"
              }
            },
            "methodIdentifiers": {
              "verify(bytes,bytes)": "f7e83aee"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements the DNSSEC SHA256 digest.\",\"kind\":\"dev\",\"methods\":{\"verify(bytes,bytes)\":{\"details\":\"Verifies a cryptographic hash.\",\"params\":{\"data\":\"The data to hash.\",\"hash\":\"The hash to compare to.\"},\"returns\":{\"_0\":\"True iff the hashed data matches the provided hash value.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnssec-oracle/digests/SHA256Digest.sol\":\"SHA256Digest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/digests/Digest.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n * @dev An interface for contracts implementing a DNSSEC digest.\\n */\\ninterface Digest {\\n    /**\\n     * @dev Verifies a cryptographic hash.\\n     * @param data The data to hash.\\n     * @param hash The hash to compare to.\\n     * @return True iff the hashed data matches the provided hash value.\\n     */\\n    function verify(bytes calldata data, bytes calldata hash)\\n        external\\n        pure\\n        virtual\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf082904d13f33cbbd613ad733ae86c5d79b5aa9afd61d6d99714d7fe8986be34\"},\"contracts/dnssec-oracle/digests/SHA256Digest.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./Digest.sol\\\";\\nimport \\\"../BytesUtils.sol\\\";\\n\\n/**\\n * @dev Implements the DNSSEC SHA256 digest.\\n */\\ncontract SHA256Digest is Digest {\\n    using BytesUtils for *;\\n\\n    function verify(bytes calldata data, bytes calldata hash)\\n        external\\n        pure\\n        override\\n        returns (bool)\\n    {\\n        require(hash.length == 32, \\\"Invalid sha256 hash length\\\");\\n        return sha256(data) == hash.readBytes32(0);\\n    }\\n}\\n\",\"keccak256\":\"0xc3563b60018b39750e3b772afe9ec26fb0c7851b19e03033292359dc0a9d1dff\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/BaseRegistrarImplementation.sol": {
        "BaseRegistrarImplementation": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "_ens",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "_baseNode",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "ControllerAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "ControllerRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "name": "NameMigrated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "name": "NameRegistered",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "name": "NameRenewed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "GRACE_PERIOD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "addController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "available",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "baseNode",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "controllers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "nameExpires",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "reclaim",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "register",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "registerOnly",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "removeController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "renew",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "details": "Gets the owner of the specified token ID. Names become unowned      when their registration expires.",
                "params": {
                  "tokenId": "uint256 ID of the token to query the owner of"
                },
                "returns": {
                  "_0": "address currently marked as the owner of the given token ID"
                }
              },
              "reclaim(uint256,address)": {
                "details": "Reclaim ownership of a name in ENS, if you own it in the registrar."
              },
              "register(uint256,address,uint256)": {
                "details": "Register a name.",
                "params": {
                  "duration": "Duration in seconds for the registration.",
                  "id": "The token ID (keccak256 of the label).",
                  "owner": "The address that should own the registration."
                }
              },
              "registerOnly(uint256,address,uint256)": {
                "details": "Register a name, without modifying the registry.",
                "params": {
                  "duration": "Duration in seconds for the registration.",
                  "id": "The token ID (keccak256 of the label).",
                  "owner": "The address that should own the registration."
                }
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "tokenURI(uint256)": {
                "details": "See {IERC721Metadata-tokenURI}."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_1574": {
                  "entryPoint": null,
                  "id": 1574,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_9161": {
                  "entryPoint": null,
                  "id": 9161,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": 179,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 183,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory": {
                  "entryPoint": 265,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_string_storage": {
                  "entryPoint": 407,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
                  "entryPoint": 490,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 347,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 325,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3101:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "125:253:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "171:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "180:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "183:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "173:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "173:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "173:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "146:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "155:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "142:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "142:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "167:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "138:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "138:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "135:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "196:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "215:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "209:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "209:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "200:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "288:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "297:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "300:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "290:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "290:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "290:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "247:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "258:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "273:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "278:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "269:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "269:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "282:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "265:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "265:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "254:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "254:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "244:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "244:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "237:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "237:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "234:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "313:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "323:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "313:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "337:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "357:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "368:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "353:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "353:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "347:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "347:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "337:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "83:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "94:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "106:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "114:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:364:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "415:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "432:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "439:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "444:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "435:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "435:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "425:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "425:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "425:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "472:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "475:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "465:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "465:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "465:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "496:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "499:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "489:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "489:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "489:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "383:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "570:325:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "580:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "594:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "597:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "590:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "590:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "580:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "611:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "641:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "647:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "637:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "637:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "615:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "688:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "690:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "704:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "712:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "700:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "700:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "690:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "668:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "661:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "661:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "658:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "778:111:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "799:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "806:3:111",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "811:10:111",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "802:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "802:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "792:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "792:31:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "792:31:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "843:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "846:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "836:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "836:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "836:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "871:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "874:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "864:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "864:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "864:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "734:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "757:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "765:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "754:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "754:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "731:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "731:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "728:161:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "550:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "559:6:111",
                            "type": ""
                          }
                        ],
                        "src": "515:380:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "956:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "973:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "976:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "966:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "966:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "966:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "989:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1007:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1010:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "997:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "997:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "989:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "939:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "947:4:111",
                            "type": ""
                          }
                        ],
                        "src": "900:121:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1107:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1140:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1154:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1164:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "1158:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1185:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1189:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1178:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1178:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1178:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1208:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1230:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1234:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "1220:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1220:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "1212:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1252:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "1275:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1285:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1292:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1304:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1288:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1288:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1281:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1281:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1271:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1271:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "1256:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "1346:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "1348:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "1363:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "1348:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "1328:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1340:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "1325:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1325:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1322:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1382:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "1396:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1406:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1413:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1418:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1409:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1409:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1402:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1402:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1392:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1392:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "1386:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1436:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "1449:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "1440:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "1534:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "1543:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1550:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "1536:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1536:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "1536:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "1484:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "1491:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "1481:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1481:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "1495:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "1497:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "1510:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1517:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1506:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1506:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "1497:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "1477:3:111",
                                      "statements": []
                                    },
                                    "src": "1473:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "1123:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1128:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1120:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1120:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1117:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1079:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "1086:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "1091:10:111",
                            "type": ""
                          }
                        ],
                        "src": "1026:545:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1661:81:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1671:65:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "1686:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1704:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1707:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1700:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1700:11:111"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1717:1:111",
                                                    "type": "",
                                                    "value": "0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "not",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1713:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1713:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "1696:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1696:24:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "1692:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1692:29:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1682:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1682:40:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1728:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "1731:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1724:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1724:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1679:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1679:57:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "1671:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1638:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "1644:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "1652:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1576:166:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1843:1256:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1853:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1873:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1867:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1867:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "1857:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1920:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1922:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1922:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1922:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "1892:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1908:2:111",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1912:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "1904:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1904:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1916:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1900:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1900:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1889:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1889:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1886:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "1995:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "2033:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "2027:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2027:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "2001:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2001:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2041:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "1951:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1951:97:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1951:97:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2057:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2074:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "2061:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2084:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2103:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2088:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2116:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "2129:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "2116:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "2186:656:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2200:35:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "2219:6:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2231:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "2227:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2227:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2215:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2215:20:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "2204:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2248:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "2292:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "2262:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2262:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "2252:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2310:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2319:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "2314:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "2397:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2422:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2440:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2445:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2436:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2436:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2430:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2430:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2415:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2415:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "2415:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "2474:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2488:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2496:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2484:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2484:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2474:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "2515:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2532:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2543:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2528:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2528:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2515:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2344:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "2347:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2341:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2341:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "2356:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "2358:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2367:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2370:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2363:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2363:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2358:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "2337:3:111",
                                          "statements": []
                                        },
                                        "src": "2333:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "2617:166:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "2635:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2662:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2667:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2658:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2658:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2652:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2652:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "2639:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2702:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2714:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2741:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2744:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "2737:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "2737:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "2753:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "2733:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2733:24:111"
                                                              },
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "2763:1:111",
                                                                    "type": "",
                                                                    "value": "0"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "not",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "2759:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2759:6:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "2729:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2729:37:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2725:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2725:42:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2710:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2710:58:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2695:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2695:74:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "2695:74:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "2588:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "2597:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2585:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2585:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "2582:201:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "2803:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "2817:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2820:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2813:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2813:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2829:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2809:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2809:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2796:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2796:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "2796:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "2179:663:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2184:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "2859:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2873:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2886:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "2877:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "2922:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "2940:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2959:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2964:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2955:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2955:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2949:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2949:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2940:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "2903:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "2900:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3009:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3068:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3075:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "3015:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3015:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3002:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3002:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "3002:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "2851:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2159:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2167:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2156:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2156:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "2149:944:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "1828:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "1834:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1747:1352:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        value1 := mload(add(headStart, 32))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50604051620026d2380380620026d2833981016040819052620000349162000109565b60408051602080820183526000808352835191820190935282815290916200005d8382620001ea565b5060016200006c8282620001ea565b5050506200008962000083620000b360201b60201c565b620000b7565b600880546001600160a01b0319166001600160a01b039390931692909217909155600955620002b6565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080604083850312156200011d57600080fd5b82516001600160a01b03811681146200013557600080fd5b6020939093015192949293505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200017057607f821691505b6020821081036200019157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001e557600081815260208120601f850160051c81016020861015620001c05750805b601f850160051c820191505b81811015620001e157828155600101620001cc565b5050505b505050565b81516001600160401b0381111562000206576200020662000145565b6200021e816200021784546200015b565b8462000197565b602080601f8311600181146200025657600084156200023d5750858301515b600019600386901b1c1916600185901b178555620001e1565b600085815260208120601f198616915b82811015620002875788860151825594840194600190910190840162000266565b5085821015620002a65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61240c80620002c66000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806395d89b4111610104578063c87b56dd116100a2578063e985e9c511610071578063e985e9c5146103e0578063f2fde38b1461041c578063f6a74ed71461042f578063fca247ac1461044257600080fd5b8063c87b56dd14610381578063d6e4fa8614610394578063da8c229e146103b4578063ddf7fcb0146103d757600080fd5b8063a7fc7a07116100de578063a7fc7a071461033e578063b88d4fde14610351578063c1a287e214610364578063c475abff1461036e57600080fd5b806395d89b411461031057806396e494e814610318578063a22cb4651461032b57600080fd5b80633f15457f116101715780636352211e1161014b5780636352211e146102d157806370a08231146102e4578063715018a6146102f75780638da5cb5b146102ff57600080fd5b80633f15457f1461029857806342842e0e146102ab5780634e543b26146102be57600080fd5b8063095ea7b3116101ad578063095ea7b31461023c5780630e297b451461025157806323b872dd1461027257806328ed4f6c1461028557600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004611e55565b610455565b60405190151581526020015b60405180910390f35b61020461053a565b6040516101f39190611ee0565b61022461021f366004611ef3565b6105cc565b6040516001600160a01b0390911681526020016101f3565b61024f61024a366004611f21565b610677565b005b61026461025f366004611f4d565b6107a8565b6040519081526020016101f3565b61024f610280366004611f85565b6107bf565b61024f610293366004611fb5565b610846565b600854610224906001600160a01b031681565b61024f6102b9366004611f85565b610991565b61024f6102cc366004611fe5565b6109ac565b6102246102df366004611ef3565b610a8c565b6102646102f2366004611fe5565b610aaf565b61024f610b49565b6006546001600160a01b0316610224565b610204610baf565b6101e7610326366004611ef3565b610bbe565b61024f610339366004612002565b610be4565b61024f61034c366004611fe5565b610bf3565b61024f61035f366004612064565b610cb7565b6102646276a70081565b61026461037c366004612162565b610d45565b61020461038f366004611ef3565b610eef565b6102646103a2366004611ef3565b60009081526007602052604090205490565b6101e76103c2366004611fe5565b600a6020526000908152604090205460ff1681565b61026460095481565b6101e76103ee366004612184565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61024f61042a366004611fe5565b610fe5565b61024f61043d366004611fe5565b6110c7565b610264610450366004611f4d565b611188565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806104e857507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b8061053457507fffffffff0000000000000000000000000000000000000000000000000000000082167f28ed4f6c00000000000000000000000000000000000000000000000000000000145b92915050565b606060008054610549906121b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906121b2565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661065b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061068282611197565b9050806001600160a01b0316836001600160a01b03160361070b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610652565b336001600160a01b0382161480610727575061072781336103ee565b6107995760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610652565b6107a38383611222565b505050565b60006107b784848460006112a8565b949350505050565b6107c933826114ea565b61083b5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610652565b6107a3838383611565565b6008546009546040517f02571be3000000000000000000000000000000000000000000000000000000008152600481019190915230916001600160a01b0316906302571be390602401602060405180830381865afa1580156108ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d09190612205565b6001600160a01b0316146108e357600080fd5b6108ed33836114ea565b6108f657600080fd5b6008546009546040517f06ab59230000000000000000000000000000000000000000000000000000000081526004810191909152602481018490526001600160a01b038381166044830152909116906306ab5923906064016020604051808303816000875af115801561096d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a39190612222565b6107a383838360405180602001604052806000815250610cb7565b6006546001600160a01b03163314610a065760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b6008546009546040517f1896f70a00000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b03838116602483015290911690631896f70a90604401600060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b5050505050565b6000818152600760205260408120544210610aa657600080fd5b61053482611197565b60006001600160a01b038216610b2d5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610652565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610ba35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b610bad600061174a565b565b606060018054610549906121b2565b6000818152600760205260408120544290610bdd906276a7009061226a565b1092915050565b610bef3383836117b4565b5050565b6006546001600160a01b03163314610c4d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b6001600160a01b0381166000818152600a602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d74749190a250565b610cc133836114ea565b610d335760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610652565b610d3f848484846118a0565b50505050565b6008546009546040517f02571be3000000000000000000000000000000000000000000000000000000008152600481019190915260009130916001600160a01b03909116906302571be390602401602060405180830381865afa158015610db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd49190612205565b6001600160a01b031614610de757600080fd5b336000908152600a602052604090205460ff16610e0357600080fd5b6000838152600760205260409020544290610e22906276a7009061226a565b1015610e2d57600080fd5b610e3a6276a7008361226a565b6000848152600760205260409020546276a70090610e5990859061226a565b610e63919061226a565b11610e6d57600080fd5b60008381526007602052604081208054849290610e8b90849061226a565b90915550506000838152600760205260409081902054905184917f9b87a00e30f1ac65d898f070f8a3488fe60517182d0a2098e1b4b93a54aa9bd691610ed391815260200190565b60405180910390a2505060009081526007602052604090205490565b6000818152600260205260409020546060906001600160a01b0316610f7c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610652565b6000610f9360408051602081019091526000815290565b90506000815111610fb35760405180602001604052806000815250610fde565b80610fbd84611929565b604051602001610fce92919061227d565b6040516020818303038152906040525b9392505050565b6006546001600160a01b0316331461103f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b6001600160a01b0381166110bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610652565b6110c48161174a565b50565b6006546001600160a01b031633146111215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b6001600160a01b0381166000818152600a602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e811139190a250565b60006107b784848460016112a8565b6000818152600260205260408120546001600160a01b0316806105345760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610652565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061126f82611197565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6008546009546040517f02571be3000000000000000000000000000000000000000000000000000000008152600481019190915260009130916001600160a01b03909116906302571be390602401602060405180830381865afa158015611313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113379190612205565b6001600160a01b03161461134a57600080fd5b336000908152600a602052604090205460ff1661136657600080fd5b61136f85610bbe565b61137857600080fd5b6113856276a7004261226a565b6276a700611393854261226a565b61139d919061226a565b116113a757600080fd5b6113b1834261226a565b6000868152600760209081526040808320939093556002905220546001600160a01b0316156113e3576113e385611a5e565b6113ed8486611b11565b8115611490576008546009546040517f06ab59230000000000000000000000000000000000000000000000000000000081526004810191909152602481018790526001600160a01b038681166044830152909116906306ab5923906064016020604051808303816000875af115801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190612222565b505b6001600160a01b038416857fb3d987963d01b2f68493b4bdb130988f157ea43070d4ad840fee0466ed9370d96114c6864261226a565b60405190815260200160405180910390a36114e1834261226a565b95945050505050565b6000806114f683610a8c565b9050806001600160a01b0316846001600160a01b031614806115315750836001600160a01b0316611526846105cc565b6001600160a01b0316145b806107b757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff166107b7565b826001600160a01b031661157882611197565b6001600160a01b0316146115f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610652565b6001600160a01b03821661166f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610652565b61167a600082611222565b6001600160a01b03831660009081526003602052604081208054600192906116a39084906122ac565b90915550506001600160a01b03821660009081526003602052604081208054600192906116d190849061226a565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036118155760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610652565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6118ab848484611565565b6118b784848484611c6b565b610d3f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610652565b60608160000361196c57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156119965780611980816122bf565b915061198f9050600a83612326565b9150611970565b60008167ffffffffffffffff8111156119b1576119b1612035565b6040519080825280601f01601f1916602001820160405280156119db576020820181803683370190505b5090505b84156107b7576119f06001836122ac565b91506119fd600a8661233a565b611a0890603061226a565b60f81b818381518110611a1d57611a1d61234e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611a57600a86612326565b94506119df565b6000611a6982611197565b9050611a76600083611222565b6001600160a01b0381166000908152600360205260408120805460019290611a9f9084906122ac565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b038216611b675760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610652565b6000818152600260205260409020546001600160a01b031615611bcc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610652565b6001600160a01b0382166000908152600360205260408120805460019290611bf590849061226a565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15611e1f576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290611cc890339089908890889060040161237d565b6020604051808303816000875af1925050508015611d21575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d1e918101906123b9565b60015b611dd4573d808015611d4f576040519150601f19603f3d011682016040523d82523d6000602084013e611d54565b606091505b508051600003611dcc5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610652565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506107b7565b5060016107b7565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146110c457600080fd5b600060208284031215611e6757600080fd5b8135610fde81611e27565b60005b83811015611e8d578181015183820152602001611e75565b50506000910152565b60008151808452611eae816020860160208601611e72565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610fde6020830184611e96565b600060208284031215611f0557600080fd5b5035919050565b6001600160a01b03811681146110c457600080fd5b60008060408385031215611f3457600080fd5b8235611f3f81611f0c565b946020939093013593505050565b600080600060608486031215611f6257600080fd5b833592506020840135611f7481611f0c565b929592945050506040919091013590565b600080600060608486031215611f9a57600080fd5b8335611fa581611f0c565b92506020840135611f7481611f0c565b60008060408385031215611fc857600080fd5b823591506020830135611fda81611f0c565b809150509250929050565b600060208284031215611ff757600080fd5b8135610fde81611f0c565b6000806040838503121561201557600080fd5b823561202081611f0c565b915060208301358015158114611fda57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561207a57600080fd5b843561208581611f0c565b9350602085013561209581611f0c565b925060408501359150606085013567ffffffffffffffff808211156120b957600080fd5b818701915087601f8301126120cd57600080fd5b8135818111156120df576120df612035565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561212557612125612035565b816040528281528a602084870101111561213e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561217557600080fd5b50508035926020909101359150565b6000806040838503121561219757600080fd5b82356121a281611f0c565b91506020830135611fda81611f0c565b600181811c908216806121c657607f821691505b6020821081036121ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561221757600080fd5b8151610fde81611f0c565b60006020828403121561223457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105345761053461223b565b6000835161228f818460208801611e72565b8351908301906122a3818360208801611e72565b01949350505050565b818103818111156105345761053461223b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036122f0576122f061223b565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612335576123356122f7565b500490565b600082612349576123496122f7565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006001600160a01b038087168352808616602084015250836040830152608060608301526123af6080830184611e96565b9695505050505050565b6000602082840312156123cb57600080fd5b8151610fde81611e2756fea2646970667358221220b84f357fffe4653dd646fa4deb7b02772805eb1d583b8dedba6cc55f89b4df0464736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x26D2 CODESIZE SUB DUP1 PUSH3 0x26D2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x109 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 DUP1 DUP4 MSTORE DUP4 MLOAD SWAP2 DUP3 ADD SWAP1 SWAP4 MSTORE DUP3 DUP2 MSTORE SWAP1 SWAP2 PUSH3 0x5D DUP4 DUP3 PUSH3 0x1EA JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x6C DUP3 DUP3 PUSH3 0x1EA JUMP JUMPDEST POP POP POP PUSH3 0x89 PUSH3 0x83 PUSH3 0xB3 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xB7 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x9 SSTORE PUSH3 0x2B6 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x11D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x170 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x191 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1C0 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1E1 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1CC JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x206 JUMPI PUSH3 0x206 PUSH3 0x145 JUMP JUMPDEST PUSH3 0x21E DUP2 PUSH3 0x217 DUP5 SLOAD PUSH3 0x15B JUMP JUMPDEST DUP5 PUSH3 0x197 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x256 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x23D JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x1E1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x287 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x266 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2A6 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x240C DUP1 PUSH3 0x2C6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0xF6A74ED7 EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0xFCA247AC EQ PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0xD6E4FA86 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0xDDF7FCB0 EQ PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA7FC7A07 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xA7FC7A07 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xC475ABFF EQ PUSH2 0x36E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0x96E494E8 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F15457F GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x2D1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F15457F EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x4E543B26 EQ PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1AD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0xE297B45 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x28ED4F6C EQ PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x211 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E55 JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x204 PUSH2 0x53A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP2 SWAP1 PUSH2 0x1EE0 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x21F CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x1F21 JUMP JUMPDEST PUSH2 0x677 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x264 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F85 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x24F PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FB5 JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x224 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x2B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F85 JUMP JUMPDEST PUSH2 0x991 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x2CC CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0x9AC JUMP JUMPDEST PUSH2 0x224 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0xA8C JUMP JUMPDEST PUSH2 0x264 PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0xAAF JUMP JUMPDEST PUSH2 0x24F PUSH2 0xB49 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x224 JUMP JUMPDEST PUSH2 0x204 PUSH2 0xBAF JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x326 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x24F PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x2002 JUMP JUMPDEST PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x34C CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x35F CALLDATASIZE PUSH1 0x4 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0xCB7 JUMP JUMPDEST PUSH2 0x264 PUSH3 0x76A700 DUP2 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x37C CALLDATASIZE PUSH1 0x4 PUSH2 0x2162 JUMP JUMPDEST PUSH2 0xD45 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x38F CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x264 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x264 PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x3EE CALLDATASIZE PUSH1 0x4 PUSH2 0x2184 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x42A CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0xFE5 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x450 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0x1188 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4E8 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x534 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x28ED4F6C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x549 SWAP1 PUSH2 0x21B2 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x575 SWAP1 PUSH2 0x21B2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5C2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x597 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5C2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5A5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x65B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x682 DUP3 PUSH2 0x1197 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x70B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x727 JUMPI POP PUSH2 0x727 DUP2 CALLER PUSH2 0x3EE JUMP JUMPDEST PUSH2 0x799 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0x7A3 DUP4 DUP4 PUSH2 0x1222 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B7 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x12A8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x7C9 CALLER DUP3 PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x83B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0x7A3 DUP4 DUP4 DUP4 PUSH2 0x1565 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8D0 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8ED CALLER DUP4 PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x96D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7A3 SWAP2 SWAP1 PUSH2 0x2222 JUMP JUMPDEST PUSH2 0x7A3 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xCB7 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD TIMESTAMP LT PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x534 DUP3 PUSH2 0x1197 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2062616C616E636520717565727920666F7220746865207A65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726F206164647265737300000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0xBAD PUSH1 0x0 PUSH2 0x174A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x549 SWAP1 PUSH2 0x21B2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0xBDD SWAP1 PUSH3 0x76A700 SWAP1 PUSH2 0x226A JUMP JUMPDEST LT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBEF CALLER DUP4 DUP4 PUSH2 0x17B4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xA8BB31534C0ED46F380CB867BD5C803A189CED9A764E30B3A4991A9901D7474 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0xCC1 CALLER DUP4 PUSH2 0x14EA JUMP JUMPDEST PUSH2 0xD33 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0xD3F DUP5 DUP5 DUP5 DUP5 PUSH2 0x18A0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDB0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDD4 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0xE22 SWAP1 PUSH3 0x76A700 SWAP1 PUSH2 0x226A JUMP JUMPDEST LT ISZERO PUSH2 0xE2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE3A PUSH3 0x76A700 DUP4 PUSH2 0x226A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x76A700 SWAP1 PUSH2 0xE59 SWAP1 DUP6 SWAP1 PUSH2 0x226A JUMP JUMPDEST PUSH2 0xE63 SWAP2 SWAP1 PUSH2 0x226A JUMP JUMPDEST GT PUSH2 0xE6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE8B SWAP1 DUP5 SWAP1 PUSH2 0x226A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x9B87A00E30F1AC65D898F070F8A3488FE60517182D0A2098E1B4B93A54AA9BD6 SWAP2 PUSH2 0xED3 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6578697374656E7420746F6B656E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF93 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xFB3 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xFDE JUMP JUMPDEST DUP1 PUSH2 0xFBD DUP5 PUSH2 0x1929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFCE SWAP3 SWAP2 SWAP1 PUSH2 0x227D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x103F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x10BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0x10C4 DUP2 PUSH2 0x174A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1121 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD PUSH32 0x33D83959BE2573F5453B12EB9D43B3499BC57D96BD2F067BA44803C859E81113 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B7 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x12A8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x534 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F776E657220717565727920666F72206E6F6E6578697374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E7420746F6B656E0000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x126F DUP3 PUSH2 0x1197 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1313 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1337 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x134A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x136F DUP6 PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x1378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1385 PUSH3 0x76A700 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST PUSH3 0x76A700 PUSH2 0x1393 DUP6 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST PUSH2 0x139D SWAP2 SWAP1 PUSH2 0x226A JUMP JUMPDEST GT PUSH2 0x13A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B1 DUP4 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x2 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x13E3 JUMPI PUSH2 0x13E3 DUP6 PUSH2 0x1A5E JUMP JUMPDEST PUSH2 0x13ED DUP5 DUP7 PUSH2 0x1B11 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1490 JUMPI PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x146A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x148E SWAP2 SWAP1 PUSH2 0x2222 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP6 PUSH32 0xB3D987963D01B2F68493B4BDB130988F157EA43070D4AD840FEE0466ED9370D9 PUSH2 0x14C6 DUP7 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x14E1 DUP4 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14F6 DUP4 PUSH2 0xA8C JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1531 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1526 DUP5 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x7B7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x7B7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1578 DUP3 PUSH2 0x1197 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x15F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x166F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0x167A PUSH1 0x0 DUP3 PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x16A3 SWAP1 DUP5 SWAP1 PUSH2 0x22AC JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x16D1 SWAP1 DUP5 SWAP1 PUSH2 0x226A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1815 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x18AB DUP5 DUP5 DUP5 PUSH2 0x1565 JUMP JUMPDEST PUSH2 0x18B7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1C6B JUMP JUMPDEST PUSH2 0xD3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x196C JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1996 JUMPI DUP1 PUSH2 0x1980 DUP2 PUSH2 0x22BF JUMP JUMPDEST SWAP2 POP PUSH2 0x198F SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2326 JUMP JUMPDEST SWAP2 POP PUSH2 0x1970 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19B1 JUMPI PUSH2 0x19B1 PUSH2 0x2035 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19DB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x7B7 JUMPI PUSH2 0x19F0 PUSH1 0x1 DUP4 PUSH2 0x22AC JUMP JUMPDEST SWAP2 POP PUSH2 0x19FD PUSH1 0xA DUP7 PUSH2 0x233A JUMP JUMPDEST PUSH2 0x1A08 SWAP1 PUSH1 0x30 PUSH2 0x226A JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A1D JUMPI PUSH2 0x1A1D PUSH2 0x234E JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x1A57 PUSH1 0xA DUP7 PUSH2 0x2326 JUMP JUMPDEST SWAP5 POP PUSH2 0x19DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A69 DUP3 PUSH2 0x1197 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A76 PUSH1 0x0 DUP4 PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1A9F SWAP1 DUP5 SWAP1 PUSH2 0x22AC JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE MLOAD DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B67 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1BCC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1BF5 SWAP1 DUP5 SWAP1 PUSH2 0x226A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1E1F JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1CC8 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x237D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1D21 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1D1E SWAP2 DUP2 ADD SWAP1 PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1DD4 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1D4F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D54 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1DCC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0x7B7 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x7B7 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x10C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFDE DUP2 PUSH2 0x1E27 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E8D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E75 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1EAE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1E72 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xFDE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1E96 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F3F DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1F74 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FA5 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1F74 DUP2 PUSH2 0x1F0C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1FC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1FDA DUP2 PUSH2 0x1F0C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFDE DUP2 PUSH2 0x1F0C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2015 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2020 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1FDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x207A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2085 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2095 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x20B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x20CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x20DF JUMPI PUSH2 0x20DF PUSH2 0x2035 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2125 JUMPI PUSH2 0x2125 PUSH2 0x2035 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x21A2 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1FDA DUP2 PUSH2 0x1F0C JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x21C6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x21FF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xFDE DUP2 PUSH2 0x1F0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x534 JUMPI PUSH2 0x534 PUSH2 0x223B JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x228F DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1E72 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x22A3 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1E72 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x534 JUMPI PUSH2 0x534 PUSH2 0x223B JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x22F0 JUMPI PUSH2 0x22F0 PUSH2 0x223B JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2335 JUMPI PUSH2 0x2335 PUSH2 0x22F7 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2349 JUMPI PUSH2 0x2349 PUSH2 0x22F7 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x23AF PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1E96 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xFDE DUP2 PUSH2 0x1E27 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0x4F CALLDATALOAD PUSH32 0xFFE4653DD646FA4DEB7B02772805EB1D583B8DEDBA6CC55F89B4DF0464736F6C PUSH4 0x43000811 STOP CALLER ",
              "sourceMap": "199:6897:42:-:0;;;2418:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1390::9;;;;;;;;;-1:-1:-1;1390:113:9;;;;;;;;;;;;;;;;1456:13;1390:113;-1:-1:-1;1456:13:9;:::i;:::-;-1:-1:-1;1479:7:9;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;921:32:2;940:12;:10;;;:12;;:::i;:::-;921:18;:32::i;:::-;2484:3:42::1;:10:::0;;-1:-1:-1;;;;;;2484:10:42::1;-1:-1:-1::0;;;;;2484:10:42;;;::::1;::::0;;;::::1;::::0;;;2504:8:::1;:20:::0;199:6897;;640:96:14;719:10;;640:96::o;2270:187:2:-;2362:6;;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;;2410:40;;2362:6;;;2378:17;2362:6;;2410:40;;2343:16;;2410:40;2333:124;2270:187;:::o;14:364:111:-;106:6;114;167:2;155:9;146:7;142:23;138:32;135:52;;;183:1;180;173:12;135:52;209:16;;-1:-1:-1;;;;;254:31:111;;244:42;;234:70;;300:1;297;290:12;234:70;368:2;353:18;;;;347:25;323:5;;347:25;;-1:-1:-1;;;14:364:111:o;383:127::-;444:10;439:3;435:20;432:1;425:31;475:4;472:1;465:15;499:4;496:1;489:15;515:380;594:1;590:12;;;;637;;;658:61;;712:4;704:6;700:17;690:27;;658:61;765:2;757:6;754:14;734:18;731:38;728:161;;811:10;806:3;802:20;799:1;792:31;846:4;843:1;836:15;874:4;871:1;864:15;728:161;;515:380;;;:::o;1026:545::-;1128:2;1123:3;1120:11;1117:448;;;1164:1;1189:5;1185:2;1178:17;1234:4;1230:2;1220:19;1304:2;1292:10;1288:19;1285:1;1281:27;1275:4;1271:38;1340:4;1328:10;1325:20;1322:47;;;-1:-1:-1;1363:4:111;1322:47;1418:2;1413:3;1409:12;1406:1;1402:20;1396:4;1392:31;1382:41;;1473:82;1491:2;1484:5;1481:13;1473:82;;;1536:17;;;1517:1;1506:13;1473:82;;;1477:3;;;1117:448;1026:545;;;:::o;1747:1352::-;1867:10;;-1:-1:-1;;;;;1889:30:111;;1886:56;;;1922:18;;:::i;:::-;1951:97;2041:6;2001:38;2033:4;2027:11;2001:38;:::i;:::-;1995:4;1951:97;:::i;:::-;2103:4;;2167:2;2156:14;;2184:1;2179:663;;;;2886:1;2903:6;2900:89;;;-1:-1:-1;2955:19:111;;;2949:26;2900:89;-1:-1:-1;;1704:1:111;1700:11;;;1696:24;1692:29;1682:40;1728:1;1724:11;;;1679:57;3002:81;;2149:944;;2179:663;973:1;966:14;;;1010:4;997:18;;-1:-1:-1;;2215:20:111;;;2333:236;2347:7;2344:1;2341:14;2333:236;;;2436:19;;;2430:26;2415:42;;2528:27;;;;2496:1;2484:14;;;;2363:19;;2333:236;;;2337:3;2597:6;2588:7;2585:19;2582:201;;;2658:19;;;2652:26;-1:-1:-1;;2741:1:111;2737:14;;;2753:3;2733:24;2729:37;2725:42;2710:58;2695:74;;2582:201;-1:-1:-1;;;;;2829:1:111;2813:14;;;2809:22;2796:36;;-1:-1:-1;1747:1352:111:o;:::-;199:6897:42;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@GRACE_PERIOD_9050": {
                  "entryPoint": null,
                  "id": 9050,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_2376": {
                  "entryPoint": null,
                  "id": 2376,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_2260": {
                  "entryPoint": 4642,
                  "id": 2260,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_baseURI_1728": {
                  "entryPoint": null,
                  "id": 1728,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_beforeTokenTransfer_2365": {
                  "entryPoint": null,
                  "id": 2365,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_burn_2161": {
                  "entryPoint": 6750,
                  "id": 2161,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_2354": {
                  "entryPoint": 7275,
                  "id": 2354,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_exists_1950": {
                  "entryPoint": null,
                  "id": 1950,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_isApprovedOrOwner_9140": {
                  "entryPoint": 5354,
                  "id": 9140,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_2101": {
                  "entryPoint": 6929,
                  "id": 2101,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_register_9429": {
                  "entryPoint": 4776,
                  "id": 9429,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_safeTransfer_1932": {
                  "entryPoint": 6304,
                  "id": 1932,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_2292": {
                  "entryPoint": 6068,
                  "id": 2292,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_transferOwnership_641": {
                  "entryPoint": 5962,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_2236": {
                  "entryPoint": 5477,
                  "id": 2236,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@addController_9233": {
                  "entryPoint": 3059,
                  "id": 9233,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@approve_1771": {
                  "entryPoint": 1655,
                  "id": 1771,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@available_9299": {
                  "entryPoint": 3006,
                  "id": 9299,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@balanceOf_1629": {
                  "entryPoint": 2735,
                  "id": 1629,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@baseNode_9043": {
                  "entryPoint": null,
                  "id": 9043,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@controllers_9047": {
                  "entryPoint": null,
                  "id": 9047,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@ens_9041": {
                  "entryPoint": null,
                  "id": 9041,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_1792": {
                  "entryPoint": 1484,
                  "id": 1792,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isApprovedForAll_1827": {
                  "entryPoint": null,
                  "id": 1827,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_2556": {
                  "entryPoint": null,
                  "id": 2556,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@nameExpires_9281": {
                  "entryPoint": null,
                  "id": 9281,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1667": {
                  "entryPoint": 1338,
                  "id": 1667,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_1657": {
                  "entryPoint": 4503,
                  "id": 1657,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@ownerOf_9214": {
                  "entryPoint": 2700,
                  "id": 9214,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@reclaim_9517": {
                  "entryPoint": 2118,
                  "id": 9517,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@registerOnly_9340": {
                  "entryPoint": 1960,
                  "id": 9340,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@register_9320": {
                  "entryPoint": 4488,
                  "id": 9320,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@removeController_9252": {
                  "entryPoint": 4295,
                  "id": 9252,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@renew_9486": {
                  "entryPoint": 3397,
                  "id": 9486,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@renounceOwnership_598": {
                  "entryPoint": 2889,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1873": {
                  "entryPoint": 2449,
                  "id": 1873,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1903": {
                  "entryPoint": 3255,
                  "id": 1903,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1809": {
                  "entryPoint": 3044,
                  "id": 1809,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setResolver_9268": {
                  "entryPoint": 2476,
                  "id": 9268,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@supportsInterface_9540": {
                  "entryPoint": 1109,
                  "id": 9540,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1677": {
                  "entryPoint": 2991,
                  "id": 1677,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_2940": {
                  "entryPoint": 6441,
                  "id": 2940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenURI_1719": {
                  "entryPoint": 3823,
                  "id": 1719,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferFrom_1854": {
                  "entryPoint": 1983,
                  "id": 1854,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transferOwnership_621": {
                  "entryPoint": 4069,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 8165,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 8709,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 8580,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 8069,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 8292,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 8194,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 7969,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 8738,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 7765,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 9145,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 7923,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": 8117,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_addresst_uint256": {
                  "entryPoint": 8013,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 8546,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_string": {
                  "entryPoint": 7830,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 8829,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 9085,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 7904,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 8810,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 8998,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 8876,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 7794,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 8626,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 8895,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 9018,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 8763,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 8951,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 9038,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 8245,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 7948,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 7719,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:17031:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:133:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "99:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "68:117:111"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "265:176:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "311:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "320:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "323:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "313:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "313:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "313:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "286:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "295:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "282:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "282:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "307:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "278:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "278:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "275:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "336:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "362:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "349:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "349:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "340:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "405:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "381:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "381:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "381:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "420:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "430:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "231:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "242:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "254:6:111",
                            "type": ""
                          }
                        ],
                        "src": "196:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "541:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "551:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "563:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "574:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "559:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "559:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "551:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "618:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "611:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "611:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "604:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "604:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "586:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "586:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "586:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "510:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "521:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "532:4:111",
                            "type": ""
                          }
                        ],
                        "src": "446:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "704:184:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "714:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "723:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "718:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "783:63:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "808:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "813:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "804:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "804:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "827:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "832:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "823:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "823:11:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "817:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "817:18:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "797:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "797:39:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "797:39:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "744:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "747:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "741:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "741:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "755:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "757:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "766:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "769:2:111",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "762:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "762:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "757:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "737:3:111",
                                "statements": []
                              },
                              "src": "733:113:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "866:3:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "871:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "862:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "862:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "880:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "855:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "855:27:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "855:27:111"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "682:3:111",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "687:3:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "692:6:111",
                            "type": ""
                          }
                        ],
                        "src": "638:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "943:280:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "953:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "973:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "967:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "967:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "957:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "995:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1000:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "988:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "988:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "988:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1055:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1062:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1051:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1051:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1073:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1078:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1069:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1069:14:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1085:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "1016:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1016:76:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1016:76:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1101:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1129:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1137:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1125:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1125:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1142:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1121:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1121:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1112:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1112:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1212:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1108:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1108:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1101:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "920:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "927:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "935:3:111",
                            "type": ""
                          }
                        ],
                        "src": "893:330:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1349:99:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1366:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1377:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1359:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1359:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1359:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1389:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1415:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1427:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1438:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1423:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1423:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1397:45:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1318:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1329:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1340:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1228:220:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1523:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1569:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1578:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1581:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1571:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1571:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1571:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1544:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1553:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1540:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1540:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1565:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1536:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1536:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1533:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1594:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1617:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1604:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1604:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1594:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1489:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1500:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1512:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1453:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1739:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1749:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1761:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1772:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1757:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1757:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1749:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1791:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1806:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1814:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1802:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1802:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1784:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1784:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1784:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1708:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1719:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1730:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1638:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1914:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2001:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2010:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2013:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2003:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2003:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2003:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1937:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1948:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1955:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1944:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1944:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1934:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1934:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1927:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1927:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1924:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1903:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1869:154:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2115:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2161:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2170:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2173:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2163:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2163:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2163:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2136:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2145:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2132:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2132:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2157:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2128:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2128:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2125:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2186:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2212:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2199:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2199:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2190:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2256:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2231:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2231:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2231:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2271:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2281:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2271:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2295:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2322:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2333:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2318:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2318:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2305:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2305:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2295:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2073:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2084:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2096:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2104:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2028:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2452:279:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2498:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2507:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2510:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2500:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2500:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2500:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2473:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2482:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2469:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2469:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2494:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2465:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2465:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2462:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2523:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2546:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2533:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2533:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2523:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2565:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2595:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2606:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2591:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2591:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2578:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2578:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2569:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2644:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2619:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2619:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2619:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2659:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2669:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2659:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2683:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2710:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2721:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2706:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2706:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2693:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2693:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2683:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2402:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2413:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2425:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2433:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2441:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2348:383:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2837:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2847:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2859:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2870:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2855:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2855:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2847:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2889:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2900:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2882:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2882:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2882:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2806:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2817:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2828:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2736:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3022:352:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3068:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3077:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3080:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3070:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3070:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3070:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3043:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3052:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3039:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3039:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3064:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3035:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3035:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3032:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3093:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3119:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3106:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3106:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3097:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3163:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3138:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3138:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3138:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3178:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3188:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3178:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3202:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3234:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3245:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3230:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3230:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3217:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3217:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3206:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3283:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3258:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3258:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3258:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3300:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3310:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3300:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3326:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3353:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3364:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3349:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3349:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3336:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3336:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3326:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2972:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2983:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2995:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3003:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3011:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2918:456:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3466:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3512:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3521:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3524:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3514:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3514:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3514:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3487:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3496:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3483:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3483:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3508:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3479:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3479:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3476:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3537:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3560:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3547:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3547:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3537:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3579:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3609:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3620:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3605:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3605:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3592:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3592:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3583:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3658:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3633:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3633:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3633:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3673:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3683:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3673:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3424:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3435:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3447:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3455:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3379:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3813:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3823:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3835:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3846:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3831:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3831:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3823:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3865:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3880:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3888:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3876:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3876:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3858:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3858:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3858:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3782:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3793:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3804:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3699:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4013:177:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4059:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4068:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4071:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4061:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4061:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4061:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4034:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4043:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4030:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4030:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4055:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4026:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4026:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4023:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4084:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4110:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4097:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4097:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4088:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4154:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4129:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4129:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4129:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4169:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4179:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4169:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3979:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3990:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4002:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3943:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4279:332:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4325:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4334:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4337:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4327:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4327:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4327:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4300:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4309:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4296:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4296:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4321:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4292:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4292:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4289:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4350:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4376:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4363:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4363:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4354:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4420:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4395:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4395:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4395:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4435:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4445:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4435:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4459:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4491:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4502:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4487:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4487:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4474:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4474:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4463:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4563:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4572:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4575:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4565:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4565:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4565:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4528:7:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "4551:7:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "4544:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4544:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4537:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4537:23:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4525:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4525:36:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4518:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4518:44:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4515:64:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4588:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4598:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4588:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4237:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4248:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4260:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4268:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4195:416:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4648:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4665:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4668:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4658:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4658:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4658:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4762:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4765:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4755:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4755:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4755:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4786:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4789:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "4779:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4779:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4779:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "4616:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4935:1195:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4982:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4991:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4994:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4984:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4984:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4984:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4956:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4965:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4952:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4952:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4977:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4948:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4948:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4945:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5007:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5033:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5020:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5020:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5011:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5077:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5052:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5052:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5052:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5092:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5102:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5092:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5116:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5148:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5159:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5144:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5144:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5131:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5131:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5120:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5197:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5172:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5172:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5172:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5214:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5224:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5214:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5240:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5267:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5278:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5263:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5263:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5250:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5250:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5240:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5291:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5322:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5333:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5318:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5318:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5305:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5305:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5295:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5346:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5356:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5350:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5401:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5410:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5413:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5403:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5403:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5403:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5389:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5397:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5386:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5386:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5383:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5426:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5440:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5451:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5436:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5436:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5430:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5506:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5515:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5518:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5508:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5508:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5508:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5485:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5489:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5481:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5481:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5496:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5477:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5477:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5470:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5470:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5467:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5531:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5554:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5541:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5541:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5535:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5580:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "5582:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5582:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5582:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5572:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5576:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5569:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5569:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5566:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5611:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5621:66:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "5615:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5696:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5716:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5710:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5710:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "5700:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5728:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5750:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5774:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5778:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5770:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5770:13:111"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "5785:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "5766:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5766:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5790:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5762:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5762:31:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "5795:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5758:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5758:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5746:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5746:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "5732:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5858:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "5860:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5860:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5860:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5817:10:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5829:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5814:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5814:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5837:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5849:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5834:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5834:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5811:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5811:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5808:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5896:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5900:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5889:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5889:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5889:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5927:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5935:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5920:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5920:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5920:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5984:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5993:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5996:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5986:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5986:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5986:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5961:2:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "5965:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5957:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5957:11:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5970:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5953:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5953:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5975:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5950:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5950:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5947:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6026:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6034:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6022:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6022:15:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6043:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6047:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6039:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6039:11:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6052:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "6009:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6009:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6009:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "6079:6:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "6087:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6075:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6075:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6092:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6071:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6071:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6097:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6064:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6064:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6064:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6108:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "6118:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6108:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4877:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4888:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4900:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4908:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4916:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4924:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4805:1325:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6222:161:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6268:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6277:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6280:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6270:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6270:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6270:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6243:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6252:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6239:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6239:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6264:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6235:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6235:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6232:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6293:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6316:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6303:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6303:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6293:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6335:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6362:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6373:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6358:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6358:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6335:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6180:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6191:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6203:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6211:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6135:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6489:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6499:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6511:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6522:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6507:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6507:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6499:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6541:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6552:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6534:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6534:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6534:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6458:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6469:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6480:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6388:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6657:301:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6703:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6712:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6715:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6705:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6705:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6705:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6678:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6687:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6674:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6674:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6699:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6670:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6670:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6667:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6728:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6754:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6741:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6741:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6732:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6798:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6773:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6773:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6773:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6813:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6823:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6813:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6837:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6869:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6880:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6865:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6865:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6852:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6852:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6841:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6918:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6893:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6893:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6893:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6935:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "6945:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6935:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6615:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6626:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6638:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6646:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6570:388:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7018:382:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7028:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7042:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7045:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7038:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7038:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "7028:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7059:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7089:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7095:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7085:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7085:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "7063:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7136:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7138:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "7152:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7160:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "7148:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7148:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7138:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7116:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7109:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7109:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7106:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7226:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7247:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7250:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7240:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7240:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7240:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7348:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7351:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7341:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7341:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7376:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7379:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7369:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7369:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7369:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7182:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7205:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7213:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7202:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7202:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "7179:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7179:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7176:218:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "6998:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "7007:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6963:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7579:234:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7596:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7607:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7589:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7589:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7589:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7630:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7641:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7626:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7626:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7646:2:111",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7619:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7619:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7619:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7669:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7680:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7665:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7665:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7685:34:111",
                                    "type": "",
                                    "value": "ERC721: approved query for nonex"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7658:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7658:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7658:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7740:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7751:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7736:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7736:18:111"
                                  },
                                  {
                                    "hexValue": "697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7756:14:111",
                                    "type": "",
                                    "value": "istent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7729:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7729:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7729:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7780:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7792:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7803:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7788:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7788:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7780:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7556:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7570:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7405:408:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7992:223:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8009:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8020:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8002:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8002:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8002:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8043:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8054:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8039:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8039:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8059:2:111",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8032:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8032:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8032:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8082:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8093:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8078:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8078:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8098:34:111",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8071:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8071:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8071:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8153:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8164:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8149:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8149:18:111"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8169:3:111",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8142:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8142:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8142:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8182:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8194:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8205:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8190:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8190:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8182:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7969:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7983:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7818:397:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8394:246:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8411:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8422:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8404:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8404:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8404:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8445:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8456:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8441:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8441:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8461:2:111",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8434:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8434:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8434:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8484:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8495:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8480:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8480:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8500:34:111",
                                    "type": "",
                                    "value": "ERC721: approve caller is not ow"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8473:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8473:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8473:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8555:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8566:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8551:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8551:18:111"
                                  },
                                  {
                                    "hexValue": "6e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8571:26:111",
                                    "type": "",
                                    "value": "ner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8544:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8544:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8544:54:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8607:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8619:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8630:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8615:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8615:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8607:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8371:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8385:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8220:420:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8819:239:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8836:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8847:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8829:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8829:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8829:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8870:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8881:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8866:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8866:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8886:2:111",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8859:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8859:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8859:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8909:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8920:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8905:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8905:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8925:34:111",
                                    "type": "",
                                    "value": "ERC721: transfer caller is not o"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8898:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8898:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8898:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8980:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8991:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8976:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8976:18:111"
                                  },
                                  {
                                    "hexValue": "776e6572206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8996:19:111",
                                    "type": "",
                                    "value": "wner nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8969:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8969:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8969:47:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9025:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9037:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9048:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9033:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9033:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9025:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8796:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8810:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8645:413:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9144:170:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9190:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9199:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9202:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9192:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9192:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9192:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9165:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9174:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9161:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9161:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9186:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9157:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9157:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9154:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9215:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9234:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9228:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9228:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9219:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9278:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9253:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9253:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9253:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9293:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9303:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9293:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9110:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9121:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9133:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9063:251:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9476:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9486:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9498:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9509:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9494:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9494:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9486:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9528:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9539:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9521:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9521:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9521:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9566:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9577:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9562:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9562:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9582:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9555:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9555:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9555:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9609:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9620:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9605:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9605:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9629:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9637:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9625:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9625:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9598:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9598:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9598:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9429:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9440:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9448:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9456:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9467:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9319:368:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9773:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9819:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9828:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9831:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9821:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9821:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9821:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9794:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9803:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9790:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9790:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9815:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9786:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9786:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9783:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9844:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9860:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9854:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9854:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9844:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9739:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9750:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9762:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9692:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10055:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10072:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10083:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10065:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10065:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10065:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10106:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10117:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10102:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10102:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10122:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10095:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10095:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10095:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10145:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10156:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10141:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10141:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10161:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10134:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10134:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10134:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10205:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10217:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10228:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10213:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10213:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10205:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10032:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10046:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9881:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10371:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10381:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10393:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10404:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10389:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10389:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10381:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10423:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10434:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10416:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10416:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10416:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10461:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10472:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10457:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10457:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10481:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10489:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10477:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10477:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10450:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10450:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10450:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10332:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10343:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10351:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10362:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10242:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10718:232:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10735:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10746:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10728:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10728:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10728:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10769:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10780:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10765:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10765:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10785:2:111",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10758:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10758:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10758:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10808:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10819:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10804:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10804:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10824:34:111",
                                    "type": "",
                                    "value": "ERC721: balance query for the ze"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10797:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10797:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10797:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10879:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10890:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10875:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10875:18:111"
                                  },
                                  {
                                    "hexValue": "726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10895:12:111",
                                    "type": "",
                                    "value": "ro address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10868:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10868:40:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10868:40:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10917:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10929:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10940:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10925:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10925:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10917:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10695:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10709:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10544:406:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10987:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11004:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11007:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10997:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10997:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10997:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11101:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11104:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11094:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11094:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11094:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11125:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11128:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11118:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11118:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11118:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "10955:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11192:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11202:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11213:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11216:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11209:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11209:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "11202:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11241:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "11243:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11243:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11243:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11233:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "11236:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11230:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11230:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11227:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "11175:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "11178:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "11184:3:111",
                            "type": ""
                          }
                        ],
                        "src": "11144:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11448:237:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11465:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11476:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11458:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11458:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11458:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11499:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11510:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11495:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11495:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11515:2:111",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11488:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11488:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11488:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11538:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11549:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11534:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11534:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11554:34:111",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11527:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11527:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11527:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11609:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11620:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11605:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11605:18:111"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11625:17:111",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11598:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11598:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11598:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11652:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11664:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11675:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11660:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11660:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11652:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11425:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11439:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11274:411:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11877:309:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11887:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11907:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11901:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11901:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11891:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "11962:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11970:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11958:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11958:17:111"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11977:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11982:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "11923:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11923:66:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11923:66:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11998:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12015:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12020:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12011:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12011:16:111"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12002:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12036:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12058:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12052:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12052:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12040:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12113:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12121:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12109:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12109:17:111"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12128:5:111"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12135:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "12074:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12074:70:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12074:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12153:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12164:5:111"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12171:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12160:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12160:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12153:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "11845:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11850:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11858:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "11869:3:111",
                            "type": ""
                          }
                        ],
                        "src": "11690:496:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12365:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12382:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12393:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12375:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12375:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12375:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12416:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12427:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12412:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12412:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12432:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12405:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12405:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12405:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12455:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12466:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12451:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12451:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12471:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12444:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12444:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12444:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12526:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12537:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12522:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12522:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12542:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12515:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12515:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12515:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12560:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12572:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12583:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12568:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12568:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12560:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12342:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12356:4:111",
                            "type": ""
                          }
                        ],
                        "src": "12191:402:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12772:231:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12789:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12800:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12782:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12782:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12782:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12823:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12834:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12819:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12819:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12839:2:111",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12812:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12812:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12812:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12862:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12873:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12858:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12858:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12878:34:111",
                                    "type": "",
                                    "value": "ERC721: owner query for nonexist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12851:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12851:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12851:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12933:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12944:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12929:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12929:18:111"
                                  },
                                  {
                                    "hexValue": "656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12949:11:111",
                                    "type": "",
                                    "value": "ent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12922:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12922:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12922:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12970:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12982:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12993:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12978:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12978:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12970:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12749:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12763:4:111",
                            "type": ""
                          }
                        ],
                        "src": "12598:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13182:227:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13199:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13210:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13192:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13192:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13192:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13233:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13244:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13229:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13229:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13249:2:111",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13222:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13222:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13222:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13272:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13283:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13268:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13268:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13288:34:111",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13261:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13261:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13261:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13343:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13354:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13339:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13339:18:111"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13359:7:111",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13332:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13332:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13332:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13376:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13388:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13399:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13384:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13384:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13376:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13159:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13173:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13008:401:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13588:226:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13605:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13616:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13598:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13598:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13598:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13639:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13650:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13635:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13635:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13655:2:111",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13628:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13628:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13628:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13678:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13689:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13674:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13674:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13694:34:111",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13667:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13667:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13667:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13749:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13760:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13745:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13745:18:111"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13765:6:111",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13738:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13738:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13738:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13781:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13793:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13804:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13789:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13789:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13781:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13565:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13579:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13414:400:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13868:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13878:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13890:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13893:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "13886:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13886:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "13878:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13919:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13921:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13921:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13921:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "13910:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13916:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13907:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13907:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13904:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13850:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13853:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "13859:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13819:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14126:175:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14143:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14154:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14136:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14136:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14136:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14177:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14188:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14173:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14173:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14193:2:111",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14166:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14166:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14216:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14227:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14212:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14212:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14232:27:111",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14205:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14205:55:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14205:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14269:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14281:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14292:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14277:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14277:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14269:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14103:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14117:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13952:349:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14480:240:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14497:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14508:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14490:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14490:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14490:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14531:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14542:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14527:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14527:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14547:2:111",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14520:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14520:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14520:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14570:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14581:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14566:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14566:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14586:34:111",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14559:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14559:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14559:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14641:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14652:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14637:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14637:18:111"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14657:20:111",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14630:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14630:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14630:48:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14687:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14699:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14710:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14695:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14695:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14687:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14457:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14471:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14306:414:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14772:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14863:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14865:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14865:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14865:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14788:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14795:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "14785:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14785:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14782:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14894:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14905:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14912:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14901:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14901:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "14894:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "14754:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "14764:3:111",
                            "type": ""
                          }
                        ],
                        "src": "14725:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14957:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14974:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14977:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14967:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14967:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14967:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15071:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15074:4:111",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15064:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15064:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15064:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15095:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15098:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "15088:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15088:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15088:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14925:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15160:74:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15183:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "15185:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15185:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15185:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15180:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15173:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15173:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15170:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15214:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15223:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15226:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "15219:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15219:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "15214:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15145:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15148:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "15154:1:111",
                            "type": ""
                          }
                        ],
                        "src": "15114:120:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15277:74:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15300:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "15302:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15302:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15302:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15297:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15290:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15290:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15287:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15331:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15340:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15343:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "15336:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15336:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "15331:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15262:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15265:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "15271:1:111",
                            "type": ""
                          }
                        ],
                        "src": "15239:112:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15388:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15405:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15408:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15398:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15398:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15398:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15502:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15505:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15495:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15495:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15495:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15526:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15529:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "15519:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15519:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15519:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "15356:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15719:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15736:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15747:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15729:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15729:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15729:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15770:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15781:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15766:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15766:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15786:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15759:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15759:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15759:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15809:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15820:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15805:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15805:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15825:34:111",
                                    "type": "",
                                    "value": "ERC721: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15798:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15798:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15798:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15869:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15881:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15892:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15877:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15877:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15869:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15696:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15710:4:111",
                            "type": ""
                          }
                        ],
                        "src": "15545:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16080:178:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16097:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16108:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16090:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16090:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16090:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16131:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16142:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16127:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16127:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16147:2:111",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16120:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16120:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16120:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16170:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16181:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16166:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16166:18:111"
                                  },
                                  {
                                    "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16186:30:111",
                                    "type": "",
                                    "value": "ERC721: token already minted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16159:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16159:58:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16159:58:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16226:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16238:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16249:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16234:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16234:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16226:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16057:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16071:4:111",
                            "type": ""
                          }
                        ],
                        "src": "15906:352:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16466:309:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16476:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16486:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16480:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16544:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16559:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16567:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16555:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16555:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16537:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16537:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16537:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16591:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16602:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16587:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16587:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16611:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16619:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16607:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16607:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16580:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16580:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16580:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16643:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16654:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16639:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16639:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "16659:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16632:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16632:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16632:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16686:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16697:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16682:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16682:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16702:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16675:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16675:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16675:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16715:54:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16741:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16753:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16764:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16749:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16749:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "16723:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16723:46:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16715:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16411:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16422:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16430:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16438:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16446:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16457:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16263:512:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16860:169:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16906:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16915:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16918:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16908:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16908:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16908:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16881:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16890:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16877:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16877:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16902:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16873:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16873:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "16870:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16931:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16950:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16944:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16944:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "16935:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "16993:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "16969:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16969:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16969:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17008:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "17018:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "17008:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16826:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16837:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16849:6:111",
                            "type": ""
                          }
                        ],
                        "src": "16780:249:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value3 := memPtr\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC721: approved query for nonex\")\n        mstore(add(headStart, 96), \"istent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not ow\")\n        mstore(add(headStart, 96), \"ner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"ERC721: transfer caller is not o\")\n        mstore(add(headStart, 96), \"wner nor approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC721: balance query for the ze\")\n        mstore(add(headStart, 96), \"ro address\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: owner query for nonexist\")\n        mstore(add(headStart, 96), \"ent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101cf5760003560e01c806395d89b4111610104578063c87b56dd116100a2578063e985e9c511610071578063e985e9c5146103e0578063f2fde38b1461041c578063f6a74ed71461042f578063fca247ac1461044257600080fd5b8063c87b56dd14610381578063d6e4fa8614610394578063da8c229e146103b4578063ddf7fcb0146103d757600080fd5b8063a7fc7a07116100de578063a7fc7a071461033e578063b88d4fde14610351578063c1a287e214610364578063c475abff1461036e57600080fd5b806395d89b411461031057806396e494e814610318578063a22cb4651461032b57600080fd5b80633f15457f116101715780636352211e1161014b5780636352211e146102d157806370a08231146102e4578063715018a6146102f75780638da5cb5b146102ff57600080fd5b80633f15457f1461029857806342842e0e146102ab5780634e543b26146102be57600080fd5b8063095ea7b3116101ad578063095ea7b31461023c5780630e297b451461025157806323b872dd1461027257806328ed4f6c1461028557600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004611e55565b610455565b60405190151581526020015b60405180910390f35b61020461053a565b6040516101f39190611ee0565b61022461021f366004611ef3565b6105cc565b6040516001600160a01b0390911681526020016101f3565b61024f61024a366004611f21565b610677565b005b61026461025f366004611f4d565b6107a8565b6040519081526020016101f3565b61024f610280366004611f85565b6107bf565b61024f610293366004611fb5565b610846565b600854610224906001600160a01b031681565b61024f6102b9366004611f85565b610991565b61024f6102cc366004611fe5565b6109ac565b6102246102df366004611ef3565b610a8c565b6102646102f2366004611fe5565b610aaf565b61024f610b49565b6006546001600160a01b0316610224565b610204610baf565b6101e7610326366004611ef3565b610bbe565b61024f610339366004612002565b610be4565b61024f61034c366004611fe5565b610bf3565b61024f61035f366004612064565b610cb7565b6102646276a70081565b61026461037c366004612162565b610d45565b61020461038f366004611ef3565b610eef565b6102646103a2366004611ef3565b60009081526007602052604090205490565b6101e76103c2366004611fe5565b600a6020526000908152604090205460ff1681565b61026460095481565b6101e76103ee366004612184565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61024f61042a366004611fe5565b610fe5565b61024f61043d366004611fe5565b6110c7565b610264610450366004611f4d565b611188565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806104e857507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b8061053457507fffffffff0000000000000000000000000000000000000000000000000000000082167f28ed4f6c00000000000000000000000000000000000000000000000000000000145b92915050565b606060008054610549906121b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906121b2565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661065b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061068282611197565b9050806001600160a01b0316836001600160a01b03160361070b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610652565b336001600160a01b0382161480610727575061072781336103ee565b6107995760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610652565b6107a38383611222565b505050565b60006107b784848460006112a8565b949350505050565b6107c933826114ea565b61083b5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610652565b6107a3838383611565565b6008546009546040517f02571be3000000000000000000000000000000000000000000000000000000008152600481019190915230916001600160a01b0316906302571be390602401602060405180830381865afa1580156108ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d09190612205565b6001600160a01b0316146108e357600080fd5b6108ed33836114ea565b6108f657600080fd5b6008546009546040517f06ab59230000000000000000000000000000000000000000000000000000000081526004810191909152602481018490526001600160a01b038381166044830152909116906306ab5923906064016020604051808303816000875af115801561096d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a39190612222565b6107a383838360405180602001604052806000815250610cb7565b6006546001600160a01b03163314610a065760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b6008546009546040517f1896f70a00000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b03838116602483015290911690631896f70a90604401600060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b5050505050565b6000818152600760205260408120544210610aa657600080fd5b61053482611197565b60006001600160a01b038216610b2d5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610652565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610ba35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b610bad600061174a565b565b606060018054610549906121b2565b6000818152600760205260408120544290610bdd906276a7009061226a565b1092915050565b610bef3383836117b4565b5050565b6006546001600160a01b03163314610c4d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b6001600160a01b0381166000818152600a602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d74749190a250565b610cc133836114ea565b610d335760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610652565b610d3f848484846118a0565b50505050565b6008546009546040517f02571be3000000000000000000000000000000000000000000000000000000008152600481019190915260009130916001600160a01b03909116906302571be390602401602060405180830381865afa158015610db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd49190612205565b6001600160a01b031614610de757600080fd5b336000908152600a602052604090205460ff16610e0357600080fd5b6000838152600760205260409020544290610e22906276a7009061226a565b1015610e2d57600080fd5b610e3a6276a7008361226a565b6000848152600760205260409020546276a70090610e5990859061226a565b610e63919061226a565b11610e6d57600080fd5b60008381526007602052604081208054849290610e8b90849061226a565b90915550506000838152600760205260409081902054905184917f9b87a00e30f1ac65d898f070f8a3488fe60517182d0a2098e1b4b93a54aa9bd691610ed391815260200190565b60405180910390a2505060009081526007602052604090205490565b6000818152600260205260409020546060906001600160a01b0316610f7c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610652565b6000610f9360408051602081019091526000815290565b90506000815111610fb35760405180602001604052806000815250610fde565b80610fbd84611929565b604051602001610fce92919061227d565b6040516020818303038152906040525b9392505050565b6006546001600160a01b0316331461103f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b6001600160a01b0381166110bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610652565b6110c48161174a565b50565b6006546001600160a01b031633146111215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b6001600160a01b0381166000818152600a602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e811139190a250565b60006107b784848460016112a8565b6000818152600260205260408120546001600160a01b0316806105345760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610652565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061126f82611197565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6008546009546040517f02571be3000000000000000000000000000000000000000000000000000000008152600481019190915260009130916001600160a01b03909116906302571be390602401602060405180830381865afa158015611313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113379190612205565b6001600160a01b03161461134a57600080fd5b336000908152600a602052604090205460ff1661136657600080fd5b61136f85610bbe565b61137857600080fd5b6113856276a7004261226a565b6276a700611393854261226a565b61139d919061226a565b116113a757600080fd5b6113b1834261226a565b6000868152600760209081526040808320939093556002905220546001600160a01b0316156113e3576113e385611a5e565b6113ed8486611b11565b8115611490576008546009546040517f06ab59230000000000000000000000000000000000000000000000000000000081526004810191909152602481018790526001600160a01b038681166044830152909116906306ab5923906064016020604051808303816000875af115801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190612222565b505b6001600160a01b038416857fb3d987963d01b2f68493b4bdb130988f157ea43070d4ad840fee0466ed9370d96114c6864261226a565b60405190815260200160405180910390a36114e1834261226a565b95945050505050565b6000806114f683610a8c565b9050806001600160a01b0316846001600160a01b031614806115315750836001600160a01b0316611526846105cc565b6001600160a01b0316145b806107b757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff166107b7565b826001600160a01b031661157882611197565b6001600160a01b0316146115f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610652565b6001600160a01b03821661166f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610652565b61167a600082611222565b6001600160a01b03831660009081526003602052604081208054600192906116a39084906122ac565b90915550506001600160a01b03821660009081526003602052604081208054600192906116d190849061226a565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036118155760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610652565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6118ab848484611565565b6118b784848484611c6b565b610d3f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610652565b60608160000361196c57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156119965780611980816122bf565b915061198f9050600a83612326565b9150611970565b60008167ffffffffffffffff8111156119b1576119b1612035565b6040519080825280601f01601f1916602001820160405280156119db576020820181803683370190505b5090505b84156107b7576119f06001836122ac565b91506119fd600a8661233a565b611a0890603061226a565b60f81b818381518110611a1d57611a1d61234e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611a57600a86612326565b94506119df565b6000611a6982611197565b9050611a76600083611222565b6001600160a01b0381166000908152600360205260408120805460019290611a9f9084906122ac565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b038216611b675760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610652565b6000818152600260205260409020546001600160a01b031615611bcc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610652565b6001600160a01b0382166000908152600360205260408120805460019290611bf590849061226a565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15611e1f576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290611cc890339089908890889060040161237d565b6020604051808303816000875af1925050508015611d21575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d1e918101906123b9565b60015b611dd4573d808015611d4f576040519150601f19603f3d011682016040523d82523d6000602084013e611d54565b606091505b508051600003611dcc5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610652565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506107b7565b5060016107b7565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146110c457600080fd5b600060208284031215611e6757600080fd5b8135610fde81611e27565b60005b83811015611e8d578181015183820152602001611e75565b50506000910152565b60008151808452611eae816020860160208601611e72565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610fde6020830184611e96565b600060208284031215611f0557600080fd5b5035919050565b6001600160a01b03811681146110c457600080fd5b60008060408385031215611f3457600080fd5b8235611f3f81611f0c565b946020939093013593505050565b600080600060608486031215611f6257600080fd5b833592506020840135611f7481611f0c565b929592945050506040919091013590565b600080600060608486031215611f9a57600080fd5b8335611fa581611f0c565b92506020840135611f7481611f0c565b60008060408385031215611fc857600080fd5b823591506020830135611fda81611f0c565b809150509250929050565b600060208284031215611ff757600080fd5b8135610fde81611f0c565b6000806040838503121561201557600080fd5b823561202081611f0c565b915060208301358015158114611fda57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561207a57600080fd5b843561208581611f0c565b9350602085013561209581611f0c565b925060408501359150606085013567ffffffffffffffff808211156120b957600080fd5b818701915087601f8301126120cd57600080fd5b8135818111156120df576120df612035565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561212557612125612035565b816040528281528a602084870101111561213e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561217557600080fd5b50508035926020909101359150565b6000806040838503121561219757600080fd5b82356121a281611f0c565b91506020830135611fda81611f0c565b600181811c908216806121c657607f821691505b6020821081036121ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561221757600080fd5b8151610fde81611f0c565b60006020828403121561223457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105345761053461223b565b6000835161228f818460208801611e72565b8351908301906122a3818360208801611e72565b01949350505050565b818103818111156105345761053461223b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036122f0576122f061223b565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612335576123356122f7565b500490565b600082612349576123496122f7565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006001600160a01b038087168352808616602084015250836040830152608060608301526123af6080830184611e96565b9695505050505050565b6000602082840312156123cb57600080fd5b8151610fde81611e2756fea2646970667358221220b84f357fffe4653dd646fa4deb7b02772805eb1d583b8dedba6cc55f89b4df0464736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0xF6A74ED7 EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0xFCA247AC EQ PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0xD6E4FA86 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0xDDF7FCB0 EQ PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA7FC7A07 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xA7FC7A07 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xC475ABFF EQ PUSH2 0x36E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0x96E494E8 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F15457F GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x2D1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F15457F EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x4E543B26 EQ PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1AD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0xE297B45 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x28ED4F6C EQ PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x211 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E55 JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x204 PUSH2 0x53A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP2 SWAP1 PUSH2 0x1EE0 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x21F CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x1F21 JUMP JUMPDEST PUSH2 0x677 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x264 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F85 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x24F PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FB5 JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x224 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x2B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F85 JUMP JUMPDEST PUSH2 0x991 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x2CC CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0x9AC JUMP JUMPDEST PUSH2 0x224 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0xA8C JUMP JUMPDEST PUSH2 0x264 PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0xAAF JUMP JUMPDEST PUSH2 0x24F PUSH2 0xB49 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x224 JUMP JUMPDEST PUSH2 0x204 PUSH2 0xBAF JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x326 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x24F PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x2002 JUMP JUMPDEST PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x34C CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x35F CALLDATASIZE PUSH1 0x4 PUSH2 0x2064 JUMP JUMPDEST PUSH2 0xCB7 JUMP JUMPDEST PUSH2 0x264 PUSH3 0x76A700 DUP2 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x37C CALLDATASIZE PUSH1 0x4 PUSH2 0x2162 JUMP JUMPDEST PUSH2 0xD45 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x38F CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x264 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EF3 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x264 PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x3EE CALLDATASIZE PUSH1 0x4 PUSH2 0x2184 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x42A CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0xFE5 JUMP JUMPDEST PUSH2 0x24F PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE5 JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x450 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0x1188 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4E8 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x534 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x28ED4F6C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x549 SWAP1 PUSH2 0x21B2 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x575 SWAP1 PUSH2 0x21B2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5C2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x597 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5C2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5A5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x65B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x682 DUP3 PUSH2 0x1197 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x70B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x727 JUMPI POP PUSH2 0x727 DUP2 CALLER PUSH2 0x3EE JUMP JUMPDEST PUSH2 0x799 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0x7A3 DUP4 DUP4 PUSH2 0x1222 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B7 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x12A8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x7C9 CALLER DUP3 PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x83B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0x7A3 DUP4 DUP4 DUP4 PUSH2 0x1565 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8D0 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8ED CALLER DUP4 PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x96D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7A3 SWAP2 SWAP1 PUSH2 0x2222 JUMP JUMPDEST PUSH2 0x7A3 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xCB7 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD TIMESTAMP LT PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x534 DUP3 PUSH2 0x1197 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2062616C616E636520717565727920666F7220746865207A65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726F206164647265737300000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0xBAD PUSH1 0x0 PUSH2 0x174A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x549 SWAP1 PUSH2 0x21B2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0xBDD SWAP1 PUSH3 0x76A700 SWAP1 PUSH2 0x226A JUMP JUMPDEST LT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBEF CALLER DUP4 DUP4 PUSH2 0x17B4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xA8BB31534C0ED46F380CB867BD5C803A189CED9A764E30B3A4991A9901D7474 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0xCC1 CALLER DUP4 PUSH2 0x14EA JUMP JUMPDEST PUSH2 0xD33 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0xD3F DUP5 DUP5 DUP5 DUP5 PUSH2 0x18A0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDB0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDD4 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0xE22 SWAP1 PUSH3 0x76A700 SWAP1 PUSH2 0x226A JUMP JUMPDEST LT ISZERO PUSH2 0xE2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE3A PUSH3 0x76A700 DUP4 PUSH2 0x226A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x76A700 SWAP1 PUSH2 0xE59 SWAP1 DUP6 SWAP1 PUSH2 0x226A JUMP JUMPDEST PUSH2 0xE63 SWAP2 SWAP1 PUSH2 0x226A JUMP JUMPDEST GT PUSH2 0xE6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE8B SWAP1 DUP5 SWAP1 PUSH2 0x226A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x9B87A00E30F1AC65D898F070F8A3488FE60517182D0A2098E1B4B93A54AA9BD6 SWAP2 PUSH2 0xED3 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6578697374656E7420746F6B656E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF93 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xFB3 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xFDE JUMP JUMPDEST DUP1 PUSH2 0xFBD DUP5 PUSH2 0x1929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFCE SWAP3 SWAP2 SWAP1 PUSH2 0x227D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x103F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x10BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0x10C4 DUP2 PUSH2 0x174A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1121 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD PUSH32 0x33D83959BE2573F5453B12EB9D43B3499BC57D96BD2F067BA44803C859E81113 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B7 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x12A8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x534 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F776E657220717565727920666F72206E6F6E6578697374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E7420746F6B656E0000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x126F DUP3 PUSH2 0x1197 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 ADDRESS SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1313 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1337 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x134A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x136F DUP6 PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x1378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1385 PUSH3 0x76A700 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST PUSH3 0x76A700 PUSH2 0x1393 DUP6 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST PUSH2 0x139D SWAP2 SWAP1 PUSH2 0x226A JUMP JUMPDEST GT PUSH2 0x13A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B1 DUP4 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x2 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x13E3 JUMPI PUSH2 0x13E3 DUP6 PUSH2 0x1A5E JUMP JUMPDEST PUSH2 0x13ED DUP5 DUP7 PUSH2 0x1B11 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1490 JUMPI PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x146A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x148E SWAP2 SWAP1 PUSH2 0x2222 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP6 PUSH32 0xB3D987963D01B2F68493B4BDB130988F157EA43070D4AD840FEE0466ED9370D9 PUSH2 0x14C6 DUP7 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x14E1 DUP4 TIMESTAMP PUSH2 0x226A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14F6 DUP4 PUSH2 0xA8C JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1531 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1526 DUP5 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x7B7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x7B7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1578 DUP3 PUSH2 0x1197 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x15F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x166F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH2 0x167A PUSH1 0x0 DUP3 PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x16A3 SWAP1 DUP5 SWAP1 PUSH2 0x22AC JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x16D1 SWAP1 DUP5 SWAP1 PUSH2 0x226A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1815 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x18AB DUP5 DUP5 DUP5 PUSH2 0x1565 JUMP JUMPDEST PUSH2 0x18B7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1C6B JUMP JUMPDEST PUSH2 0xD3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x196C JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1996 JUMPI DUP1 PUSH2 0x1980 DUP2 PUSH2 0x22BF JUMP JUMPDEST SWAP2 POP PUSH2 0x198F SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2326 JUMP JUMPDEST SWAP2 POP PUSH2 0x1970 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19B1 JUMPI PUSH2 0x19B1 PUSH2 0x2035 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19DB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x7B7 JUMPI PUSH2 0x19F0 PUSH1 0x1 DUP4 PUSH2 0x22AC JUMP JUMPDEST SWAP2 POP PUSH2 0x19FD PUSH1 0xA DUP7 PUSH2 0x233A JUMP JUMPDEST PUSH2 0x1A08 SWAP1 PUSH1 0x30 PUSH2 0x226A JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A1D JUMPI PUSH2 0x1A1D PUSH2 0x234E JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x1A57 PUSH1 0xA DUP7 PUSH2 0x2326 JUMP JUMPDEST SWAP5 POP PUSH2 0x19DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A69 DUP3 PUSH2 0x1197 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A76 PUSH1 0x0 DUP4 PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1A9F SWAP1 DUP5 SWAP1 PUSH2 0x22AC JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE MLOAD DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B67 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1BCC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x652 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1BF5 SWAP1 DUP5 SWAP1 PUSH2 0x226A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1E1F JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1CC8 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x237D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1D21 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1D1E SWAP2 DUP2 ADD SWAP1 PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1DD4 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1D4F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D54 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1DCC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x652 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0x7B7 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x7B7 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x10C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFDE DUP2 PUSH2 0x1E27 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E8D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E75 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1EAE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1E72 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xFDE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1E96 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F3F DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1F74 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FA5 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1F74 DUP2 PUSH2 0x1F0C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1FC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1FDA DUP2 PUSH2 0x1F0C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFDE DUP2 PUSH2 0x1F0C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2015 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2020 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1FDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x207A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2085 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2095 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x20B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x20CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x20DF JUMPI PUSH2 0x20DF PUSH2 0x2035 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2125 JUMPI PUSH2 0x2125 PUSH2 0x2035 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x21A2 DUP2 PUSH2 0x1F0C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1FDA DUP2 PUSH2 0x1F0C JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x21C6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x21FF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xFDE DUP2 PUSH2 0x1F0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x534 JUMPI PUSH2 0x534 PUSH2 0x223B JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x228F DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1E72 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x22A3 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1E72 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x534 JUMPI PUSH2 0x534 PUSH2 0x223B JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x22F0 JUMPI PUSH2 0x22F0 PUSH2 0x223B JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2335 JUMPI PUSH2 0x2335 PUSH2 0x22F7 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2349 JUMPI PUSH2 0x2349 PUSH2 0x22F7 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x23AF PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1E96 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xFDE DUP2 PUSH2 0x1E27 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0x4F CALLDATALOAD PUSH32 0xFFE4653DD646FA4DEB7B02772805EB1D583B8DEDBA6CC55F89B4DF0464736F6C PUSH4 0x43000811 STOP CALLER ",
              "sourceMap": "199:6897:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6809:285;;;;;;:::i;:::-;;:::i;:::-;;;611:14:111;;604:22;586:41;;574:2;559:18;6809:285:42;;;;;;;;2488:98:9;;;:::i;:::-;;;;;;;:::i;3999:217::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1802:55:111;;;1784:74;;1772:2;1757:18;3999:217:9;1638:226:111;3537:401:9;;;;;;:::i;:::-;;:::i;:::-;;5035:185:42;;;;;;:::i;:::-;;:::i;:::-;;;2882:25:111;;;2870:2;2855:18;5035:185:42;2736:177:111;4726:330:9;;;;;;:::i;:::-;;:::i;6617:186:42:-;;;;;;:::i;:::-;;:::i;372:14::-;;;;;-1:-1:-1;;;;;372:14:42;;;5122:179:9;;;;;;:::i;:::-;;:::i;3753:119:42:-;;;;;;:::i;:::-;;:::i;3003:226::-;;;;;;:::i;:::-;;:::i;1929:205:9:-;;;;;;:::i;:::-;;:::i;1668:101:2:-;;;:::i;1036:85::-;1108:6;;-1:-1:-1;;;;;1108:6:2;1036:85;;2650:102:9;;;:::i;4129:209:42:-;;;;;;:::i;:::-;;:::i;4283:153:9:-;;;;;;:::i;:::-;;:::i;3303:160:42:-;;;;;;:::i;:::-;;:::i;5367:320:9:-;;;;;;:::i;:::-;;:::i;607:46:42:-;;646:7;607:46;;6007:508;;;;;;:::i;:::-;;:::i;2818:329:9:-;;;;;;:::i;:::-;;:::i;3939:110:42:-;;;;;;:::i;:::-;4004:7;4030:12;;;:8;:12;;;;;;;3939:110;558:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;454:23;;;;;;4502:162:9;;;;;;:::i;:::-;-1:-1:-1;;;;;4622:25:9;;;4599:4;4622:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4502:162;1918:198:2;;;;;;:::i;:::-;;:::i;3521:166:42:-;;;;;;:::i;:::-;;:::i;4576:189::-;;;;;;:::i;:::-;;:::i;6809:285::-;6935:4;6974:32;;;;;;:72;;-1:-1:-1;7022:24:42;;;;;6974:72;:113;;;-1:-1:-1;7062:25:42;;;;;6974:113;6955:132;6809:285;-1:-1:-1;;6809:285:42:o;2488:98:9:-;2542:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:98;:::o;3999:217::-;4075:7;7247:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7247:16:9;4094:73;;;;-1:-1:-1;;;4094:73:9;;7607:2:111;4094:73:9;;;7589:21:111;7646:2;7626:18;;;7619:30;7685:34;7665:18;;;7658:62;7756:14;7736:18;;;7729:42;7788:19;;4094:73:9;;;;;;;;;-1:-1:-1;4185:24:9;;;;:15;:24;;;;;;-1:-1:-1;;;;;4185:24:9;;3999:217::o;3537:401::-;3617:13;3633:23;3648:7;3633:14;:23::i;:::-;3617:39;;3680:5;-1:-1:-1;;;;;3674:11:9;:2;-1:-1:-1;;;;;3674:11:9;;3666:57;;;;-1:-1:-1;;;3666:57:9;;8020:2:111;3666:57:9;;;8002:21:111;8059:2;8039:18;;;8032:30;8098:34;8078:18;;;8071:62;8169:3;8149:18;;;8142:31;8190:19;;3666:57:9;7818:397:111;3666:57:9;719:10:14;-1:-1:-1;;;;;3755:21:9;;;;:62;;-1:-1:-1;3780:37:9;3797:5;719:10:14;4502:162:9;:::i;3780:37::-;3734:165;;;;-1:-1:-1;;;3734:165:9;;8422:2:111;3734:165:9;;;8404:21:111;8461:2;8441:18;;;8434:30;8500:34;8480:18;;;8473:62;8571:26;8551:18;;;8544:54;8615:19;;3734:165:9;8220:420:111;3734:165:9;3910:21;3919:2;3923:7;3910:8;:21::i;:::-;3607:331;3537:401;;:::o;5035:185:42:-;5150:7;5176:37;5186:2;5190:5;5197:8;5207:5;5176:9;:37::i;:::-;5169:44;5035:185;-1:-1:-1;;;;5035:185:42:o;4726:330:9:-;4915:41;719:10:14;4948:7:9;4915:18;:41::i;:::-;4907:103;;;;-1:-1:-1;;;4907:103:9;;8847:2:111;4907:103:9;;;8829:21:111;8886:2;8866:18;;;8859:30;8925:34;8905:18;;;8898:62;8996:19;8976:18;;;8969:47;9033:19;;4907:103:9;8645:413:111;4907:103:9;5021:28;5031:4;5037:2;5041:7;5021:9;:28::i;6617:186:42:-;2571:3;;2581:8;;2571:19;;;;;;;;2882:25:111;;;;2602:4:42;;-1:-1:-1;;;;;2571:3:42;;:9;;2855:18:111;;2571:19:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2571:36:42;;2563:45;;;;;;6702:34:::1;6721:10;6733:2;6702:18;:34::i;:::-;6694:43;;;::::0;::::1;;6747:3;::::0;6767:8:::1;::::0;6747:49:::1;::::0;;;;::::1;::::0;::::1;9521:25:111::0;;;;9562:18;;;9555:34;;;-1:-1:-1;;;;;9625:55:111;;;9605:18;;;9598:83;6747:3:42;;::::1;::::0;:19:::1;::::0;9494:18:111;;6747:49:42::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5122:179:9:-:0;5255:39;5272:4;5278:2;5282:7;5255:39;;;;;;;;;;;;:16;:39::i;3753:119:42:-;1108:6:2;;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;10083:2:111;1240:68:2;;;10065:21:111;;;10102:18;;;10095:30;10161:34;10141:18;;;10134:62;10213:18;;1240:68:2;9881:356:111;1240:68:2;3830:3:42::1;::::0;3846:8:::1;::::0;3830:35:::1;::::0;;;;::::1;::::0;::::1;10416:25:111::0;;;;-1:-1:-1;;;;;10477:55:111;;;10457:18;;;10450:83;3830:3:42;;::::1;::::0;:15:::1;::::0;10389:18:111;;3830:35:42::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3753:119:::0;:::o;3003:226::-;3116:7;3147:17;;;:8;:17;;;;;;3167:15;-1:-1:-1;3139:44:42;;;;;;3200:22;3214:7;3200:13;:22::i;1929:205:9:-;2001:7;-1:-1:-1;;;;;2028:19:9;;2020:74;;;;-1:-1:-1;;;2020:74:9;;10746:2:111;2020:74:9;;;10728:21:111;10785:2;10765:18;;;10758:30;10824:34;10804:18;;;10797:62;10895:12;10875:18;;;10868:40;10925:19;;2020:74:9;10544:406:111;2020:74:9;-1:-1:-1;;;;;;2111:16:9;;;;;:9;:16;;;;;;;1929:205::o;1668:101:2:-;1108:6;;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;10083:2:111;1240:68:2;;;10065:21:111;;;10102:18;;;10095:30;10161:34;10141:18;;;10134:62;10213:18;;1240:68:2;9881:356:111;1240:68:2;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;2650:102:9:-;2706:13;2738:7;2731:14;;;;;:::i;4129:209:42:-;4190:4;4286:12;;;:8;:12;;;;;;4316:15;;4286:27;;646:7;;4286:27;:::i;:::-;:45;;4129:209;-1:-1:-1;;4129:209:42:o;4283:153:9:-;4377:52;719:10:14;4410:8:9;4420;4377:18;:52::i;:::-;4283:153;;:::o;3303:160:42:-;1108:6:2;;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;10083:2:111;1240:68:2;;;10065:21:111;;;10102:18;;;10095:30;10161:34;10141:18;;;10134:62;10213:18;;1240:68:2;9881:356:111;1240:68:2;-1:-1:-1;;;;;3384:23:42;::::1;;::::0;;;:11:::1;:23;::::0;;;;;:30;;;::::1;3410:4;3384:30;::::0;;3429:27;::::1;::::0;3384:23;3429:27:::1;3303:160:::0;:::o;5367:320:9:-;5536:41;719:10:14;5569:7:9;5536:18;:41::i;:::-;5528:103;;;;-1:-1:-1;;;5528:103:9;;8847:2:111;5528:103:9;;;8829:21:111;8886:2;8866:18;;;8859:30;8925:34;8905:18;;;8898:62;8996:19;8976:18;;;8969:47;9033:19;;5528:103:9;8645:413:111;5528:103:9;5641:39;5655:4;5661:2;5665:7;5674:5;5641:13;:39::i;:::-;5367:320;;;;:::o;6007:508:42:-;2571:3;;2581:8;;2571:19;;;;;;;;2882:25:111;;;;6139:7:42;;2602:4;;-1:-1:-1;;;;;2571:3:42;;;;:9;;2855:18:111;;2571:19:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2571:36:42;;2563:45;;;;;;2688:10:::1;2676:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;2668:32;;;::::0;::::1;;6170:12:::2;::::0;;;:8:::2;:12;::::0;;;;;6201:15:::2;::::0;6170:27:::2;::::0;646:7:::2;::::0;6170:27:::2;:::i;:::-;:46;;6162:55;;;::::0;::::2;;6340:23;646:7;6340:8:::0;:23:::2;:::i;:::-;6299:12;::::0;;;:8:::2;:12;::::0;;;;;646:7:::2;::::0;6299:23:::2;::::0;6314:8;;6299:23:::2;:::i;:::-;:38;;;;:::i;:::-;:64;6278:95;;;::::0;::::2;;6411:12;::::0;;;:8:::2;:12;::::0;;;;:24;;6427:8;;6411:12;:24:::2;::::0;6427:8;;6411:24:::2;:::i;:::-;::::0;;;-1:-1:-1;;6466:12:42::2;::::0;;;:8:::2;:12;::::0;;;;;;;6450:29;;6462:2;;6450:29:::2;::::0;::::2;::::0;2882:25:111;;2870:2;2855:18;;2736:177;6450:29:42::2;;;;;;;;-1:-1:-1::0;;6496:12:42::2;::::0;;;:8:::2;:12;::::0;;;;;;6007:508::o;2818:329:9:-;7224:4;7247:16;;;:7;:16;;;;;;2891:13;;-1:-1:-1;;;;;7247:16:9;2916:76;;;;-1:-1:-1;;;2916:76:9;;11476:2:111;2916:76:9;;;11458:21:111;11515:2;11495:18;;;11488:30;11554:34;11534:18;;;11527:62;11625:17;11605:18;;;11598:45;11660:19;;2916:76:9;11274:411:111;2916:76:9;3003:21;3027:10;3464:9;;;;;;;;;-1:-1:-1;3464:9:9;;;3388:92;3027:10;3003:34;;3078:1;3060:7;3054:21;:25;:86;;;;;;;;;;;;;;;;;3106:7;3115:18;:7;:16;:18::i;:::-;3089:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3054:86;3047:93;2818:329;-1:-1:-1;;;2818:329:9:o;1918:198:2:-;1108:6;;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;10083:2:111;1240:68:2;;;10065:21:111;;;10102:18;;;10095:30;10161:34;10141:18;;;10134:62;10213:18;;1240:68:2;9881:356:111;1240:68:2;-1:-1:-1;;;;;2006:22:2;::::1;1998:73;;;::::0;-1:-1:-1;;;1998:73:2;;12393:2:111;1998:73:2::1;::::0;::::1;12375:21:111::0;12432:2;12412:18;;;12405:30;12471:34;12451:18;;;12444:62;12542:8;12522:18;;;12515:36;12568:19;;1998:73:2::1;12191:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;3521:166:42:-;1108:6:2;;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;10083:2:111;1240:68:2;;;10065:21:111;;;10102:18;;;10095:30;10161:34;10141:18;;;10134:62;10213:18;;1240:68:2;9881:356:111;1240:68:2;-1:-1:-1;;;;;3605:23:42;::::1;3631:5;3605:23:::0;;;:11:::1;:23;::::0;;;;;:31;;;::::1;::::0;;3651:29;::::1;::::0;3631:5;3651:29:::1;3521:166:::0;:::o;4576:189::-;4696:7;4722:36;4732:2;4736:5;4743:8;4753:4;4722:9;:36::i;2191:235:9:-;2263:7;2298:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2298:16:9;;2324:73;;;;-1:-1:-1;;;2324:73:9;;12800:2:111;2324:73:9;;;12782:21:111;12839:2;12819:18;;;12812:30;12878:34;12858:18;;;12851:62;12949:11;12929:18;;;12922:39;12978:19;;2324:73:9;12598:405:111;11168:171:9;11242:24;;;;:15;:24;;;;;:29;;;;-1:-1:-1;;;;;11242:29:9;;;;;;;;:24;;11295:23;11242:24;11295:14;:23::i;:::-;-1:-1:-1;;;;;11286:46:9;;;;;;;;;;;11168:171;;:::o;5226:775:42:-;2571:3;;2581:8;;2571:19;;;;;;;;2882:25:111;;;;5387:7:42;;2602:4;;-1:-1:-1;;;;;2571:3:42;;;;:9;;2855:18:111;;2571:19:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2571:36:42;;2563:45;;;;;;2688:10:::1;2676:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;2668:32;;;::::0;::::1;;5414:13:::2;5424:2;5414:9;:13::i;:::-;5406:22;;;::::0;::::2;;5519:30;646:7;5519:15;:30;:::i;:::-;646:7;5459:26;5477:8:::0;5459:15:::2;:26;:::i;:::-;:41;;;;:::i;:::-;:90;5438:121;;;::::0;::::2;;5612:26;5630:8:::0;5612:15:::2;:26;:::i;:::-;5597:12;::::0;;;:8:::2;:12;::::0;;;;;;;:41;;;;7247:7:9;:16;;;;-1:-1:-1;;;;;7247:16:9;:30;5648:105:42::2;;5733:9;5739:2;5733:5;:9::i;:::-;5762:16;5768:5;5775:2;5762:5;:16::i;:::-;5792:14;5788:94;;;5822:3;::::0;5842:8:::2;::::0;5822:49:::2;::::0;;;;::::2;::::0;::::2;9521:25:111::0;;;;9562:18;;;9555:34;;;-1:-1:-1;;;;;9625:55:111;;;9605:18;;;9598:83;5822:3:42;;::::2;::::0;:19:::2;::::0;9494:18:111;;5822:49:42::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5788:94;-1:-1:-1::0;;;;;5897:53:42;::::2;5912:2:::0;5897:53:::2;5923:26;5941:8:::0;5923:15:::2;:26;:::i;:::-;5897:53;::::0;2882:25:111;;;2870:2;2855:18;5897:53:42::2;;;;;;;5968:26;5986:8:::0;5968:15:::2;:26;:::i;:::-;5961:33:::0;5226:775;-1:-1:-1;;;;;5226:775:42:o;2097:315::-;2223:4;2243:13;2259:16;2267:7;2259;:16::i;:::-;2243:32;;2304:5;-1:-1:-1;;;;;2293:16:42;:7;-1:-1:-1;;;;;2293:16:42;;:63;;;;2349:7;-1:-1:-1;;;;;2325:31:42;:20;2337:7;2325:11;:20::i;:::-;-1:-1:-1;;;;;2325:31:42;;2293:63;:111;;;-1:-1:-1;;;;;;4622:25:9;;;4599:4;4622:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;2372:32:42;4502:162:9;10452:605;10606:4;-1:-1:-1;;;;;10579:31:9;:23;10594:7;10579:14;:23::i;:::-;-1:-1:-1;;;;;10579:31:9;;10571:81;;;;-1:-1:-1;;;10571:81:9;;13210:2:111;10571:81:9;;;13192:21:111;13249:2;13229:18;;;13222:30;13288:34;13268:18;;;13261:62;13359:7;13339:18;;;13332:35;13384:19;;10571:81:9;13008:401:111;10571:81:9;-1:-1:-1;;;;;10670:16:9;;10662:65;;;;-1:-1:-1;;;10662:65:9;;13616:2:111;10662:65:9;;;13598:21:111;13655:2;13635:18;;;13628:30;13694:34;13674:18;;;13667:62;13765:6;13745:18;;;13738:34;13789:19;;10662:65:9;13414:400:111;10662:65:9;10839:29;10856:1;10860:7;10839:8;:29::i;:::-;-1:-1:-1;;;;;10879:15:9;;;;;;:9;:15;;;;;:20;;10898:1;;10879:15;:20;;10898:1;;10879:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10909:13:9;;;;;;:9;:13;;;;;:18;;10926:1;;10909:13;:18;;10926:1;;10909:18;:::i;:::-;;;;-1:-1:-1;;10937:16:9;;;;:7;:16;;;;;;:21;;;;-1:-1:-1;;;;;10937:21:9;;;;;;;;;10974:27;;10937:16;;10974:27;;;;;;;3607:331;3537:401;;:::o;2270:187:2:-;2362:6;;;-1:-1:-1;;;;;2378:17:2;;;;;;;;;;;2410:40;;2362:6;;;2378:17;2362:6;;2410:40;;2343:16;;2410:40;2333:124;2270:187;:::o;11474:307:9:-;11624:8;-1:-1:-1;;;;;11615:17:9;:5;-1:-1:-1;;;;;11615:17:9;;11607:55;;;;-1:-1:-1;;;11607:55:9;;14154:2:111;11607:55:9;;;14136:21:111;14193:2;14173:18;;;14166:30;14232:27;14212:18;;;14205:55;14277:18;;11607:55:9;13952:349:111;11607:55:9;-1:-1:-1;;;;;11672:25:9;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;11733:41;;586::111;;;11733::9;;559:18:111;11733:41:9;;;;;;;11474:307;;;:::o;6549:::-;6700:28;6710:4;6716:2;6720:7;6700:9;:28::i;:::-;6746:48;6769:4;6775:2;6779:7;6788:5;6746:22;:48::i;:::-;6738:111;;;;-1:-1:-1;;;6738:111:9;;14508:2:111;6738:111:9;;;14490:21:111;14547:2;14527:18;;;14520:30;14586:34;14566:18;;;14559:62;14657:20;14637:18;;;14630:48;14695:19;;6738:111:9;14306:414:111;328:703:15;384:13;601:5;610:1;601:10;597:51;;-1:-1:-1;;627:10:15;;;;;;;;;;;;;;;;;;328:703::o;597:51::-;672:5;657:12;711:75;718:9;;711:75;;743:8;;;;:::i;:::-;;-1:-1:-1;765:10:15;;-1:-1:-1;773:2:15;765:10;;:::i;:::-;;;711:75;;;795:19;827:6;817:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:17:15;;795:39;;844:150;851:10;;844:150;;877:11;887:1;877:11;;:::i;:::-;;-1:-1:-1;945:10:15;953:2;945:5;:10;:::i;:::-;932:24;;:2;:24;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;972:11:15;981:2;972:11;;:::i;:::-;;;844:150;;9722:406:9;9781:13;9797:23;9812:7;9797:14;:23::i;:::-;9781:39;;9917:29;9934:1;9938:7;9917:8;:29::i;:::-;-1:-1:-1;;;;;9957:16:9;;;;;;:9;:16;;;;;:21;;9977:1;;9957:16;:21;;9977:1;;9957:21;:::i;:::-;;;;-1:-1:-1;;9995:16:9;;;;:7;:16;;;;;;9988:23;;;;;;10027:36;10003:7;;9995:16;-1:-1:-1;;;;;10027:36:9;;;;;9995:16;;10027:36;4283:153;;:::o;9078:427::-;-1:-1:-1;;;;;9157:16:9;;9149:61;;;;-1:-1:-1;;;9149:61:9;;15747:2:111;9149:61:9;;;15729:21:111;;;15766:18;;;15759:30;15825:34;15805:18;;;15798:62;15877:18;;9149:61:9;15545:356:111;9149:61:9;7224:4;7247:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7247:16:9;:30;9220:58;;;;-1:-1:-1;;;9220:58:9;;16108:2:111;9220:58:9;;;16090:21:111;16147:2;16127:18;;;16120:30;16186;16166:18;;;16159:58;16234:18;;9220:58:9;15906:352:111;9220:58:9;-1:-1:-1;;;;;9345:13:9;;;;;;:9;:13;;;;;:18;;9362:1;;9345:13;:18;;9362:1;;9345:18;:::i;:::-;;;;-1:-1:-1;;9373:16:9;;;;:7;:16;;;;;;:21;;;;-1:-1:-1;;;;;9373:21:9;;;;;;;;9410:33;;9373:16;;;9410:33;;9373:16;;9410:33;4283:153;;:::o;12334:778::-;12484:4;-1:-1:-1;;;;;12504:13:9;;1465:19:13;:23;12500:606:9;;12539:72;;;;;-1:-1:-1;;;;;12539:36:9;;;;;:72;;719:10:14;;12590:4:9;;12596:7;;12605:5;;12539:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12539:72:9;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12535:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12778:6;:13;12795:1;12778:18;12774:266;;12820:60;;-1:-1:-1;;;12820:60:9;;14508:2:111;12820:60:9;;;14490:21:111;14547:2;14527:18;;;14520:30;14586:34;14566:18;;;14559:62;14657:20;14637:18;;;14630:48;14695:19;;12820:60:9;14306:414:111;12774:266:9;12992:6;12986:13;12977:6;12973:2;12969:15;12962:38;12535:519;12661:51;;12671:41;12661:51;;-1:-1:-1;12654:58:9;;12500:606;-1:-1:-1;13091:4:9;13084:11;;14:177:111;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:250::-;723:1;733:113;747:6;744:1;741:13;733:113;;;823:11;;;817:18;804:11;;;797:39;769:2;762:10;733:113;;;-1:-1:-1;;880:1:111;862:16;;855:27;638:250::o;893:330::-;935:3;973:5;967:12;1000:6;995:3;988:19;1016:76;1085:6;1078:4;1073:3;1069:14;1062:4;1055:5;1051:16;1016:76;:::i;:::-;1137:2;1125:15;1142:66;1121:88;1112:98;;;;1212:4;1108:109;;893:330;-1:-1:-1;;893:330:111:o;1228:220::-;1377:2;1366:9;1359:21;1340:4;1397:45;1438:2;1427:9;1423:18;1415:6;1397:45;:::i;1453:180::-;1512:6;1565:2;1553:9;1544:7;1540:23;1536:32;1533:52;;;1581:1;1578;1571:12;1533:52;-1:-1:-1;1604:23:111;;1453:180;-1:-1:-1;1453:180:111:o;1869:154::-;-1:-1:-1;;;;;1948:5:111;1944:54;1937:5;1934:65;1924:93;;2013:1;2010;2003:12;2028:315;2096:6;2104;2157:2;2145:9;2136:7;2132:23;2128:32;2125:52;;;2173:1;2170;2163:12;2125:52;2212:9;2199:23;2231:31;2256:5;2231:31;:::i;:::-;2281:5;2333:2;2318:18;;;;2305:32;;-1:-1:-1;;;2028:315:111:o;2348:383::-;2425:6;2433;2441;2494:2;2482:9;2473:7;2469:23;2465:32;2462:52;;;2510:1;2507;2500:12;2462:52;2546:9;2533:23;2523:33;;2606:2;2595:9;2591:18;2578:32;2619:31;2644:5;2619:31;:::i;:::-;2348:383;;2669:5;;-1:-1:-1;;;2721:2:111;2706:18;;;;2693:32;;2348:383::o;2918:456::-;2995:6;3003;3011;3064:2;3052:9;3043:7;3039:23;3035:32;3032:52;;;3080:1;3077;3070:12;3032:52;3119:9;3106:23;3138:31;3163:5;3138:31;:::i;:::-;3188:5;-1:-1:-1;3245:2:111;3230:18;;3217:32;3258:33;3217:32;3258:33;:::i;3379:315::-;3447:6;3455;3508:2;3496:9;3487:7;3483:23;3479:32;3476:52;;;3524:1;3521;3514:12;3476:52;3560:9;3547:23;3537:33;;3620:2;3609:9;3605:18;3592:32;3633:31;3658:5;3633:31;:::i;:::-;3683:5;3673:15;;;3379:315;;;;;:::o;3943:247::-;4002:6;4055:2;4043:9;4034:7;4030:23;4026:32;4023:52;;;4071:1;4068;4061:12;4023:52;4110:9;4097:23;4129:31;4154:5;4129:31;:::i;4195:416::-;4260:6;4268;4321:2;4309:9;4300:7;4296:23;4292:32;4289:52;;;4337:1;4334;4327:12;4289:52;4376:9;4363:23;4395:31;4420:5;4395:31;:::i;:::-;4445:5;-1:-1:-1;4502:2:111;4487:18;;4474:32;4544:15;;4537:23;4525:36;;4515:64;;4575:1;4572;4565:12;4616:184;4668:77;4665:1;4658:88;4765:4;4762:1;4755:15;4789:4;4786:1;4779:15;4805:1325;4900:6;4908;4916;4924;4977:3;4965:9;4956:7;4952:23;4948:33;4945:53;;;4994:1;4991;4984:12;4945:53;5033:9;5020:23;5052:31;5077:5;5052:31;:::i;:::-;5102:5;-1:-1:-1;5159:2:111;5144:18;;5131:32;5172:33;5131:32;5172:33;:::i;:::-;5224:7;-1:-1:-1;5278:2:111;5263:18;;5250:32;;-1:-1:-1;5333:2:111;5318:18;;5305:32;5356:18;5386:14;;;5383:34;;;5413:1;5410;5403:12;5383:34;5451:6;5440:9;5436:22;5426:32;;5496:7;5489:4;5485:2;5481:13;5477:27;5467:55;;5518:1;5515;5508:12;5467:55;5554:2;5541:16;5576:2;5572;5569:10;5566:36;;;5582:18;;:::i;:::-;5716:2;5710:9;5778:4;5770:13;;5621:66;5766:22;;;5790:2;5762:31;5758:40;5746:53;;;5814:18;;;5834:22;;;5811:46;5808:72;;;5860:18;;:::i;:::-;5900:10;5896:2;5889:22;5935:2;5927:6;5920:18;5975:7;5970:2;5965;5961;5957:11;5953:20;5950:33;5947:53;;;5996:1;5993;5986:12;5947:53;6052:2;6047;6043;6039:11;6034:2;6026:6;6022:15;6009:46;6097:1;6092:2;6087;6079:6;6075:15;6071:24;6064:35;6118:6;6108:16;;;;;;;4805:1325;;;;;;;:::o;6135:248::-;6203:6;6211;6264:2;6252:9;6243:7;6239:23;6235:32;6232:52;;;6280:1;6277;6270:12;6232:52;-1:-1:-1;;6303:23:111;;;6373:2;6358:18;;;6345:32;;-1:-1:-1;6135:248:111:o;6570:388::-;6638:6;6646;6699:2;6687:9;6678:7;6674:23;6670:32;6667:52;;;6715:1;6712;6705:12;6667:52;6754:9;6741:23;6773:31;6798:5;6773:31;:::i;:::-;6823:5;-1:-1:-1;6880:2:111;6865:18;;6852:32;6893:33;6852:32;6893:33;:::i;6963:437::-;7042:1;7038:12;;;;7085;;;7106:61;;7160:4;7152:6;7148:17;7138:27;;7106:61;7213:2;7205:6;7202:14;7182:18;7179:38;7176:218;;7250:77;7247:1;7240:88;7351:4;7348:1;7341:15;7379:4;7376:1;7369:15;7176:218;;6963:437;;;:::o;9063:251::-;9133:6;9186:2;9174:9;9165:7;9161:23;9157:32;9154:52;;;9202:1;9199;9192:12;9154:52;9234:9;9228:16;9253:31;9278:5;9253:31;:::i;9692:184::-;9762:6;9815:2;9803:9;9794:7;9790:23;9786:32;9783:52;;;9831:1;9828;9821:12;9783:52;-1:-1:-1;9854:16:111;;9692:184;-1:-1:-1;9692:184:111:o;10955:::-;11007:77;11004:1;10997:88;11104:4;11101:1;11094:15;11128:4;11125:1;11118:15;11144:125;11209:9;;;11230:10;;;11227:36;;;11243:18;;:::i;11690:496::-;11869:3;11907:6;11901:13;11923:66;11982:6;11977:3;11970:4;11962:6;11958:17;11923:66;:::i;:::-;12052:13;;12011:16;;;;12074:70;12052:13;12011:16;12121:4;12109:17;;12074:70;:::i;:::-;12160:20;;11690:496;-1:-1:-1;;;;11690:496:111:o;13819:128::-;13886:9;;;13907:11;;;13904:37;;;13921:18;;:::i;14725:195::-;14764:3;14795:66;14788:5;14785:77;14782:103;;14865:18;;:::i;:::-;-1:-1:-1;14912:1:111;14901:13;;14725:195::o;14925:184::-;14977:77;14974:1;14967:88;15074:4;15071:1;15064:15;15098:4;15095:1;15088:15;15114:120;15154:1;15180;15170:35;;15185:18;;:::i;:::-;-1:-1:-1;15219:9:111;;15114:120::o;15239:112::-;15271:1;15297;15287:35;;15302:18;;:::i;:::-;-1:-1:-1;15336:9:111;;15239:112::o;15356:184::-;15408:77;15405:1;15398:88;15505:4;15502:1;15495:15;15529:4;15526:1;15519:15;16263:512;16457:4;-1:-1:-1;;;;;16567:2:111;16559:6;16555:15;16544:9;16537:34;16619:2;16611:6;16607:15;16602:2;16591:9;16587:18;16580:43;;16659:6;16654:2;16643:9;16639:18;16632:34;16702:3;16697:2;16686:9;16682:18;16675:31;16723:46;16764:3;16753:9;16749:19;16741:6;16723:46;:::i;:::-;16715:54;16263:512;-1:-1:-1;;;;;;16263:512:111:o;16780:249::-;16849:6;16902:2;16890:9;16881:7;16877:23;16873:32;16870:52;;;16918:1;16915;16908:12;16870:52;16950:9;16944:16;16969:30;16993:5;16969:30;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1845600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "GRACE_PERIOD()": "284",
                "addController(address)": "27931",
                "approve(address,uint256)": "infinite",
                "available(uint256)": "2606",
                "balanceOf(address)": "2650",
                "baseNode()": "2406",
                "controllers(address)": "2603",
                "ens()": "2383",
                "getApproved(uint256)": "4783",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "nameExpires(uint256)": "2505",
                "owner()": "2442",
                "ownerOf(uint256)": "infinite",
                "reclaim(uint256,address)": "infinite",
                "register(uint256,address,uint256)": "infinite",
                "registerOnly(uint256,address,uint256)": "infinite",
                "removeController(address)": "27968",
                "renew(uint256,uint256)": "infinite",
                "renounceOwnership()": "28191",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26764",
                "setResolver(address)": "infinite",
                "supportsInterface(bytes4)": "479",
                "symbol()": "infinite",
                "tokenURI(uint256)": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "transferOwnership(address)": "infinite"
              },
              "internal": {
                "_isApprovedOrOwner(address,uint256)": "infinite",
                "_register(uint256,address,uint256,bool)": "infinite"
              }
            },
            "methodIdentifiers": {
              "GRACE_PERIOD()": "c1a287e2",
              "addController(address)": "a7fc7a07",
              "approve(address,uint256)": "095ea7b3",
              "available(uint256)": "96e494e8",
              "balanceOf(address)": "70a08231",
              "baseNode()": "ddf7fcb0",
              "controllers(address)": "da8c229e",
              "ens()": "3f15457f",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "nameExpires(uint256)": "d6e4fa86",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "reclaim(uint256,address)": "28ed4f6c",
              "register(uint256,address,uint256)": "fca247ac",
              "registerOnly(uint256,address,uint256)": "0e297b45",
              "removeController(address)": "f6a74ed7",
              "renew(uint256,uint256)": "c475abff",
              "renounceOwnership()": "715018a6",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setResolver(address)": "4e543b26",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"_ens\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_baseNode\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"ControllerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"ControllerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"NameMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"NameRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"NameRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GRACE_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"addController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"available\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"controllers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"nameExpires\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"reclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"register\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"registerOnly\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"removeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"renew\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"Gets the owner of the specified token ID. Names become unowned      when their registration expires.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query the owner of\"},\"returns\":{\"_0\":\"address currently marked as the owner of the given token ID\"}},\"reclaim(uint256,address)\":{\"details\":\"Reclaim ownership of a name in ENS, if you own it in the registrar.\"},\"register(uint256,address,uint256)\":{\"details\":\"Register a name.\",\"params\":{\"duration\":\"Duration in seconds for the registration.\",\"id\":\"The token ID (keccak256 of the label).\",\"owner\":\"The address that should own the registration.\"}},\"registerOnly(uint256,address,uint256)\":{\"details\":\"Register a name, without modifying the registry.\",\"params\":{\"duration\":\"Duration in seconds for the registration.\",\"id\":\"The token ID (keccak256 of the label).\",\"owner\":\"The address that should own the registration.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/BaseRegistrarImplementation.sol\":\"BaseRegistrarImplementation\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n    using Address for address;\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: balance query for the zero address\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: owner query for nonexistent token\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        require(_exists(tokenId), \\\"ERC721Metadata: URI query for nonexistent token\\\");\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overriden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        require(_exists(tokenId), \\\"ERC721: approved query for nonexistent token\\\");\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: transfer caller is not owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: transfer caller is not owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, _data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `_data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, _data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        require(_exists(tokenId), \\\"ERC721: operator query for nonexistent token\\\");\\n        address owner = ERC721.ownerOf(tokenId);\\n        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, _data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits a {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits a {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param _data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\\n                return retval == IERC721Receiver.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n}\\n\",\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/BaseRegistrarImplementation.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract BaseRegistrarImplementation is ERC721, IBaseRegistrar, Ownable {\\n    // A map of expiry times\\n    mapping(uint256 => uint256) expiries;\\n    // The ENS registry\\n    ENS public ens;\\n    // The namehash of the TLD this registrar owns (eg, .eth)\\n    bytes32 public baseNode;\\n    // A map of addresses that are authorised to register and renew names.\\n    mapping(address => bool) public controllers;\\n    uint256 public constant GRACE_PERIOD = 90 days;\\n    bytes4 private constant INTERFACE_META_ID =\\n        bytes4(keccak256(\\\"supportsInterface(bytes4)\\\"));\\n    bytes4 private constant ERC721_ID =\\n        bytes4(\\n            keccak256(\\\"balanceOf(address)\\\") ^\\n                keccak256(\\\"ownerOf(uint256)\\\") ^\\n                keccak256(\\\"approve(address,uint256)\\\") ^\\n                keccak256(\\\"getApproved(uint256)\\\") ^\\n                keccak256(\\\"setApprovalForAll(address,bool)\\\") ^\\n                keccak256(\\\"isApprovedForAll(address,address)\\\") ^\\n                keccak256(\\\"transferFrom(address,address,uint256)\\\") ^\\n                keccak256(\\\"safeTransferFrom(address,address,uint256)\\\") ^\\n                keccak256(\\\"safeTransferFrom(address,address,uint256,bytes)\\\")\\n        );\\n    bytes4 private constant RECLAIM_ID =\\n        bytes4(keccak256(\\\"reclaim(uint256,address)\\\"));\\n\\n    /**\\n     * v2.1.3 version of _isApprovedOrOwner which calls ownerOf(tokenId) and takes grace period into consideration instead of ERC721.ownerOf(tokenId);\\n     * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.3/contracts/token/ERC721/ERC721.sol#L187\\n     * @dev Returns whether the given spender can transfer a given token ID\\n     * @param spender address of the spender to query\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @return bool whether the msg.sender is approved for the given token ID,\\n     *    is an operator of the owner, or is the owner of the token\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId)\\n        internal\\n        view\\n        override\\n        returns (bool)\\n    {\\n        address owner = ownerOf(tokenId);\\n        return (spender == owner ||\\n            getApproved(tokenId) == spender ||\\n            isApprovedForAll(owner, spender));\\n    }\\n\\n    constructor(ENS _ens, bytes32 _baseNode) ERC721(\\\"\\\", \\\"\\\") {\\n        ens = _ens;\\n        baseNode = _baseNode;\\n    }\\n\\n    modifier live() {\\n        require(ens.owner(baseNode) == address(this));\\n        _;\\n    }\\n\\n    modifier onlyController() {\\n        require(controllers[msg.sender]);\\n        _;\\n    }\\n\\n    /**\\n     * @dev Gets the owner of the specified token ID. Names become unowned\\n     *      when their registration expires.\\n     * @param tokenId uint256 ID of the token to query the owner of\\n     * @return address currently marked as the owner of the given token ID\\n     */\\n    function ownerOf(uint256 tokenId)\\n        public\\n        view\\n        override(IERC721, ERC721)\\n        returns (address)\\n    {\\n        require(expiries[tokenId] > block.timestamp);\\n        return super.ownerOf(tokenId);\\n    }\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external override onlyOwner {\\n        controllers[controller] = true;\\n        emit ControllerAdded(controller);\\n    }\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external override onlyOwner {\\n        controllers[controller] = false;\\n        emit ControllerRemoved(controller);\\n    }\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external override onlyOwner {\\n        ens.setResolver(baseNode, resolver);\\n    }\\n\\n    // Returns the expiration timestamp of the specified id.\\n    function nameExpires(uint256 id) external view override returns (uint256) {\\n        return expiries[id];\\n    }\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) public view override returns (bool) {\\n        // Not available if it's registered here or in its grace period.\\n        return expiries[id] + GRACE_PERIOD < block.timestamp;\\n    }\\n\\n    /**\\n     * @dev Register a name.\\n     * @param id The token ID (keccak256 of the label).\\n     * @param owner The address that should own the registration.\\n     * @param duration Duration in seconds for the registration.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external override returns (uint256) {\\n        return _register(id, owner, duration, true);\\n    }\\n\\n    /**\\n     * @dev Register a name, without modifying the registry.\\n     * @param id The token ID (keccak256 of the label).\\n     * @param owner The address that should own the registration.\\n     * @param duration Duration in seconds for the registration.\\n     */\\n    function registerOnly(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256) {\\n        return _register(id, owner, duration, false);\\n    }\\n\\n    function _register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration,\\n        bool updateRegistry\\n    ) internal live onlyController returns (uint256) {\\n        require(available(id));\\n        require(\\n            block.timestamp + duration + GRACE_PERIOD >\\n                block.timestamp + GRACE_PERIOD\\n        ); // Prevent future overflow\\n\\n        expiries[id] = block.timestamp + duration;\\n        if (_exists(id)) {\\n            // Name was previously owned, and expired\\n            _burn(id);\\n        }\\n        _mint(owner, id);\\n        if (updateRegistry) {\\n            ens.setSubnodeOwner(baseNode, bytes32(id), owner);\\n        }\\n\\n        emit NameRegistered(id, owner, block.timestamp + duration);\\n\\n        return block.timestamp + duration;\\n    }\\n\\n    function renew(uint256 id, uint256 duration)\\n        external\\n        override\\n        live\\n        onlyController\\n        returns (uint256)\\n    {\\n        require(expiries[id] + GRACE_PERIOD >= block.timestamp); // Name must be registered here or in grace period\\n        require(\\n            expiries[id] + duration + GRACE_PERIOD > duration + GRACE_PERIOD\\n        ); // Prevent future overflow\\n\\n        expiries[id] += duration;\\n        emit NameRenewed(id, expiries[id]);\\n        return expiries[id];\\n    }\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external override live {\\n        require(_isApprovedOrOwner(msg.sender, id));\\n        ens.setSubnodeOwner(baseNode, bytes32(id), owner);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        override(ERC721, IERC165)\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == INTERFACE_META_ID ||\\n            interfaceID == ERC721_ID ||\\n            interfaceID == RECLAIM_ID;\\n    }\\n}\\n\",\"keccak256\":\"0xb757a151137d4b1b877773226797c8f95a4320cd3d68c7c2cfa588b22f5438ed\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 1537,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "_name",
                "offset": 0,
                "slot": "0",
                "type": "t_string_storage"
              },
              {
                "astId": 1539,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "_symbol",
                "offset": 0,
                "slot": "1",
                "type": "t_string_storage"
              },
              {
                "astId": 1543,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "_owners",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 1547,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "_balances",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 1551,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 1557,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 545,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "_owner",
                "offset": 0,
                "slot": "6",
                "type": "t_address"
              },
              {
                "astId": 9038,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "expiries",
                "offset": 0,
                "slot": "7",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 9041,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "ens",
                "offset": 0,
                "slot": "8",
                "type": "t_contract(ENS)12157"
              },
              {
                "astId": 9043,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "baseNode",
                "offset": 0,
                "slot": "9",
                "type": "t_bytes32"
              },
              {
                "astId": 9047,
                "contract": "contracts/ethregistrar/BaseRegistrarImplementation.sol:BaseRegistrarImplementation",
                "label": "controllers",
                "offset": 0,
                "slot": "10",
                "type": "t_mapping(t_address,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(ENS)12157": {
                "encoding": "inplace",
                "label": "contract ENS",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/BulkRenewal.sol": {
        "BulkRenewal": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "_ens",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string[]",
                  "name": "names",
                  "type": "string[]"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "renewAll",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string[]",
                  "name": "names",
                  "type": "string[]"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "rentPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "total",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_9569": {
                  "entryPoint": null,
                  "id": 9569,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory": {
                  "entryPoint": 64,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:319:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "108:209:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "154:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "163:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "166:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "156:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "156:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "156:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "138:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "150:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "121:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "121:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "118:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "179:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "198:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "192:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "192:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "183:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "271:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "280:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "283:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "273:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "273:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "273:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "230:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "241:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "256:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "261:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "252:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "252:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "265:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "248:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "248:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "237:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "237:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "227:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "227:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "220:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "220:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "217:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "296:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "306:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "296:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "74:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "85:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "97:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:303:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_ENS_$12157_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b5060405161094538038061094583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516108b46100916000396000818160b9015261048501526108b46000f3fe60806040526004361061003f5760003560e01c806301ffc9a7146100445780633971d467146100795780633f15457f146100a7578063e8d6dbb414610100575b600080fd5b34801561005057600080fd5b5061006461005f3660046105e2565b610115565b60405190151581526020015b60405180910390f35b34801561008557600080fd5b5061009961009436600461062b565b6101ae565b604051908152602001610070565b3480156100b357600080fd5b506100db7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b61011361010e36600461062b565b610288565b005b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806101a857507fffffffff0000000000000000000000000000000000000000000000000000000082167fd1a70fd300000000000000000000000000000000000000000000000000000000145b92915050565b6000806101b9610432565b90508360005b8181101561027e5760008373ffffffffffffffffffffffffffffffffffffffff166383e7f6ff8989858181106101f7576101f76106a6565b905060200281019061020991906106d5565b896040518463ffffffff1660e01b815260040161022893929190610741565b6040805180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610798565b60208101519051019490940193506001016101bf565b5050509392505050565b6000610292610432565b9050826000805b828110156103fc5760008473ffffffffffffffffffffffffffffffffffffffff166383e7f6ff8989858181106102d1576102d16106a6565b90506020028101906102e391906106d5565b896040518463ffffffff1660e01b815260040161030293929190610741565b6040805180830381865afa15801561031e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103429190610798565b905060008160200151826000015161035a919061080e565b90508573ffffffffffffffffffffffffffffffffffffffff1663acf1a841828b8b8781811061038b5761038b6106a6565b905060200281019061039d91906106d5565b8b6040518563ffffffff1660e01b81526004016103bc93929190610741565b6000604051808303818588803b1580156103d557600080fd5b505af11580156103e9573d6000803e3d6000fd5b5050509190940193505050600101610299565b5060405133904780156108fc02916000818181858888f19350505050158015610429573d6000803e3d6000fd5b50505050505050565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081527f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae600482015260009081907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630178b8bf90602401602060405180830381865afa1580156104e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105059190610848565b6040517f124a319c0000000000000000000000000000000000000000000000000000000081527f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae60048201527fdf7ed18100000000000000000000000000000000000000000000000000000000602482015290915073ffffffffffffffffffffffffffffffffffffffff82169063124a319c90604401602060405180830381865afa1580156105b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc9190610848565b91505090565b6000602082840312156105f457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461062457600080fd5b9392505050565b60008060006040848603121561064057600080fd5b833567ffffffffffffffff8082111561065857600080fd5b818601915086601f83011261066c57600080fd5b81358181111561067b57600080fd5b8760208260051b850101111561069057600080fd5b6020928301989097509590910135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070a57600080fd5b83018035915067ffffffffffffffff82111561072557600080fd5b60200191503681900382131561073a57600080fd5b9250929050565b6040815282604082015282846060830137600060608483010152600060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601168301019050826020830152949350505050565b6000604082840312156107aa57600080fd5b6040516040810181811067ffffffffffffffff821117156107f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b808201808211156101a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561085a57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461062457600080fdfea2646970667358221220bfbc08c48aba60ef563e8c4a7cac5017564164cea4b0e3923dadadf4fe48821c64736f6c63430008110033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x945 CODESIZE SUB DUP1 PUSH2 0x945 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x8B4 PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xB9 ADD MSTORE PUSH2 0x485 ADD MSTORE PUSH2 0x8B4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x3971D467 EQ PUSH2 0x79 JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xE8D6DBB4 EQ PUSH2 0x100 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x5E2 JUMP JUMPDEST PUSH2 0x115 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x99 PUSH2 0x94 CALLDATASIZE PUSH1 0x4 PUSH2 0x62B JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x70 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x10E CALLDATASIZE PUSH1 0x4 PUSH2 0x62B JUMP JUMPDEST PUSH2 0x288 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1A8 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD1A70FD300000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B9 PUSH2 0x432 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x83E7F6FF DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x1F7 JUMPI PUSH2 0x1F7 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x6D5 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x244 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x798 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD SWAP1 MLOAD ADD SWAP5 SWAP1 SWAP5 ADD SWAP4 POP PUSH1 0x1 ADD PUSH2 0x1BF JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x292 PUSH2 0x432 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x83E7F6FF DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x6D5 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x302 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x342 SWAP2 SWAP1 PUSH2 0x798 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x80E JUMP JUMPDEST SWAP1 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xACF1A841 DUP3 DUP12 DUP12 DUP8 DUP2 DUP2 LT PUSH2 0x38B JUMPI PUSH2 0x38B PUSH2 0x6A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x6D5 JUMP JUMPDEST DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x741 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP SWAP2 SWAP1 SWAP5 ADD SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0x299 JUMP JUMPDEST POP PUSH1 0x40 MLOAD CALLER SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x429 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x178B8BF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x178B8BF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x505 SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x124A319C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0xDF7ED18100000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x124A319C SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5DC SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x66C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP5 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x60 DUP5 DUP4 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND DUP4 ADD ADD SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x7F4 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1A8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x85A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xBC ADDMOD 0xC4 DUP11 0xBA PUSH1 0xEF JUMP RETURNDATACOPY DUP13 0x4A PUSH29 0xAC5017564164CEA4B0E3923DADADF4FE48821C64736F6C634300081100 CALLER ",
              "sourceMap": "328:2181:43:-:0;;;523:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;555:10:43;;;328:2181;;14:303:111;97:6;150:2;138:9;129:7;125:23;121:32;118:52;;;166:1;163;156:12;118:52;192:16;;-1:-1:-1;;;;;237:31:111;;227:42;;217:70;;283:1;280;273:12;217:70;306:5;14:303;-1:-1:-1;;;14:303:111:o;:::-;328:2181:43;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ens_9558": {
                  "entryPoint": null,
                  "id": 9558,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getController_9597": {
                  "entryPoint": 1074,
                  "id": 9597,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@renewAll_9741": {
                  "entryPoint": 648,
                  "id": 9741,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@rentPrice_9655": {
                  "entryPoint": 430,
                  "id": 9655,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@supportsInterface_9763": {
                  "entryPoint": 277,
                  "id": 9763,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 2120,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_string_calldata_ptr_$dyn_calldata_ptrt_uint256": {
                  "entryPoint": 1579,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 1506,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_Price_$11328_memory_ptr_fromMemory": {
                  "entryPoint": 1944,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes4__to_t_bytes32_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_uint256__fromStack_reversed": {
                  "entryPoint": 1857,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_string_calldata_ptr": {
                  "entryPoint": 1749,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2062,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x32": {
                  "entryPoint": 1702,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4741:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "677:567:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "723:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "732:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "735:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "725:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "725:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "725:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "698:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "707:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "694:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "694:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "719:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "690:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "690:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "687:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "748:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "775:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "762:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "762:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "752:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "794:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "804:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "798:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "849:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "858:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "861:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "851:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "851:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "851:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "837:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "845:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "834:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "834:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "831:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "874:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "888:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "899:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "884:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "884:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "878:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "954:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "963:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "966:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "956:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "956:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "956:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "933:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "937:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "929:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "929:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "925:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "925:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "918:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "918:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "915:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "979:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1006:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "993:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "993:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "983:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1036:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1045:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1048:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1038:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1038:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1038:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1024:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1032:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1021:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1021:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1018:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1112:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1121:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1124:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1114:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1114:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1114:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1075:2:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1083:1:111",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1086:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1079:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1079:14:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1071:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1071:23:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1096:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1067:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1067:34:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1103:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1064:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1064:47:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1061:67:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1137:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1151:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1155:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1147:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1147:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1137:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1169:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1179:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1169:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1194:44:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1221:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1232:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1217:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1217:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1204:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1204:34:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1194:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_string_calldata_ptr_$dyn_calldata_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "627:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "638:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "650:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "658:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "666:6:111",
                            "type": ""
                          }
                        ],
                        "src": "543:701:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1350:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1360:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1372:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1383:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1368:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1360:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1402:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1413:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1395:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1395:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1319:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1330:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1341:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1249:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1545:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1555:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1567:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1578:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1563:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1563:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1555:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1597:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1612:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1620:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1608:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1608:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1590:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1590:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1590:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1514:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1525:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1536:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1431:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1707:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1724:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1727:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1717:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1717:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1717:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1821:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1824:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1814:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1814:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1814:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1845:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1848:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1838:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1838:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1838:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1675:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1959:486:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1969:51:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "2008:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1995:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1995:25:111"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "1973:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2168:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2177:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2180:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2170:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2170:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2170:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "2043:18:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2071:12:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2071:14:111"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "2087:8:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "2067:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2067:29:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2098:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2063:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2063:102:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2039:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2039:127:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2032:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2032:135:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2029:155:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2193:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "2211:8:111"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "2221:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2207:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2207:33:111"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2197:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2249:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2272:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2259:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2259:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2249:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2322:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2331:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2334:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2324:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2324:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2324:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2294:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2302:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2291:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2291:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2288:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2347:25:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2359:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2367:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2355:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2355:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2347:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2423:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2432:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2435:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2425:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2425:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2425:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2388:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "2398:12:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2398:14:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2414:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2394:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2394:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2384:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2384:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2381:58:111"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "1916:8:111",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "1926:11:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "1942:4:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1864:581:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2609:363:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2626:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2637:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2619:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2619:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2619:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2660:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2671:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2656:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2656:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2676:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2649:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2649:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2649:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2709:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2720:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2705:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2705:18:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2725:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2733:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2692:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2692:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2692:48:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2764:9:111"
                                          },
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2775:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2760:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2760:22:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2784:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2756:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2756:31:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2789:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2749:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2749:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2749:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2800:121:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2816:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2835:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2843:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2831:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2831:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2848:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2827:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2827:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2812:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2812:104:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2918:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2808:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2808:113:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2800:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2941:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2952:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2937:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2937:20:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2959:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2930:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2930:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2930:36:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2562:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2573:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2581:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2589:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2600:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2450:522:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3082:549:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3128:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3137:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3140:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3130:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3130:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3130:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3103:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3112:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3099:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3099:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3124:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3095:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3095:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3092:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3153:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3173:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3167:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3167:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3157:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3185:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3207:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3215:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3203:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3203:15:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3189:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3301:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3322:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3325:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3315:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3315:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3315:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3423:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3426:4:111",
                                          "type": "",
                                          "value": "0x41"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3416:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3416:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3416:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3451:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3454:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3444:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3444:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3444:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3236:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3248:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3233:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3233:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3272:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3284:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3269:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3269:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3230:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3230:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3227:242:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3485:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3489:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3478:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3478:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3478:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3516:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3530:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3524:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3524:16:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3509:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3509:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3509:32:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3561:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3569:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3557:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3557:15:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3584:9:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3595:2:111",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3580:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3580:18:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3574:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3574:25:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3550:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3550:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3550:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3609:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3619:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3609:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Price_$11328_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3048:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3059:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3071:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2977:654:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3684:231:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3694:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3705:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3708:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3701:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3701:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "3694:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3741:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3762:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3765:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3755:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3755:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3755:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3863:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3866:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3856:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3856:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3856:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3891:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3894:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3884:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3884:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3884:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3725:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "3728:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3722:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3722:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3719:190:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3667:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3670:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "3676:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3636:279:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4021:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4031:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4043:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4054:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4039:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4039:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4031:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4073:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4084:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4066:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4066:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4066:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3990:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4001:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4012:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3920:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4183:232:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4229:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4238:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4241:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4231:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4231:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4231:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4204:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4213:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4200:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4200:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4225:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4196:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4196:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4193:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4254:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4273:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4267:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4267:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4258:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4369:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4378:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4381:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4371:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4371:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4371:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4305:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "4316:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4323:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4312:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4312:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4302:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4302:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4295:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4295:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4292:93:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4394:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4404:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4394:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4149:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4160:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4172:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4102:313:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4547:192:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4557:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4569:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4580:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4565:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4565:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4557:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4599:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4610:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4592:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4592:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4592:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4637:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4648:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4633:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4633:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4657:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4665:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4653:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4653:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4626:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4626:107:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4626:107:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes4__to_t_bytes32_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4508:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4519:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4527:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4538:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4420:319:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_array$_t_string_calldata_ptr_$dyn_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 0x20), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 0x20)\n        value1 := length\n        value2 := calldataload(add(headStart, 0x20))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_string_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), value1)\n        calldatacopy(add(headStart, 96), value0, value1)\n        mstore(add(add(headStart, value1), 96), 0)\n        tail := add(add(headStart, and(add(value1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n        mstore(add(headStart, 0x20), value2)\n    }\n    function abi_decode_tuple_t_struct$_Price_$11328_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 64)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x41)\n            revert(0, 0x24)\n        }\n        mstore(64, newFreePtr)\n        mstore(memPtr, mload(headStart))\n        mstore(add(memPtr, 32), mload(add(headStart, 32)))\n        value0 := memPtr\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes4__to_t_bytes32_t_bytes4__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "9558": [
                  {
                    "length": 32,
                    "start": 185
                  },
                  {
                    "length": 32,
                    "start": 1157
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361061003f5760003560e01c806301ffc9a7146100445780633971d467146100795780633f15457f146100a7578063e8d6dbb414610100575b600080fd5b34801561005057600080fd5b5061006461005f3660046105e2565b610115565b60405190151581526020015b60405180910390f35b34801561008557600080fd5b5061009961009436600461062b565b6101ae565b604051908152602001610070565b3480156100b357600080fd5b506100db7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b61011361010e36600461062b565b610288565b005b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806101a857507fffffffff0000000000000000000000000000000000000000000000000000000082167fd1a70fd300000000000000000000000000000000000000000000000000000000145b92915050565b6000806101b9610432565b90508360005b8181101561027e5760008373ffffffffffffffffffffffffffffffffffffffff166383e7f6ff8989858181106101f7576101f76106a6565b905060200281019061020991906106d5565b896040518463ffffffff1660e01b815260040161022893929190610741565b6040805180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610798565b60208101519051019490940193506001016101bf565b5050509392505050565b6000610292610432565b9050826000805b828110156103fc5760008473ffffffffffffffffffffffffffffffffffffffff166383e7f6ff8989858181106102d1576102d16106a6565b90506020028101906102e391906106d5565b896040518463ffffffff1660e01b815260040161030293929190610741565b6040805180830381865afa15801561031e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103429190610798565b905060008160200151826000015161035a919061080e565b90508573ffffffffffffffffffffffffffffffffffffffff1663acf1a841828b8b8781811061038b5761038b6106a6565b905060200281019061039d91906106d5565b8b6040518563ffffffff1660e01b81526004016103bc93929190610741565b6000604051808303818588803b1580156103d557600080fd5b505af11580156103e9573d6000803e3d6000fd5b5050509190940193505050600101610299565b5060405133904780156108fc02916000818181858888f19350505050158015610429573d6000803e3d6000fd5b50505050505050565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081527f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae600482015260009081907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630178b8bf90602401602060405180830381865afa1580156104e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105059190610848565b6040517f124a319c0000000000000000000000000000000000000000000000000000000081527f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae60048201527fdf7ed18100000000000000000000000000000000000000000000000000000000602482015290915073ffffffffffffffffffffffffffffffffffffffff82169063124a319c90604401602060405180830381865afa1580156105b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc9190610848565b91505090565b6000602082840312156105f457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461062457600080fd5b9392505050565b60008060006040848603121561064057600080fd5b833567ffffffffffffffff8082111561065857600080fd5b818601915086601f83011261066c57600080fd5b81358181111561067b57600080fd5b8760208260051b850101111561069057600080fd5b6020928301989097509590910135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070a57600080fd5b83018035915067ffffffffffffffff82111561072557600080fd5b60200191503681900382131561073a57600080fd5b9250929050565b6040815282604082015282846060830137600060608483010152600060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601168301019050826020830152949350505050565b6000604082840312156107aa57600080fd5b6040516040810181811067ffffffffffffffff821117156107f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b808201808211156101a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561085a57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461062457600080fdfea2646970667358221220bfbc08c48aba60ef563e8c4a7cac5017564164cea4b0e3923dadadf4fe48821c64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x3971D467 EQ PUSH2 0x79 JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xE8D6DBB4 EQ PUSH2 0x100 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x5E2 JUMP JUMPDEST PUSH2 0x115 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x99 PUSH2 0x94 CALLDATASIZE PUSH1 0x4 PUSH2 0x62B JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x70 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x10E CALLDATASIZE PUSH1 0x4 PUSH2 0x62B JUMP JUMPDEST PUSH2 0x288 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1A8 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD1A70FD300000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B9 PUSH2 0x432 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x83E7F6FF DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x1F7 JUMPI PUSH2 0x1F7 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x6D5 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x244 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x798 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD SWAP1 MLOAD ADD SWAP5 SWAP1 SWAP5 ADD SWAP4 POP PUSH1 0x1 ADD PUSH2 0x1BF JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x292 PUSH2 0x432 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x83E7F6FF DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x6D5 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x302 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x342 SWAP2 SWAP1 PUSH2 0x798 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x35A SWAP2 SWAP1 PUSH2 0x80E JUMP JUMPDEST SWAP1 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xACF1A841 DUP3 DUP12 DUP12 DUP8 DUP2 DUP2 LT PUSH2 0x38B JUMPI PUSH2 0x38B PUSH2 0x6A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x6D5 JUMP JUMPDEST DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x741 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP SWAP2 SWAP1 SWAP5 ADD SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0x299 JUMP JUMPDEST POP PUSH1 0x40 MLOAD CALLER SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x429 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x178B8BF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x178B8BF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x505 SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x124A319C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0xDF7ED18100000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x124A319C SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5DC SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x66C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP5 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x60 DUP5 DUP4 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND DUP4 ADD ADD SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x7F4 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1A8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x85A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xBC ADDMOD 0xC4 DUP11 0xBA PUSH1 0xEF JUMP RETURNDATACOPY DUP13 0x4A PUSH29 0xAC5017564164CEA4B0E3923DADADF4FE48821C64736F6C634300081100 CALLER ",
              "sourceMap": "328:2181:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2266:241;;;;;;;;;;-1:-1:-1;2266:241:43;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;2266:241:43;;;;;;;;942:554;;;;;;;;;;-1:-1:-1;942:554:43;;;;;:::i;:::-;;:::i;:::-;;;1395:25:111;;;1383:2;1368:18;942:554:43;1249:177:111;492:24:43;;;;;;;;;;;;;;;;;;1620:42:111;1608:55;;;1590:74;;1578:2;1563:18;492:24:43;1431:239:111;1502:758:43;;;;;;:::i;:::-;;:::i;:::-;;2266:241;2360:4;2399:40;;;2414:25;2399:40;;:101;;-1:-1:-1;2455:45:43;;;2470:30;2455:45;2399:101;2380:120;2266:241;-1:-1:-1;;2266:241:43:o;942:554::-;1068:13;1097:33;1133:15;:13;:15::i;:::-;1097:51;-1:-1:-1;1175:5:43;1158:14;1197:293;1221:6;1217:1;:10;1197:293;;;1245:31;1279:10;:20;;;1317:5;;1323:1;1317:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1343;1279:86;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1451:13;;;;1438:10;;:26;1428:37;;;;;-1:-1:-1;1407:3:43;;1197:293;;;;1087:409;;942:554;;;;;:::o;1502:758::-;1627:33;1663:15;:13;:15::i;:::-;1627:51;-1:-1:-1;1705:5:43;1688:14;;1750:405;1774:6;1770:1;:10;1750:405;;;1798:31;1832:10;:20;;;1870:5;;1876:1;1870:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1896;1832:86;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1798:120;;1932:18;1966:5;:13;;;1953:5;:10;;;:26;;;;:::i;:::-;1932:47;;1993:10;:16;;;2017:10;2029:5;;2035:1;2029:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2039;1993:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2111:19:43;;;;;-1:-1:-1;;;2090:3:43;;1750:405;;;-1:-1:-1;2202:51:43;;2210:10;;2231:21;2202:51;;;;;;;;;2231:21;2210:10;2202:51;;;;;;;;;;;;;;;;;;;;;1617:643;;;1502:758;;;:::o;578:358::-;682:26;;;;;419:66;682:26;;;1395:25:111;626:22:43;;;;682:3;:12;;;;;1368:18:111;;682:26:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;778:137;;;;;419:66;778:137;;;4592:25:111;856:41:43;4633:18:111;;;4626:107;660:49:43;;-1:-1:-1;778:22:43;;;;;;4565:18:111;;778:137:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;719:210;;;578:358;:::o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:111:o;543:701::-;650:6;658;666;719:2;707:9;698:7;694:23;690:32;687:52;;;735:1;732;725:12;687:52;775:9;762:23;804:18;845:2;837:6;834:14;831:34;;;861:1;858;851:12;831:34;899:6;888:9;884:22;874:32;;944:7;937:4;933:2;929:13;925:27;915:55;;966:1;963;956:12;915:55;1006:2;993:16;1032:2;1024:6;1021:14;1018:34;;;1048:1;1045;1038:12;1018:34;1103:7;1096:4;1086:6;1083:1;1079:14;1075:2;1071:23;1067:34;1064:47;1061:67;;;1124:1;1121;1114:12;1061:67;1155:4;1147:13;;;;1179:6;;-1:-1:-1;1217:20:111;;;;1204:34;;543:701;-1:-1:-1;;;;543:701:111:o;1675:184::-;1727:77;1724:1;1717:88;1824:4;1821:1;1814:15;1848:4;1845:1;1838:15;1864:581;1942:4;1948:6;2008:11;1995:25;2098:66;2087:8;2071:14;2067:29;2063:102;2043:18;2039:127;2029:155;;2180:1;2177;2170:12;2029:155;2207:33;;2259:20;;;-1:-1:-1;2302:18:111;2291:30;;2288:50;;;2334:1;2331;2324:12;2288:50;2367:4;2355:17;;-1:-1:-1;2398:14:111;2394:27;;;2384:38;;2381:58;;;2435:1;2432;2425:12;2381:58;1864:581;;;;;:::o;2450:522::-;2637:2;2626:9;2619:21;2676:6;2671:2;2660:9;2656:18;2649:34;2733:6;2725;2720:2;2709:9;2705:18;2692:48;2789:1;2784:2;2775:6;2764:9;2760:22;2756:31;2749:42;2600:4;2918:2;2848:66;2843:2;2835:6;2831:15;2827:88;2816:9;2812:104;2808:113;2800:121;;2959:6;2952:4;2941:9;2937:20;2930:36;2450:522;;;;;;:::o;2977:654::-;3071:6;3124:2;3112:9;3103:7;3099:23;3095:32;3092:52;;;3140:1;3137;3130:12;3092:52;3173:2;3167:9;3215:2;3207:6;3203:15;3284:6;3272:10;3269:22;3248:18;3236:10;3233:34;3230:62;3227:242;;;3325:77;3322:1;3315:88;3426:4;3423:1;3416:15;3454:4;3451:1;3444:15;3227:242;3485:2;3478:22;3524:16;;3509:32;;3595:2;3580:18;;;3574:25;3557:15;;;3550:50;;;;-1:-1:-1;3516:6:111;2977:654;-1:-1:-1;2977:654:111:o;3636:279::-;3701:9;;;3722:10;;;3719:190;;;3765:77;3762:1;3755:88;3866:4;3863:1;3856:15;3894:4;3891:1;3884:15;4102:313;4172:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:52;;;4241:1;4238;4231:12;4193:52;4273:9;4267:16;4323:42;4316:5;4312:54;4305:5;4302:65;4292:93;;4381:1;4378;4371:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "445600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "ens()": "infinite",
                "renewAll(string[],uint256)": "infinite",
                "rentPrice(string[],uint256)": "infinite",
                "supportsInterface(bytes4)": "347"
              },
              "internal": {
                "getController()": "infinite"
              }
            },
            "methodIdentifiers": {
              "ens()": "3f15457f",
              "renewAll(string[],uint256)": "e8d6dbb4",
              "rentPrice(string[],uint256)": "3971d467",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"_ens\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"names\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"renewAll\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"names\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"rentPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/BulkRenewal.sol\":\"BulkRenewal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n    using Address for address;\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: balance query for the zero address\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: owner query for nonexistent token\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        require(_exists(tokenId), \\\"ERC721Metadata: URI query for nonexistent token\\\");\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overriden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        require(_exists(tokenId), \\\"ERC721: approved query for nonexistent token\\\");\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: transfer caller is not owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: transfer caller is not owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, _data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `_data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, _data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        require(_exists(tokenId), \\\"ERC721: operator query for nonexistent token\\\");\\n        address owner = ERC721.ownerOf(tokenId);\\n        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, _data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits a {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits a {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param _data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\\n                return retval == IERC721Receiver.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n}\\n\",\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/BaseRegistrarImplementation.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract BaseRegistrarImplementation is ERC721, IBaseRegistrar, Ownable {\\n    // A map of expiry times\\n    mapping(uint256 => uint256) expiries;\\n    // The ENS registry\\n    ENS public ens;\\n    // The namehash of the TLD this registrar owns (eg, .eth)\\n    bytes32 public baseNode;\\n    // A map of addresses that are authorised to register and renew names.\\n    mapping(address => bool) public controllers;\\n    uint256 public constant GRACE_PERIOD = 90 days;\\n    bytes4 private constant INTERFACE_META_ID =\\n        bytes4(keccak256(\\\"supportsInterface(bytes4)\\\"));\\n    bytes4 private constant ERC721_ID =\\n        bytes4(\\n            keccak256(\\\"balanceOf(address)\\\") ^\\n                keccak256(\\\"ownerOf(uint256)\\\") ^\\n                keccak256(\\\"approve(address,uint256)\\\") ^\\n                keccak256(\\\"getApproved(uint256)\\\") ^\\n                keccak256(\\\"setApprovalForAll(address,bool)\\\") ^\\n                keccak256(\\\"isApprovedForAll(address,address)\\\") ^\\n                keccak256(\\\"transferFrom(address,address,uint256)\\\") ^\\n                keccak256(\\\"safeTransferFrom(address,address,uint256)\\\") ^\\n                keccak256(\\\"safeTransferFrom(address,address,uint256,bytes)\\\")\\n        );\\n    bytes4 private constant RECLAIM_ID =\\n        bytes4(keccak256(\\\"reclaim(uint256,address)\\\"));\\n\\n    /**\\n     * v2.1.3 version of _isApprovedOrOwner which calls ownerOf(tokenId) and takes grace period into consideration instead of ERC721.ownerOf(tokenId);\\n     * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.3/contracts/token/ERC721/ERC721.sol#L187\\n     * @dev Returns whether the given spender can transfer a given token ID\\n     * @param spender address of the spender to query\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @return bool whether the msg.sender is approved for the given token ID,\\n     *    is an operator of the owner, or is the owner of the token\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId)\\n        internal\\n        view\\n        override\\n        returns (bool)\\n    {\\n        address owner = ownerOf(tokenId);\\n        return (spender == owner ||\\n            getApproved(tokenId) == spender ||\\n            isApprovedForAll(owner, spender));\\n    }\\n\\n    constructor(ENS _ens, bytes32 _baseNode) ERC721(\\\"\\\", \\\"\\\") {\\n        ens = _ens;\\n        baseNode = _baseNode;\\n    }\\n\\n    modifier live() {\\n        require(ens.owner(baseNode) == address(this));\\n        _;\\n    }\\n\\n    modifier onlyController() {\\n        require(controllers[msg.sender]);\\n        _;\\n    }\\n\\n    /**\\n     * @dev Gets the owner of the specified token ID. Names become unowned\\n     *      when their registration expires.\\n     * @param tokenId uint256 ID of the token to query the owner of\\n     * @return address currently marked as the owner of the given token ID\\n     */\\n    function ownerOf(uint256 tokenId)\\n        public\\n        view\\n        override(IERC721, ERC721)\\n        returns (address)\\n    {\\n        require(expiries[tokenId] > block.timestamp);\\n        return super.ownerOf(tokenId);\\n    }\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external override onlyOwner {\\n        controllers[controller] = true;\\n        emit ControllerAdded(controller);\\n    }\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external override onlyOwner {\\n        controllers[controller] = false;\\n        emit ControllerRemoved(controller);\\n    }\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external override onlyOwner {\\n        ens.setResolver(baseNode, resolver);\\n    }\\n\\n    // Returns the expiration timestamp of the specified id.\\n    function nameExpires(uint256 id) external view override returns (uint256) {\\n        return expiries[id];\\n    }\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) public view override returns (bool) {\\n        // Not available if it's registered here or in its grace period.\\n        return expiries[id] + GRACE_PERIOD < block.timestamp;\\n    }\\n\\n    /**\\n     * @dev Register a name.\\n     * @param id The token ID (keccak256 of the label).\\n     * @param owner The address that should own the registration.\\n     * @param duration Duration in seconds for the registration.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external override returns (uint256) {\\n        return _register(id, owner, duration, true);\\n    }\\n\\n    /**\\n     * @dev Register a name, without modifying the registry.\\n     * @param id The token ID (keccak256 of the label).\\n     * @param owner The address that should own the registration.\\n     * @param duration Duration in seconds for the registration.\\n     */\\n    function registerOnly(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256) {\\n        return _register(id, owner, duration, false);\\n    }\\n\\n    function _register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration,\\n        bool updateRegistry\\n    ) internal live onlyController returns (uint256) {\\n        require(available(id));\\n        require(\\n            block.timestamp + duration + GRACE_PERIOD >\\n                block.timestamp + GRACE_PERIOD\\n        ); // Prevent future overflow\\n\\n        expiries[id] = block.timestamp + duration;\\n        if (_exists(id)) {\\n            // Name was previously owned, and expired\\n            _burn(id);\\n        }\\n        _mint(owner, id);\\n        if (updateRegistry) {\\n            ens.setSubnodeOwner(baseNode, bytes32(id), owner);\\n        }\\n\\n        emit NameRegistered(id, owner, block.timestamp + duration);\\n\\n        return block.timestamp + duration;\\n    }\\n\\n    function renew(uint256 id, uint256 duration)\\n        external\\n        override\\n        live\\n        onlyController\\n        returns (uint256)\\n    {\\n        require(expiries[id] + GRACE_PERIOD >= block.timestamp); // Name must be registered here or in grace period\\n        require(\\n            expiries[id] + duration + GRACE_PERIOD > duration + GRACE_PERIOD\\n        ); // Prevent future overflow\\n\\n        expiries[id] += duration;\\n        emit NameRenewed(id, expiries[id]);\\n        return expiries[id];\\n    }\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external override live {\\n        require(_isApprovedOrOwner(msg.sender, id));\\n        ens.setSubnodeOwner(baseNode, bytes32(id), owner);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        override(ERC721, IERC165)\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == INTERFACE_META_ID ||\\n            interfaceID == ERC721_ID ||\\n            interfaceID == RECLAIM_ID;\\n    }\\n}\\n\",\"keccak256\":\"0xb757a151137d4b1b877773226797c8f95a4320cd3d68c7c2cfa588b22f5438ed\"},\"contracts/ethregistrar/BulkRenewal.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"./ETHRegistrarController.sol\\\";\\nimport \\\"./IETHRegistrarController.sol\\\";\\nimport \\\"../resolvers/Resolver.sol\\\";\\nimport \\\"./IBulkRenewal.sol\\\";\\nimport \\\"./IPriceOracle.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\ncontract BulkRenewal is IBulkRenewal {\\n    bytes32 private constant ETH_NAMEHASH =\\n        0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae;\\n\\n    ENS public immutable ens;\\n\\n    constructor(ENS _ens) {\\n        ens = _ens;\\n    }\\n\\n    function getController() internal view returns (ETHRegistrarController) {\\n        Resolver r = Resolver(ens.resolver(ETH_NAMEHASH));\\n        return\\n            ETHRegistrarController(\\n                r.interfaceImplementer(\\n                    ETH_NAMEHASH,\\n                    type(IETHRegistrarController).interfaceId\\n                )\\n            );\\n    }\\n\\n    function rentPrice(string[] calldata names, uint256 duration)\\n        external\\n        view\\n        override\\n        returns (uint256 total)\\n    {\\n        ETHRegistrarController controller = getController();\\n        uint256 length = names.length;\\n        for (uint256 i = 0; i < length; ) {\\n            IPriceOracle.Price memory price = controller.rentPrice(\\n                names[i],\\n                duration\\n            );\\n            unchecked {\\n                ++i;\\n                total += (price.base + price.premium);\\n            }\\n        }\\n    }\\n\\n    function renewAll(string[] calldata names, uint256 duration)\\n        external\\n        payable\\n        override\\n    {\\n        ETHRegistrarController controller = getController();\\n        uint256 length = names.length;\\n        uint256 total;\\n        for (uint256 i = 0; i < length; ) {\\n            IPriceOracle.Price memory price = controller.rentPrice(\\n                names[i],\\n                duration\\n            );\\n            uint256 totalPrice = price.base + price.premium;\\n            controller.renew{value: totalPrice}(names[i], duration);\\n            unchecked {\\n                ++i;\\n                total += totalPrice;\\n            }\\n        }\\n        // Send any excess funds back\\n        payable(msg.sender).transfer(address(this).balance);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        external\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IERC165).interfaceId ||\\n            interfaceID == type(IBulkRenewal).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0x13403a72feb54c22ac88ddb3fce168f5674102c8a860a4c9cfa63487b9ff24ad\",\"license\":\"MIT\"},\"contracts/ethregistrar/ETHRegistrarController.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport {BaseRegistrarImplementation} from \\\"./BaseRegistrarImplementation.sol\\\";\\nimport {StringUtils} from \\\"./StringUtils.sol\\\";\\nimport {Resolver} from \\\"../resolvers/Resolver.sol\\\";\\nimport {ReverseRegistrar} from \\\"../registry/ReverseRegistrar.sol\\\";\\nimport {IETHRegistrarController, IPriceOracle} from \\\"./IETHRegistrarController.sol\\\";\\n\\nimport {Ownable} from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport {IERC165} from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport {INameWrapper} from \\\"../wrapper/INameWrapper.sol\\\";\\nimport {ERC20Recoverable} from \\\"../utils/ERC20Recoverable.sol\\\";\\n\\nerror CommitmentTooNew(bytes32 commitment);\\nerror CommitmentTooOld(bytes32 commitment);\\nerror NameNotAvailable(string name);\\nerror DurationTooShort(uint256 duration);\\nerror ResolverRequiredWhenDataSupplied();\\nerror UnexpiredCommitmentExists(bytes32 commitment);\\nerror InsufficientValue();\\nerror Unauthorised(bytes32 node);\\nerror MaxCommitmentAgeTooLow();\\nerror MaxCommitmentAgeTooHigh();\\n\\n/**\\n * @dev A registrar controller for registering and renewing names at fixed cost.\\n */\\ncontract ETHRegistrarController is\\n    Ownable,\\n    IETHRegistrarController,\\n    IERC165,\\n    ERC20Recoverable\\n{\\n    using StringUtils for *;\\n    using Address for address;\\n\\n    uint256 public constant MIN_REGISTRATION_DURATION = 28 days;\\n    bytes32 private constant ETH_NODE =\\n        0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae;\\n    uint64 private constant MAX_EXPIRY = type(uint64).max;\\n    BaseRegistrarImplementation immutable base;\\n    IPriceOracle public immutable prices;\\n    uint256 public immutable minCommitmentAge;\\n    uint256 public immutable maxCommitmentAge;\\n    ReverseRegistrar public immutable reverseRegistrar;\\n    INameWrapper public immutable nameWrapper;\\n\\n    mapping(bytes32 => uint256) public commitments;\\n\\n    event NameRegistered(\\n        string name,\\n        bytes32 indexed label,\\n        address indexed owner,\\n        uint256 baseCost,\\n        uint256 premium,\\n        uint256 expires\\n    );\\n    event NameRenewed(\\n        string name,\\n        bytes32 indexed label,\\n        uint256 cost,\\n        uint256 expires\\n    );\\n\\n    constructor(\\n        BaseRegistrarImplementation _base,\\n        IPriceOracle _prices,\\n        uint256 _minCommitmentAge,\\n        uint256 _maxCommitmentAge,\\n        ReverseRegistrar _reverseRegistrar,\\n        INameWrapper _nameWrapper\\n    ) {\\n        if (_maxCommitmentAge <= _minCommitmentAge) {\\n            revert MaxCommitmentAgeTooLow();\\n        }\\n\\n        if (_maxCommitmentAge > block.timestamp) {\\n            revert MaxCommitmentAgeTooHigh();\\n        }\\n\\n        base = _base;\\n        prices = _prices;\\n        minCommitmentAge = _minCommitmentAge;\\n        maxCommitmentAge = _maxCommitmentAge;\\n        reverseRegistrar = _reverseRegistrar;\\n        nameWrapper = _nameWrapper;\\n    }\\n\\n    function rentPrice(string memory name, uint256 duration)\\n        public\\n        view\\n        override\\n        returns (IPriceOracle.Price memory price)\\n    {\\n        bytes32 label = keccak256(bytes(name));\\n        price = prices.price(name, base.nameExpires(uint256(label)), duration);\\n    }\\n\\n    function valid(string memory name) public pure returns (bool) {\\n        return name.strlen() >= 3;\\n    }\\n\\n    function available(string memory name) public view override returns (bool) {\\n        bytes32 label = keccak256(bytes(name));\\n        return valid(name) && base.available(uint256(label));\\n    }\\n\\n    function makeCommitment(\\n        string memory name,\\n        address owner,\\n        uint256 duration,\\n        bytes32 secret,\\n        address resolver,\\n        bytes[] calldata data,\\n        bool reverseRecord,\\n        uint32 fuses,\\n        uint64 wrapperExpiry\\n    ) public pure override returns (bytes32) {\\n        bytes32 label = keccak256(bytes(name));\\n        if (data.length > 0 && resolver == address(0)) {\\n            revert ResolverRequiredWhenDataSupplied();\\n        }\\n        return\\n            keccak256(\\n                abi.encode(\\n                    label,\\n                    owner,\\n                    duration,\\n                    resolver,\\n                    data,\\n                    secret,\\n                    reverseRecord,\\n                    fuses,\\n                    wrapperExpiry\\n                )\\n            );\\n    }\\n\\n    function commit(bytes32 commitment) public override {\\n        if (commitments[commitment] + maxCommitmentAge >= block.timestamp) {\\n            revert UnexpiredCommitmentExists(commitment);\\n        }\\n        commitments[commitment] = block.timestamp;\\n    }\\n\\n    function register(\\n        string calldata name,\\n        address owner,\\n        uint256 duration,\\n        bytes32 secret,\\n        address resolver,\\n        bytes[] calldata data,\\n        bool reverseRecord,\\n        uint32 fuses,\\n        uint64 wrapperExpiry\\n    ) public payable override {\\n        IPriceOracle.Price memory price = rentPrice(name, duration);\\n        if (msg.value < price.base + price.premium) {\\n            revert InsufficientValue();\\n        }\\n\\n        _consumeCommitment(\\n            name,\\n            duration,\\n            makeCommitment(\\n                name,\\n                owner,\\n                duration,\\n                secret,\\n                resolver,\\n                data,\\n                reverseRecord,\\n                fuses,\\n                wrapperExpiry\\n            )\\n        );\\n\\n        uint256 expires = nameWrapper.registerAndWrapETH2LD(\\n            name,\\n            owner,\\n            duration,\\n            resolver,\\n            fuses,\\n            wrapperExpiry\\n        );\\n\\n        if (data.length > 0) {\\n            _setRecords(resolver, keccak256(bytes(name)), data);\\n        }\\n\\n        if (reverseRecord) {\\n            _setReverseRecord(name, resolver, msg.sender);\\n        }\\n\\n        emit NameRegistered(\\n            name,\\n            keccak256(bytes(name)),\\n            owner,\\n            price.base,\\n            price.premium,\\n            expires\\n        );\\n\\n        if (msg.value > (price.base + price.premium)) {\\n            payable(msg.sender).transfer(\\n                msg.value - (price.base + price.premium)\\n            );\\n        }\\n    }\\n\\n    function renew(string calldata name, uint256 duration)\\n        external\\n        payable\\n        override\\n    {\\n        _renew(name, duration, 0, 0);\\n    }\\n\\n    function renewWithFuses(\\n        string calldata name,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 wrapperExpiry\\n    ) external payable {\\n        bytes32 labelhash = keccak256(bytes(name));\\n        bytes32 nodehash = keccak256(abi.encodePacked(ETH_NODE, labelhash));\\n        if (!nameWrapper.isTokenOwnerOrApproved(nodehash, msg.sender)) {\\n            revert Unauthorised(nodehash);\\n        }\\n        _renew(name, duration, fuses, wrapperExpiry);\\n    }\\n\\n    function _renew(\\n        string calldata name,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 wrapperExpiry\\n    ) internal {\\n        bytes32 labelhash = keccak256(bytes(name));\\n        uint256 tokenId = uint256(labelhash);\\n        IPriceOracle.Price memory price = rentPrice(name, duration);\\n        if (msg.value < price.base) {\\n            revert InsufficientValue();\\n        }\\n        uint256 expires;\\n        expires = nameWrapper.renew(tokenId, duration, fuses, wrapperExpiry);\\n\\n        if (msg.value > price.base) {\\n            payable(msg.sender).transfer(msg.value - price.base);\\n        }\\n\\n        emit NameRenewed(name, labelhash, msg.value, expires);\\n    }\\n\\n    function withdraw() public {\\n        payable(owner()).transfer(address(this).balance);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        external\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IERC165).interfaceId ||\\n            interfaceID == type(IETHRegistrarController).interfaceId;\\n    }\\n\\n    /* Internal functions */\\n\\n    function _consumeCommitment(\\n        string memory name,\\n        uint256 duration,\\n        bytes32 commitment\\n    ) internal {\\n        // Require an old enough commitment.\\n        if (commitments[commitment] + minCommitmentAge > block.timestamp) {\\n            revert CommitmentTooNew(commitment);\\n        }\\n\\n        // If the commitment is too old, or the name is registered, stop\\n        if (commitments[commitment] + maxCommitmentAge <= block.timestamp) {\\n            revert CommitmentTooOld(commitment);\\n        }\\n        if (!available(name)) {\\n            revert NameNotAvailable(name);\\n        }\\n\\n        delete (commitments[commitment]);\\n\\n        if (duration < MIN_REGISTRATION_DURATION) {\\n            revert DurationTooShort(duration);\\n        }\\n    }\\n\\n    function _setRecords(\\n        address resolverAddress,\\n        bytes32 label,\\n        bytes[] calldata data\\n    ) internal {\\n        // use hardcoded .eth namehash\\n        bytes32 nodehash = keccak256(abi.encodePacked(ETH_NODE, label));\\n        Resolver resolver = Resolver(resolverAddress);\\n        resolver.multicallWithNodeCheck(nodehash, data);\\n    }\\n\\n    function _setReverseRecord(\\n        string memory name,\\n        address resolver,\\n        address owner\\n    ) internal {\\n        reverseRegistrar.setNameForAddr(\\n            msg.sender,\\n            owner,\\n            resolver,\\n            string.concat(name, \\\".eth\\\")\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x8b03956860aa9e3d6fc8d0f9a0bc46c4349939438366f1574fcffefc98f293fa\",\"license\":\"MIT\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/ethregistrar/IBulkRenewal.sol\":{\"content\":\"interface IBulkRenewal {\\n    function rentPrice(string[] calldata names, uint256 duration)\\n        external\\n        view\\n        returns (uint256 total);\\n\\n    function renewAll(string[] calldata names, uint256 duration)\\n        external\\n        payable;\\n}\\n\",\"keccak256\":\"0x6f0f8f7c34faaef84a29951e00da8b769d12a2d20493c68dbec92aa79b25a05d\"},\"contracts/ethregistrar/IETHRegistrarController.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./IPriceOracle.sol\\\";\\n\\ninterface IETHRegistrarController {\\n    function rentPrice(string memory, uint256)\\n        external\\n        returns (IPriceOracle.Price memory);\\n\\n    function available(string memory) external returns (bool);\\n\\n    function makeCommitment(\\n        string memory,\\n        address,\\n        uint256,\\n        bytes32,\\n        address,\\n        bytes[] calldata,\\n        bool,\\n        uint32,\\n        uint64\\n    ) external returns (bytes32);\\n\\n    function commit(bytes32) external;\\n\\n    function register(\\n        string calldata,\\n        address,\\n        uint256,\\n        bytes32,\\n        address,\\n        bytes[] calldata,\\n        bool,\\n        uint32,\\n        uint64\\n    ) external payable;\\n\\n    function renew(string calldata, uint256) external payable;\\n}\\n\",\"keccak256\":\"0x999c1c3386cfef6a52b86b33a45820d551366141db8c5915740895c9f2425772\",\"license\":\"MIT\"},\"contracts/ethregistrar/IPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\ninterface IPriceOracle {\\n    struct Price {\\n        uint256 base;\\n        uint256 premium;\\n    }\\n\\n    /**\\n     * @dev Returns the price to register or renew a name.\\n     * @param name The name being registered or renewed.\\n     * @param expires When the name presently expires (0 if this is a new registration).\\n     * @param duration How long the name is being registered or extended for, in seconds.\\n     * @return base premium tuple of base price + premium price\\n     */\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (Price calldata);\\n}\\n\",\"keccak256\":\"0x1ec537b4c7f9cc40363b39dcc7ade8c29bf94662e6b01d38e681487637bd577e\",\"license\":\"MIT\"},\"contracts/ethregistrar/StringUtils.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nlibrary StringUtils {\\n    /**\\n     * @dev Returns the length of a given string\\n     *\\n     * @param s The string to measure the length of\\n     * @return The length of the input string\\n     */\\n    function strlen(string memory s) internal pure returns (uint256) {\\n        uint256 len;\\n        uint256 i = 0;\\n        uint256 bytelength = bytes(s).length;\\n        for (len = 0; i < bytelength; len++) {\\n            bytes1 b = bytes(s)[i];\\n            if (b < 0x80) {\\n                i += 1;\\n            } else if (b < 0xE0) {\\n                i += 2;\\n            } else if (b < 0xF0) {\\n                i += 3;\\n            } else if (b < 0xF8) {\\n                i += 4;\\n            } else if (b < 0xFC) {\\n                i += 5;\\n            } else {\\n                i += 6;\\n            }\\n        }\\n        return len;\\n    }\\n}\\n\",\"keccak256\":\"0x4cc8363a850dc9130c433ee50e7c97e29a45ae5d9bd0808205ac7134b34f24e4\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/IReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface IReverseRegistrar {\\n    function setDefaultResolver(address resolver) external;\\n\\n    function claim(address owner) external returns (bytes32);\\n\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) external returns (bytes32);\\n\\n    function claimWithResolver(address owner, address resolver)\\n        external\\n        returns (bytes32);\\n\\n    function setName(string memory name) external returns (bytes32);\\n\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) external returns (bytes32);\\n\\n    function node(address addr) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd6ba83973ffbab31dec17a716af3bb5703844d16dceb5078583fb2c509f8bcc2\"},\"contracts/registry/ReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\nimport \\\"./IReverseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../root/Controllable.sol\\\";\\n\\nabstract contract NameResolver {\\n    function setName(bytes32 node, string memory name) public virtual;\\n}\\n\\nbytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\nbytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n// namehash('addr.reverse')\\n\\ncontract ReverseRegistrar is Ownable, Controllable, IReverseRegistrar {\\n    ENS public immutable ens;\\n    NameResolver public defaultResolver;\\n\\n    event ReverseClaimed(address indexed addr, bytes32 indexed node);\\n    event DefaultResolverChanged(NameResolver indexed resolver);\\n\\n    /**\\n     * @dev Constructor\\n     * @param ensAddr The address of the ENS registry.\\n     */\\n    constructor(ENS ensAddr) {\\n        ens = ensAddr;\\n\\n        // Assign ownership of the reverse record to our deployer\\n        ReverseRegistrar oldRegistrar = ReverseRegistrar(\\n            ensAddr.owner(ADDR_REVERSE_NODE)\\n        );\\n        if (address(oldRegistrar) != address(0x0)) {\\n            oldRegistrar.claim(msg.sender);\\n        }\\n    }\\n\\n    modifier authorised(address addr) {\\n        require(\\n            addr == msg.sender ||\\n                controllers[msg.sender] ||\\n                ens.isApprovedForAll(addr, msg.sender) ||\\n                ownsContract(addr),\\n            \\\"ReverseRegistrar: Caller is not a controller or authorised by address or the address itself\\\"\\n        );\\n        _;\\n    }\\n\\n    function setDefaultResolver(address resolver) public override onlyOwner {\\n        require(\\n            address(resolver) != address(0),\\n            \\\"ReverseRegistrar: Resolver address must not be 0\\\"\\n        );\\n        defaultResolver = NameResolver(resolver);\\n        emit DefaultResolverChanged(NameResolver(resolver));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claim(address owner) public override returns (bytes32) {\\n        return claimForAddr(msg.sender, owner, address(defaultResolver));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param addr The reverse record to set\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @param resolver The resolver of the reverse node\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) public override authorised(addr) returns (bytes32) {\\n        bytes32 labelHash = sha3HexAddress(addr);\\n        bytes32 reverseNode = keccak256(\\n            abi.encodePacked(ADDR_REVERSE_NODE, labelHash)\\n        );\\n        emit ReverseClaimed(addr, reverseNode);\\n        ens.setSubnodeRecord(ADDR_REVERSE_NODE, labelHash, owner, resolver, 0);\\n        return reverseNode;\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @param resolver The address of the resolver to set; 0 to leave unchanged.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claimWithResolver(address owner, address resolver)\\n        public\\n        override\\n        returns (bytes32)\\n    {\\n        return claimForAddr(msg.sender, owner, resolver);\\n    }\\n\\n    /**\\n     * @dev Sets the `name()` record for the reverse ENS record associated with\\n     * the calling account. First updates the resolver to the default reverse\\n     * resolver if necessary.\\n     * @param name The name to set for this address.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function setName(string memory name) public override returns (bytes32) {\\n        return\\n            setNameForAddr(\\n                msg.sender,\\n                msg.sender,\\n                address(defaultResolver),\\n                name\\n            );\\n    }\\n\\n    /**\\n     * @dev Sets the `name()` record for the reverse ENS record associated with\\n     * the account provided. Updates the resolver to a designated resolver\\n     * Only callable by controllers and authorised users\\n     * @param addr The reverse record to set\\n     * @param owner The owner of the reverse node\\n     * @param resolver The resolver of the reverse node\\n     * @param name The name to set for this address.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) public override returns (bytes32) {\\n        bytes32 node = claimForAddr(addr, owner, resolver);\\n        NameResolver(resolver).setName(node, name);\\n        return node;\\n    }\\n\\n    /**\\n     * @dev Returns the node hash for a given account's reverse records.\\n     * @param addr The address to hash\\n     * @return The ENS node hash.\\n     */\\n    function node(address addr) public pure override returns (bytes32) {\\n        return\\n            keccak256(\\n                abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr))\\n            );\\n    }\\n\\n    /**\\n     * @dev An optimised function to compute the sha3 of the lower-case\\n     *      hexadecimal representation of an Ethereum address.\\n     * @param addr The address to hash\\n     * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\\n     *         input address.\\n     */\\n    function sha3HexAddress(address addr) private pure returns (bytes32 ret) {\\n        assembly {\\n            for {\\n                let i := 40\\n            } gt(i, 0) {\\n\\n            } {\\n                i := sub(i, 1)\\n                mstore8(i, byte(and(addr, 0xf), lookup))\\n                addr := div(addr, 0x10)\\n                i := sub(i, 1)\\n                mstore8(i, byte(and(addr, 0xf), lookup))\\n                addr := div(addr, 0x10)\\n            }\\n\\n            ret := keccak256(0, 40)\\n        }\\n    }\\n\\n    function ownsContract(address addr) internal view returns (bool) {\\n        try Ownable(addr).owner() returns (address owner) {\\n            return owner == msg.sender;\\n        } catch {\\n            return false;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4430930561750d2de1163f7b7ba22ae003a7684394371e90a04374859a2337cf\"},\"contracts/resolvers/Resolver.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"./profiles/IABIResolver.sol\\\";\\nimport \\\"./profiles/IAddressResolver.sol\\\";\\nimport \\\"./profiles/IAddrResolver.sol\\\";\\nimport \\\"./profiles/IContentHashResolver.sol\\\";\\nimport \\\"./profiles/IDNSRecordResolver.sol\\\";\\nimport \\\"./profiles/IDNSZoneResolver.sol\\\";\\nimport \\\"./profiles/IInterfaceResolver.sol\\\";\\nimport \\\"./profiles/INameResolver.sol\\\";\\nimport \\\"./profiles/IPubkeyResolver.sol\\\";\\nimport \\\"./profiles/ITextResolver.sol\\\";\\nimport \\\"./profiles/IExtendedResolver.sol\\\";\\n\\n/**\\n * A generic resolver interface which includes all the functions including the ones deprecated\\n */\\ninterface Resolver is\\n    IERC165,\\n    IABIResolver,\\n    IAddressResolver,\\n    IAddrResolver,\\n    IContentHashResolver,\\n    IDNSRecordResolver,\\n    IDNSZoneResolver,\\n    IInterfaceResolver,\\n    INameResolver,\\n    IPubkeyResolver,\\n    ITextResolver,\\n    IExtendedResolver\\n{\\n    /* Deprecated events */\\n    event ContentChanged(bytes32 indexed node, bytes32 hash);\\n\\n    function setABI(\\n        bytes32 node,\\n        uint256 contentType,\\n        bytes calldata data\\n    ) external;\\n\\n    function setAddr(bytes32 node, address addr) external;\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes calldata a\\n    ) external;\\n\\n    function setContenthash(bytes32 node, bytes calldata hash) external;\\n\\n    function setDnsrr(bytes32 node, bytes calldata data) external;\\n\\n    function setName(bytes32 node, string calldata _name) external;\\n\\n    function setPubkey(\\n        bytes32 node,\\n        bytes32 x,\\n        bytes32 y\\n    ) external;\\n\\n    function setText(\\n        bytes32 node,\\n        string calldata key,\\n        string calldata value\\n    ) external;\\n\\n    function setInterface(\\n        bytes32 node,\\n        bytes4 interfaceID,\\n        address implementer\\n    ) external;\\n\\n    function multicall(bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    /* Deprecated functions */\\n    function content(bytes32 node) external view returns (bytes32);\\n\\n    function multihash(bytes32 node) external view returns (bytes memory);\\n\\n    function setContent(bytes32 node, bytes32 hash) external;\\n\\n    function setMultihash(bytes32 node, bytes calldata hash) external;\\n}\\n\",\"keccak256\":\"0x73b6cd44b0ed803083996abd3d2683f2444731b6486045f8274c44fce66bf939\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IExtendedResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IExtendedResolver {\\n    function resolve(bytes memory name, bytes memory data)\\n        external\\n        view\\n        returns (bytes memory, address);\\n}\\n\",\"keccak256\":\"0x0a586a1725cdc5f90f2e302c620a4a033adfc87e49bbcc5a43604ba579bce7a7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/root/Controllable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool enabled);\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n\\n    function setController(address controller, bool enabled) public onlyOwner {\\n        controllers[controller] = enabled;\\n        emit ControllerChanged(controller, enabled);\\n    }\\n}\\n\",\"keccak256\":\"0xb19b8c0fafe9ca2b4bf8aaafee486fa31437672e1e1977bdf84bfe03464969db\"},\"contracts/utils/ERC20Recoverable.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\n/**\\n    @notice Contract is used to recover ERC20 tokens sent to the contract by mistake.\\n */\\n\\ncontract ERC20Recoverable is Ownable {\\n    /**\\n    @notice Recover ERC20 tokens sent to the contract by mistake.\\n    @dev The contract is Ownable and only the owner can call the recover function.\\n    @param _to The address to send the tokens to.\\n@param _token The address of the ERC20 token to recover\\n    @param _amount The amount of tokens to recover.\\n */\\n    function recoverFunds(\\n        address _token,\\n        address _to,\\n        uint256 _amount\\n    ) external onlyOwner {\\n        IERC20(_token).transfer(_to, _amount);\\n    }\\n}\\n\",\"keccak256\":\"0x793a38091e1f81499a29ddba82c2b2f3cdd07071b81a832886e8e02a45ff352a\",\"license\":\"MIT\"},\"contracts/wrapper/IMetadataService.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface IMetadataService {\\n    function uri(uint256) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xb3f1cf6df01ed7b15e5f2318f6823afbdb586ca38c2124c67955c645647ae9a2\",\"license\":\"MIT\"},\"contracts/wrapper/INameWrapper.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"../ethregistrar/IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"./IMetadataService.sol\\\";\\n\\nuint32 constant CANNOT_UNWRAP = 1;\\nuint32 constant CANNOT_BURN_FUSES = 2;\\nuint32 constant CANNOT_TRANSFER = 4;\\nuint32 constant CANNOT_SET_RESOLVER = 8;\\nuint32 constant CANNOT_SET_TTL = 16;\\nuint32 constant CANNOT_CREATE_SUBDOMAIN = 32;\\nuint32 constant PARENT_CANNOT_CONTROL = 64;\\nuint32 constant CAN_DO_EVERYTHING = 0;\\n\\ninterface INameWrapper is IERC1155 {\\n    event NameWrapped(\\n        bytes32 indexed node,\\n        bytes name,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    );\\n\\n    event NameUnwrapped(bytes32 indexed node, address owner);\\n\\n    event FusesSet(bytes32 indexed node, uint32 fuses, uint64 expiry);\\n\\n    function ens() external view returns (ENS);\\n\\n    function registrar() external view returns (IBaseRegistrar);\\n\\n    function metadataService() external view returns (IMetadataService);\\n\\n    function names(bytes32) external view returns (bytes memory);\\n\\n    function wrap(\\n        bytes calldata name,\\n        address wrappedOwner,\\n        address resolver\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 _expiry,\\n        address resolver\\n    ) external returns (uint64 expiry);\\n\\n    function registerAndWrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint256 duration,\\n        address resolver,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 registrarExpiry);\\n\\n    function renew(\\n        uint256 labelHash,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 expires);\\n\\n    function unwrap(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external;\\n\\n    function unwrapETH2LD(\\n        bytes32 label,\\n        address newRegistrant,\\n        address newController\\n    ) external;\\n\\n    function setFuses(bytes32 node, uint32 fuses)\\n        external\\n        returns (uint32 newFuses);\\n\\n    function setChildFuses(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        string calldata label,\\n        address newOwner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\\n        external\\n        returns (bool);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function ownerOf(uint256 id) external returns (address owner);\\n\\n    function getData(uint256 id)\\n        external\\n        returns (\\n            address,\\n            uint32,\\n            uint64\\n        );\\n\\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\\n        external\\n        view\\n        returns (bool);\\n\\n    function isWrapped(bytes32 node) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9c0ff4675d7faf51638138ecfc76a1f50c1005d1005bfba31c1cac7990a43c30\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/ETHRegistrarController.sol": {
        "ETHRegistrarController": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract BaseRegistrarImplementation",
                  "name": "_base",
                  "type": "address"
                },
                {
                  "internalType": "contract IPriceOracle",
                  "name": "_prices",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_minCommitmentAge",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_maxCommitmentAge",
                  "type": "uint256"
                },
                {
                  "internalType": "contract ReverseRegistrar",
                  "name": "_reverseRegistrar",
                  "type": "address"
                },
                {
                  "internalType": "contract INameWrapper",
                  "name": "_nameWrapper",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "commitment",
                  "type": "bytes32"
                }
              ],
              "name": "CommitmentTooNew",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "commitment",
                  "type": "bytes32"
                }
              ],
              "name": "CommitmentTooOld",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "DurationTooShort",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MaxCommitmentAgeTooHigh",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MaxCommitmentAgeTooLow",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "NameNotAvailable",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ResolverRequiredWhenDataSupplied",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "Unauthorised",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "commitment",
                  "type": "bytes32"
                }
              ],
              "name": "UnexpiredCommitmentExists",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "baseCost",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "premium",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "name": "NameRegistered",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cost",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "name": "NameRenewed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "MIN_REGISTRATION_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "available",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "commitment",
                  "type": "bytes32"
                }
              ],
              "name": "commit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "commitments",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "secret",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "reverseRecord",
                  "type": "bool"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "wrapperExpiry",
                  "type": "uint64"
                }
              ],
              "name": "makeCommitment",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "maxCommitmentAge",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "minCommitmentAge",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "nameWrapper",
              "outputs": [
                {
                  "internalType": "contract INameWrapper",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "prices",
              "outputs": [
                {
                  "internalType": "contract IPriceOracle",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "recoverFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "secret",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "reverseRecord",
                  "type": "bool"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "wrapperExpiry",
                  "type": "uint64"
                }
              ],
              "name": "register",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "renew",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "wrapperExpiry",
                  "type": "uint64"
                }
              ],
              "name": "renewWithFuses",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "rentPrice",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "base",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "premium",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPriceOracle.Price",
                  "name": "price",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "reverseRegistrar",
              "outputs": [
                {
                  "internalType": "contract ReverseRegistrar",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "valid",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "A registrar controller for registering and renewing names at fixed cost.",
            "kind": "dev",
            "methods": {
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "recoverFunds(address,address,uint256)": {
                "details": "The contract is Ownable and only the owner can call the recover function.",
                "params": {
                  "_amount": "The amount of tokens to recover.",
                  "_to": "The address to send the tokens to.",
                  "_token": "The address of the ERC20 token to recover"
                }
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_9951": {
                  "entryPoint": null,
                  "id": 9951,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 177,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_BaseRegistrarImplementation_$9541t_contract$_IPriceOracle_$11342t_uint256t_uint256t_contract$_ReverseRegistrar_$13213t_contract$_INameWrapper_$18030_fromMemory": {
                  "entryPoint": 282,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "validator_revert_contract_BaseRegistrarImplementation": {
                  "entryPoint": 257,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1181:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "88:86:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "152:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "161:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "164:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "154:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "154:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "154:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "111:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "122:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "137:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "142:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "133:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "133:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "146:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "129:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "129:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "118:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "118:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "108:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "108:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "101:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "101:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "98:70:111"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_BaseRegistrarImplementation",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "77:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:160:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "451:728:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "498:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "507:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "510:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "500:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "500:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "500:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "472:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "481:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "468:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "468:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "493:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "461:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "523:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "542:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "536:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "536:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "527:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "615:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_BaseRegistrarImplementation",
                                  "nodeType": "YulIdentifier",
                                  "src": "561:53:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "561:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "561:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "630:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "640:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "630:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "654:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "679:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "690:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "675:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "675:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "669:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "669:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "658:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "757:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_BaseRegistrarImplementation",
                                  "nodeType": "YulIdentifier",
                                  "src": "703:53:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "703:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "703:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "774:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "784:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "774:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "800:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "820:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "831:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "816:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "816:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "810:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "810:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "800:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "844:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "864:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "875:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "860:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "860:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "854:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "854:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "844:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "888:41:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "913:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "924:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "909:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "909:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "903:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "903:26:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "892:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "992:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_BaseRegistrarImplementation",
                                  "nodeType": "YulIdentifier",
                                  "src": "938:53:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "938:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "938:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1009:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1019:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1009:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1035:41:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1060:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1071:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1056:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1056:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1050:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1050:26:111"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1039:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1139:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_BaseRegistrarImplementation",
                                  "nodeType": "YulIdentifier",
                                  "src": "1085:53:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1085:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1085:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1156:17:111",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "1166:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1156:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_BaseRegistrarImplementation_$9541t_contract$_IPriceOracle_$11342t_uint256t_uint256t_contract$_ReverseRegistrar_$13213t_contract$_INameWrapper_$18030_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "377:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "388:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "400:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "408:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "416:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "424:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "432:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "440:6:111",
                            "type": ""
                          }
                        ],
                        "src": "179:1000:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_contract_BaseRegistrarImplementation(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_BaseRegistrarImplementation_$9541t_contract$_IPriceOracle_$11342t_uint256t_uint256t_contract$_ReverseRegistrar_$13213t_contract$_INameWrapper_$18030_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_BaseRegistrarImplementation(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_BaseRegistrarImplementation(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n        let value_2 := mload(add(headStart, 128))\n        validator_revert_contract_BaseRegistrarImplementation(value_2)\n        value4 := value_2\n        let value_3 := mload(add(headStart, 160))\n        validator_revert_contract_BaseRegistrarImplementation(value_3)\n        value5 := value_3\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101406040523480156200001257600080fd5b50604051620025ab380380620025ab83398101604081905262000035916200011a565b6200004033620000b1565b83831162000061576040516307cb550760e31b815260040160405180910390fd5b428311156200008357604051630b4319e560e21b815260040160405180910390fd5b6001600160a01b0395861660805293851660a05260c09290925260e052821661010052166101205262000197565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200011757600080fd5b50565b60008060008060008060c087890312156200013457600080fd5b8651620001418162000101565b6020880151909650620001548162000101565b8095505060408701519350606087015192506080870151620001768162000101565b60a0880151909250620001898162000101565b809150509295509295509295565b60805160a05160c05160e0516101005161012051612385620002266000396000818161038d0152818161074f015281816109e4015261119401526000818161022801526115820152600081816103f401528181610f0301526113aa01526000818161030e01526113330152600081816104280152610c30015260008181610c720152610db701526123856000f3fe60806040526004361061016a5760003560e01c80638d839ffe116100cb578063aeb8ce9b1161007f578063d555254a11610059578063d555254a1461044a578063f14fcbc81461046a578063f2fde38b1461048a57600080fd5b8063aeb8ce9b146103c2578063ce1e09c0146103e2578063d3419bf31461041657600080fd5b80639791c097116100b05780639791c0971461035b578063a8e5fbc01461037b578063acf1a841146103af57600080fd5b80638d839ffe146102fc5780638da5cb5b1461033057600080fd5b80637acaaf2611610122578063839df94511610107578063839df9451461026f57806383e7f6ff146102aa5780638a95b09f146102e557600080fd5b80637acaaf2614610203578063808698531461021657600080fd5b80635d3590d5116101535780635d3590d5146101bb5780636459220f146101db578063715018a6146101ee57600080fd5b806301ffc9a71461016f5780633ccfd60b146101a4575b600080fd5b34801561017b57600080fd5b5061018f61018a366004611848565b6104aa565b60405190151581526020015b60405180910390f35b3480156101b057600080fd5b506101b9610543565b005b3480156101c757600080fd5b506101b96101d63660046118b3565b61058d565b6101b96101e9366004611964565b6106b2565b3480156101fa57600080fd5b506101b9610820565b6101b9610211366004611a25565b6108ad565b34801561022257600080fd5b5061024a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b34801561027b57600080fd5b5061029c61028a366004611afe565b60016020526000908152604090205481565b60405190815260200161019b565b3480156102b657600080fd5b506102ca6102c5366004611bf5565b610be6565b6040805182518152602092830151928101929092520161019b565b3480156102f157600080fd5b5061029c6224ea0081565b34801561030857600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033c57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661024a565b34801561036757600080fd5b5061018f610376366004611c3a565b610d46565b34801561038757600080fd5b5061024a7f000000000000000000000000000000000000000000000000000000000000000081565b6101b96103bd366004611c6f565b610d5b565b3480156103ce57600080fd5b5061018f6103dd366004611c3a565b610d6e565b3480156103ee57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042257600080fd5b5061024a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045657600080fd5b5061029c610465366004611cbb565b610e3e565b34801561047657600080fd5b506101b9610485366004611afe565b610eec565b34801561049657600080fd5b506101b96104a5366004611d8e565b610f75565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061053d57507fffffffff0000000000000000000000000000000000000000000000000000000082167fdf7ed18100000000000000000000000000000000000000000000000000000000145b92915050565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116914780156108fc02929091818181858888f1935050505015801561058a573d6000803e3d6000fd5b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190611da9565b50505050565b600085856040516106c4929190611dc6565b604080519182900382207f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae6020840152908201819052915060009060600160408051808303601f190181529082905280516020909101207ff44779b90000000000000000000000000000000000000000000000000000000082526004820181905233602483015291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f44779b9906044016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611da9565b61080a576040517fe4fd57ae0000000000000000000000000000000000000000000000000000000081526004810182905260240161060a565b61081787878787876110a2565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060a565b6108ab60006112a7565b565b60006108f08c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250610be6915050565b6020810151815191925061090391611e05565b34101561093c576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109e08c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508a6109db8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8e8e8e8e8e8e8e8e610e3e565b61131c565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f56dac68e8e8e8e8d8a8a6040518863ffffffff1660e01b8152600401610a479796959493929190611e43565b6020604051808303816000875af1158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190611ead565b90508515610ab557610ab5888e8e604051610aa6929190611dc6565b60405180910390208989611499565b8415610afe57610afe8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92503391506115809050565b8a73ffffffffffffffffffffffffffffffffffffffff168d8d604051610b25929190611dc6565b60405180910390207f69e37f151eb98a09618ddaa80c8cfaf1ce5996867c489f45b555b412271ebf278f8f8660000151876020015187604051610b6c959493929190611ec6565b60405180910390a360208201518251610b859190611e05565b341115610bd7576020820151825133916108fc91610ba39190611e05565b610bad9034611ef7565b6040518115909202916000818181858888f19350505050158015610bd5573d6000803e3d6000fd5b505b50505050505050505050505050565b6040805180820190915260008082526020820152825160208401206040517fd6e4fa86000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff908116916350e9a7159187917f00000000000000000000000000000000000000000000000000000000000000009091169063d6e4fa8690602401602060405180830381865afa158015610cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf9190611ead565b866040518463ffffffff1660e01b8152600401610cfe93929190611f5a565b6040805180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3e9190611f7f565b949350505050565b60006003610d5383611641565b101592915050565b610d698383836000806110a2565b505050565b80516020820120600090610d8183610d46565b8015610e3757506040517f96e494e8000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906396e494e890602401602060405180830381865afa158015610e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e379190611da9565b9392505050565b895160208b01206000908515801590610e6b575073ffffffffffffffffffffffffffffffffffffffff8816155b15610ea2576040517fd3f605c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808b8b8a8a8a8e8b8b8b604051602001610ec59a9998979695949392919061207e565b604051602081830303815290604052805190602001209150509a9950505050505050505050565b6000818152600160205260409020544290610f28907f000000000000000000000000000000000000000000000000000000000000000090611e05565b10610f62576040517f0a059d710000000000000000000000000000000000000000000000000000000081526004810182905260240161060a565b6000908152600160205260409020429055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ff6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060a565b73ffffffffffffffffffffffffffffffffffffffff8116611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161060a565b61058a816112a7565b600085856040516110b4929190611dc6565b604080519182900382206020601f89018190048102840181019092528783529250829160009161110191908a908a90819084018382808284376000920191909152508a9250610be6915050565b805190915034101561113f576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47d2e9fe000000000000000000000000000000000000000000000000000000008152600481018390526024810187905263ffffffff8616604482015267ffffffffffffffff851660648201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906347d2e9fe906084016020604051808303816000875af11580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190611ead565b825190915034111561125e57815133906108fc906112349034611ef7565b6040518115909202916000818181858888f1935050505015801561125c573d6000803e3d6000fd5b505b837f3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae8a8a34856040516112949493929190612100565b60405180910390a2505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600160205260409020544290611358907f000000000000000000000000000000000000000000000000000000000000000090611e05565b1115611393576040517f5320bcf90000000000000000000000000000000000000000000000000000000081526004810182905260240161060a565b60008181526001602052604090205442906113cf907f000000000000000000000000000000000000000000000000000000000000000090611e05565b11611409576040517fcb7690d70000000000000000000000000000000000000000000000000000000081526004810182905260240161060a565b61141283610d6e565b61144a57826040517f477707e800000000000000000000000000000000000000000000000000000000815260040161060a9190612127565b6000818152600160205260408120556224ea00821015610d69576040517f9a71997b0000000000000000000000000000000000000000000000000000000081526004810183905260240161060a565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae602080830191909152818301869052825180830384018152606083019384905280519101207fe32954eb00000000000000000000000000000000000000000000000000000000909252859073ffffffffffffffffffffffffffffffffffffffff82169063e32954eb906115399085908890889060640161213a565b6000604051808303816000875af1158015611558573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610817919081019061215d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637a806d6b338385876040516020016115d0919061225c565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016115fe949392919061229d565b6020604051808303816000875af115801561161d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190611ead565b8051600090819081905b8082101561183f576000858381518110611667576116676122e8565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f80000000000000000000000000000000000000000000000000000000000000008110156116ca576116c3600184611e05565b925061182c565b7fe0000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561171f576116c3600284611e05565b7ff0000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082161015611774576116c3600384611e05565b7ff8000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156117c9576116c3600484611e05565b7ffc000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561181e576116c3600584611e05565b611829600684611e05565b92505b508261183781612317565b93505061164b565b50909392505050565b60006020828403121561185a57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e3757600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146118ae57600080fd5b919050565b6000806000606084860312156118c857600080fd5b6118d18461188a565b92506118df6020850161188a565b9150604084013590509250925092565b60008083601f84011261190157600080fd5b50813567ffffffffffffffff81111561191957600080fd5b60208301915083602082850101111561193157600080fd5b9250929050565b803563ffffffff811681146118ae57600080fd5b803567ffffffffffffffff811681146118ae57600080fd5b60008060008060006080868803121561197c57600080fd5b853567ffffffffffffffff81111561199357600080fd5b61199f888289016118ef565b909650945050602086013592506119b860408701611938565b91506119c66060870161194c565b90509295509295909350565b60008083601f8401126119e457600080fd5b50813567ffffffffffffffff8111156119fc57600080fd5b6020830191508360208260051b850101111561193157600080fd5b801515811461058a57600080fd5b60008060008060008060008060008060006101208c8e031215611a4757600080fd5b67ffffffffffffffff808d351115611a5e57600080fd5b611a6b8e8e358f016118ef565b909c509a50611a7c60208e0161188a565b995060408d0135985060608d01359750611a9860808e0161188a565b96508060a08e01351115611aab57600080fd5b50611abc8d60a08e01358e016119d2565b909550935060c08c0135611acf81611a17565b9250611add60e08d01611938565b9150611aec6101008d0161194c565b90509295989b509295989b9093969950565b600060208284031215611b1057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b6f57611b6f611b17565b604052919050565b600067ffffffffffffffff821115611b9157611b91611b17565b50601f01601f191660200190565b600082601f830112611bb057600080fd5b8135611bc3611bbe82611b77565b611b46565b818152846020838601011115611bd857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611c0857600080fd5b823567ffffffffffffffff811115611c1f57600080fd5b611c2b85828601611b9f565b95602094909401359450505050565b600060208284031215611c4c57600080fd5b813567ffffffffffffffff811115611c6357600080fd5b610d3e84828501611b9f565b600080600060408486031215611c8457600080fd5b833567ffffffffffffffff811115611c9b57600080fd5b611ca7868287016118ef565b909790965060209590950135949350505050565b6000806000806000806000806000806101208b8d031215611cdb57600080fd5b8a3567ffffffffffffffff80821115611cf357600080fd5b611cff8e838f01611b9f565b9b50611d0d60208e0161188a565b9a5060408d0135995060608d01359850611d2960808e0161188a565b975060a08d0135915080821115611d3f57600080fd5b50611d4c8d828e016119d2565b90965094505060c08b0135611d6081611a17565b9250611d6e60e08c01611938565b9150611d7d6101008c0161194c565b90509295989b9194979a5092959850565b600060208284031215611da057600080fd5b610e378261188a565b600060208284031215611dbb57600080fd5b8151610e3781611a17565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561053d5761053d611dd6565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60c081526000611e5760c08301898b611e18565b905073ffffffffffffffffffffffffffffffffffffffff808816602084015286604084015280861660608401525063ffffffff8416608083015267ffffffffffffffff831660a083015298975050505050505050565b600060208284031215611ebf57600080fd5b5051919050565b608081526000611eda608083018789611e18565b602083019590955250604081019290925260609091015292915050565b8181038181111561053d5761053d611dd6565b60005b83811015611f25578181015183820152602001611f0d565b50506000910152565b60008151808452611f46816020860160208601611f0a565b601f01601f19169290920160200192915050565b606081526000611f6d6060830186611f2e565b60208301949094525060400152919050565b600060408284031215611f9157600080fd5b6040516040810181811067ffffffffffffffff82111715611fb457611fb4611b17565b604052825181526020928301519281019290925250919050565b81835260006020808501808196508560051b810191508460005b8781101561207157828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe188360301811261202757600080fd5b8701858101903567ffffffffffffffff81111561204357600080fd5b80360382131561205257600080fd5b61205d868284611e18565b9a87019a9550505090840190600101611fe8565b5091979650505050505050565b60006101208c835273ffffffffffffffffffffffffffffffffffffffff808d1660208501528b6040850152808b166060850152508060808401526120c5818401898b611fce565b60a0840197909752505092151560c084015263ffffffff9190911660e083015267ffffffffffffffff16610100909101529695505050505050565b606081526000612114606083018688611e18565b6020830194909452506040015292915050565b602081526000610e376020830184611f2e565b838152604060208201526000612154604083018486611fce565b95945050505050565b6000602080838503121561217057600080fd5b825167ffffffffffffffff8082111561218857600080fd5b818501915085601f83011261219c57600080fd5b8151818111156121ae576121ae611b17565b8060051b6121bd858201611b46565b91825283810185019185810190898411156121d757600080fd5b86860192505b8383101561224f578251858111156121f55760008081fd5b8601603f81018b136122075760008081fd5b878101516040612219611bbe83611b77565b8281528d8284860101111561222e5760008081fd5b61223d838c8301848701611f0a565b855250505091860191908601906121dd565b9998505050505050505050565b6000825161226e818460208701611f0a565b7f2e65746800000000000000000000000000000000000000000000000000000000920191825250600401919050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152808516604084015250608060608301526122de6080830184611f2e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361234857612348611dd6565b506001019056fea264697066735822122017192ec0669d3c7f55a76e07949904209c5367ceadf92f8bf1326661acf3f14164736f6c63430008110033",
              "opcodes": "PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x25AB CODESIZE SUB DUP1 PUSH3 0x25AB DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x11A JUMP JUMPDEST PUSH3 0x40 CALLER PUSH3 0xB1 JUMP JUMPDEST DUP4 DUP4 GT PUSH3 0x61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7CB5507 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP4 GT ISZERO PUSH3 0x83 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4319E5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x80 MSTORE SWAP4 DUP6 AND PUSH1 0xA0 MSTORE PUSH1 0xC0 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xE0 MSTORE DUP3 AND PUSH2 0x100 MSTORE AND PUSH2 0x120 MSTORE PUSH3 0x197 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 MLOAD PUSH3 0x141 DUP2 PUSH3 0x101 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 SWAP7 POP PUSH3 0x154 DUP2 PUSH3 0x101 JUMP JUMPDEST DUP1 SWAP6 POP POP PUSH1 0x40 DUP8 ADD MLOAD SWAP4 POP PUSH1 0x60 DUP8 ADD MLOAD SWAP3 POP PUSH1 0x80 DUP8 ADD MLOAD PUSH3 0x176 DUP2 PUSH3 0x101 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x189 DUP2 PUSH3 0x101 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x2385 PUSH3 0x226 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x38D ADD MSTORE DUP2 DUP2 PUSH2 0x74F ADD MSTORE DUP2 DUP2 PUSH2 0x9E4 ADD MSTORE PUSH2 0x1194 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x228 ADD MSTORE PUSH2 0x1582 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3F4 ADD MSTORE DUP2 DUP2 PUSH2 0xF03 ADD MSTORE PUSH2 0x13AA ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x30E ADD MSTORE PUSH2 0x1333 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x428 ADD MSTORE PUSH2 0xC30 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0xC72 ADD MSTORE PUSH2 0xDB7 ADD MSTORE PUSH2 0x2385 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D839FFE GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xAEB8CE9B GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xD555254A GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD555254A EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0xF14FCBC8 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAEB8CE9B EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xCE1E09C0 EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0xD3419BF3 EQ PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9791C097 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x9791C097 EQ PUSH2 0x35B JUMPI DUP1 PUSH4 0xA8E5FBC0 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0xACF1A841 EQ PUSH2 0x3AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8D839FFE EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ACAAF26 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x839DF945 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x839DF945 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x83E7F6FF EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x8A95B09F EQ PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ACAAF26 EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x80869853 EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5D3590D5 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x5D3590D5 EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x6459220F EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x1A4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x1848 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x543 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x18B3 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1B9 PUSH2 0x1E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1964 JUMP JUMPDEST PUSH2 0x6B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x820 JUMP JUMPDEST PUSH2 0x1B9 PUSH2 0x211 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x8AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x2C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BF5 JUMP JUMPDEST PUSH2 0xBE6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0x19B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH3 0x24EA00 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C3A JUMP JUMPDEST PUSH2 0xD46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1B9 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6F JUMP JUMPDEST PUSH2 0xD5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x1C3A JUMP JUMPDEST PUSH2 0xD6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CBB JUMP JUMPDEST PUSH2 0xE3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0xEEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x4A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8E JUMP JUMPDEST PUSH2 0xF75 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x53D JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xDF7ED18100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP3 SWAP1 SWAP2 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x58A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x613 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6AC SWAP2 SWAP1 PUSH2 0x1DA9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x6C4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0xF44779B900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xF44779B9 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D1 SWAP2 SWAP1 PUSH2 0x1DA9 JUMP JUMPDEST PUSH2 0x80A JUMPI PUSH1 0x40 MLOAD PUSH32 0xE4FD57AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH2 0x817 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x10A2 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x8A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x60A JUMP JUMPDEST PUSH2 0x8AB PUSH1 0x0 PUSH2 0x12A7 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F0 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP14 SWAP3 POP PUSH2 0xBE6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD SWAP2 SWAP3 POP PUSH2 0x903 SWAP2 PUSH2 0x1E05 JUMP JUMPDEST CALLVALUE LT ISZERO PUSH2 0x93C JUMPI PUSH1 0x40 MLOAD PUSH32 0x1101129400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9E0 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP11 PUSH2 0x9DB DUP16 DUP16 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0xE3E JUMP JUMPDEST PUSH2 0x131C JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9F56DAC6 DUP15 DUP15 DUP15 DUP15 DUP14 DUP11 DUP11 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA47 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA8A SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 POP DUP6 ISZERO PUSH2 0xAB5 JUMPI PUSH2 0xAB5 DUP9 DUP15 DUP15 PUSH1 0x40 MLOAD PUSH2 0xAA6 SWAP3 SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP10 DUP10 PUSH2 0x1499 JUMP JUMPDEST DUP5 ISZERO PUSH2 0xAFE JUMPI PUSH2 0xAFE DUP14 DUP14 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP CALLER SWAP2 POP PUSH2 0x1580 SWAP1 POP JUMP JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xB25 SWAP3 SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x69E37F151EB98A09618DDAA80C8CFAF1CE5996867C489F45B555B412271EBF27 DUP16 DUP16 DUP7 PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x20 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH2 0xB6C SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1EC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x20 DUP3 ADD MLOAD DUP3 MLOAD PUSH2 0xB85 SWAP2 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST CALLVALUE GT ISZERO PUSH2 0xBD7 JUMPI PUSH1 0x20 DUP3 ADD MLOAD DUP3 MLOAD CALLER SWAP2 PUSH2 0x8FC SWAP2 PUSH2 0xBA3 SWAP2 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST PUSH2 0xBAD SWAP1 CALLVALUE PUSH2 0x1EF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xBD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP3 MLOAD PUSH1 0x20 DUP5 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH32 0xD6E4FA8600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH4 0x50E9A715 SWAP2 DUP8 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xD6E4FA86 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCDF SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCFE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F5A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD3E SWAP2 SWAP1 PUSH2 0x1F7F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH2 0xD53 DUP4 PUSH2 0x1641 JUMP JUMPDEST LT ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD69 DUP4 DUP4 DUP4 PUSH1 0x0 DUP1 PUSH2 0x10A2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH1 0x0 SWAP1 PUSH2 0xD81 DUP4 PUSH2 0xD46 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE37 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x96E494E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x96E494E8 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE13 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE37 SWAP2 SWAP1 PUSH2 0x1DA9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP10 MLOAD PUSH1 0x20 DUP12 ADD KECCAK256 PUSH1 0x0 SWAP1 DUP6 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xE6B JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND ISZERO JUMPDEST ISZERO PUSH2 0xEA2 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD3F605C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP12 DUP12 DUP11 DUP11 DUP11 DUP15 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xEC5 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x207E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0xF28 SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST LT PUSH2 0xF62 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA059D7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 TIMESTAMP SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x60A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1099 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x60A JUMP JUMPDEST PUSH2 0x58A DUP2 PUSH2 0x12A7 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x10B4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 PUSH1 0x20 PUSH1 0x1F DUP10 ADD DUP2 SWAP1 DIV DUP2 MUL DUP5 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP8 DUP4 MSTORE SWAP3 POP DUP3 SWAP2 PUSH1 0x0 SWAP2 PUSH2 0x1101 SWAP2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP11 SWAP3 POP PUSH2 0xBE6 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP CALLVALUE LT ISZERO PUSH2 0x113F JUMPI PUSH1 0x40 MLOAD PUSH32 0x1101129400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x47D2E9FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x47D2E9FE SWAP1 PUSH1 0x84 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1216 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP CALLVALUE GT ISZERO PUSH2 0x125E JUMPI DUP2 MLOAD CALLER SWAP1 PUSH2 0x8FC SWAP1 PUSH2 0x1234 SWAP1 CALLVALUE PUSH2 0x1EF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x125C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST DUP4 PUSH32 0x3DA24C024582931CFAF8267D8ED24D13A82A8068D5BD337D30EC45CEA4E506AE DUP11 DUP11 CALLVALUE DUP6 PUSH1 0x40 MLOAD PUSH2 0x1294 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0x1358 SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST GT ISZERO PUSH2 0x1393 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5320BCF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0x13CF SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST GT PUSH2 0x1409 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCB7690D700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH2 0x1412 DUP4 PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x144A JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x477707E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60A SWAP2 SWAP1 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH3 0x24EA00 DUP3 LT ISZERO PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9A71997B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 DUP4 ADD SWAP4 DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH32 0xE32954EB00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE DUP6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xE32954EB SWAP1 PUSH2 0x1539 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x64 ADD PUSH2 0x213A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1558 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x817 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x215D JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7A806D6B CALLER DUP4 DUP6 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x15D0 SWAP2 SWAP1 PUSH2 0x225C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15FE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x229D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x161D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6AC SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x183F JUMPI PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1667 JUMPI PUSH2 0x1667 PUSH2 0x22E8 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x16CA JUMPI PUSH2 0x16C3 PUSH1 0x1 DUP5 PUSH2 0x1E05 JUMP JUMPDEST SWAP3 POP PUSH2 0x182C JUMP JUMPDEST PUSH32 0xE000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x171F JUMPI PUSH2 0x16C3 PUSH1 0x2 DUP5 PUSH2 0x1E05 JUMP JUMPDEST PUSH32 0xF000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x1774 JUMPI PUSH2 0x16C3 PUSH1 0x3 DUP5 PUSH2 0x1E05 JUMP JUMPDEST PUSH32 0xF800000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x17C9 JUMPI PUSH2 0x16C3 PUSH1 0x4 DUP5 PUSH2 0x1E05 JUMP JUMPDEST PUSH32 0xFC00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x181E JUMPI PUSH2 0x16C3 PUSH1 0x5 DUP5 PUSH2 0x1E05 JUMP JUMPDEST PUSH2 0x1829 PUSH1 0x6 DUP5 PUSH2 0x1E05 JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP3 PUSH2 0x1837 DUP2 PUSH2 0x2317 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x164B JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x185A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xE37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x18AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D1 DUP5 PUSH2 0x188A JUMP JUMPDEST SWAP3 POP PUSH2 0x18DF PUSH1 0x20 DUP6 ADD PUSH2 0x188A JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1901 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x18AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x18AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x197C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1993 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x199F DUP9 DUP3 DUP10 ADD PUSH2 0x18EF JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH2 0x19B8 PUSH1 0x40 DUP8 ADD PUSH2 0x1938 JUMP JUMPDEST SWAP2 POP PUSH2 0x19C6 PUSH1 0x60 DUP8 ADD PUSH2 0x194C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x19E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x1931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x1A47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP14 CALLDATALOAD GT ISZERO PUSH2 0x1A5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A6B DUP15 DUP15 CALLDATALOAD DUP16 ADD PUSH2 0x18EF JUMP JUMPDEST SWAP1 SWAP13 POP SWAP11 POP PUSH2 0x1A7C PUSH1 0x20 DUP15 ADD PUSH2 0x188A JUMP JUMPDEST SWAP10 POP PUSH1 0x40 DUP14 ADD CALLDATALOAD SWAP9 POP PUSH1 0x60 DUP14 ADD CALLDATALOAD SWAP8 POP PUSH2 0x1A98 PUSH1 0x80 DUP15 ADD PUSH2 0x188A JUMP JUMPDEST SWAP7 POP DUP1 PUSH1 0xA0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x1AAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1ABC DUP14 PUSH1 0xA0 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x19D2 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH1 0xC0 DUP13 ADD CALLDATALOAD PUSH2 0x1ACF DUP2 PUSH2 0x1A17 JUMP JUMPDEST SWAP3 POP PUSH2 0x1ADD PUSH1 0xE0 DUP14 ADD PUSH2 0x1938 JUMP JUMPDEST SWAP2 POP PUSH2 0x1AEC PUSH2 0x100 DUP14 ADD PUSH2 0x194C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1B6F JUMPI PUSH2 0x1B6F PUSH2 0x1B17 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1B91 JUMPI PUSH2 0x1B91 PUSH2 0x1B17 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1BB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1BC3 PUSH2 0x1BBE DUP3 PUSH2 0x1B77 JUMP JUMPDEST PUSH2 0x1B46 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C2B DUP6 DUP3 DUP7 ADD PUSH2 0x1B9F JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD3E DUP5 DUP3 DUP6 ADD PUSH2 0x1B9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1C84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CA7 DUP7 DUP3 DUP8 ADD PUSH2 0x18EF JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x1CDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CFF DUP15 DUP4 DUP16 ADD PUSH2 0x1B9F JUMP JUMPDEST SWAP12 POP PUSH2 0x1D0D PUSH1 0x20 DUP15 ADD PUSH2 0x188A JUMP JUMPDEST SWAP11 POP PUSH1 0x40 DUP14 ADD CALLDATALOAD SWAP10 POP PUSH1 0x60 DUP14 ADD CALLDATALOAD SWAP9 POP PUSH2 0x1D29 PUSH1 0x80 DUP15 ADD PUSH2 0x188A JUMP JUMPDEST SWAP8 POP PUSH1 0xA0 DUP14 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D4C DUP14 DUP3 DUP15 ADD PUSH2 0x19D2 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0xC0 DUP12 ADD CALLDATALOAD PUSH2 0x1D60 DUP2 PUSH2 0x1A17 JUMP JUMPDEST SWAP3 POP PUSH2 0x1D6E PUSH1 0xE0 DUP13 ADD PUSH2 0x1938 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D7D PUSH2 0x100 DUP13 ADD PUSH2 0x194C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE37 DUP3 PUSH2 0x188A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE37 DUP2 PUSH2 0x1A17 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x53D JUMPI PUSH2 0x53D PUSH2 0x1DD6 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1E57 PUSH1 0xC0 DUP4 ADD DUP10 DUP12 PUSH2 0x1E18 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP7 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1EDA PUSH1 0x80 DUP4 ADD DUP8 DUP10 PUSH2 0x1E18 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP PUSH1 0x40 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x53D JUMPI PUSH2 0x53D PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F25 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1F0D JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1F46 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1F0A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1F6D PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1F2E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1FB4 JUMPI PUSH2 0x1FB4 PUSH2 0x1B17 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP6 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP5 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x2071 JUMPI DUP3 DUP5 SUB DUP10 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP9 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2027 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 ADD DUP6 DUP2 ADD SWAP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2043 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x2052 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x205D DUP7 DUP3 DUP5 PUSH2 0x1E18 JUMP JUMPDEST SWAP11 DUP8 ADD SWAP11 SWAP6 POP POP POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1FE8 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP13 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP14 AND PUSH1 0x20 DUP6 ADD MSTORE DUP12 PUSH1 0x40 DUP6 ADD MSTORE DUP1 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE POP DUP1 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x20C5 DUP2 DUP5 ADD DUP10 DUP12 PUSH2 0x1FCE JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD SWAP8 SWAP1 SWAP8 MSTORE POP POP SWAP3 ISZERO ISZERO PUSH1 0xC0 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x100 SWAP1 SWAP2 ADD MSTORE SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2114 PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1E18 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE37 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1F2E JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2154 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x1FCE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x219C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x21AE JUMPI PUSH2 0x21AE PUSH2 0x1B17 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x21BD DUP6 DUP3 ADD PUSH2 0x1B46 JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP6 DUP2 ADD SWAP1 DUP10 DUP5 GT ISZERO PUSH2 0x21D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x224F JUMPI DUP3 MLOAD DUP6 DUP2 GT ISZERO PUSH2 0x21F5 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP7 ADD PUSH1 0x3F DUP2 ADD DUP12 SGT PUSH2 0x2207 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 DUP2 ADD MLOAD PUSH1 0x40 PUSH2 0x2219 PUSH2 0x1BBE DUP4 PUSH2 0x1B77 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP14 DUP3 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x222E JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x223D DUP4 DUP13 DUP4 ADD DUP5 DUP8 ADD PUSH2 0x1F0A JUMP JUMPDEST DUP6 MSTORE POP POP POP SWAP2 DUP7 ADD SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH2 0x21DD JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x226E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1F0A JUMP JUMPDEST PUSH32 0x2E65746800000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x4 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x22DE PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1F2E JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2348 JUMPI PUSH2 0x2348 PUSH2 0x1DD6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR NOT 0x2E 0xC0 PUSH7 0x9D3C7F55A76E07 SWAP5 SWAP10 DIV KECCAK256 SWAP13 MSTORE8 PUSH8 0xCEADF92F8BF13266 PUSH2 0xACF3 CALL COINBASE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "1205:8208:44:-:0;;;2284:687;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;921:32:2;719:10:14;921:18:2;:32::i;:::-;2559:17:44;2538;:38;2534:100;;2599:24;;-1:-1:-1;;;2599:24:44;;;;;;;;;;;2534:100;2668:15;2648:17;:35;2644:98;;;2706:25;;-1:-1:-1;;;2706:25:44;;;;;;;;;;;2644:98;-1:-1:-1;;;;;2752:12:44;;;;;2774:16;;;;;2800:36;;;;;2846;;2892;;;;2938:26;;;1205:8208;;2270:187:2;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:160:111:-;-1:-1:-1;;;;;118:31:111;;108:42;;98:70;;164:1;161;154:12;98:70;14:160;:::o;179:1000::-;400:6;408;416;424;432;440;493:3;481:9;472:7;468:23;464:33;461:53;;;510:1;507;500:12;461:53;542:9;536:16;561:60;615:5;561:60;:::i;:::-;690:2;675:18;;669:25;640:5;;-1:-1:-1;703:62:111;669:25;703:62;:::i;:::-;784:7;774:17;;;831:2;820:9;816:18;810:25;800:35;;875:2;864:9;860:18;854:25;844:35;;924:3;913:9;909:19;903:26;938:62;992:7;938:62;:::i;:::-;1071:3;1056:19;;1050:26;1019:7;;-1:-1:-1;1085:62:111;1050:26;1085:62;:::i;:::-;1166:7;1156:17;;;179:1000;;;;;;;;:::o;:::-;1205:8208:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@MIN_REGISTRATION_DURATION_9836": {
                  "entryPoint": null,
                  "id": 9836,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_consumeCommitment_10529": {
                  "entryPoint": 4892,
                  "id": 10529,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_renew_10427": {
                  "entryPoint": 4258,
                  "id": 10427,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_setRecords_10564": {
                  "entryPoint": 5273,
                  "id": 10564,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_setReverseRecord_10589": {
                  "entryPoint": 5504,
                  "id": 10589,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_transferOwnership_641": {
                  "entryPoint": 4775,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@available_10031": {
                  "entryPoint": 3438,
                  "id": 10031,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@commit_10125": {
                  "entryPoint": 3820,
                  "id": 10125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@commitments_9866": {
                  "entryPoint": null,
                  "id": 9866,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@makeCommitment_10097": {
                  "entryPoint": 3646,
                  "id": 10097,
                  "parameterSlots": 10,
                  "returnSlots": 1
                },
                "@maxCommitmentAge_9856": {
                  "entryPoint": null,
                  "id": 9856,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@minCommitmentAge_9854": {
                  "entryPoint": null,
                  "id": 9854,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nameWrapper_9862": {
                  "entryPoint": null,
                  "id": 9862,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@prices_9852": {
                  "entryPoint": null,
                  "id": 9852,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@recoverFunds_15872": {
                  "entryPoint": 1421,
                  "id": 15872,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@register_10271": {
                  "entryPoint": 2221,
                  "id": 10271,
                  "parameterSlots": 11,
                  "returnSlots": 0
                },
                "@renewWithFuses_10338": {
                  "entryPoint": 1714,
                  "id": 10338,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@renew_10287": {
                  "entryPoint": 3419,
                  "id": 10287,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@renounceOwnership_598": {
                  "entryPoint": 2080,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@rentPrice_9987": {
                  "entryPoint": 3046,
                  "id": 9987,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@reverseRegistrar_9859": {
                  "entryPoint": null,
                  "id": 9859,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@strlen_12019": {
                  "entryPoint": 5697,
                  "id": 12019,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_10466": {
                  "entryPoint": 1194,
                  "id": 10466,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferOwnership_621": {
                  "entryPoint": 3957,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@valid_10001": {
                  "entryPoint": 3398,
                  "id": 10001,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@withdraw_10444": {
                  "entryPoint": 1347,
                  "id": 10444,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 6282,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_bytes_calldata_dyn_calldata": {
                  "entryPoint": 6610,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_string": {
                  "entryPoint": 7071,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_string_calldata": {
                  "entryPoint": 6383,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 7566,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 6323,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromMemory": {
                  "entryPoint": 8541,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 7593,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 6910,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 6216,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256t_bytes32t_addresst_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_boolt_uint32t_uint64": {
                  "entryPoint": 6693,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 11
                },
                "abi_decode_tuple_t_string_calldata_ptrt_uint256": {
                  "entryPoint": 7279,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint32t_uint64": {
                  "entryPoint": 6500,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_string_memory_ptr": {
                  "entryPoint": 7226,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptrt_addresst_uint256t_bytes32t_addresst_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_boolt_uint32t_uint64": {
                  "entryPoint": 7355,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 10
                },
                "abi_decode_tuple_t_string_memory_ptrt_uint256": {
                  "entryPoint": 7157,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_struct$_Price_$11328_memory_ptr_fromMemory": {
                  "entryPoint": 8063,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 7853,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_uint32": {
                  "entryPoint": 6456,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint64": {
                  "entryPoint": 6476,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes_calldata_dyn_calldata": {
                  "entryPoint": 8142,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 7982,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_calldata": {
                  "entryPoint": 7704,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 7622,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_3fb990fa953eacf73a21f422399a8c2bc86a94e3bd2a6dff82e1db46f66eeb4e__to_t_string_memory_ptr_t_bytes4__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 8796,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_string_memory_ptr__to_t_address_t_address_t_address_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 8861,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_uint256_t_address_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_t_bytes32_t_bool_t_uint32_t_uint64__to_t_bytes32_t_address_t_uint256_t_address_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_bytes32_t_bool_t_uint32_t_uint64__fromStack_reversed": {
                  "entryPoint": 8318,
                  "id": null,
                  "parameterSlots": 11,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 8506,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_INameWrapper_$18030__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IPriceOracle_$11342__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ReverseRegistrar_$13213__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint256_t_address_t_uint32_t_uint64__to_t_string_memory_ptr_t_address_t_uint256_t_address_t_uint32_t_uint64__fromStack_reversed": {
                  "entryPoint": 7747,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": 8448,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr_t_uint256_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": 7878,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 8487,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": 8026,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_uint32_t_uint64__to_t_uint256_t_uint256_t_uint32_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 6982,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_string": {
                  "entryPoint": 7031,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 7685,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 7927,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 7946,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 8983,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 7638,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 8936,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 6935,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 6679,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:22582:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "592:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "602:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "624:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "611:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "611:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "602:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "717:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "726:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "729:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "719:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "719:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "653:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "664:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "671:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "660:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "660:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "650:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "650:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "643:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "643:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "640:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "571:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "582:5:111",
                            "type": ""
                          }
                        ],
                        "src": "543:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "848:224:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "894:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "903:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "906:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "896:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "896:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "896:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "869:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "878:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "865:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "865:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "890:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "861:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "861:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "858:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "919:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "948:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "929:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "929:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "919:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "967:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1000:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1011:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "996:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "996:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "977:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "977:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "967:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1024:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1051:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1062:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1047:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1047:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1034:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1034:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1024:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "798:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "809:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "821:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "829:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "837:6:111",
                            "type": ""
                          }
                        ],
                        "src": "744:328:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1150:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1199:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1208:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1211:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1201:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1201:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1201:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1178:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1186:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1174:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1174:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1193:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1170:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1170:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1163:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1163:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1160:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1224:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1247:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1234:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1234:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1224:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1297:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1306:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1309:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1299:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1299:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1299:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1269:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1277:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1266:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1266:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1263:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1322:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1338:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1346:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1334:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1334:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1322:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1403:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1412:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1415:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1405:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1405:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1405:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1374:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1382:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1370:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1370:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1391:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1366:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1366:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1398:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1363:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1363:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1360:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_string_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1113:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1121:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "1129:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1139:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1077:348:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1478:115:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1488:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1510:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1497:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1497:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1488:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1571:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1580:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1583:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1573:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1573:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1573:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1539:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1550:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1557:10:111",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1546:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1546:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1536:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1536:33:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1529:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1529:41:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1526:61:111"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1457:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1468:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1430:163:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1646:123:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1656:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1678:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1665:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1665:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1656:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1747:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1756:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1759:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1749:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1749:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1749:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1718:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1725:18:111",
                                            "type": "",
                                            "value": "0xffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1714:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1714:30:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1704:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1704:41:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1697:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1697:49:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1694:69:111"
                            }
                          ]
                        },
                        "name": "abi_decode_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1625:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1636:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1598:171:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1913:485:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1960:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1969:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1972:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1962:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1962:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1962:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1934:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1943:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1930:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1930:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1955:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1926:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1926:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1923:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1985:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2012:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1999:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1999:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1989:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2065:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2074:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2077:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2067:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2067:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2067:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2037:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2045:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2034:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2034:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2031:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2090:85:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2147:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2158:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2143:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2143:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2167:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2116:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2116:59:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2094:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2104:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2184:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "2194:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2184:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2211:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "2221:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2211:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2238:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2265:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2276:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2261:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2261:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2248:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2248:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2238:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2289:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2321:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2332:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2317:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2317:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "2299:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2299:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2289:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2345:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2377:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2388:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2373:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2373:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "2355:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2355:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2345:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1847:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1858:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1870:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1878:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1886:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1894:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1902:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1774:624:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2494:283:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2543:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2552:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2555:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2545:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2545:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2545:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2522:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2530:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2518:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2518:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2537:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2514:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2514:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2507:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2507:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2504:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2568:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2591:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2578:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2578:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2568:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2641:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2650:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2653:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2643:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2643:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2643:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2613:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2621:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2610:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2610:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2607:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2666:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2682:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2690:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2678:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2678:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "2666:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2755:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2764:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2767:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2757:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2757:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2757:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2718:6:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2730:1:111",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2733:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2726:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2726:14:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2714:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2714:27:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2743:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2710:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2710:38:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "2750:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2707:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2707:47:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2704:67:111"
                            }
                          ]
                        },
                        "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2457:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2465:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "2473:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2483:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2403:374:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2824:76:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2878:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2887:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2890:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2880:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2880:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2880:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2847:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2868:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "2861:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2861:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2854:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2854:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2844:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2844:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2837:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2837:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2834:60:111"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2813:5:111",
                            "type": ""
                          }
                        ],
                        "src": "2782:118:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3173:1042:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3220:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3229:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3232:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3222:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3222:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3222:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3194:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3203:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3190:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3190:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3215:3:111",
                                    "type": "",
                                    "value": "288"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3186:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3186:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3183:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3245:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3255:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3249:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3317:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3326:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3329:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3319:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3319:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3319:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3301:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3288:12:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3288:23:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3313:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3285:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3285:31:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3282:51:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3342:102:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3399:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3423:9:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3410:12:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3410:23:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3395:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3395:39:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3436:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "3368:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3368:76:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3346:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3356:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3453:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "3463:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3453:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3480:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "3490:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3480:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3507:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3540:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3551:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3536:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3536:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3517:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3517:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3507:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3564:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3591:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3602:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3587:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3587:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3574:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3574:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3564:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3615:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3642:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3653:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3638:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3638:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3625:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3625:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3615:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3666:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3699:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3710:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3695:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3695:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3676:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3676:39:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3769:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3778:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3781:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3771:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3771:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3771:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3747:9:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3758:3:111",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3743:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3743:19:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3730:12:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3730:33:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3765:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3727:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3727:41:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3724:61:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3794:130:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3869:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "3897:9:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3908:3:111",
                                                "type": "",
                                                "value": "160"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3893:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3893:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3880:12:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3880:33:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3865:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3865:49:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3916:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "3820:44:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3820:104:111"
                              },
                              "variables": [
                                {
                                  "name": "value6_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3798:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value7_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3808:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3933:18:111",
                              "value": {
                                "name": "value6_1",
                                "nodeType": "YulIdentifier",
                                "src": "3943:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3933:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3960:18:111",
                              "value": {
                                "name": "value7_1",
                                "nodeType": "YulIdentifier",
                                "src": "3970:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "3960:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3987:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4017:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4028:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4013:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4013:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4000:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4000:33:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3991:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4064:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "4042:21:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4042:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4042:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4079:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4089:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value8",
                                  "nodeType": "YulIdentifier",
                                  "src": "4079:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4103:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4135:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4146:3:111",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4131:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4131:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "4113:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4113:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value9",
                                  "nodeType": "YulIdentifier",
                                  "src": "4103:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4160:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4193:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4204:3:111",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4189:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4189:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "4171:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4171:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value10",
                                  "nodeType": "YulIdentifier",
                                  "src": "4160:7:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256t_bytes32t_addresst_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_boolt_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3058:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3069:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3081:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3089:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3097:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3105:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3113:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3121:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "3129:6:111",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "3137:6:111",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "3145:6:111",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "3153:6:111",
                            "type": ""
                          },
                          {
                            "name": "value10",
                            "nodeType": "YulTypedName",
                            "src": "3161:7:111",
                            "type": ""
                          }
                        ],
                        "src": "2905:1310:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4347:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4357:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4369:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4380:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4365:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4365:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4357:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4399:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4414:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4422:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4410:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4410:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4392:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4392:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4392:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ReverseRegistrar_$13213__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4316:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4327:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4338:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4220:252:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4547:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4593:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4602:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4605:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4595:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4595:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4595:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4568:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4577:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4564:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4564:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4589:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4560:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4560:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4557:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4618:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4641:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4628:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4628:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4618:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4513:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4524:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4536:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4477:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4763:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4773:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4785:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4796:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4781:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4781:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4773:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4815:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4826:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4808:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4808:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4808:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4732:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4743:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4754:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4662:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4876:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4893:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4896:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4886:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4886:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4886:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4990:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4993:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4983:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4983:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4983:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5014:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5017:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5007:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5007:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5007:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "4844:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5078:289:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5088:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5104:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5098:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5098:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5088:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5116:117:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5138:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "5154:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5160:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5150:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5150:13:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5165:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5146:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5146:86:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5134:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5134:99:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "5120:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5308:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "5310:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5310:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5310:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5251:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5263:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5287:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5299:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5284:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5284:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5245:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5245:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5242:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5346:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5350:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5339:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5339:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5339:22:111"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "5058:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "5067:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5033:334:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5430:188:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5474:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "5476:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5476:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5476:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5446:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5454:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5443:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5443:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5440:56:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5505:107:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "5525:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5533:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5521:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5521:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5538:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5517:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5517:88:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5607:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5513:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5513:99:111"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "5505:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "5410:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "5421:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5372:246:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5676:411:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5725:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5734:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5737:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5727:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5727:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5727:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "5704:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5712:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5700:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5700:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "5719:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5696:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5696:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5689:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5689:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5686:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5750:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5773:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5760:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5760:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5754:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5789:64:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5849:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_string",
                                      "nodeType": "YulIdentifier",
                                      "src": "5820:28:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5820:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5804:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5804:49:111"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5793:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5869:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5878:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5862:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5862:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5862:19:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5929:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5938:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5941:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5931:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5931:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5931:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "5904:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5912:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5900:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5900:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5917:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5896:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5896:26:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "5924:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5893:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5893:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5890:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5971:7:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5980:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5967:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5967:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5991:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5999:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5987:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5987:17:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6006:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "5954:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5954:55:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5954:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6033:7:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6042:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6029:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6029:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6047:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6025:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6025:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6054:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6018:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6018:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6018:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6065:16:111",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "6074:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "6065:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "5650:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "5658:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "5666:5:111",
                            "type": ""
                          }
                        ],
                        "src": "5623:464:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6189:293:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6235:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6244:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6247:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6237:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6237:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6237:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6210:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6219:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6206:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6206:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6231:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6202:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6202:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6199:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6260:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6287:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6274:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6274:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6264:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6340:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6349:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6352:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6342:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6342:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6342:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6312:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6320:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6309:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6309:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6306:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6365:60:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6397:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6408:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6393:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6393:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6417:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6375:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6375:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6365:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6434:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6461:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6472:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6457:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6457:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6444:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6444:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6434:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6147:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6158:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6170:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6178:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6092:390:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6636:146:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6646:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6658:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6669:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6654:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6654:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6646:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6688:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6705:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6699:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6699:13:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6681:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6681:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6681:32:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6733:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6744:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6729:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6729:20:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "6761:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6769:4:111",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6757:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6757:17:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6751:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6751:24:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6722:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6722:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6722:54:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6605:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6616:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6627:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6487:295:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6888:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6898:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6910:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6921:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6906:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6906:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6898:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6940:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6955:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6963:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6951:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6951:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6933:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6933:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6933:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6857:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6868:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6879:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6787:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7098:242:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7144:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7153:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7156:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7146:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7146:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7146:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7119:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7128:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7115:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7115:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7140:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7111:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7111:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7108:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7169:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7196:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7183:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7183:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7173:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7249:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7258:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7261:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7251:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7251:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7251:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7221:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7229:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7218:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7218:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7215:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7274:60:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7306:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7317:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7302:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7326:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "7284:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7284:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7274:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7064:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7075:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7087:6:111",
                            "type": ""
                          }
                        ],
                        "src": "7018:322:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7468:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7478:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7490:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7501:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7486:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7486:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7478:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7520:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7535:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7543:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7531:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7531:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7513:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7513:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7513:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_INameWrapper_$18030__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7437:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7448:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7459:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7345:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7705:372:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7751:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7760:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7763:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7753:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7753:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7753:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7726:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7735:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7722:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7722:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7747:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7718:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7718:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7715:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7776:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7803:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7790:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7790:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7780:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7856:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7865:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7868:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7858:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7858:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7858:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7828:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7836:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7825:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7825:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7822:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7881:85:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7938:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7949:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7934:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7934:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7958:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "7907:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7907:59:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7885:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7895:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7975:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "7985:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7975:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8002:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "8012:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8002:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8029:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8056:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8067:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8052:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8052:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8039:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8039:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8029:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7655:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7666:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7678:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7686:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7694:6:111",
                            "type": ""
                          }
                        ],
                        "src": "7598:479:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8205:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8215:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8227:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8238:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8223:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8223:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8215:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8257:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8272:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8280:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8268:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8268:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8250:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8250:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8250:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IPriceOracle_$11342__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8174:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8185:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8196:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8082:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8592:982:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8639:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8648:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8651:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8641:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8641:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8641:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8613:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8622:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8609:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8609:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8634:3:111",
                                    "type": "",
                                    "value": "288"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8605:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8605:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8602:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8664:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8691:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8678:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8678:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8668:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8710:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8720:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8714:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8765:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8774:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8777:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8767:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8767:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8767:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8753:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8761:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8750:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8750:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8747:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8790:60:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8822:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8833:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8818:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8818:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8842:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "8800:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8800:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8790:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8859:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8892:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8903:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8888:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8888:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8869:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8869:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8859:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8916:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8943:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8954:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8939:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8939:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8926:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8926:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8916:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8967:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8994:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9005:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8990:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8990:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8977:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8977:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8967:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9018:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9051:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9062:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9047:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9047:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9028:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9028:39:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9018:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9076:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9109:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9120:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9105:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9105:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9092:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9092:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9080:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9154:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9163:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9166:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9156:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9156:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9156:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9140:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9150:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9137:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9137:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9134:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9179:105:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9254:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9265:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9250:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9250:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9276:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "9205:44:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9205:79:111"
                              },
                              "variables": [
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9183:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value6_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9193:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9293:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "9303:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "9293:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9320:18:111",
                              "value": {
                                "name": "value6_1",
                                "nodeType": "YulIdentifier",
                                "src": "9330:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9320:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9347:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9377:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9388:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9373:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9373:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9360:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9360:33:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9351:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9424:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "9402:21:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9402:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9402:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9439:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9449:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "9439:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9463:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9495:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9506:3:111",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9491:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9491:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "9473:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9473:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value8",
                                  "nodeType": "YulIdentifier",
                                  "src": "9463:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9520:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9552:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9563:3:111",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9548:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9548:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "9530:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9530:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value9",
                                  "nodeType": "YulIdentifier",
                                  "src": "9520:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptrt_addresst_uint256t_bytes32t_addresst_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_boolt_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8486:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8497:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8509:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8517:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8525:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8533:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8541:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "8549:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "8557:6:111",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "8565:6:111",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "8573:6:111",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "8581:6:111",
                            "type": ""
                          }
                        ],
                        "src": "8335:1239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9680:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9690:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9702:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9713:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9698:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9698:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9690:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9732:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9743:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9725:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9725:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9725:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9649:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9660:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9671:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9579:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9831:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9877:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9886:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9889:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9879:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9879:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9879:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9852:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9861:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9848:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9848:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9873:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9844:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9844:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9841:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9902:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9931:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9912:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9912:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9902:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9797:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9808:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9820:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9761:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10126:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10143:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10154:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10136:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10136:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10136:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10177:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10188:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10173:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10173:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10193:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10166:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10166:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10216:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10227:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10212:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10212:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10232:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10205:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10205:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10205:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10276:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10288:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10299:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10284:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10284:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10276:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10103:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10117:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9952:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10442:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10452:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10464:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10475:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10460:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10460:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10452:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10494:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10509:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10517:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10505:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10505:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10487:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10487:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10487:74:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10581:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10592:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10577:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10577:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10597:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10570:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10570:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10570:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10403:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10414:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10422:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10433:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10313:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10693:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10739:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10748:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10751:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10741:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10741:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10741:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10714:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10723:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10710:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10710:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10735:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10706:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10706:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10703:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10764:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10783:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10777:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10777:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10768:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10824:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "10802:21:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10802:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10802:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10839:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10849:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10839:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10659:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10670:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10682:6:111",
                            "type": ""
                          }
                        ],
                        "src": "10615:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11012:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11035:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11040:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11048:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "11022:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11022:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11022:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11064:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11078:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11083:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11074:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11074:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11068:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11106:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11110:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11099:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11099:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11099:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11121:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "11128:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "11121:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "10980:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10985:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10993:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "11004:3:111",
                            "type": ""
                          }
                        ],
                        "src": "10865:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11288:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11305:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11310:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11298:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11298:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11298:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11337:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11342:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11333:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11333:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11347:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11326:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11326:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11326:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11363:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11374:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11379:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11370:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11370:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "11363:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "11256:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11261:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11269:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "11280:3:111",
                            "type": ""
                          }
                        ],
                        "src": "11141:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11522:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11532:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11544:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11555:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11540:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11532:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11574:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11585:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11567:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11567:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11567:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11612:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11623:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11608:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11608:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11632:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11640:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11628:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11628:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11601:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11601:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11601:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11483:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11494:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11502:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11513:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11393:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11727:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11744:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11747:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11737:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11737:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11737:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11841:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11844:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11834:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11834:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11834:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11865:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11868:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11858:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11858:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11858:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11695:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11932:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11942:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11953:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11956:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11949:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11949:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "11942:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11981:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "11983:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11983:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11983:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11973:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "11976:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11970:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11970:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11967:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "11915:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "11918:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "11924:3:111",
                            "type": ""
                          }
                        ],
                        "src": "11884:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12081:259:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12098:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12103:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12091:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12091:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12091:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12136:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12141:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12132:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12132:14:111"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "12148:5:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12155:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "12119:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12119:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12119:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "12186:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "12191:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12182:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12182:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12200:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12178:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12178:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12207:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12171:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12171:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12171:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12218:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12233:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "12246:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12254:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "12242:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12242:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12259:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "12238:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12238:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12229:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12229:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12329:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12225:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12225:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12218:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "12050:5:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "12057:6:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12065:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12073:3:111",
                            "type": ""
                          }
                        ],
                        "src": "12014:326:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12612:456:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12629:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12640:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12622:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12622:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12622:22:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12653:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12688:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12696:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12708:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12719:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12704:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12704:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "12661:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12661:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12653:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12733:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12743:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12737:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12805:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12816:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12801:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12801:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "12825:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12833:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12821:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12821:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12794:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12794:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12794:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12857:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12868:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12853:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12853:18:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12873:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12846:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12846:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12846:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12900:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12911:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12896:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12896:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "12920:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12928:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12916:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12916:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12889:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12889:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12889:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12952:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12963:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12948:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12948:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "12973:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12981:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12969:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12969:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12941:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12941:52:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12941:52:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13013:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13024:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13009:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13009:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "13034:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13042:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13030:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13030:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13002:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13002:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13002:60:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint256_t_address_t_uint32_t_uint64__to_t_string_memory_ptr_t_address_t_uint256_t_address_t_uint32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12533:9:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "12544:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "12552:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "12560:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12568:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12576:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12584:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12592:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12603:4:111",
                            "type": ""
                          }
                        ],
                        "src": "12345:723:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13154:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13200:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13209:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13212:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13202:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13202:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13202:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13175:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13184:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13171:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13171:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13196:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13167:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13167:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13164:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13225:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13241:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13235:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13235:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13225:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13120:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13131:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13143:6:111",
                            "type": ""
                          }
                        ],
                        "src": "13073:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13477:247:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13494:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13505:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13487:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13487:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13487:22:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13518:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13553:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13561:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13573:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13584:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13569:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13569:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "13526:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13526:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13518:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13609:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13620:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13605:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13605:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13625:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13598:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13598:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13598:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13652:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13663:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13648:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13648:18:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13668:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13641:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13641:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13641:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13695:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13706:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13691:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13691:18:111"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "13711:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13684:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13684:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13684:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr_t_uint256_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13414:9:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13425:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13433:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13441:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13449:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13457:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13468:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13262:462:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13778:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13788:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13800:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13803:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "13796:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13796:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "13788:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13829:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13831:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13831:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13831:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "13820:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13826:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13817:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13817:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13814:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13760:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13763:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "13769:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13729:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13928:184:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13938:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13947:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "13942:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14007:63:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "14032:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "14037:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14028:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14028:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14051:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14056:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "14047:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14047:11:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "14041:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14041:18:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14021:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14021:39:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14021:39:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "13968:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13971:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13965:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13965:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "13979:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13981:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "13990:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13993:2:111",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13986:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13986:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "13981:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "13961:3:111",
                                "statements": []
                              },
                              "src": "13957:113:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "14090:3:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "14095:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14086:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14086:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14104:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14079:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14079:27:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14079:27:111"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "13906:3:111",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "13911:3:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "13916:6:111",
                            "type": ""
                          }
                        ],
                        "src": "13862:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14167:280:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14177:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14197:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14191:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14191:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "14181:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "14219:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14224:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14212:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14212:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14212:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "14279:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14286:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14275:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14275:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "14297:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14302:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14293:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14293:14:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14309:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "14240:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14240:76:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14240:76:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14325:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "14340:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "14353:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14361:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "14349:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14349:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14366:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "14345:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14345:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14336:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14336:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14436:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14332:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14332:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "14325:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "14144:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "14151:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "14159:3:111",
                            "type": ""
                          }
                        ],
                        "src": "14117:330:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14629:185:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14646:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14657:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14639:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14639:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14639:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14669:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14695:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14707:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14718:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14703:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14703:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "14677:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14677:45:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14669:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14742:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14753:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14738:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14738:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14758:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14731:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14731:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14731:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14785:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14796:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14781:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14781:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14801:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14774:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14774:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14774:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14582:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14593:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14601:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14609:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14620:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14452:362:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14924:395:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14970:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14979:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14982:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14972:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14972:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14972:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14945:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14954:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14941:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14941:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14966:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14937:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14937:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14934:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14995:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15015:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15009:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15009:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "14999:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15027:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "15049:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15057:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15045:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15045:15:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "15031:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15135:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "15137:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15137:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15137:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15078:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15090:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15075:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15075:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15114:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15126:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15111:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15111:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "15072:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15072:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15069:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15173:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "15177:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15166:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15166:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "15204:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15218:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "15212:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15212:16:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15197:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15197:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15197:32:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15249:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15257:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15245:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15245:15:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "15272:9:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15283:2:111",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "15268:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15268:18:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "15262:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15262:25:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15238:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15238:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15238:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15297:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "15307:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15297:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Price_$11328_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14890:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14901:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14913:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14819:500:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15409:1042:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15426:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15431:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15419:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15419:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15419:19:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15447:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15457:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15451:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15470:31:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15493:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15498:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15489:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15489:12:111"
                              },
                              "variables": [
                                {
                                  "name": "updated_pos",
                                  "nodeType": "YulTypedName",
                                  "src": "15474:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15510:24:111",
                              "value": {
                                "name": "updated_pos",
                                "nodeType": "YulIdentifier",
                                "src": "15523:11:111"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15514:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15543:18:111",
                              "value": {
                                "name": "updated_pos",
                                "nodeType": "YulIdentifier",
                                "src": "15550:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "15543:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15570:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15586:5:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15597:1:111",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "15600:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "15593:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15593:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15582:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15582:26:111"
                              },
                              "variables": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulTypedName",
                                  "src": "15574:4:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15617:19:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15631:5:111"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "15621:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15645:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15654:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "15649:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15713:712:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "15734:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "15743:4:111"
                                            },
                                            {
                                              "name": "pos_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "15749:5:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "15739:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15739:16:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15727:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15727:29:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15727:29:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "15769:46:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "15808:6:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "15795:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15795:20:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulTypedName",
                                        "src": "15773:18:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "15964:16:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15973:1:111",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15976:1:111",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "15966:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "15966:12:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "15966:12:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "rel_offset_of_tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "15842:18:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [],
                                                      "functionName": {
                                                        "name": "calldatasize",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15870:12:111"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "15870:14:111"
                                                    },
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15886:5:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15866:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "15866:26:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "15894:66:111",
                                                  "type": "",
                                                  "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "15862:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "15862:99:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "15838:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15838:124:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "15831:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15831:132:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "15828:152:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "15993:45:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "rel_offset_of_tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "16012:18:111"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "16032:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16008:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16008:30:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulTypedName",
                                        "src": "15997:7:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "16051:37:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16080:7:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "16067:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16067:21:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulTypedName",
                                        "src": "16055:8:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "16101:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16120:7:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16129:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16116:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16116:16:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulTypedName",
                                        "src": "16105:7:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "16181:16:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "16190:1:111",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "16193:1:111",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "16183:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "16183:12:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "16183:12:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "length_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16151:8:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16161:18:111",
                                          "type": "",
                                          "value": "0xffffffffffffffff"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "16148:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16148:32:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "16145:52:111"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "16257:16:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "16266:1:111",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "16269:1:111",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "16259:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "16259:12:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "16259:12:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "value_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "16217:7:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "calldatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "16230:12:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "16230:14:111"
                                            },
                                            {
                                              "name": "length_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "16246:8:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "16226:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "16226:29:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sgt",
                                        "nodeType": "YulIdentifier",
                                        "src": "16213:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16213:43:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "16210:63:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16286:59:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "value_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "16321:7:111"
                                        },
                                        {
                                          "name": "length_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16330:8:111"
                                        },
                                        {
                                          "name": "tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "16340:4:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_string_calldata",
                                        "nodeType": "YulIdentifier",
                                        "src": "16294:26:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16294:51:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "16286:4:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16358:25:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "16372:6:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16380:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16368:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16368:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "16358:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16396:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "16407:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16412:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16403:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16403:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16396:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "15675:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15678:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15672:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15672:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "15686:18:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15688:14:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "15697:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15700:1:111",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "15693:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15693:9:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "15688:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "15668:3:111",
                                "statements": []
                              },
                              "src": "15664:761:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16434:11:111",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "16441:4:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "16434:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_bytes_calldata_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "15378:5:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "15385:6:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "15393:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "15401:3:111",
                            "type": ""
                          }
                        ],
                        "src": "15324:1127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16851:642:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16861:13:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16871:3:111",
                                "type": "",
                                "value": "288"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16865:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16890:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16901:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16883:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16883:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16883:25:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16917:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16927:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "16921:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16989:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17000:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16985:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16985:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17009:6:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17017:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17005:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17005:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16978:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16978:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16978:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17041:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17052:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17037:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17037:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17057:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17030:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17030:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17030:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17084:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17095:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17080:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17080:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "17104:6:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17112:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17100:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17073:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17073:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17073:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17136:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17147:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17132:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17132:19:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17153:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17125:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17125:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17125:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17165:88:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "17218:6:111"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "17226:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17238:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17249:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17234:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17234:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_bytes_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "17173:44:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17173:80:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17165:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17273:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17284:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17269:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17269:19:111"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "17290:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17262:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17262:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17262:35:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17317:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17328:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17313:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17313:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value7",
                                            "nodeType": "YulIdentifier",
                                            "src": "17348:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "17341:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17341:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "17334:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17334:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17306:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17306:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17306:51:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17377:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17388:3:111",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17373:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17373:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value8",
                                        "nodeType": "YulIdentifier",
                                        "src": "17398:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17406:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17394:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17394:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17366:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17366:52:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17366:52:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17438:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17449:3:111",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17434:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17434:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value9",
                                        "nodeType": "YulIdentifier",
                                        "src": "17459:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17467:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17455:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17455:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17427:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17427:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17427:60:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_uint256_t_address_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_t_bytes32_t_bool_t_uint32_t_uint64__to_t_bytes32_t_address_t_uint256_t_address_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_bytes32_t_bool_t_uint32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16748:9:111",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "16759:6:111",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "16767:6:111",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "16775:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "16783:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "16791:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "16799:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16807:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16815:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16823:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16831:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16842:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16456:1037:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17672:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17689:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17700:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17682:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17682:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17682:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17723:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17734:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17719:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17719:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17739:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17712:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17712:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17712:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17762:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17773:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17758:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17758:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17778:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17751:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17751:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17751:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17833:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17844:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17829:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17829:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17849:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17822:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17822:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17822:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17867:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17879:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17890:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17875:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17875:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17867:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17649:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17663:4:111",
                            "type": ""
                          }
                        ],
                        "src": "17498:402:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18086:248:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18096:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18108:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18119:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18104:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18104:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18096:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18139:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18150:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18132:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18132:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18132:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18177:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18188:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18173:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18173:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18193:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18166:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18166:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18220:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18231:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18216:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18216:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18240:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18248:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18236:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18236:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18209:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18209:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18209:51:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18280:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18291:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18276:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18276:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18300:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18308:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18296:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18296:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18269:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18269:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18269:59:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint32_t_uint64__to_t_uint256_t_uint256_t_uint32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18031:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18042:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18050:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18058:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18066:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18077:4:111",
                            "type": ""
                          }
                        ],
                        "src": "17905:429:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18526:202:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18543:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18554:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18536:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18536:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18536:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18566:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18601:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18609:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18621:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18632:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18617:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18617:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "18574:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18574:62:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18566:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18656:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18667:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18652:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18652:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18672:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18645:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18645:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18645:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18699:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18710:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18695:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18695:18:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "18715:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18688:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18688:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18688:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18471:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18482:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18490:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18498:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18506:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18517:4:111",
                            "type": ""
                          }
                        ],
                        "src": "18339:389:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18854:99:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18871:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18882:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18864:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18864:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18864:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18894:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18920:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18932:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18943:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18928:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18928:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "18902:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18902:45:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18894:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18823:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18834:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18845:4:111",
                            "type": ""
                          }
                        ],
                        "src": "18733:220:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19167:177:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19184:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19195:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19177:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19177:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19177:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19222:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19233:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19218:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19218:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19238:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19211:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19211:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19211:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19250:88:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19303:6:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19311:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19323:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19334:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19319:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19319:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_bytes_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "19258:44:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19258:80:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19250:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19120:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19131:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19139:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19147:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19158:4:111",
                            "type": ""
                          }
                        ],
                        "src": "18958:386:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19464:1561:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19474:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19484:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19478:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19531:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19540:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19543:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19533:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19533:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19533:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "19506:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19515:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19502:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19502:23:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19527:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19498:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19498:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19495:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19556:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19576:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19570:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19570:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "19560:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19595:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19605:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "19599:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19650:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19659:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19662:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19652:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19652:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19652:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "19638:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19646:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19635:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19635:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19632:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19675:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19689:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "19700:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19685:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19685:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "19679:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19755:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19764:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19767:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19757:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19757:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19757:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "19734:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19738:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "19730:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19730:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "19745:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "19726:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19726:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19719:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19719:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19716:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19780:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "19796:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19790:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19790:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "19784:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19822:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "19824:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19824:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19824:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "19814:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19818:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19811:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19811:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19808:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19853:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19867:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "19870:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "19863:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19863:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "19857:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19882:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "19913:2:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19917:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19909:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19909:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "19893:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19893:28:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "19886:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19930:16:111",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "19943:3:111"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19934:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "19962:3:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "19967:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19955:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19955:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19955:15:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19979:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "19990:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19995:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19986:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19986:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "19979:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20007:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "20029:2:111"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "20033:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20025:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20025:11:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20038:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20021:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20021:20:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "20011:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20073:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20082:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20085:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20075:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20075:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20075:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "20056:6:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "20064:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20053:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20053:19:111"
                              },
                              "nodeType": "YulIf",
                              "src": "20050:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20098:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "20113:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20117:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20109:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20109:11:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "20102:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20185:810:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "20199:29:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "20224:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "20218:5:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20218:10:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "20203:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "20276:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "20294:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20304:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulTypedName",
                                              "src": "20298:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "20329:2:111"
                                              },
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "20333:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "20322:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "20322:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "20322:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "20247:11:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "20260:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "20244:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20244:19:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "20241:109:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "20363:30:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "20377:2:111"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "20381:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "20373:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20373:20:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "20367:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "20455:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "20473:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20483:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_8",
                                              "nodeType": "YulTypedName",
                                              "src": "20477:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_8",
                                                "nodeType": "YulIdentifier",
                                                "src": "20508:2:111"
                                              },
                                              {
                                                "name": "_8",
                                                "nodeType": "YulIdentifier",
                                                "src": "20512:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "20501:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "20501:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "20501:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_7",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20424:2:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "20428:2:111",
                                                  "type": "",
                                                  "value": "63"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "20420:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "20420:11:111"
                                            },
                                            {
                                              "name": "dataEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "20433:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "20416:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20416:25:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "20409:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20409:33:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "20406:123:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "20542:28:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "20562:2:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "20566:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "20558:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20558:11:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "20552:5:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20552:18:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_9",
                                        "nodeType": "YulTypedName",
                                        "src": "20546:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "20583:13:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "20594:2:111",
                                      "type": "",
                                      "value": "64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_10",
                                        "nodeType": "YulTypedName",
                                        "src": "20587:3:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "20609:62:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "20667:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_allocation_size_string",
                                            "nodeType": "YulIdentifier",
                                            "src": "20638:28:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20638:32:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "allocate_memory",
                                        "nodeType": "YulIdentifier",
                                        "src": "20622:15:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20622:49:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulTypedName",
                                        "src": "20613:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "20691:5:111"
                                        },
                                        {
                                          "name": "_9",
                                          "nodeType": "YulIdentifier",
                                          "src": "20698:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "20684:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20684:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20684:17:111"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "20764:77:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "20782:12:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20793:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_11",
                                              "nodeType": "YulTypedName",
                                              "src": "20786:3:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_11",
                                                "nodeType": "YulIdentifier",
                                                "src": "20818:3:111"
                                              },
                                              {
                                                "name": "_11",
                                                "nodeType": "YulIdentifier",
                                                "src": "20823:3:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "20811:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "20811:16:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "20811:16:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_7",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20728:2:111"
                                                },
                                                {
                                                  "name": "_9",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20732:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "20724:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "20724:11:111"
                                            },
                                            {
                                              "name": "_10",
                                              "nodeType": "YulIdentifier",
                                              "src": "20737:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "20720:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20720:21:111"
                                        },
                                        {
                                          "name": "dataEnd",
                                          "nodeType": "YulIdentifier",
                                          "src": "20743:7:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "20717:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20717:34:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "20714:127:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "20893:2:111"
                                            },
                                            {
                                              "name": "_10",
                                              "nodeType": "YulIdentifier",
                                              "src": "20897:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "20889:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20889:12:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "array",
                                              "nodeType": "YulIdentifier",
                                              "src": "20907:5:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "20914:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "20903:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20903:14:111"
                                        },
                                        {
                                          "name": "_9",
                                          "nodeType": "YulIdentifier",
                                          "src": "20919:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "copy_memory_to_memory_with_cleanup",
                                        "nodeType": "YulIdentifier",
                                        "src": "20854:34:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20854:68:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20854:68:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "20942:3:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "20947:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "20935:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20935:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20935:18:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "20966:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "20977:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "20982:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "20973:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20973:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "20966:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "20140:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "20145:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20137:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20137:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "20153:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "20155:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "20166:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "20171:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "20162:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20162:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "20155:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "20133:3:111",
                                "statements": []
                              },
                              "src": "20129:866:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21004:15:111",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "21014:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "21004:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19430:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "19441:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19453:6:111",
                            "type": ""
                          }
                        ],
                        "src": "19349:1676:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21259:215:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21269:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21289:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21283:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21283:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "21273:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "21344:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21352:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21340:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21340:17:111"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "21359:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "21364:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "21305:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21305:66:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21305:66:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21380:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "21397:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "21402:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21393:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21393:16:111"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21384:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21425:5:111"
                                  },
                                  {
                                    "hexValue": "2e657468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21432:6:111",
                                    "type": "",
                                    "value": ".eth"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21418:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21418:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21418:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21448:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21459:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21466:1:111",
                                    "type": "",
                                    "value": "4"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21455:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21455:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "21448:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_3fb990fa953eacf73a21f422399a8c2bc86a94e3bd2a6dff82e1db46f66eeb4e__to_t_string_memory_ptr_t_bytes4__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "21235:3:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21240:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "21251:3:111",
                            "type": ""
                          }
                        ],
                        "src": "21030:444:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21684:318:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21694:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21704:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21698:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21762:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "21777:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21785:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "21773:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21773:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21755:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21755:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21755:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21809:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21820:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21805:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21805:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21829:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21837:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "21825:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21825:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21798:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21798:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21798:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21861:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21872:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21857:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21857:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "21881:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21889:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "21877:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21877:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21850:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21850:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21850:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21913:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21924:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21909:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21909:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21929:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21902:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21902:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21902:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21942:54:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "21968:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21980:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21991:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21976:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21976:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "21950:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21950:46:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21942:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_string_memory_ptr__to_t_address_t_address_t_address_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21629:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "21640:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21648:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21656:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21664:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21675:4:111",
                            "type": ""
                          }
                        ],
                        "src": "21479:523:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22088:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22134:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22143:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22146:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22136:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22136:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22136:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "22109:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22118:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "22105:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22105:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22130:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22101:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22101:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "22098:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22159:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22175:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22169:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22169:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "22159:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22054:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "22065:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22077:6:111",
                            "type": ""
                          }
                        ],
                        "src": "22007:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22228:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22245:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22248:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22238:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22238:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22238:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22342:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22345:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22335:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22335:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22335:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22366:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22369:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22359:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22359:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22359:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "22196:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22432:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22523:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "22525:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22525:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22525:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22448:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22455:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "22445:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22445:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "22442:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22554:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22565:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22572:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22561:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22561:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "22554:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22414:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "22424:3:111",
                            "type": ""
                          }
                        ],
                        "src": "22385:195:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_string_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        value2 := calldataload(add(headStart, 32))\n        value3 := abi_decode_uint32(add(headStart, 64))\n        value4 := abi_decode_uint64(add(headStart, 96))\n    }\n    function abi_decode_array_bytes_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256t_bytes32t_addresst_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_boolt_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10\n    {\n        if slt(sub(dataEnd, headStart), 288) { revert(0, 0) }\n        let _1 := 0xffffffffffffffff\n        if gt(calldataload(headStart), _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, calldataload(headStart)), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        value2 := abi_decode_address(add(headStart, 32))\n        value3 := calldataload(add(headStart, 64))\n        value4 := calldataload(add(headStart, 96))\n        value5 := abi_decode_address(add(headStart, 128))\n        if gt(calldataload(add(headStart, 160)), _1) { revert(0, 0) }\n        let value6_1, value7_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, calldataload(add(headStart, 160))), dataEnd)\n        value6 := value6_1\n        value7 := value7_1\n        let value := calldataload(add(headStart, 192))\n        validator_revert_bool(value)\n        value8 := value\n        value9 := abi_decode_uint32(add(headStart, 224))\n        value10 := abi_decode_uint64(add(headStart, 256))\n    }\n    function abi_encode_tuple_t_contract$_ReverseRegistrar_$13213__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32(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_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_string(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_string(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_string(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_string(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_INameWrapper_$18030__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        value2 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_IPriceOracle_$11342__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_addresst_uint256t_bytes32t_addresst_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_boolt_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9\n    {\n        if slt(sub(dataEnd, headStart), 288) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string(add(headStart, offset), dataEnd)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := abi_decode_address(add(headStart, 128))\n        let offset_1 := calldataload(add(headStart, 160))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value5_1, value6_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value5 := value5_1\n        value6 := value6_1\n        let value := calldataload(add(headStart, 192))\n        validator_revert_bool(value)\n        value7 := value\n        value8 := abi_decode_uint32(add(headStart, 224))\n        value9 := abi_decode_uint64(add(headStart, 256))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_string_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint256_t_address_t_uint32_t_uint64__to_t_string_memory_ptr_t_address_t_uint256_t_address_t_uint32_t_uint64__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 192)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 192))\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value2, _1))\n        mstore(add(headStart, 64), value3)\n        mstore(add(headStart, 96), and(value4, _1))\n        mstore(add(headStart, 128), and(value5, 0xffffffff))\n        mstore(add(headStart, 160), and(value6, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_uint256_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 128)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 128))\n        mstore(add(headStart, 32), value2)\n        mstore(add(headStart, 64), value3)\n        mstore(add(headStart, 96), value4)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        tail := abi_encode_string(value0, add(headStart, 96))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_struct$_Price_$11328_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 64)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, mload(headStart))\n        mstore(add(memPtr, 32), mload(add(headStart, 32)))\n        value0 := memPtr\n    }\n    function abi_encode_array_bytes_calldata_dyn_calldata(value, length, pos) -> end\n    {\n        mstore(pos, length)\n        let _1 := 0x20\n        let updated_pos := add(pos, _1)\n        let pos_1 := updated_pos\n        pos := updated_pos\n        let tail := add(pos_1, shl(5, length))\n        let srcPtr := value\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, sub(tail, pos_1))\n            let rel_offset_of_tail := calldataload(srcPtr)\n            if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n            let value_1 := add(rel_offset_of_tail, value)\n            let length_1 := calldataload(value_1)\n            let value_2 := add(value_1, _1)\n            if gt(length_1, 0xffffffffffffffff) { revert(0, 0) }\n            if sgt(value_2, sub(calldatasize(), length_1)) { revert(0, 0) }\n            tail := abi_encode_string_calldata(value_2, length_1, tail)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        end := tail\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_uint256_t_address_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_t_bytes32_t_bool_t_uint32_t_uint64__to_t_bytes32_t_address_t_uint256_t_address_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_bytes32_t_bool_t_uint32_t_uint64__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 288\n        mstore(headStart, value0)\n        let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _2))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), _1)\n        tail := abi_encode_array_bytes_calldata_dyn_calldata(value4, value5, add(headStart, _1))\n        mstore(add(headStart, 160), value6)\n        mstore(add(headStart, 192), iszero(iszero(value7)))\n        mstore(add(headStart, 224), and(value8, 0xffffffff))\n        mstore(add(headStart, 256), and(value9, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint32_t_uint64__to_t_uint256_t_uint256_t_uint32_t_uint64__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_uint256_t_uint256__to_t_string_memory_ptr_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 96))\n        mstore(add(headStart, 32), value2)\n        mstore(add(headStart, 64), value3)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_array_bytes_calldata_dyn_calldata(value1, value2, add(headStart, 64))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let dst := allocate_memory(add(_5, _1))\n        let dst_1 := dst\n        mstore(dst, _4)\n        dst := add(dst, _1)\n        let srcEnd := add(add(_3, _5), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            let innerOffset := mload(src)\n            if gt(innerOffset, _2)\n            {\n                let _6 := 0\n                revert(_6, _6)\n            }\n            let _7 := add(_3, innerOffset)\n            if iszero(slt(add(_7, 63), dataEnd))\n            {\n                let _8 := 0\n                revert(_8, _8)\n            }\n            let _9 := mload(add(_7, _1))\n            let _10 := 64\n            let array := allocate_memory(array_allocation_size_string(_9))\n            mstore(array, _9)\n            if gt(add(add(_7, _9), _10), dataEnd)\n            {\n                let _11 := 0\n                revert(_11, _11)\n            }\n            copy_memory_to_memory_with_cleanup(add(_7, _10), add(array, _1), _9)\n            mstore(dst, array)\n            dst := add(dst, _1)\n        }\n        value0 := dst_1\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_3fb990fa953eacf73a21f422399a8c2bc86a94e3bd2a6dff82e1db46f66eeb4e__to_t_string_memory_ptr_t_bytes4__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, \".eth\")\n        end := add(end_1, 4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_string_memory_ptr__to_t_address_t_address_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "9849": [
                  {
                    "length": 32,
                    "start": 3186
                  },
                  {
                    "length": 32,
                    "start": 3511
                  }
                ],
                "9852": [
                  {
                    "length": 32,
                    "start": 1064
                  },
                  {
                    "length": 32,
                    "start": 3120
                  }
                ],
                "9854": [
                  {
                    "length": 32,
                    "start": 782
                  },
                  {
                    "length": 32,
                    "start": 4915
                  }
                ],
                "9856": [
                  {
                    "length": 32,
                    "start": 1012
                  },
                  {
                    "length": 32,
                    "start": 3843
                  },
                  {
                    "length": 32,
                    "start": 5034
                  }
                ],
                "9859": [
                  {
                    "length": 32,
                    "start": 552
                  },
                  {
                    "length": 32,
                    "start": 5506
                  }
                ],
                "9862": [
                  {
                    "length": 32,
                    "start": 909
                  },
                  {
                    "length": 32,
                    "start": 1871
                  },
                  {
                    "length": 32,
                    "start": 2532
                  },
                  {
                    "length": 32,
                    "start": 4500
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361061016a5760003560e01c80638d839ffe116100cb578063aeb8ce9b1161007f578063d555254a11610059578063d555254a1461044a578063f14fcbc81461046a578063f2fde38b1461048a57600080fd5b8063aeb8ce9b146103c2578063ce1e09c0146103e2578063d3419bf31461041657600080fd5b80639791c097116100b05780639791c0971461035b578063a8e5fbc01461037b578063acf1a841146103af57600080fd5b80638d839ffe146102fc5780638da5cb5b1461033057600080fd5b80637acaaf2611610122578063839df94511610107578063839df9451461026f57806383e7f6ff146102aa5780638a95b09f146102e557600080fd5b80637acaaf2614610203578063808698531461021657600080fd5b80635d3590d5116101535780635d3590d5146101bb5780636459220f146101db578063715018a6146101ee57600080fd5b806301ffc9a71461016f5780633ccfd60b146101a4575b600080fd5b34801561017b57600080fd5b5061018f61018a366004611848565b6104aa565b60405190151581526020015b60405180910390f35b3480156101b057600080fd5b506101b9610543565b005b3480156101c757600080fd5b506101b96101d63660046118b3565b61058d565b6101b96101e9366004611964565b6106b2565b3480156101fa57600080fd5b506101b9610820565b6101b9610211366004611a25565b6108ad565b34801561022257600080fd5b5061024a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b34801561027b57600080fd5b5061029c61028a366004611afe565b60016020526000908152604090205481565b60405190815260200161019b565b3480156102b657600080fd5b506102ca6102c5366004611bf5565b610be6565b6040805182518152602092830151928101929092520161019b565b3480156102f157600080fd5b5061029c6224ea0081565b34801561030857600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033c57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661024a565b34801561036757600080fd5b5061018f610376366004611c3a565b610d46565b34801561038757600080fd5b5061024a7f000000000000000000000000000000000000000000000000000000000000000081565b6101b96103bd366004611c6f565b610d5b565b3480156103ce57600080fd5b5061018f6103dd366004611c3a565b610d6e565b3480156103ee57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042257600080fd5b5061024a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045657600080fd5b5061029c610465366004611cbb565b610e3e565b34801561047657600080fd5b506101b9610485366004611afe565b610eec565b34801561049657600080fd5b506101b96104a5366004611d8e565b610f75565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061053d57507fffffffff0000000000000000000000000000000000000000000000000000000082167fdf7ed18100000000000000000000000000000000000000000000000000000000145b92915050565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116914780156108fc02929091818181858888f1935050505015801561058a573d6000803e3d6000fd5b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190611da9565b50505050565b600085856040516106c4929190611dc6565b604080519182900382207f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae6020840152908201819052915060009060600160408051808303601f190181529082905280516020909101207ff44779b90000000000000000000000000000000000000000000000000000000082526004820181905233602483015291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f44779b9906044016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d19190611da9565b61080a576040517fe4fd57ae0000000000000000000000000000000000000000000000000000000081526004810182905260240161060a565b61081787878787876110a2565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060a565b6108ab60006112a7565b565b60006108f08c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250610be6915050565b6020810151815191925061090391611e05565b34101561093c576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109e08c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508a6109db8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8e8e8e8e8e8e8e8e610e3e565b61131c565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f56dac68e8e8e8e8d8a8a6040518863ffffffff1660e01b8152600401610a479796959493929190611e43565b6020604051808303816000875af1158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190611ead565b90508515610ab557610ab5888e8e604051610aa6929190611dc6565b60405180910390208989611499565b8415610afe57610afe8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92503391506115809050565b8a73ffffffffffffffffffffffffffffffffffffffff168d8d604051610b25929190611dc6565b60405180910390207f69e37f151eb98a09618ddaa80c8cfaf1ce5996867c489f45b555b412271ebf278f8f8660000151876020015187604051610b6c959493929190611ec6565b60405180910390a360208201518251610b859190611e05565b341115610bd7576020820151825133916108fc91610ba39190611e05565b610bad9034611ef7565b6040518115909202916000818181858888f19350505050158015610bd5573d6000803e3d6000fd5b505b50505050505050505050505050565b6040805180820190915260008082526020820152825160208401206040517fd6e4fa86000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff908116916350e9a7159187917f00000000000000000000000000000000000000000000000000000000000000009091169063d6e4fa8690602401602060405180830381865afa158015610cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf9190611ead565b866040518463ffffffff1660e01b8152600401610cfe93929190611f5a565b6040805180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3e9190611f7f565b949350505050565b60006003610d5383611641565b101592915050565b610d698383836000806110a2565b505050565b80516020820120600090610d8183610d46565b8015610e3757506040517f96e494e8000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906396e494e890602401602060405180830381865afa158015610e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e379190611da9565b9392505050565b895160208b01206000908515801590610e6b575073ffffffffffffffffffffffffffffffffffffffff8816155b15610ea2576040517fd3f605c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808b8b8a8a8a8e8b8b8b604051602001610ec59a9998979695949392919061207e565b604051602081830303815290604052805190602001209150509a9950505050505050505050565b6000818152600160205260409020544290610f28907f000000000000000000000000000000000000000000000000000000000000000090611e05565b10610f62576040517f0a059d710000000000000000000000000000000000000000000000000000000081526004810182905260240161060a565b6000908152600160205260409020429055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ff6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060a565b73ffffffffffffffffffffffffffffffffffffffff8116611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161060a565b61058a816112a7565b600085856040516110b4929190611dc6565b604080519182900382206020601f89018190048102840181019092528783529250829160009161110191908a908a90819084018382808284376000920191909152508a9250610be6915050565b805190915034101561113f576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47d2e9fe000000000000000000000000000000000000000000000000000000008152600481018390526024810187905263ffffffff8616604482015267ffffffffffffffff851660648201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906347d2e9fe906084016020604051808303816000875af11580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190611ead565b825190915034111561125e57815133906108fc906112349034611ef7565b6040518115909202916000818181858888f1935050505015801561125c573d6000803e3d6000fd5b505b837f3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae8a8a34856040516112949493929190612100565b60405180910390a2505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600160205260409020544290611358907f000000000000000000000000000000000000000000000000000000000000000090611e05565b1115611393576040517f5320bcf90000000000000000000000000000000000000000000000000000000081526004810182905260240161060a565b60008181526001602052604090205442906113cf907f000000000000000000000000000000000000000000000000000000000000000090611e05565b11611409576040517fcb7690d70000000000000000000000000000000000000000000000000000000081526004810182905260240161060a565b61141283610d6e565b61144a57826040517f477707e800000000000000000000000000000000000000000000000000000000815260040161060a9190612127565b6000818152600160205260408120556224ea00821015610d69576040517f9a71997b0000000000000000000000000000000000000000000000000000000081526004810183905260240161060a565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae602080830191909152818301869052825180830384018152606083019384905280519101207fe32954eb00000000000000000000000000000000000000000000000000000000909252859073ffffffffffffffffffffffffffffffffffffffff82169063e32954eb906115399085908890889060640161213a565b6000604051808303816000875af1158015611558573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610817919081019061215d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637a806d6b338385876040516020016115d0919061225c565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016115fe949392919061229d565b6020604051808303816000875af115801561161d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190611ead565b8051600090819081905b8082101561183f576000858381518110611667576116676122e8565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f80000000000000000000000000000000000000000000000000000000000000008110156116ca576116c3600184611e05565b925061182c565b7fe0000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561171f576116c3600284611e05565b7ff0000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082161015611774576116c3600384611e05565b7ff8000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156117c9576116c3600484611e05565b7ffc000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561181e576116c3600584611e05565b611829600684611e05565b92505b508261183781612317565b93505061164b565b50909392505050565b60006020828403121561185a57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e3757600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146118ae57600080fd5b919050565b6000806000606084860312156118c857600080fd5b6118d18461188a565b92506118df6020850161188a565b9150604084013590509250925092565b60008083601f84011261190157600080fd5b50813567ffffffffffffffff81111561191957600080fd5b60208301915083602082850101111561193157600080fd5b9250929050565b803563ffffffff811681146118ae57600080fd5b803567ffffffffffffffff811681146118ae57600080fd5b60008060008060006080868803121561197c57600080fd5b853567ffffffffffffffff81111561199357600080fd5b61199f888289016118ef565b909650945050602086013592506119b860408701611938565b91506119c66060870161194c565b90509295509295909350565b60008083601f8401126119e457600080fd5b50813567ffffffffffffffff8111156119fc57600080fd5b6020830191508360208260051b850101111561193157600080fd5b801515811461058a57600080fd5b60008060008060008060008060008060006101208c8e031215611a4757600080fd5b67ffffffffffffffff808d351115611a5e57600080fd5b611a6b8e8e358f016118ef565b909c509a50611a7c60208e0161188a565b995060408d0135985060608d01359750611a9860808e0161188a565b96508060a08e01351115611aab57600080fd5b50611abc8d60a08e01358e016119d2565b909550935060c08c0135611acf81611a17565b9250611add60e08d01611938565b9150611aec6101008d0161194c565b90509295989b509295989b9093969950565b600060208284031215611b1057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b6f57611b6f611b17565b604052919050565b600067ffffffffffffffff821115611b9157611b91611b17565b50601f01601f191660200190565b600082601f830112611bb057600080fd5b8135611bc3611bbe82611b77565b611b46565b818152846020838601011115611bd857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611c0857600080fd5b823567ffffffffffffffff811115611c1f57600080fd5b611c2b85828601611b9f565b95602094909401359450505050565b600060208284031215611c4c57600080fd5b813567ffffffffffffffff811115611c6357600080fd5b610d3e84828501611b9f565b600080600060408486031215611c8457600080fd5b833567ffffffffffffffff811115611c9b57600080fd5b611ca7868287016118ef565b909790965060209590950135949350505050565b6000806000806000806000806000806101208b8d031215611cdb57600080fd5b8a3567ffffffffffffffff80821115611cf357600080fd5b611cff8e838f01611b9f565b9b50611d0d60208e0161188a565b9a5060408d0135995060608d01359850611d2960808e0161188a565b975060a08d0135915080821115611d3f57600080fd5b50611d4c8d828e016119d2565b90965094505060c08b0135611d6081611a17565b9250611d6e60e08c01611938565b9150611d7d6101008c0161194c565b90509295989b9194979a5092959850565b600060208284031215611da057600080fd5b610e378261188a565b600060208284031215611dbb57600080fd5b8151610e3781611a17565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561053d5761053d611dd6565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60c081526000611e5760c08301898b611e18565b905073ffffffffffffffffffffffffffffffffffffffff808816602084015286604084015280861660608401525063ffffffff8416608083015267ffffffffffffffff831660a083015298975050505050505050565b600060208284031215611ebf57600080fd5b5051919050565b608081526000611eda608083018789611e18565b602083019590955250604081019290925260609091015292915050565b8181038181111561053d5761053d611dd6565b60005b83811015611f25578181015183820152602001611f0d565b50506000910152565b60008151808452611f46816020860160208601611f0a565b601f01601f19169290920160200192915050565b606081526000611f6d6060830186611f2e565b60208301949094525060400152919050565b600060408284031215611f9157600080fd5b6040516040810181811067ffffffffffffffff82111715611fb457611fb4611b17565b604052825181526020928301519281019290925250919050565b81835260006020808501808196508560051b810191508460005b8781101561207157828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe188360301811261202757600080fd5b8701858101903567ffffffffffffffff81111561204357600080fd5b80360382131561205257600080fd5b61205d868284611e18565b9a87019a9550505090840190600101611fe8565b5091979650505050505050565b60006101208c835273ffffffffffffffffffffffffffffffffffffffff808d1660208501528b6040850152808b166060850152508060808401526120c5818401898b611fce565b60a0840197909752505092151560c084015263ffffffff9190911660e083015267ffffffffffffffff16610100909101529695505050505050565b606081526000612114606083018688611e18565b6020830194909452506040015292915050565b602081526000610e376020830184611f2e565b838152604060208201526000612154604083018486611fce565b95945050505050565b6000602080838503121561217057600080fd5b825167ffffffffffffffff8082111561218857600080fd5b818501915085601f83011261219c57600080fd5b8151818111156121ae576121ae611b17565b8060051b6121bd858201611b46565b91825283810185019185810190898411156121d757600080fd5b86860192505b8383101561224f578251858111156121f55760008081fd5b8601603f81018b136122075760008081fd5b878101516040612219611bbe83611b77565b8281528d8284860101111561222e5760008081fd5b61223d838c8301848701611f0a565b855250505091860191908601906121dd565b9998505050505050505050565b6000825161226e818460208701611f0a565b7f2e65746800000000000000000000000000000000000000000000000000000000920191825250600401919050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152808516604084015250608060608301526122de6080830184611f2e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361234857612348611dd6565b506001019056fea264697066735822122017192ec0669d3c7f55a76e07949904209c5367ceadf92f8bf1326661acf3f14164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D839FFE GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xAEB8CE9B GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xD555254A GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD555254A EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0xF14FCBC8 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAEB8CE9B EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xCE1E09C0 EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0xD3419BF3 EQ PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9791C097 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x9791C097 EQ PUSH2 0x35B JUMPI DUP1 PUSH4 0xA8E5FBC0 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0xACF1A841 EQ PUSH2 0x3AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8D839FFE EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ACAAF26 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x839DF945 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x839DF945 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x83E7F6FF EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x8A95B09F EQ PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ACAAF26 EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x80869853 EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5D3590D5 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x5D3590D5 EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x6459220F EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x1A4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x1848 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x543 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x18B3 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1B9 PUSH2 0x1E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1964 JUMP JUMPDEST PUSH2 0x6B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x820 JUMP JUMPDEST PUSH2 0x1B9 PUSH2 0x211 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x8AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x2C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BF5 JUMP JUMPDEST PUSH2 0xBE6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0x19B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH3 0x24EA00 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C3A JUMP JUMPDEST PUSH2 0xD46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1B9 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6F JUMP JUMPDEST PUSH2 0xD5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x1C3A JUMP JUMPDEST PUSH2 0xD6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29C PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CBB JUMP JUMPDEST PUSH2 0xE3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0xEEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x4A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8E JUMP JUMPDEST PUSH2 0xF75 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x53D JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xDF7ED18100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP3 SWAP1 SWAP2 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x58A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x613 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6AC SWAP2 SWAP1 PUSH2 0x1DA9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x6C4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0xF44779B900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xF44779B9 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D1 SWAP2 SWAP1 PUSH2 0x1DA9 JUMP JUMPDEST PUSH2 0x80A JUMPI PUSH1 0x40 MLOAD PUSH32 0xE4FD57AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH2 0x817 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x10A2 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x8A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x60A JUMP JUMPDEST PUSH2 0x8AB PUSH1 0x0 PUSH2 0x12A7 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F0 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP14 SWAP3 POP PUSH2 0xBE6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD SWAP2 SWAP3 POP PUSH2 0x903 SWAP2 PUSH2 0x1E05 JUMP JUMPDEST CALLVALUE LT ISZERO PUSH2 0x93C JUMPI PUSH1 0x40 MLOAD PUSH32 0x1101129400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9E0 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP11 PUSH2 0x9DB DUP16 DUP16 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0xE3E JUMP JUMPDEST PUSH2 0x131C JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9F56DAC6 DUP15 DUP15 DUP15 DUP15 DUP14 DUP11 DUP11 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA47 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA8A SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 POP DUP6 ISZERO PUSH2 0xAB5 JUMPI PUSH2 0xAB5 DUP9 DUP15 DUP15 PUSH1 0x40 MLOAD PUSH2 0xAA6 SWAP3 SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP10 DUP10 PUSH2 0x1499 JUMP JUMPDEST DUP5 ISZERO PUSH2 0xAFE JUMPI PUSH2 0xAFE DUP14 DUP14 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP CALLER SWAP2 POP PUSH2 0x1580 SWAP1 POP JUMP JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP14 DUP14 PUSH1 0x40 MLOAD PUSH2 0xB25 SWAP3 SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x69E37F151EB98A09618DDAA80C8CFAF1CE5996867C489F45B555B412271EBF27 DUP16 DUP16 DUP7 PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x20 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH2 0xB6C SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1EC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x20 DUP3 ADD MLOAD DUP3 MLOAD PUSH2 0xB85 SWAP2 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST CALLVALUE GT ISZERO PUSH2 0xBD7 JUMPI PUSH1 0x20 DUP3 ADD MLOAD DUP3 MLOAD CALLER SWAP2 PUSH2 0x8FC SWAP2 PUSH2 0xBA3 SWAP2 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST PUSH2 0xBAD SWAP1 CALLVALUE PUSH2 0x1EF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xBD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP3 MLOAD PUSH1 0x20 DUP5 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH32 0xD6E4FA8600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH4 0x50E9A715 SWAP2 DUP8 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xD6E4FA86 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCDF SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCFE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F5A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD3E SWAP2 SWAP1 PUSH2 0x1F7F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH2 0xD53 DUP4 PUSH2 0x1641 JUMP JUMPDEST LT ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD69 DUP4 DUP4 DUP4 PUSH1 0x0 DUP1 PUSH2 0x10A2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH1 0x0 SWAP1 PUSH2 0xD81 DUP4 PUSH2 0xD46 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE37 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x96E494E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x96E494E8 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE13 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE37 SWAP2 SWAP1 PUSH2 0x1DA9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP10 MLOAD PUSH1 0x20 DUP12 ADD KECCAK256 PUSH1 0x0 SWAP1 DUP6 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xE6B JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND ISZERO JUMPDEST ISZERO PUSH2 0xEA2 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD3F605C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP12 DUP12 DUP11 DUP11 DUP11 DUP15 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xEC5 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x207E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0xF28 SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST LT PUSH2 0xF62 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA059D7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 TIMESTAMP SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x60A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1099 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x60A JUMP JUMPDEST PUSH2 0x58A DUP2 PUSH2 0x12A7 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x10B4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 PUSH1 0x20 PUSH1 0x1F DUP10 ADD DUP2 SWAP1 DIV DUP2 MUL DUP5 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP8 DUP4 MSTORE SWAP3 POP DUP3 SWAP2 PUSH1 0x0 SWAP2 PUSH2 0x1101 SWAP2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP11 SWAP3 POP PUSH2 0xBE6 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP CALLVALUE LT ISZERO PUSH2 0x113F JUMPI PUSH1 0x40 MLOAD PUSH32 0x1101129400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x47D2E9FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x47D2E9FE SWAP1 PUSH1 0x84 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1216 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP CALLVALUE GT ISZERO PUSH2 0x125E JUMPI DUP2 MLOAD CALLER SWAP1 PUSH2 0x8FC SWAP1 PUSH2 0x1234 SWAP1 CALLVALUE PUSH2 0x1EF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x125C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST DUP4 PUSH32 0x3DA24C024582931CFAF8267D8ED24D13A82A8068D5BD337D30EC45CEA4E506AE DUP11 DUP11 CALLVALUE DUP6 PUSH1 0x40 MLOAD PUSH2 0x1294 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0x1358 SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST GT ISZERO PUSH2 0x1393 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5320BCF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP1 PUSH2 0x13CF SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1E05 JUMP JUMPDEST GT PUSH2 0x1409 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCB7690D700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH2 0x1412 DUP4 PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x144A JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x477707E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60A SWAP2 SWAP1 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH3 0x24EA00 DUP3 LT ISZERO PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9A71997B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x60A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 DUP4 ADD SWAP4 DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH32 0xE32954EB00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE DUP6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xE32954EB SWAP1 PUSH2 0x1539 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x64 ADD PUSH2 0x213A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1558 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x817 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x215D JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7A806D6B CALLER DUP4 DUP6 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x15D0 SWAP2 SWAP1 PUSH2 0x225C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15FE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x229D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x161D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6AC SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x183F JUMPI PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1667 JUMPI PUSH2 0x1667 PUSH2 0x22E8 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x16CA JUMPI PUSH2 0x16C3 PUSH1 0x1 DUP5 PUSH2 0x1E05 JUMP JUMPDEST SWAP3 POP PUSH2 0x182C JUMP JUMPDEST PUSH32 0xE000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x171F JUMPI PUSH2 0x16C3 PUSH1 0x2 DUP5 PUSH2 0x1E05 JUMP JUMPDEST PUSH32 0xF000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x1774 JUMPI PUSH2 0x16C3 PUSH1 0x3 DUP5 PUSH2 0x1E05 JUMP JUMPDEST PUSH32 0xF800000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x17C9 JUMPI PUSH2 0x16C3 PUSH1 0x4 DUP5 PUSH2 0x1E05 JUMP JUMPDEST PUSH32 0xFC00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x181E JUMPI PUSH2 0x16C3 PUSH1 0x5 DUP5 PUSH2 0x1E05 JUMP JUMPDEST PUSH2 0x1829 PUSH1 0x6 DUP5 PUSH2 0x1E05 JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP3 PUSH2 0x1837 DUP2 PUSH2 0x2317 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x164B JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x185A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xE37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x18AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D1 DUP5 PUSH2 0x188A JUMP JUMPDEST SWAP3 POP PUSH2 0x18DF PUSH1 0x20 DUP6 ADD PUSH2 0x188A JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1901 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x18AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x18AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x197C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1993 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x199F DUP9 DUP3 DUP10 ADD PUSH2 0x18EF JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH2 0x19B8 PUSH1 0x40 DUP8 ADD PUSH2 0x1938 JUMP JUMPDEST SWAP2 POP PUSH2 0x19C6 PUSH1 0x60 DUP8 ADD PUSH2 0x194C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x19E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x1931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x1A47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP14 CALLDATALOAD GT ISZERO PUSH2 0x1A5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A6B DUP15 DUP15 CALLDATALOAD DUP16 ADD PUSH2 0x18EF JUMP JUMPDEST SWAP1 SWAP13 POP SWAP11 POP PUSH2 0x1A7C PUSH1 0x20 DUP15 ADD PUSH2 0x188A JUMP JUMPDEST SWAP10 POP PUSH1 0x40 DUP14 ADD CALLDATALOAD SWAP9 POP PUSH1 0x60 DUP14 ADD CALLDATALOAD SWAP8 POP PUSH2 0x1A98 PUSH1 0x80 DUP15 ADD PUSH2 0x188A JUMP JUMPDEST SWAP7 POP DUP1 PUSH1 0xA0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x1AAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1ABC DUP14 PUSH1 0xA0 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x19D2 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH1 0xC0 DUP13 ADD CALLDATALOAD PUSH2 0x1ACF DUP2 PUSH2 0x1A17 JUMP JUMPDEST SWAP3 POP PUSH2 0x1ADD PUSH1 0xE0 DUP14 ADD PUSH2 0x1938 JUMP JUMPDEST SWAP2 POP PUSH2 0x1AEC PUSH2 0x100 DUP14 ADD PUSH2 0x194C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1B6F JUMPI PUSH2 0x1B6F PUSH2 0x1B17 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1B91 JUMPI PUSH2 0x1B91 PUSH2 0x1B17 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1BB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1BC3 PUSH2 0x1BBE DUP3 PUSH2 0x1B77 JUMP JUMPDEST PUSH2 0x1B46 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C2B DUP6 DUP3 DUP7 ADD PUSH2 0x1B9F JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD3E DUP5 DUP3 DUP6 ADD PUSH2 0x1B9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1C84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CA7 DUP7 DUP3 DUP8 ADD PUSH2 0x18EF JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x1CDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CFF DUP15 DUP4 DUP16 ADD PUSH2 0x1B9F JUMP JUMPDEST SWAP12 POP PUSH2 0x1D0D PUSH1 0x20 DUP15 ADD PUSH2 0x188A JUMP JUMPDEST SWAP11 POP PUSH1 0x40 DUP14 ADD CALLDATALOAD SWAP10 POP PUSH1 0x60 DUP14 ADD CALLDATALOAD SWAP9 POP PUSH2 0x1D29 PUSH1 0x80 DUP15 ADD PUSH2 0x188A JUMP JUMPDEST SWAP8 POP PUSH1 0xA0 DUP14 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D4C DUP14 DUP3 DUP15 ADD PUSH2 0x19D2 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0xC0 DUP12 ADD CALLDATALOAD PUSH2 0x1D60 DUP2 PUSH2 0x1A17 JUMP JUMPDEST SWAP3 POP PUSH2 0x1D6E PUSH1 0xE0 DUP13 ADD PUSH2 0x1938 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D7D PUSH2 0x100 DUP13 ADD PUSH2 0x194C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE37 DUP3 PUSH2 0x188A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE37 DUP2 PUSH2 0x1A17 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x53D JUMPI PUSH2 0x53D PUSH2 0x1DD6 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1E57 PUSH1 0xC0 DUP4 ADD DUP10 DUP12 PUSH2 0x1E18 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP7 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1EDA PUSH1 0x80 DUP4 ADD DUP8 DUP10 PUSH2 0x1E18 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP PUSH1 0x40 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x53D JUMPI PUSH2 0x53D PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F25 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1F0D JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1F46 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1F0A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1F6D PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1F2E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1FB4 JUMPI PUSH2 0x1FB4 PUSH2 0x1B17 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP6 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP5 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x2071 JUMPI DUP3 DUP5 SUB DUP10 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP9 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2027 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 ADD DUP6 DUP2 ADD SWAP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2043 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x2052 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x205D DUP7 DUP3 DUP5 PUSH2 0x1E18 JUMP JUMPDEST SWAP11 DUP8 ADD SWAP11 SWAP6 POP POP POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1FE8 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP13 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP14 AND PUSH1 0x20 DUP6 ADD MSTORE DUP12 PUSH1 0x40 DUP6 ADD MSTORE DUP1 DUP12 AND PUSH1 0x60 DUP6 ADD MSTORE POP DUP1 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x20C5 DUP2 DUP5 ADD DUP10 DUP12 PUSH2 0x1FCE JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD SWAP8 SWAP1 SWAP8 MSTORE POP POP SWAP3 ISZERO ISZERO PUSH1 0xC0 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x100 SWAP1 SWAP2 ADD MSTORE SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2114 PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1E18 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE37 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1F2E JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2154 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x1FCE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x219C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x21AE JUMPI PUSH2 0x21AE PUSH2 0x1B17 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x21BD DUP6 DUP3 ADD PUSH2 0x1B46 JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP6 DUP2 ADD SWAP1 DUP10 DUP5 GT ISZERO PUSH2 0x21D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x224F JUMPI DUP3 MLOAD DUP6 DUP2 GT ISZERO PUSH2 0x21F5 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP7 ADD PUSH1 0x3F DUP2 ADD DUP12 SGT PUSH2 0x2207 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 DUP2 ADD MLOAD PUSH1 0x40 PUSH2 0x2219 PUSH2 0x1BBE DUP4 PUSH2 0x1B77 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP14 DUP3 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x222E JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x223D DUP4 DUP13 DUP4 ADD DUP5 DUP8 ADD PUSH2 0x1F0A JUMP JUMPDEST DUP6 MSTORE POP POP POP SWAP2 DUP7 ADD SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH2 0x21DD JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x226E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1F0A JUMP JUMPDEST PUSH32 0x2E65746800000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x4 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x22DE PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1F2E JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2348 JUMPI PUSH2 0x2348 PUSH2 0x1DD6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR NOT 0x2E 0xC0 PUSH7 0x9D3C7F55A76E07 SWAP5 SWAP10 DIV KECCAK256 SWAP13 MSTORE8 PUSH8 0xCEADF92F8BF13266 PUSH2 0xACF3 CALL COINBASE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "1205:8208:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7714:252;;;;;;;;;;-1:-1:-1;7714:252:44;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;7714:252:44;;;;;;;;7616:92;;;;;;;;;;;;;:::i;:::-;;633:171:90;;;;;;;;;;-1:-1:-1;633:171:90;;;;;:::i;:::-;;:::i;6450:471:44:-;;;;;;:::i;:::-;;:::i;1668:101:2:-;;;;;;;;;;;;;:::i;4696:1588:44:-;;;;;;:::i;:::-;;:::i;1807:50::-;;;;;;;;;;;;;;;;;;4422:42:111;4410:55;;;4392:74;;4380:2;4365:18;1807:50:44;4220:252:111;1911:46:44;;;;;;;;;;-1:-1:-1;1911:46:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4808:25:111;;;4796:2;4781:18;1911:46:44;4662:177:111;2977:291:44;;;;;;;;;;-1:-1:-1;2977:291:44;;;;;:::i;:::-;;:::i;:::-;;;;6699:13:111;;6681:32;;6769:4;6757:17;;;6751:24;6729:20;;;6722:54;;;;6654:18;2977:291:44;6487:295:111;1383:59:44;;;;;;;;;;;;1435:7;1383:59;;1713:41;;;;;;;;;;;;;;;1036:85:2;;;;;;;;;;-1:-1:-1;1082:7:2;1108:6;;;1036:85;;3274:104:44;;;;;;;;;;-1:-1:-1;3274:104:44;;;;;:::i;:::-;;:::i;1863:41::-;;;;;;;;;;;;;;;6290:154;;;;;;:::i;:::-;;:::i;3384:192::-;;;;;;;;;;-1:-1:-1;3384:192:44;;;;;:::i;:::-;;:::i;1760:41::-;;;;;;;;;;;;;;;1671:36;;;;;;;;;;;;;;;3582:847;;;;;;;;;;-1:-1:-1;3582:847:44;;;;;:::i;:::-;;:::i;4435:255::-;;;;;;;;;;-1:-1:-1;4435:255:44;;;;;:::i;:::-;;:::i;1918:198:2:-;;;;;;;;;;-1:-1:-1;1918:198:2;;;;;:::i;:::-;;:::i;7714:252:44:-;7808:4;7847:40;;;7862:25;7847:40;;:112;;-1:-1:-1;7903:56:44;;;7918:41;7903:56;7847:112;7828:131;7714:252;-1:-1:-1;;7714:252:44:o;7616:92::-;1082:7:2;1108:6;;7653:48:44;;1108:6:2;;;;;7679:21:44;7653:48;;;;;7679:21;;7653:48;1082:7:2;7653:48:44;7679:21;1108:6:2;7653:48:44;;;;;;;;;;;;;;;;;;;;;7616:92::o;633:171:90:-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;10154:2:111;1240:68:2;;;10136:21:111;;;10173:18;;;10166:30;10232:34;10212:18;;;10205:62;10284:18;;1240:68:2;;;;;;;;;760:37:90::1;::::0;;;;:23:::1;10505:55:111::0;;;760:37:90::1;::::0;::::1;10487:74:111::0;10577:18;;;10570:34;;;760:23:90;::::1;::::0;::::1;::::0;10460:18:111;;760:37:90::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;633:171:::0;;;:::o;6450:471:44:-;6615:17;6651:4;;6635:22;;;;;;;:::i;:::-;;;;;;;;;;1492:66;6696:37;;;11298:19:111;11333:12;;;11326:28;;;6635:22:44;-1:-1:-1;6667:16:44;;11370:12:111;;6696:37:44;;;;;;-1:-1:-1;;6696:37:44;;;;;;;6686:48;;6696:37;6686:48;;;;6749:56;;;;;;11567:25:111;;;6794:10:44;11608:18:111;;;11601:83;6686:48:44;-1:-1:-1;6749:11:44;:34;;;;;11540:18:111;;6749:56:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6744:117;;6828:22;;;;;;;;4808:25:111;;;4781:18;;6828:22:44;4662:177:111;6744:117:44;6870:44;6877:4;;6883:8;6893:5;6900:13;6870:6;:44::i;:::-;6605:316;;6450:471;;;;;:::o;1668:101:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;10154:2:111;1240:68:2;;;10136:21:111;;;10173:18;;;10166:30;10232:34;10212:18;;;10205:62;10284:18;;1240:68:2;9952:356:111;1240:68:2;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;4696:1588:44:-;4994:31;5028:25;5038:4;;5028:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5044:8:44;;-1:-1:-1;5028:9:44;;-1:-1:-1;;5028:25:44:i;:::-;5092:13;;;;5079:10;;4994:59;;-1:-1:-1;5079:26:44;;;:::i;:::-;5067:9;:38;5063:95;;;5128:19;;;;;;;;;;;;;;5063:95;5168:338;5200:4;;5168:338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5218:8;5240:256;5272:4;;5240:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5294:5;5317:8;5343:6;5367:8;5393:4;;5415:13;5446:5;5469:13;5240:14;:256::i;:::-;5168:18;:338::i;:::-;5517:15;5535:11;:33;;;5582:4;;5600:5;5619:8;5641;5663:5;5682:13;5535:170;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5517:188;-1:-1:-1;5720:15:44;;5716:97;;5751:51;5763:8;5789:4;;5773:22;;;;;;;:::i;:::-;;;;;;;;5797:4;;5751:11;:51::i;:::-;5827:13;5823:89;;;5856:45;5874:4;;5856:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5880:8:44;;-1:-1:-1;5890:10:44;;-1:-1:-1;5856:17:44;;-1:-1:-1;5856:45:44:i;:::-;6009:5;5927:169;;5989:4;;5973:22;;;;;;;:::i;:::-;;;;;;;;5927:169;5955:4;;6028:5;:10;;;6052:5;:13;;;6079:7;5927:169;;;;;;;;;;:::i;:::-;;;;;;;;6137:13;;;;6124:10;;:26;;6137:13;6124:26;:::i;:::-;6111:9;:40;6107:171;;;6239:13;;;;6226:10;;6175;;6167:100;;6226:26;;6239:13;6226:26;:::i;:::-;6213:40;;:9;:40;:::i;:::-;6167:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6107:171;4984:1300;;4696:1588;;;;;;;;;;;:::o;2977:291::-;-1:-1:-1;;;;;;;;;;;;;;;;;3159:22:44;;;;;;3218:32;;;;;;;;4808:25:111;;;3199:6:44;:12;;;;;;;3159:22;;3218:4;:16;;;;;;4781:18:111;;3218:32:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3252:8;3199:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3191:70;2977:291;-1:-1:-1;;;;2977:291:44:o;3274:104::-;3330:4;3370:1;3353:13;:4;:11;:13::i;:::-;:18;;;3274:104;-1:-1:-1;;3274:104:44:o;6290:154::-;6409:28;6416:4;;6422:8;6432:1;6435;6409:6;:28::i;:::-;6290:154;;;:::o;3384:192::-;3485:22;;;;;;3453:4;;3524:11;3501:4;3524:5;:11::i;:::-;:45;;;;-1:-1:-1;3539:30:44;;;;;;;;4808:25:111;;;3539:4:44;:14;;;;;4781:18:111;;3539:30:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3517:52;3384:192;-1:-1:-1;;;3384:192:44:o;3582:847::-;3915:22;;;;;;3880:7;;3951:15;;;;;:41;;-1:-1:-1;3970:22:44;;;;3951:41;3947:113;;;4015:34;;;;;;;;;;;;;;3947:113;4147:5;4174;4201:8;4231;4261:4;;4287:6;4315:13;4350:5;4377:13;4115:293;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4088:334;;;;;;4069:353;;;3582:847;;;;;;;;;;;;:::o;4435:255::-;4501:23;;;;:11;:23;;;;;;4547:15;;4501:42;;4527:16;;4501:42;:::i;:::-;:61;4497:136;;4585:37;;;;;;;;4808:25:111;;;4781:18;;4585:37:44;4662:177:111;4497:136:44;4642:23;;;;:11;:23;;;;;4668:15;4642:41;;4435:255::o;1918:198:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;10154:2:111;1240:68:2;;;10136:21:111;;;10173:18;;;10166:30;10232:34;10212:18;;;10205:62;10284:18;;1240:68:2;9952:356:111;1240:68:2;2006:22:::1;::::0;::::1;1998:73;;;::::0;::::1;::::0;;17700:2:111;1998:73:2::1;::::0;::::1;17682:21:111::0;17739:2;17719:18;;;17712:30;17778:34;17758:18;;;17751:62;17849:8;17829:18;;;17822:36;17875:19;;1998:73:2::1;17498:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;6927:683:44:-:0;7076:17;7112:4;;7096:22;;;;;;;:::i;:::-;;;;;;;;;;7208:25;;;;;;;;;;;;;;;;;;;7096:22;-1:-1:-1;7096:22:44;;7128:15;;7208:25;;7096:22;7218:4;;;;;;7208:25;;7218:4;;;;7208:25;;;;;;;;;-1:-1:-1;7224:8:44;;-1:-1:-1;7208:9:44;;-1:-1:-1;;7208:25:44:i;:::-;7259:10;;7174:59;;-1:-1:-1;7247:9:44;:22;7243:79;;;7292:19;;;;;;;;;;;;;;7243:79;7366:58;;;;;;;;18132:25:111;;;18173:18;;;18166:34;;;18248:10;18236:23;;18216:18;;;18209:51;18308:18;18296:31;;18276:18;;;18269:59;7331:15:44;;7366:11;:17;;;;;18104:19:111;;7366:58:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7451:10;;7356:68;;-1:-1:-1;7439:9:44;:22;7435:105;;;7518:10;;7485;;7477:52;;7506:22;;:9;:22;:::i;:::-;7477:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7435:105;7573:9;7555:48;7567:4;;7584:9;7595:7;7555:48;;;;;;;;;:::i;:::-;;;;;;;;7066:544;;;;6927:683;;;;;:::o;2270:187:2:-;2343:16;2362:6;;;2378:17;;;;;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;8002:760:44:-;8186:23;;;;:11;:23;;;;;;8231:15;;8186:42;;8212:16;;8186:42;:::i;:::-;:60;8182:126;;;8269:28;;;;;;;;4808:25:111;;;4781:18;;8269:28:44;4662:177:111;8182:126:44;8395:23;;;;:11;:23;;;;;;8441:15;;8395:42;;8421:16;;8395:42;:::i;:::-;:61;8391:127;;8479:28;;;;;;;;4808:25:111;;;4781:18;;8479:28:44;4662:177:111;8391:127:44;8532:15;8542:4;8532:9;:15::i;:::-;8527:76;;8587:4;8570:22;;;;;;;;;;;:::i;8527:76::-;8621:23;;;;:11;:23;;;;;8613:32;1435:7;8660:36;;8656:100;;;8719:26;;;;;;;;4808:25:111;;;4781:18;;8719:26:44;4662:177:111;8768:354:44;8969:33;;;1492:66;8969:33;;;;11298:19:111;;;;11333:12;;;11326:28;;;8969:33:44;;;;;;;;;11370:12:111;;;8969:33:44;;;;8959:44;;;;;9068:47;;;;9042:15;;9068:31;;;;;;:47;;8959:44;;9110:4;;;;9068:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9068:47:44;;;;;;;;;;;;:::i;9128:283::-;9257:16;:31;;;9302:10;9326:5;9345:8;9381:4;9367:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;9257:147;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;222:622:53:-;362:15;;278:7;;;;;;387:431;405:10;401:1;:14;387:431;;;438:8;455:1;458;449:11;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;478:8:53;;;474:334;;;506:6;511:1;506:6;;:::i;:::-;;;474:334;;;537:8;;;;;533:275;;;565:6;570:1;565:6;;:::i;533:275::-;596:8;;;;;592:216;;;624:6;629:1;624:6;;:::i;592:216::-;655:8;;;;;651:157;;;683:6;688:1;683:6;;:::i;651:157::-;714:8;;;;;710:98;;;742:6;747:1;742:6;;:::i;710:98::-;787:6;792:1;787:6;;:::i;:::-;;;710:98;-1:-1:-1;417:5:53;;;;:::i;:::-;;;;387:431;;;-1:-1:-1;834:3:53;;222:622;-1:-1:-1;;;222:622:53:o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;543:196;611:20;;671:42;660:54;;650:65;;640:93;;729:1;726;719:12;640:93;543:196;;;:::o;744:328::-;821:6;829;837;890:2;878:9;869:7;865:23;861:32;858:52;;;906:1;903;896:12;858:52;929:29;948:9;929:29;:::i;:::-;919:39;;977:38;1011:2;1000:9;996:18;977:38;:::i;:::-;967:48;;1062:2;1051:9;1047:18;1034:32;1024:42;;744:328;;;;;:::o;1077:348::-;1129:8;1139:6;1193:3;1186:4;1178:6;1174:17;1170:27;1160:55;;1211:1;1208;1201:12;1160:55;-1:-1:-1;1234:20:111;;1277:18;1266:30;;1263:50;;;1309:1;1306;1299:12;1263:50;1346:4;1338:6;1334:17;1322:29;;1398:3;1391:4;1382:6;1374;1370:19;1366:30;1363:39;1360:59;;;1415:1;1412;1405:12;1360:59;1077:348;;;;;:::o;1430:163::-;1497:20;;1557:10;1546:22;;1536:33;;1526:61;;1583:1;1580;1573:12;1598:171;1665:20;;1725:18;1714:30;;1704:41;;1694:69;;1759:1;1756;1749:12;1774:624;1870:6;1878;1886;1894;1902;1955:3;1943:9;1934:7;1930:23;1926:33;1923:53;;;1972:1;1969;1962:12;1923:53;2012:9;1999:23;2045:18;2037:6;2034:30;2031:50;;;2077:1;2074;2067:12;2031:50;2116:59;2167:7;2158:6;2147:9;2143:22;2116:59;:::i;:::-;2194:8;;-1:-1:-1;2090:85:111;-1:-1:-1;;2276:2:111;2261:18;;2248:32;;-1:-1:-1;2299:37:111;2332:2;2317:18;;2299:37;:::i;:::-;2289:47;;2355:37;2388:2;2377:9;2373:18;2355:37;:::i;:::-;2345:47;;1774:624;;;;;;;;:::o;2403:374::-;2473:8;2483:6;2537:3;2530:4;2522:6;2518:17;2514:27;2504:55;;2555:1;2552;2545:12;2504:55;-1:-1:-1;2578:20:111;;2621:18;2610:30;;2607:50;;;2653:1;2650;2643:12;2607:50;2690:4;2682:6;2678:17;2666:29;;2750:3;2743:4;2733:6;2730:1;2726:14;2718:6;2714:27;2710:38;2707:47;2704:67;;;2767:1;2764;2757:12;2782:118;2868:5;2861:13;2854:21;2847:5;2844:32;2834:60;;2890:1;2887;2880:12;2905:1310;3081:6;3089;3097;3105;3113;3121;3129;3137;3145;3153;3161:7;3215:3;3203:9;3194:7;3190:23;3186:33;3183:53;;;3232:1;3229;3222:12;3183:53;3255:18;3313:2;3301:9;3288:23;3285:31;3282:51;;;3329:1;3326;3319:12;3282:51;3368:76;3436:7;3423:9;3410:23;3399:9;3395:39;3368:76;:::i;:::-;3463:8;;-1:-1:-1;3490:8:111;-1:-1:-1;3517:38:111;3551:2;3536:18;;3517:38;:::i;:::-;3507:48;;3602:2;3591:9;3587:18;3574:32;3564:42;;3653:2;3642:9;3638:18;3625:32;3615:42;;3676:39;3710:3;3699:9;3695:19;3676:39;:::i;:::-;3666:49;;3765:2;3758:3;3747:9;3743:19;3730:33;3727:41;3724:61;;;3781:1;3778;3771:12;3724:61;;3820:104;3916:7;3908:3;3897:9;3893:19;3880:33;3869:9;3865:49;3820:104;:::i;:::-;3943:8;;-1:-1:-1;3970:8:111;-1:-1:-1;4028:3:111;4013:19;;4000:33;4042:28;4000:33;4042:28;:::i;:::-;4089:5;-1:-1:-1;4113:38:111;4146:3;4131:19;;4113:38;:::i;:::-;4103:48;;4171:38;4204:3;4193:9;4189:19;4171:38;:::i;:::-;4160:49;;2905:1310;;;;;;;;;;;;;;:::o;4477:180::-;4536:6;4589:2;4577:9;4568:7;4564:23;4560:32;4557:52;;;4605:1;4602;4595:12;4557:52;-1:-1:-1;4628:23:111;;4477:180;-1:-1:-1;4477:180:111:o;4844:184::-;4896:77;4893:1;4886:88;4993:4;4990:1;4983:15;5017:4;5014:1;5007:15;5033:334;5104:2;5098:9;5160:2;5150:13;;-1:-1:-1;;5146:86:111;5134:99;;5263:18;5248:34;;5284:22;;;5245:62;5242:88;;;5310:18;;:::i;:::-;5346:2;5339:22;5033:334;;-1:-1:-1;5033:334:111:o;5372:246::-;5421:4;5454:18;5446:6;5443:30;5440:56;;;5476:18;;:::i;:::-;-1:-1:-1;5533:2:111;5521:15;-1:-1:-1;;5517:88:111;5607:4;5513:99;;5372:246::o;5623:464::-;5666:5;5719:3;5712:4;5704:6;5700:17;5696:27;5686:55;;5737:1;5734;5727:12;5686:55;5773:6;5760:20;5804:49;5820:32;5849:2;5820:32;:::i;:::-;5804:49;:::i;:::-;5878:2;5869:7;5862:19;5924:3;5917:4;5912:2;5904:6;5900:15;5896:26;5893:35;5890:55;;;5941:1;5938;5931:12;5890:55;6006:2;5999:4;5991:6;5987:17;5980:4;5971:7;5967:18;5954:55;6054:1;6029:16;;;6047:4;6025:27;6018:38;;;;6033:7;5623:464;-1:-1:-1;;;5623:464:111:o;6092:390::-;6170:6;6178;6231:2;6219:9;6210:7;6206:23;6202:32;6199:52;;;6247:1;6244;6237:12;6199:52;6287:9;6274:23;6320:18;6312:6;6309:30;6306:50;;;6352:1;6349;6342:12;6306:50;6375;6417:7;6408:6;6397:9;6393:22;6375:50;:::i;:::-;6365:60;6472:2;6457:18;;;;6444:32;;-1:-1:-1;;;;6092:390:111:o;7018:322::-;7087:6;7140:2;7128:9;7119:7;7115:23;7111:32;7108:52;;;7156:1;7153;7146:12;7108:52;7196:9;7183:23;7229:18;7221:6;7218:30;7215:50;;;7261:1;7258;7251:12;7215:50;7284;7326:7;7317:6;7306:9;7302:22;7284:50;:::i;7598:479::-;7678:6;7686;7694;7747:2;7735:9;7726:7;7722:23;7718:32;7715:52;;;7763:1;7760;7753:12;7715:52;7803:9;7790:23;7836:18;7828:6;7825:30;7822:50;;;7868:1;7865;7858:12;7822:50;7907:59;7958:7;7949:6;7938:9;7934:22;7907:59;:::i;:::-;7985:8;;7881:85;;-1:-1:-1;8067:2:111;8052:18;;;;8039:32;;7598:479;-1:-1:-1;;;;7598:479:111:o;8335:1239::-;8509:6;8517;8525;8533;8541;8549;8557;8565;8573;8581;8634:3;8622:9;8613:7;8609:23;8605:33;8602:53;;;8651:1;8648;8641:12;8602:53;8691:9;8678:23;8720:18;8761:2;8753:6;8750:14;8747:34;;;8777:1;8774;8767:12;8747:34;8800:50;8842:7;8833:6;8822:9;8818:22;8800:50;:::i;:::-;8790:60;;8869:38;8903:2;8892:9;8888:18;8869:38;:::i;:::-;8859:48;;8954:2;8943:9;8939:18;8926:32;8916:42;;9005:2;8994:9;8990:18;8977:32;8967:42;;9028:39;9062:3;9051:9;9047:19;9028:39;:::i;:::-;9018:49;;9120:3;9109:9;9105:19;9092:33;9076:49;;9150:2;9140:8;9137:16;9134:36;;;9166:1;9163;9156:12;9134:36;;9205:79;9276:7;9265:8;9254:9;9250:24;9205:79;:::i;:::-;9303:8;;-1:-1:-1;9179:105:111;-1:-1:-1;;9388:3:111;9373:19;;9360:33;9402:28;9360:33;9402:28;:::i;:::-;9449:5;-1:-1:-1;9473:38:111;9506:3;9491:19;;9473:38;:::i;:::-;9463:48;;9530:38;9563:3;9552:9;9548:19;9530:38;:::i;:::-;9520:48;;8335:1239;;;;;;;;;;;;;:::o;9761:186::-;9820:6;9873:2;9861:9;9852:7;9848:23;9844:32;9841:52;;;9889:1;9886;9879:12;9841:52;9912:29;9931:9;9912:29;:::i;10615:245::-;10682:6;10735:2;10723:9;10714:7;10710:23;10706:32;10703:52;;;10751:1;10748;10741:12;10703:52;10783:9;10777:16;10802:28;10824:5;10802:28;:::i;10865:271::-;11048:6;11040;11035:3;11022:33;11004:3;11074:16;;11099:13;;;11074:16;10865:271;-1:-1:-1;10865:271:111:o;11695:184::-;11747:77;11744:1;11737:88;11844:4;11841:1;11834:15;11868:4;11865:1;11858:15;11884:125;11949:9;;;11970:10;;;11967:36;;;11983:18;;:::i;12014:326::-;12103:6;12098:3;12091:19;12155:6;12148:5;12141:4;12136:3;12132:14;12119:43;;12207:1;12200:4;12191:6;12186:3;12182:16;12178:27;12171:38;12073:3;12329:4;-1:-1:-1;;12254:2:111;12246:6;12242:15;12238:88;12233:3;12229:98;12225:109;12218:116;;12014:326;;;;:::o;12345:723::-;12640:3;12629:9;12622:22;12603:4;12661:63;12719:3;12708:9;12704:19;12696:6;12688;12661:63;:::i;:::-;12653:71;;12743:42;12833:2;12825:6;12821:15;12816:2;12805:9;12801:18;12794:43;12873:6;12868:2;12857:9;12853:18;12846:34;12928:2;12920:6;12916:15;12911:2;12900:9;12896:18;12889:43;;12981:10;12973:6;12969:23;12963:3;12952:9;12948:19;12941:52;13042:18;13034:6;13030:31;13024:3;13013:9;13009:19;13002:60;12345:723;;;;;;;;;;:::o;13073:184::-;13143:6;13196:2;13184:9;13175:7;13171:23;13167:32;13164:52;;;13212:1;13209;13202:12;13164:52;-1:-1:-1;13235:16:111;;13073:184;-1:-1:-1;13073:184:111:o;13262:462::-;13505:3;13494:9;13487:22;13468:4;13526:63;13584:3;13573:9;13569:19;13561:6;13553;13526:63;:::i;:::-;13620:2;13605:18;;13598:34;;;;-1:-1:-1;13663:2:111;13648:18;;13641:34;;;;13706:2;13691:18;;;13684:34;13518:71;13262:462;-1:-1:-1;;13262:462:111:o;13729:128::-;13796:9;;;13817:11;;;13814:37;;;13831:18;;:::i;13862:250::-;13947:1;13957:113;13971:6;13968:1;13965:13;13957:113;;;14047:11;;;14041:18;14028:11;;;14021:39;13993:2;13986:10;13957:113;;;-1:-1:-1;;14104:1:111;14086:16;;14079:27;13862:250::o;14117:330::-;14159:3;14197:5;14191:12;14224:6;14219:3;14212:19;14240:76;14309:6;14302:4;14297:3;14293:14;14286:4;14279:5;14275:16;14240:76;:::i;:::-;14361:2;14349:15;-1:-1:-1;;14345:88:111;14336:98;;;;14436:4;14332:109;;14117:330;-1:-1:-1;;14117:330:111:o;14452:362::-;14657:2;14646:9;14639:21;14620:4;14677:45;14718:2;14707:9;14703:18;14695:6;14677:45;:::i;:::-;14753:2;14738:18;;14731:34;;;;-1:-1:-1;14796:2:111;14781:18;14774:34;14669:53;14452:362;-1:-1:-1;14452:362:111:o;14819:500::-;14913:6;14966:2;14954:9;14945:7;14941:23;14937:32;14934:52;;;14982:1;14979;14972:12;14934:52;15015:2;15009:9;15057:2;15049:6;15045:15;15126:6;15114:10;15111:22;15090:18;15078:10;15075:34;15072:62;15069:88;;;15137:18;;:::i;:::-;15173:2;15166:22;15212:16;;15197:32;;15283:2;15268:18;;;15262:25;15245:15;;;15238:50;;;;-1:-1:-1;15204:6:111;14819:500;-1:-1:-1;14819:500:111:o;15324:1127::-;15431:6;15426:3;15419:19;15401:3;15457:4;15498:2;15493:3;15489:12;15523:11;15550;15543:18;;15600:6;15597:1;15593:14;15586:5;15582:26;15570:38;;15631:5;15654:1;15664:761;15678:6;15675:1;15672:13;15664:761;;;15749:5;15743:4;15739:16;15734:3;15727:29;15808:6;15795:20;15894:66;15886:5;15870:14;15866:26;15862:99;15842:18;15838:124;15828:152;;15976:1;15973;15966:12;15828:152;16008:30;;16116:16;;;;16067:21;16161:18;16148:32;;16145:52;;;16193:1;16190;16183:12;16145:52;16246:8;16230:14;16226:29;16217:7;16213:43;16210:63;;;16269:1;16266;16259:12;16210:63;16294:51;16340:4;16330:8;16321:7;16294:51;:::i;:::-;16403:12;;;;16286:59;-1:-1:-1;;;16368:15:111;;;;15700:1;15693:9;15664:761;;;-1:-1:-1;16441:4:111;;15324:1127;-1:-1:-1;;;;;;;15324:1127:111:o;16456:1037::-;16842:4;16871:3;16901:6;16890:9;16883:25;16927:42;17017:2;17009:6;17005:15;17000:2;16989:9;16985:18;16978:43;17057:6;17052:2;17041:9;17037:18;17030:34;17112:2;17104:6;17100:15;17095:2;17084:9;17080:18;17073:43;;17153:2;17147:3;17136:9;17132:19;17125:31;17173:80;17249:2;17238:9;17234:18;17226:6;17218;17173:80;:::i;:::-;17284:3;17269:19;;17262:35;;;;-1:-1:-1;;17341:14:111;;17334:22;17328:3;17313:19;;17306:51;17406:10;17394:23;;;;17388:3;17373:19;;17366:52;17467:18;17455:31;17449:3;17434:19;;;17427:60;17165:88;16456:1037;-1:-1:-1;;;;;;16456:1037:111:o;18339:389::-;18554:2;18543:9;18536:21;18517:4;18574:62;18632:2;18621:9;18617:18;18609:6;18601;18574:62;:::i;:::-;18667:2;18652:18;;18645:34;;;;-1:-1:-1;18710:2:111;18695:18;18688:34;18566:70;18339:389;-1:-1:-1;;18339:389:111:o;18733:220::-;18882:2;18871:9;18864:21;18845:4;18902:45;18943:2;18932:9;18928:18;18920:6;18902:45;:::i;18958:386::-;19195:6;19184:9;19177:25;19238:2;19233;19222:9;19218:18;19211:30;19158:4;19258:80;19334:2;19323:9;19319:18;19311:6;19303;19258:80;:::i;:::-;19250:88;18958:386;-1:-1:-1;;;;;18958:386:111:o;19349:1676::-;19453:6;19484:2;19527;19515:9;19506:7;19502:23;19498:32;19495:52;;;19543:1;19540;19533:12;19495:52;19576:9;19570:16;19605:18;19646:2;19638:6;19635:14;19632:34;;;19662:1;19659;19652:12;19632:34;19700:6;19689:9;19685:22;19675:32;;19745:7;19738:4;19734:2;19730:13;19726:27;19716:55;;19767:1;19764;19757:12;19716:55;19796:2;19790:9;19818:2;19814;19811:10;19808:36;;;19824:18;;:::i;:::-;19870:2;19867:1;19863:10;19893:28;19917:2;19913;19909:11;19893:28;:::i;:::-;19955:15;;;20025:11;;;20021:20;;;19986:12;;;;20053:19;;;20050:39;;;20085:1;20082;20075:12;20050:39;20117:2;20113;20109:11;20098:22;;20129:866;20145:6;20140:3;20137:15;20129:866;;;20224:3;20218:10;20260:2;20247:11;20244:19;20241:109;;;20304:1;20333:2;20329;20322:14;20241:109;20373:20;;20428:2;20420:11;;20416:25;-1:-1:-1;20406:123:111;;20483:1;20512:2;20508;20501:14;20406:123;20566:2;20562;20558:11;20552:18;20594:2;20622:49;20638:32;20667:2;20638:32;:::i;20622:49::-;20698:2;20691:5;20684:17;20743:7;20737:3;20732:2;20728;20724:11;20720:21;20717:34;20714:127;;;20793:1;20823:3;20818;20811:16;20714:127;20854:68;20919:2;20914;20907:5;20903:14;20897:3;20893:2;20889:12;20854:68;:::i;:::-;20935:18;;-1:-1:-1;;;20162:12:111;;;;20973;;;;20129:866;;;21014:5;19349:1676;-1:-1:-1;;;;;;;;;19349:1676:111:o;21030:444::-;21251:3;21289:6;21283:13;21305:66;21364:6;21359:3;21352:4;21344:6;21340:17;21305:66;:::i;:::-;21432:6;21393:16;;21418:21;;;-1:-1:-1;21466:1:111;21455:13;;21030:444;-1:-1:-1;21030:444:111:o;21479:523::-;21675:4;21704:42;21785:2;21777:6;21773:15;21762:9;21755:34;21837:2;21829:6;21825:15;21820:2;21809:9;21805:18;21798:43;21889:2;21881:6;21877:15;21872:2;21861:9;21857:18;21850:43;;21929:3;21924:2;21913:9;21909:18;21902:31;21950:46;21991:3;21980:9;21976:19;21968:6;21950:46;:::i;:::-;21942:54;21479:523;-1:-1:-1;;;;;;21479:523:111:o;22196:184::-;22248:77;22245:1;22238:88;22345:4;22342:1;22335:15;22369:4;22366:1;22359:15;22385:195;22424:3;22455:66;22448:5;22445:77;22442:103;;22525:18;;:::i;:::-;-1:-1:-1;22572:1:111;22561:13;;22385:195::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1818600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "MIN_REGISTRATION_DURATION()": "284",
                "available(string)": "infinite",
                "commit(bytes32)": "infinite",
                "commitments(bytes32)": "2483",
                "makeCommitment(string,address,uint256,bytes32,address,bytes[],bool,uint32,uint64)": "infinite",
                "maxCommitmentAge()": "infinite",
                "minCommitmentAge()": "infinite",
                "nameWrapper()": "infinite",
                "owner()": "2375",
                "prices()": "infinite",
                "recoverFunds(address,address,uint256)": "infinite",
                "register(string,address,uint256,bytes32,address,bytes[],bool,uint32,uint64)": "infinite",
                "renew(string,uint256)": "infinite",
                "renewWithFuses(string,uint256,uint32,uint64)": "infinite",
                "renounceOwnership()": "28165",
                "rentPrice(string,uint256)": "infinite",
                "reverseRegistrar()": "infinite",
                "supportsInterface(bytes4)": "416",
                "transferOwnership(address)": "28334",
                "valid(string)": "infinite",
                "withdraw()": "infinite"
              },
              "internal": {
                "_consumeCommitment(string memory,uint256,bytes32)": "infinite",
                "_renew(string calldata,uint256,uint32,uint64)": "infinite",
                "_setRecords(address,bytes32,bytes calldata[] calldata)": "infinite",
                "_setReverseRecord(string memory,address,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "MIN_REGISTRATION_DURATION()": "8a95b09f",
              "available(string)": "aeb8ce9b",
              "commit(bytes32)": "f14fcbc8",
              "commitments(bytes32)": "839df945",
              "makeCommitment(string,address,uint256,bytes32,address,bytes[],bool,uint32,uint64)": "d555254a",
              "maxCommitmentAge()": "ce1e09c0",
              "minCommitmentAge()": "8d839ffe",
              "nameWrapper()": "a8e5fbc0",
              "owner()": "8da5cb5b",
              "prices()": "d3419bf3",
              "recoverFunds(address,address,uint256)": "5d3590d5",
              "register(string,address,uint256,bytes32,address,bytes[],bool,uint32,uint64)": "7acaaf26",
              "renew(string,uint256)": "acf1a841",
              "renewWithFuses(string,uint256,uint32,uint64)": "6459220f",
              "renounceOwnership()": "715018a6",
              "rentPrice(string,uint256)": "83e7f6ff",
              "reverseRegistrar()": "80869853",
              "supportsInterface(bytes4)": "01ffc9a7",
              "transferOwnership(address)": "f2fde38b",
              "valid(string)": "9791c097",
              "withdraw()": "3ccfd60b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract BaseRegistrarImplementation\",\"name\":\"_base\",\"type\":\"address\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"_prices\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"contract ReverseRegistrar\",\"name\":\"_reverseRegistrar\",\"type\":\"address\"},{\"internalType\":\"contract INameWrapper\",\"name\":\"_nameWrapper\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"CommitmentTooNew\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"CommitmentTooOld\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"DurationTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCommitmentAgeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCommitmentAgeTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameNotAvailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverRequiredWhenDataSupplied\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"Unauthorised\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"UnexpiredCommitmentExists\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseCost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"NameRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"NameRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_REGISTRATION_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"available\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"commit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"secret\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"reverseRecord\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"wrapperExpiry\",\"type\":\"uint64\"}],\"name\":\"makeCommitment\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxCommitmentAge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minCommitmentAge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nameWrapper\",\"outputs\":[{\"internalType\":\"contract INameWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prices\",\"outputs\":[{\"internalType\":\"contract IPriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"secret\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"reverseRecord\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"wrapperExpiry\",\"type\":\"uint64\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"renew\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"wrapperExpiry\",\"type\":\"uint64\"}],\"name\":\"renewWithFuses\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"rentPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"base\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceOracle.Price\",\"name\":\"price\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reverseRegistrar\",\"outputs\":[{\"internalType\":\"contract ReverseRegistrar\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"valid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A registrar controller for registering and renewing names at fixed cost.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"recoverFunds(address,address,uint256)\":{\"details\":\"The contract is Ownable and only the owner can call the recover function.\",\"params\":{\"_amount\":\"The amount of tokens to recover.\",\"_to\":\"The address to send the tokens to.\",\"_token\":\"The address of the ERC20 token to recover\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverFunds(address,address,uint256)\":{\"notice\":\"Recover ERC20 tokens sent to the contract by mistake.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/ETHRegistrarController.sol\":\"ETHRegistrarController\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n    using Address for address;\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: balance query for the zero address\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: owner query for nonexistent token\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        require(_exists(tokenId), \\\"ERC721Metadata: URI query for nonexistent token\\\");\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overriden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        require(_exists(tokenId), \\\"ERC721: approved query for nonexistent token\\\");\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: transfer caller is not owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: transfer caller is not owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, _data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `_data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, _data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        require(_exists(tokenId), \\\"ERC721: operator query for nonexistent token\\\");\\n        address owner = ERC721.ownerOf(tokenId);\\n        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, _data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits a {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits a {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param _data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\\n                return retval == IERC721Receiver.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n}\\n\",\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/BaseRegistrarImplementation.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract BaseRegistrarImplementation is ERC721, IBaseRegistrar, Ownable {\\n    // A map of expiry times\\n    mapping(uint256 => uint256) expiries;\\n    // The ENS registry\\n    ENS public ens;\\n    // The namehash of the TLD this registrar owns (eg, .eth)\\n    bytes32 public baseNode;\\n    // A map of addresses that are authorised to register and renew names.\\n    mapping(address => bool) public controllers;\\n    uint256 public constant GRACE_PERIOD = 90 days;\\n    bytes4 private constant INTERFACE_META_ID =\\n        bytes4(keccak256(\\\"supportsInterface(bytes4)\\\"));\\n    bytes4 private constant ERC721_ID =\\n        bytes4(\\n            keccak256(\\\"balanceOf(address)\\\") ^\\n                keccak256(\\\"ownerOf(uint256)\\\") ^\\n                keccak256(\\\"approve(address,uint256)\\\") ^\\n                keccak256(\\\"getApproved(uint256)\\\") ^\\n                keccak256(\\\"setApprovalForAll(address,bool)\\\") ^\\n                keccak256(\\\"isApprovedForAll(address,address)\\\") ^\\n                keccak256(\\\"transferFrom(address,address,uint256)\\\") ^\\n                keccak256(\\\"safeTransferFrom(address,address,uint256)\\\") ^\\n                keccak256(\\\"safeTransferFrom(address,address,uint256,bytes)\\\")\\n        );\\n    bytes4 private constant RECLAIM_ID =\\n        bytes4(keccak256(\\\"reclaim(uint256,address)\\\"));\\n\\n    /**\\n     * v2.1.3 version of _isApprovedOrOwner which calls ownerOf(tokenId) and takes grace period into consideration instead of ERC721.ownerOf(tokenId);\\n     * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.3/contracts/token/ERC721/ERC721.sol#L187\\n     * @dev Returns whether the given spender can transfer a given token ID\\n     * @param spender address of the spender to query\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @return bool whether the msg.sender is approved for the given token ID,\\n     *    is an operator of the owner, or is the owner of the token\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId)\\n        internal\\n        view\\n        override\\n        returns (bool)\\n    {\\n        address owner = ownerOf(tokenId);\\n        return (spender == owner ||\\n            getApproved(tokenId) == spender ||\\n            isApprovedForAll(owner, spender));\\n    }\\n\\n    constructor(ENS _ens, bytes32 _baseNode) ERC721(\\\"\\\", \\\"\\\") {\\n        ens = _ens;\\n        baseNode = _baseNode;\\n    }\\n\\n    modifier live() {\\n        require(ens.owner(baseNode) == address(this));\\n        _;\\n    }\\n\\n    modifier onlyController() {\\n        require(controllers[msg.sender]);\\n        _;\\n    }\\n\\n    /**\\n     * @dev Gets the owner of the specified token ID. Names become unowned\\n     *      when their registration expires.\\n     * @param tokenId uint256 ID of the token to query the owner of\\n     * @return address currently marked as the owner of the given token ID\\n     */\\n    function ownerOf(uint256 tokenId)\\n        public\\n        view\\n        override(IERC721, ERC721)\\n        returns (address)\\n    {\\n        require(expiries[tokenId] > block.timestamp);\\n        return super.ownerOf(tokenId);\\n    }\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external override onlyOwner {\\n        controllers[controller] = true;\\n        emit ControllerAdded(controller);\\n    }\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external override onlyOwner {\\n        controllers[controller] = false;\\n        emit ControllerRemoved(controller);\\n    }\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external override onlyOwner {\\n        ens.setResolver(baseNode, resolver);\\n    }\\n\\n    // Returns the expiration timestamp of the specified id.\\n    function nameExpires(uint256 id) external view override returns (uint256) {\\n        return expiries[id];\\n    }\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) public view override returns (bool) {\\n        // Not available if it's registered here or in its grace period.\\n        return expiries[id] + GRACE_PERIOD < block.timestamp;\\n    }\\n\\n    /**\\n     * @dev Register a name.\\n     * @param id The token ID (keccak256 of the label).\\n     * @param owner The address that should own the registration.\\n     * @param duration Duration in seconds for the registration.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external override returns (uint256) {\\n        return _register(id, owner, duration, true);\\n    }\\n\\n    /**\\n     * @dev Register a name, without modifying the registry.\\n     * @param id The token ID (keccak256 of the label).\\n     * @param owner The address that should own the registration.\\n     * @param duration Duration in seconds for the registration.\\n     */\\n    function registerOnly(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256) {\\n        return _register(id, owner, duration, false);\\n    }\\n\\n    function _register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration,\\n        bool updateRegistry\\n    ) internal live onlyController returns (uint256) {\\n        require(available(id));\\n        require(\\n            block.timestamp + duration + GRACE_PERIOD >\\n                block.timestamp + GRACE_PERIOD\\n        ); // Prevent future overflow\\n\\n        expiries[id] = block.timestamp + duration;\\n        if (_exists(id)) {\\n            // Name was previously owned, and expired\\n            _burn(id);\\n        }\\n        _mint(owner, id);\\n        if (updateRegistry) {\\n            ens.setSubnodeOwner(baseNode, bytes32(id), owner);\\n        }\\n\\n        emit NameRegistered(id, owner, block.timestamp + duration);\\n\\n        return block.timestamp + duration;\\n    }\\n\\n    function renew(uint256 id, uint256 duration)\\n        external\\n        override\\n        live\\n        onlyController\\n        returns (uint256)\\n    {\\n        require(expiries[id] + GRACE_PERIOD >= block.timestamp); // Name must be registered here or in grace period\\n        require(\\n            expiries[id] + duration + GRACE_PERIOD > duration + GRACE_PERIOD\\n        ); // Prevent future overflow\\n\\n        expiries[id] += duration;\\n        emit NameRenewed(id, expiries[id]);\\n        return expiries[id];\\n    }\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external override live {\\n        require(_isApprovedOrOwner(msg.sender, id));\\n        ens.setSubnodeOwner(baseNode, bytes32(id), owner);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        override(ERC721, IERC165)\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == INTERFACE_META_ID ||\\n            interfaceID == ERC721_ID ||\\n            interfaceID == RECLAIM_ID;\\n    }\\n}\\n\",\"keccak256\":\"0xb757a151137d4b1b877773226797c8f95a4320cd3d68c7c2cfa588b22f5438ed\"},\"contracts/ethregistrar/ETHRegistrarController.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport {BaseRegistrarImplementation} from \\\"./BaseRegistrarImplementation.sol\\\";\\nimport {StringUtils} from \\\"./StringUtils.sol\\\";\\nimport {Resolver} from \\\"../resolvers/Resolver.sol\\\";\\nimport {ReverseRegistrar} from \\\"../registry/ReverseRegistrar.sol\\\";\\nimport {IETHRegistrarController, IPriceOracle} from \\\"./IETHRegistrarController.sol\\\";\\n\\nimport {Ownable} from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport {IERC165} from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport {INameWrapper} from \\\"../wrapper/INameWrapper.sol\\\";\\nimport {ERC20Recoverable} from \\\"../utils/ERC20Recoverable.sol\\\";\\n\\nerror CommitmentTooNew(bytes32 commitment);\\nerror CommitmentTooOld(bytes32 commitment);\\nerror NameNotAvailable(string name);\\nerror DurationTooShort(uint256 duration);\\nerror ResolverRequiredWhenDataSupplied();\\nerror UnexpiredCommitmentExists(bytes32 commitment);\\nerror InsufficientValue();\\nerror Unauthorised(bytes32 node);\\nerror MaxCommitmentAgeTooLow();\\nerror MaxCommitmentAgeTooHigh();\\n\\n/**\\n * @dev A registrar controller for registering and renewing names at fixed cost.\\n */\\ncontract ETHRegistrarController is\\n    Ownable,\\n    IETHRegistrarController,\\n    IERC165,\\n    ERC20Recoverable\\n{\\n    using StringUtils for *;\\n    using Address for address;\\n\\n    uint256 public constant MIN_REGISTRATION_DURATION = 28 days;\\n    bytes32 private constant ETH_NODE =\\n        0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae;\\n    uint64 private constant MAX_EXPIRY = type(uint64).max;\\n    BaseRegistrarImplementation immutable base;\\n    IPriceOracle public immutable prices;\\n    uint256 public immutable minCommitmentAge;\\n    uint256 public immutable maxCommitmentAge;\\n    ReverseRegistrar public immutable reverseRegistrar;\\n    INameWrapper public immutable nameWrapper;\\n\\n    mapping(bytes32 => uint256) public commitments;\\n\\n    event NameRegistered(\\n        string name,\\n        bytes32 indexed label,\\n        address indexed owner,\\n        uint256 baseCost,\\n        uint256 premium,\\n        uint256 expires\\n    );\\n    event NameRenewed(\\n        string name,\\n        bytes32 indexed label,\\n        uint256 cost,\\n        uint256 expires\\n    );\\n\\n    constructor(\\n        BaseRegistrarImplementation _base,\\n        IPriceOracle _prices,\\n        uint256 _minCommitmentAge,\\n        uint256 _maxCommitmentAge,\\n        ReverseRegistrar _reverseRegistrar,\\n        INameWrapper _nameWrapper\\n    ) {\\n        if (_maxCommitmentAge <= _minCommitmentAge) {\\n            revert MaxCommitmentAgeTooLow();\\n        }\\n\\n        if (_maxCommitmentAge > block.timestamp) {\\n            revert MaxCommitmentAgeTooHigh();\\n        }\\n\\n        base = _base;\\n        prices = _prices;\\n        minCommitmentAge = _minCommitmentAge;\\n        maxCommitmentAge = _maxCommitmentAge;\\n        reverseRegistrar = _reverseRegistrar;\\n        nameWrapper = _nameWrapper;\\n    }\\n\\n    function rentPrice(string memory name, uint256 duration)\\n        public\\n        view\\n        override\\n        returns (IPriceOracle.Price memory price)\\n    {\\n        bytes32 label = keccak256(bytes(name));\\n        price = prices.price(name, base.nameExpires(uint256(label)), duration);\\n    }\\n\\n    function valid(string memory name) public pure returns (bool) {\\n        return name.strlen() >= 3;\\n    }\\n\\n    function available(string memory name) public view override returns (bool) {\\n        bytes32 label = keccak256(bytes(name));\\n        return valid(name) && base.available(uint256(label));\\n    }\\n\\n    function makeCommitment(\\n        string memory name,\\n        address owner,\\n        uint256 duration,\\n        bytes32 secret,\\n        address resolver,\\n        bytes[] calldata data,\\n        bool reverseRecord,\\n        uint32 fuses,\\n        uint64 wrapperExpiry\\n    ) public pure override returns (bytes32) {\\n        bytes32 label = keccak256(bytes(name));\\n        if (data.length > 0 && resolver == address(0)) {\\n            revert ResolverRequiredWhenDataSupplied();\\n        }\\n        return\\n            keccak256(\\n                abi.encode(\\n                    label,\\n                    owner,\\n                    duration,\\n                    resolver,\\n                    data,\\n                    secret,\\n                    reverseRecord,\\n                    fuses,\\n                    wrapperExpiry\\n                )\\n            );\\n    }\\n\\n    function commit(bytes32 commitment) public override {\\n        if (commitments[commitment] + maxCommitmentAge >= block.timestamp) {\\n            revert UnexpiredCommitmentExists(commitment);\\n        }\\n        commitments[commitment] = block.timestamp;\\n    }\\n\\n    function register(\\n        string calldata name,\\n        address owner,\\n        uint256 duration,\\n        bytes32 secret,\\n        address resolver,\\n        bytes[] calldata data,\\n        bool reverseRecord,\\n        uint32 fuses,\\n        uint64 wrapperExpiry\\n    ) public payable override {\\n        IPriceOracle.Price memory price = rentPrice(name, duration);\\n        if (msg.value < price.base + price.premium) {\\n            revert InsufficientValue();\\n        }\\n\\n        _consumeCommitment(\\n            name,\\n            duration,\\n            makeCommitment(\\n                name,\\n                owner,\\n                duration,\\n                secret,\\n                resolver,\\n                data,\\n                reverseRecord,\\n                fuses,\\n                wrapperExpiry\\n            )\\n        );\\n\\n        uint256 expires = nameWrapper.registerAndWrapETH2LD(\\n            name,\\n            owner,\\n            duration,\\n            resolver,\\n            fuses,\\n            wrapperExpiry\\n        );\\n\\n        if (data.length > 0) {\\n            _setRecords(resolver, keccak256(bytes(name)), data);\\n        }\\n\\n        if (reverseRecord) {\\n            _setReverseRecord(name, resolver, msg.sender);\\n        }\\n\\n        emit NameRegistered(\\n            name,\\n            keccak256(bytes(name)),\\n            owner,\\n            price.base,\\n            price.premium,\\n            expires\\n        );\\n\\n        if (msg.value > (price.base + price.premium)) {\\n            payable(msg.sender).transfer(\\n                msg.value - (price.base + price.premium)\\n            );\\n        }\\n    }\\n\\n    function renew(string calldata name, uint256 duration)\\n        external\\n        payable\\n        override\\n    {\\n        _renew(name, duration, 0, 0);\\n    }\\n\\n    function renewWithFuses(\\n        string calldata name,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 wrapperExpiry\\n    ) external payable {\\n        bytes32 labelhash = keccak256(bytes(name));\\n        bytes32 nodehash = keccak256(abi.encodePacked(ETH_NODE, labelhash));\\n        if (!nameWrapper.isTokenOwnerOrApproved(nodehash, msg.sender)) {\\n            revert Unauthorised(nodehash);\\n        }\\n        _renew(name, duration, fuses, wrapperExpiry);\\n    }\\n\\n    function _renew(\\n        string calldata name,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 wrapperExpiry\\n    ) internal {\\n        bytes32 labelhash = keccak256(bytes(name));\\n        uint256 tokenId = uint256(labelhash);\\n        IPriceOracle.Price memory price = rentPrice(name, duration);\\n        if (msg.value < price.base) {\\n            revert InsufficientValue();\\n        }\\n        uint256 expires;\\n        expires = nameWrapper.renew(tokenId, duration, fuses, wrapperExpiry);\\n\\n        if (msg.value > price.base) {\\n            payable(msg.sender).transfer(msg.value - price.base);\\n        }\\n\\n        emit NameRenewed(name, labelhash, msg.value, expires);\\n    }\\n\\n    function withdraw() public {\\n        payable(owner()).transfer(address(this).balance);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        external\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IERC165).interfaceId ||\\n            interfaceID == type(IETHRegistrarController).interfaceId;\\n    }\\n\\n    /* Internal functions */\\n\\n    function _consumeCommitment(\\n        string memory name,\\n        uint256 duration,\\n        bytes32 commitment\\n    ) internal {\\n        // Require an old enough commitment.\\n        if (commitments[commitment] + minCommitmentAge > block.timestamp) {\\n            revert CommitmentTooNew(commitment);\\n        }\\n\\n        // If the commitment is too old, or the name is registered, stop\\n        if (commitments[commitment] + maxCommitmentAge <= block.timestamp) {\\n            revert CommitmentTooOld(commitment);\\n        }\\n        if (!available(name)) {\\n            revert NameNotAvailable(name);\\n        }\\n\\n        delete (commitments[commitment]);\\n\\n        if (duration < MIN_REGISTRATION_DURATION) {\\n            revert DurationTooShort(duration);\\n        }\\n    }\\n\\n    function _setRecords(\\n        address resolverAddress,\\n        bytes32 label,\\n        bytes[] calldata data\\n    ) internal {\\n        // use hardcoded .eth namehash\\n        bytes32 nodehash = keccak256(abi.encodePacked(ETH_NODE, label));\\n        Resolver resolver = Resolver(resolverAddress);\\n        resolver.multicallWithNodeCheck(nodehash, data);\\n    }\\n\\n    function _setReverseRecord(\\n        string memory name,\\n        address resolver,\\n        address owner\\n    ) internal {\\n        reverseRegistrar.setNameForAddr(\\n            msg.sender,\\n            owner,\\n            resolver,\\n            string.concat(name, \\\".eth\\\")\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x8b03956860aa9e3d6fc8d0f9a0bc46c4349939438366f1574fcffefc98f293fa\",\"license\":\"MIT\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/ethregistrar/IETHRegistrarController.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./IPriceOracle.sol\\\";\\n\\ninterface IETHRegistrarController {\\n    function rentPrice(string memory, uint256)\\n        external\\n        returns (IPriceOracle.Price memory);\\n\\n    function available(string memory) external returns (bool);\\n\\n    function makeCommitment(\\n        string memory,\\n        address,\\n        uint256,\\n        bytes32,\\n        address,\\n        bytes[] calldata,\\n        bool,\\n        uint32,\\n        uint64\\n    ) external returns (bytes32);\\n\\n    function commit(bytes32) external;\\n\\n    function register(\\n        string calldata,\\n        address,\\n        uint256,\\n        bytes32,\\n        address,\\n        bytes[] calldata,\\n        bool,\\n        uint32,\\n        uint64\\n    ) external payable;\\n\\n    function renew(string calldata, uint256) external payable;\\n}\\n\",\"keccak256\":\"0x999c1c3386cfef6a52b86b33a45820d551366141db8c5915740895c9f2425772\",\"license\":\"MIT\"},\"contracts/ethregistrar/IPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\ninterface IPriceOracle {\\n    struct Price {\\n        uint256 base;\\n        uint256 premium;\\n    }\\n\\n    /**\\n     * @dev Returns the price to register or renew a name.\\n     * @param name The name being registered or renewed.\\n     * @param expires When the name presently expires (0 if this is a new registration).\\n     * @param duration How long the name is being registered or extended for, in seconds.\\n     * @return base premium tuple of base price + premium price\\n     */\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (Price calldata);\\n}\\n\",\"keccak256\":\"0x1ec537b4c7f9cc40363b39dcc7ade8c29bf94662e6b01d38e681487637bd577e\",\"license\":\"MIT\"},\"contracts/ethregistrar/StringUtils.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nlibrary StringUtils {\\n    /**\\n     * @dev Returns the length of a given string\\n     *\\n     * @param s The string to measure the length of\\n     * @return The length of the input string\\n     */\\n    function strlen(string memory s) internal pure returns (uint256) {\\n        uint256 len;\\n        uint256 i = 0;\\n        uint256 bytelength = bytes(s).length;\\n        for (len = 0; i < bytelength; len++) {\\n            bytes1 b = bytes(s)[i];\\n            if (b < 0x80) {\\n                i += 1;\\n            } else if (b < 0xE0) {\\n                i += 2;\\n            } else if (b < 0xF0) {\\n                i += 3;\\n            } else if (b < 0xF8) {\\n                i += 4;\\n            } else if (b < 0xFC) {\\n                i += 5;\\n            } else {\\n                i += 6;\\n            }\\n        }\\n        return len;\\n    }\\n}\\n\",\"keccak256\":\"0x4cc8363a850dc9130c433ee50e7c97e29a45ae5d9bd0808205ac7134b34f24e4\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/IReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface IReverseRegistrar {\\n    function setDefaultResolver(address resolver) external;\\n\\n    function claim(address owner) external returns (bytes32);\\n\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) external returns (bytes32);\\n\\n    function claimWithResolver(address owner, address resolver)\\n        external\\n        returns (bytes32);\\n\\n    function setName(string memory name) external returns (bytes32);\\n\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) external returns (bytes32);\\n\\n    function node(address addr) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd6ba83973ffbab31dec17a716af3bb5703844d16dceb5078583fb2c509f8bcc2\"},\"contracts/registry/ReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\nimport \\\"./IReverseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../root/Controllable.sol\\\";\\n\\nabstract contract NameResolver {\\n    function setName(bytes32 node, string memory name) public virtual;\\n}\\n\\nbytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\nbytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n// namehash('addr.reverse')\\n\\ncontract ReverseRegistrar is Ownable, Controllable, IReverseRegistrar {\\n    ENS public immutable ens;\\n    NameResolver public defaultResolver;\\n\\n    event ReverseClaimed(address indexed addr, bytes32 indexed node);\\n    event DefaultResolverChanged(NameResolver indexed resolver);\\n\\n    /**\\n     * @dev Constructor\\n     * @param ensAddr The address of the ENS registry.\\n     */\\n    constructor(ENS ensAddr) {\\n        ens = ensAddr;\\n\\n        // Assign ownership of the reverse record to our deployer\\n        ReverseRegistrar oldRegistrar = ReverseRegistrar(\\n            ensAddr.owner(ADDR_REVERSE_NODE)\\n        );\\n        if (address(oldRegistrar) != address(0x0)) {\\n            oldRegistrar.claim(msg.sender);\\n        }\\n    }\\n\\n    modifier authorised(address addr) {\\n        require(\\n            addr == msg.sender ||\\n                controllers[msg.sender] ||\\n                ens.isApprovedForAll(addr, msg.sender) ||\\n                ownsContract(addr),\\n            \\\"ReverseRegistrar: Caller is not a controller or authorised by address or the address itself\\\"\\n        );\\n        _;\\n    }\\n\\n    function setDefaultResolver(address resolver) public override onlyOwner {\\n        require(\\n            address(resolver) != address(0),\\n            \\\"ReverseRegistrar: Resolver address must not be 0\\\"\\n        );\\n        defaultResolver = NameResolver(resolver);\\n        emit DefaultResolverChanged(NameResolver(resolver));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claim(address owner) public override returns (bytes32) {\\n        return claimForAddr(msg.sender, owner, address(defaultResolver));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param addr The reverse record to set\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @param resolver The resolver of the reverse node\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) public override authorised(addr) returns (bytes32) {\\n        bytes32 labelHash = sha3HexAddress(addr);\\n        bytes32 reverseNode = keccak256(\\n            abi.encodePacked(ADDR_REVERSE_NODE, labelHash)\\n        );\\n        emit ReverseClaimed(addr, reverseNode);\\n        ens.setSubnodeRecord(ADDR_REVERSE_NODE, labelHash, owner, resolver, 0);\\n        return reverseNode;\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @param resolver The address of the resolver to set; 0 to leave unchanged.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claimWithResolver(address owner, address resolver)\\n        public\\n        override\\n        returns (bytes32)\\n    {\\n        return claimForAddr(msg.sender, owner, resolver);\\n    }\\n\\n    /**\\n     * @dev Sets the `name()` record for the reverse ENS record associated with\\n     * the calling account. First updates the resolver to the default reverse\\n     * resolver if necessary.\\n     * @param name The name to set for this address.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function setName(string memory name) public override returns (bytes32) {\\n        return\\n            setNameForAddr(\\n                msg.sender,\\n                msg.sender,\\n                address(defaultResolver),\\n                name\\n            );\\n    }\\n\\n    /**\\n     * @dev Sets the `name()` record for the reverse ENS record associated with\\n     * the account provided. Updates the resolver to a designated resolver\\n     * Only callable by controllers and authorised users\\n     * @param addr The reverse record to set\\n     * @param owner The owner of the reverse node\\n     * @param resolver The resolver of the reverse node\\n     * @param name The name to set for this address.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) public override returns (bytes32) {\\n        bytes32 node = claimForAddr(addr, owner, resolver);\\n        NameResolver(resolver).setName(node, name);\\n        return node;\\n    }\\n\\n    /**\\n     * @dev Returns the node hash for a given account's reverse records.\\n     * @param addr The address to hash\\n     * @return The ENS node hash.\\n     */\\n    function node(address addr) public pure override returns (bytes32) {\\n        return\\n            keccak256(\\n                abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr))\\n            );\\n    }\\n\\n    /**\\n     * @dev An optimised function to compute the sha3 of the lower-case\\n     *      hexadecimal representation of an Ethereum address.\\n     * @param addr The address to hash\\n     * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\\n     *         input address.\\n     */\\n    function sha3HexAddress(address addr) private pure returns (bytes32 ret) {\\n        assembly {\\n            for {\\n                let i := 40\\n            } gt(i, 0) {\\n\\n            } {\\n                i := sub(i, 1)\\n                mstore8(i, byte(and(addr, 0xf), lookup))\\n                addr := div(addr, 0x10)\\n                i := sub(i, 1)\\n                mstore8(i, byte(and(addr, 0xf), lookup))\\n                addr := div(addr, 0x10)\\n            }\\n\\n            ret := keccak256(0, 40)\\n        }\\n    }\\n\\n    function ownsContract(address addr) internal view returns (bool) {\\n        try Ownable(addr).owner() returns (address owner) {\\n            return owner == msg.sender;\\n        } catch {\\n            return false;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4430930561750d2de1163f7b7ba22ae003a7684394371e90a04374859a2337cf\"},\"contracts/resolvers/Resolver.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"./profiles/IABIResolver.sol\\\";\\nimport \\\"./profiles/IAddressResolver.sol\\\";\\nimport \\\"./profiles/IAddrResolver.sol\\\";\\nimport \\\"./profiles/IContentHashResolver.sol\\\";\\nimport \\\"./profiles/IDNSRecordResolver.sol\\\";\\nimport \\\"./profiles/IDNSZoneResolver.sol\\\";\\nimport \\\"./profiles/IInterfaceResolver.sol\\\";\\nimport \\\"./profiles/INameResolver.sol\\\";\\nimport \\\"./profiles/IPubkeyResolver.sol\\\";\\nimport \\\"./profiles/ITextResolver.sol\\\";\\nimport \\\"./profiles/IExtendedResolver.sol\\\";\\n\\n/**\\n * A generic resolver interface which includes all the functions including the ones deprecated\\n */\\ninterface Resolver is\\n    IERC165,\\n    IABIResolver,\\n    IAddressResolver,\\n    IAddrResolver,\\n    IContentHashResolver,\\n    IDNSRecordResolver,\\n    IDNSZoneResolver,\\n    IInterfaceResolver,\\n    INameResolver,\\n    IPubkeyResolver,\\n    ITextResolver,\\n    IExtendedResolver\\n{\\n    /* Deprecated events */\\n    event ContentChanged(bytes32 indexed node, bytes32 hash);\\n\\n    function setABI(\\n        bytes32 node,\\n        uint256 contentType,\\n        bytes calldata data\\n    ) external;\\n\\n    function setAddr(bytes32 node, address addr) external;\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes calldata a\\n    ) external;\\n\\n    function setContenthash(bytes32 node, bytes calldata hash) external;\\n\\n    function setDnsrr(bytes32 node, bytes calldata data) external;\\n\\n    function setName(bytes32 node, string calldata _name) external;\\n\\n    function setPubkey(\\n        bytes32 node,\\n        bytes32 x,\\n        bytes32 y\\n    ) external;\\n\\n    function setText(\\n        bytes32 node,\\n        string calldata key,\\n        string calldata value\\n    ) external;\\n\\n    function setInterface(\\n        bytes32 node,\\n        bytes4 interfaceID,\\n        address implementer\\n    ) external;\\n\\n    function multicall(bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    /* Deprecated functions */\\n    function content(bytes32 node) external view returns (bytes32);\\n\\n    function multihash(bytes32 node) external view returns (bytes memory);\\n\\n    function setContent(bytes32 node, bytes32 hash) external;\\n\\n    function setMultihash(bytes32 node, bytes calldata hash) external;\\n}\\n\",\"keccak256\":\"0x73b6cd44b0ed803083996abd3d2683f2444731b6486045f8274c44fce66bf939\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IExtendedResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IExtendedResolver {\\n    function resolve(bytes memory name, bytes memory data)\\n        external\\n        view\\n        returns (bytes memory, address);\\n}\\n\",\"keccak256\":\"0x0a586a1725cdc5f90f2e302c620a4a033adfc87e49bbcc5a43604ba579bce7a7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/root/Controllable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool enabled);\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n\\n    function setController(address controller, bool enabled) public onlyOwner {\\n        controllers[controller] = enabled;\\n        emit ControllerChanged(controller, enabled);\\n    }\\n}\\n\",\"keccak256\":\"0xb19b8c0fafe9ca2b4bf8aaafee486fa31437672e1e1977bdf84bfe03464969db\"},\"contracts/utils/ERC20Recoverable.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\n/**\\n    @notice Contract is used to recover ERC20 tokens sent to the contract by mistake.\\n */\\n\\ncontract ERC20Recoverable is Ownable {\\n    /**\\n    @notice Recover ERC20 tokens sent to the contract by mistake.\\n    @dev The contract is Ownable and only the owner can call the recover function.\\n    @param _to The address to send the tokens to.\\n@param _token The address of the ERC20 token to recover\\n    @param _amount The amount of tokens to recover.\\n */\\n    function recoverFunds(\\n        address _token,\\n        address _to,\\n        uint256 _amount\\n    ) external onlyOwner {\\n        IERC20(_token).transfer(_to, _amount);\\n    }\\n}\\n\",\"keccak256\":\"0x793a38091e1f81499a29ddba82c2b2f3cdd07071b81a832886e8e02a45ff352a\",\"license\":\"MIT\"},\"contracts/wrapper/IMetadataService.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface IMetadataService {\\n    function uri(uint256) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xb3f1cf6df01ed7b15e5f2318f6823afbdb586ca38c2124c67955c645647ae9a2\",\"license\":\"MIT\"},\"contracts/wrapper/INameWrapper.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"../ethregistrar/IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"./IMetadataService.sol\\\";\\n\\nuint32 constant CANNOT_UNWRAP = 1;\\nuint32 constant CANNOT_BURN_FUSES = 2;\\nuint32 constant CANNOT_TRANSFER = 4;\\nuint32 constant CANNOT_SET_RESOLVER = 8;\\nuint32 constant CANNOT_SET_TTL = 16;\\nuint32 constant CANNOT_CREATE_SUBDOMAIN = 32;\\nuint32 constant PARENT_CANNOT_CONTROL = 64;\\nuint32 constant CAN_DO_EVERYTHING = 0;\\n\\ninterface INameWrapper is IERC1155 {\\n    event NameWrapped(\\n        bytes32 indexed node,\\n        bytes name,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    );\\n\\n    event NameUnwrapped(bytes32 indexed node, address owner);\\n\\n    event FusesSet(bytes32 indexed node, uint32 fuses, uint64 expiry);\\n\\n    function ens() external view returns (ENS);\\n\\n    function registrar() external view returns (IBaseRegistrar);\\n\\n    function metadataService() external view returns (IMetadataService);\\n\\n    function names(bytes32) external view returns (bytes memory);\\n\\n    function wrap(\\n        bytes calldata name,\\n        address wrappedOwner,\\n        address resolver\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 _expiry,\\n        address resolver\\n    ) external returns (uint64 expiry);\\n\\n    function registerAndWrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint256 duration,\\n        address resolver,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 registrarExpiry);\\n\\n    function renew(\\n        uint256 labelHash,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 expires);\\n\\n    function unwrap(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external;\\n\\n    function unwrapETH2LD(\\n        bytes32 label,\\n        address newRegistrant,\\n        address newController\\n    ) external;\\n\\n    function setFuses(bytes32 node, uint32 fuses)\\n        external\\n        returns (uint32 newFuses);\\n\\n    function setChildFuses(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        string calldata label,\\n        address newOwner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\\n        external\\n        returns (bool);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function ownerOf(uint256 id) external returns (address owner);\\n\\n    function getData(uint256 id)\\n        external\\n        returns (\\n            address,\\n            uint32,\\n            uint64\\n        );\\n\\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\\n        external\\n        view\\n        returns (bool);\\n\\n    function isWrapped(bytes32 node) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9c0ff4675d7faf51638138ecfc76a1f50c1005d1005bfba31c1cac7990a43c30\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "contracts/ethregistrar/ETHRegistrarController.sol:ETHRegistrarController",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 9866,
                "contract": "contracts/ethregistrar/ETHRegistrarController.sol:ETHRegistrarController",
                "label": "commitments",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_uint256)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "recoverFunds(address,address,uint256)": {
                "notice": "Recover ERC20 tokens sent to the contract by mistake."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/ExponentialPremiumPriceOracle.sol": {
        "ExponentialPremiumPriceOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract AggregatorInterface",
                  "name": "_usdOracle",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_rentPrices",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256",
                  "name": "_startPremium",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalDays",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "prices",
                  "type": "uint256[]"
                }
              ],
              "name": "RentPriceChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "startPremium",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "elapsed",
                  "type": "uint256"
                }
              ],
              "name": "decayedPremium",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "premium",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "price",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "base",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "premium",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPriceOracle.Price",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price1Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price2Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price3Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price4Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price5Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "usdOracle",
              "outputs": [
                {
                  "internalType": "contract AggregatorInterface",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "decayedPremium(uint256,uint256)": {
                "details": "Returns the premium price at current time elapsed",
                "params": {
                  "elapsed": "time past since expiry",
                  "startPremium": "starting price"
                }
              },
              "premium(string,uint256,uint256)": {
                "details": "Returns the pricing premium in wei."
              },
              "price(string,uint256,uint256)": {
                "details": "Returns the price to register or renew a name.",
                "params": {
                  "duration": "How long the name is being registered or extended for, in seconds.",
                  "expires": "When the name presently expires (0 if this is a new registration).",
                  "name": "The name being registered or renewed."
                },
                "returns": {
                  "_0": "base premium tuple of base price + premium price"
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_10630": {
                  "entryPoint": null,
                  "id": 10630,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_11725": {
                  "entryPoint": null,
                  "id": 11725,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256_fromMemory": {
                  "entryPoint": 300,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "panic_error_0x32": {
                  "entryPoint": 551,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 278,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1704:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "70:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "75:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "66:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "66:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "106:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "96:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "127:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "130:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "120:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "332:1238:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "379:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "388:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "391:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "381:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "381:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "381:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "353:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "362:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "349:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "349:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "374:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "342:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "404:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "423:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "417:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "417:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "408:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "496:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "505:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "508:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "498:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "498:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "498:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "466:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "481:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "486:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "477:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "477:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "490:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "473:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "473:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "462:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "462:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "452:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "452:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "445:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "445:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "442:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "521:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "531:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "521:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "545:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "555:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "549:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "566:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "590:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "601:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "586:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "586:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "580:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "580:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "570:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "614:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "632:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "636:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "628:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "628:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "640:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "618:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "669:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "678:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "681:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "671:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "671:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "671:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "657:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "665:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "654:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "654:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "651:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "694:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "708:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "719:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "704:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "704:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "698:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "774:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "783:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "786:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "776:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "776:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "776:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "753:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "757:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "749:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "749:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "764:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "745:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "745:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "738:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "738:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "735:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "799:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "815:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "809:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "809:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "803:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "841:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "843:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "843:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "843:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "833:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "837:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "830:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "830:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "827:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "872:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "886:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "889:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "882:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "882:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "876:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "901:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "921:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "915:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "915:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "905:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "933:56:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "955:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_5",
                                            "nodeType": "YulIdentifier",
                                            "src": "971:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "975:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "967:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "967:11:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "984:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "980:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "980:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "963:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "963:25:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "951:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "951:38:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "937:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1048:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1050:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1050:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1050:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1007:10:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1019:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1004:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1004:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1027:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1039:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1024:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1024:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1001:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1001:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "998:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1086:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1090:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1079:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1079:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1079:22:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1110:17:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1121:6:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1114:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1143:6:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1151:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1136:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1136:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1136:18:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1163:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1174:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1182:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1170:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1170:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1163:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1194:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "1216:2:111"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "1220:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1212:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1212:11:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1225:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1208:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1208:20:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "1198:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1260:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1269:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1272:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1262:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1262:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1262:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1243:6:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1251:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1240:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1240:19:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1237:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1285:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1300:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1304:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1296:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1296:11:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "1289:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1372:79:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1393:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1404:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1398:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1398:10:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1386:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1386:23:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1386:23:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1422:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1433:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1438:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1429:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1429:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1422:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1327:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1332:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1324:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1324:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1340:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1342:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1353:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1358:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1349:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1349:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1342:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1320:3:111",
                                "statements": []
                              },
                              "src": "1316:135:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1460:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1470:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1460:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1485:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1505:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1516:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1501:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1501:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1495:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1495:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1485:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1529:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1549:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1560:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1545:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1545:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1539:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1539:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1529:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "274:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "285:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "297:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "305:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "313:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "321:6:111",
                            "type": ""
                          }
                        ],
                        "src": "146:1424:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1607:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1624:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1636:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1627:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1627:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1617:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1617:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1617:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1664:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1667:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1657:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1657:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1657:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1688:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1691:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1681:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1681:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1681:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1575:127:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        let _1 := 32\n        let offset := mload(add(headStart, _1))\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(_5, 63), not(31)))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let dst := memPtr\n        mstore(memPtr, _4)\n        dst := add(memPtr, _1)\n        let srcEnd := add(add(_3, _5), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _1)\n        }\n        value1 := memPtr\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101806040523480156200001257600080fd5b50604051620011683803806200116883398101604081905262000035916200012c565b6001600160a01b0384166101205282518490849081906000906200005d576200005d62000227565b6020026020010151608081815250508060018151811062000082576200008262000227565b602002602001015160a0818152505080600281518110620000a757620000a762000227565b602002602001015160c0818152505080600381518110620000cc57620000cc62000227565b602002602001015160e0818152505080600481518110620000f157620000f162000227565b60209081029190910101516101005250506101408290521c61016052506200023d9050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200014357600080fd5b84516001600160a01b03811681146200015b57600080fd5b602086810151919550906001600160401b03808211156200017b57600080fd5b818801915088601f8301126200019057600080fd5b815181811115620001a557620001a562000116565b8060051b604051601f19603f83011681018181108582111715620001cd57620001cd62000116565b60405291825284820192508381018501918b831115620001ec57600080fd5b938501935b828510156200020c57845184529385019392850192620001f1565b60408b01516060909b0151999c909b50975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e05161010051610120516101405161016051610e95620002d3600039600081816108d101526108fb015260006108a80152600081816101c701526107c301526000818161015301526102d401526000818161023a015261030d01526000818161018d015261033f015260008181610213015261037101526000818160f0015261039b0152610e956000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a200e15311610076578063c8a4271f1161005b578063c8a4271f146101c2578063cd5d2c741461020e578063d820ed421461023557600080fd5b8063a200e15314610188578063a34e3596146101af57600080fd5b806350e9a715116100a757806350e9a7151461012057806359b6b86c1461014e57806359e1777c1461017557600080fd5b806301ffc9a7146100c35780632c0fd74c146100eb575b600080fd5b6100d66100d1366004610c55565b61025c565b60405190151581526020015b60405180910390f35b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100e2565b61013361012e366004610c97565b61026d565b604080518251815260209283015192810192909252016100e2565b6101127f000000000000000000000000000000000000000000000000000000000000000081565b610112610183366004610d16565b610433565b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101126101bd366004610c97565b6104ce565b6101e97f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e2565b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101127f000000000000000000000000000000000000000000000000000000000000000081565b60006102678261051f565b92915050565b604080518082019091526000808252602082015260006102c286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506105b792505050565b90506000600582106102ff576102f8847f0000000000000000000000000000000000000000000000000000000000000000610d67565b90506103c2565b81600403610331576102f8847f0000000000000000000000000000000000000000000000000000000000000000610d67565b81600303610363576102f8847f0000000000000000000000000000000000000000000000000000000000000000610d67565b81600203610395576102f8847f0000000000000000000000000000000000000000000000000000000000000000610d67565b6103bf847f0000000000000000000000000000000000000000000000000000000000000000610d67565b90505b60405180604001604052806103d6836107be565b81526020016104266104218a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91506108729050565b6107be565b9052979650505050505050565b6000806201518061044c670de0b6b3a764000085610d67565b6104569190610d7e565b9050600061046c670de0b6b3a764000083610d7e565b905084811c6000610485670de0b6b3a764000084610d67565b61048f9085610db9565b90506000670de0b6b3a76400006104a98362010000610d67565b6104b39190610d7e565b905060006104c18285610935565b9998505050505050505050565b600061051661042186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892508791506108729050565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061026757507fffffffff0000000000000000000000000000000000000000000000000000000082167f50e9a715000000000000000000000000000000000000000000000000000000001492915050565b8051600090819081905b808210156107b55760008583815181106105dd576105dd610dcc565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f800000000000000000000000000000000000000000000000000000000000000081101561064057610639600184610dfb565b92506107a2565b7fe0000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561069557610639600284610dfb565b7ff0000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156106ea57610639600384610dfb565b7ff8000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561073f57610639600484610dfb565b7ffc000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561079457610639600584610dfb565b61079f600684610dfb565b92505b50826107ad81610e0e565b9350506105c1565b50909392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108509190610e46565b905080610861846305f5e100610d67565b61086b9190610d7e565b9392505050565b60006108816276a70084610dfb565b9250428311156108935750600061086b565b600061089f8442610db9565b905060006108cd7f000000000000000000000000000000000000000000000000000000000000000083610433565b90507f00000000000000000000000000000000000000000000000000000000000000008110610929576109207f000000000000000000000000000000000000000000000000000000000000000082610db9565b9250505061086b565b50600095945050505050565b6000600183161561096857670de0b6b3a764000061095b670de0ad151d09418084610d67565b6109659190610d7e565b91505b600283161561099957670de0b6b3a764000061098c670de0a3769959680084610d67565b6109969190610d7e565b91505b60048316156109ca57670de0b6b3a76400006109bd670de09039a5fa510084610d67565b6109c79190610d7e565b91505b60088316156109fb57670de0b6b3a76400006109ee670de069c00f3e120084610d67565b6109f89190610d7e565b91505b6010831615610a2c57670de0b6b3a7640000610a1f670de01cce21c9440084610d67565b610a299190610d7e565b91505b6020831615610a5d57670de0b6b3a7640000610a50670ddf82ef46ce100084610d67565b610a5a9190610d7e565b91505b6040831615610a8e57670de0b6b3a7640000610a81670dde4f458f8e8d8084610d67565b610a8b9190610d7e565b91505b6080831615610abf57670de0b6b3a7640000610ab2670ddbe84213d5f08084610d67565b610abc9190610d7e565b91505b610100831615610af157670de0b6b3a7640000610ae4670dd71b7aa6df5b8084610d67565b610aee9190610d7e565b91505b610200831615610b2357670de0b6b3a7640000610b16670dcd86e7f28cde0084610d67565b610b209190610d7e565b91505b610400831615610b5557670de0b6b3a7640000610b48670dba71a3084ad68084610d67565b610b529190610d7e565b91505b610800831615610b8757670de0b6b3a7640000610b7a670d94961b13dbde8084610d67565b610b849190610d7e565b91505b611000831615610bb957670de0b6b3a7640000610bac670d4a171c35c9838084610d67565b610bb69190610d7e565b91505b612000831615610beb57670de0b6b3a7640000610bde670cb9da519ccfb70084610d67565b610be89190610d7e565b91505b614000831615610c1d57670de0b6b3a7640000610c10670bab76d59c18d68084610d67565b610c1a9190610d7e565b91505b618000831615610c4f57670de0b6b3a7640000610c426709d025defee4df8084610d67565b610c4c9190610d7e565b91505b50919050565b600060208284031215610c6757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461086b57600080fd5b60008060008060608587031215610cad57600080fd5b843567ffffffffffffffff80821115610cc557600080fd5b818701915087601f830112610cd957600080fd5b813581811115610ce857600080fd5b886020828501011115610cfa57600080fd5b6020928301999098509187013596604001359550909350505050565b60008060408385031215610d2957600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761026757610267610d38565b600082610db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561026757610267610d38565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8082018082111561026757610267610d38565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e3f57610e3f610d38565b5060010190565b600060208284031215610e5857600080fd5b505191905056fea264697066735822122026ee1972789ed12d69c43bb984759c3d84f50065c3e2508d4e865675e467d74564736f6c63430008110033",
              "opcodes": "PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1168 CODESIZE SUB DUP1 PUSH3 0x1168 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x12C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x120 MSTORE DUP3 MLOAD DUP5 SWAP1 DUP5 SWAP1 DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH3 0x5D JUMPI PUSH3 0x5D PUSH3 0x227 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x82 JUMPI PUSH3 0x82 PUSH3 0x227 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH3 0xA7 JUMPI PUSH3 0xA7 PUSH3 0x227 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x3 DUP2 MLOAD DUP2 LT PUSH3 0xCC JUMPI PUSH3 0xCC PUSH3 0x227 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xE0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x4 DUP2 MLOAD DUP2 LT PUSH3 0xF1 JUMPI PUSH3 0xF1 PUSH3 0x227 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH2 0x100 MSTORE POP POP PUSH2 0x140 DUP3 SWAP1 MSTORE SHR PUSH2 0x160 MSTORE POP PUSH3 0x23D SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP7 DUP2 ADD MLOAD SWAP2 SWAP6 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x1A5 JUMPI PUSH3 0x1A5 PUSH3 0x116 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH3 0x1CD JUMPI PUSH3 0x1CD PUSH3 0x116 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 DUP3 MSTORE DUP5 DUP3 ADD SWAP3 POP DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP12 DUP4 GT ISZERO PUSH3 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP3 DUP6 LT ISZERO PUSH3 0x20C JUMPI DUP5 MLOAD DUP5 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP3 DUP6 ADD SWAP3 PUSH3 0x1F1 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x60 SWAP1 SWAP12 ADD MLOAD SWAP10 SWAP13 SWAP1 SWAP12 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0xE95 PUSH3 0x2D3 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x8D1 ADD MSTORE PUSH2 0x8FB ADD MSTORE PUSH1 0x0 PUSH2 0x8A8 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x1C7 ADD MSTORE PUSH2 0x7C3 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x153 ADD MSTORE PUSH2 0x2D4 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x23A ADD MSTORE PUSH2 0x30D ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x18D ADD MSTORE PUSH2 0x33F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x213 ADD MSTORE PUSH2 0x371 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH1 0xF0 ADD MSTORE PUSH2 0x39B ADD MSTORE PUSH2 0xE95 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA200E153 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC8A4271F GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC8A4271F EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0xCD5D2C74 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0xD820ED42 EQ PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA200E153 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xA34E3596 EQ PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x50E9A715 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x50E9A715 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x59B6B86C EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x59E1777C EQ PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x2C0FD74C EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE2 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0xC97 JUMP JUMPDEST PUSH2 0x26D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0xE2 JUMP JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x112 PUSH2 0x183 CALLDATASIZE PUSH1 0x4 PUSH2 0xD16 JUMP JUMPDEST PUSH2 0x433 JUMP JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x112 PUSH2 0x1BD CALLDATASIZE PUSH1 0x4 PUSH2 0xC97 JUMP JUMPDEST PUSH2 0x4CE JUMP JUMPDEST PUSH2 0x1E9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE2 JUMP JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x267 DUP3 PUSH2 0x51F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2C2 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x5B7 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 DUP3 LT PUSH2 0x2FF JUMPI PUSH2 0x2F8 DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0x4 SUB PUSH2 0x331 JUMPI PUSH2 0x2F8 DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST DUP2 PUSH1 0x3 SUB PUSH2 0x363 JUMPI PUSH2 0x2F8 DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST DUP2 PUSH1 0x2 SUB PUSH2 0x395 JUMPI PUSH2 0x2F8 DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x3BF DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3D6 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x426 PUSH2 0x421 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP DUP12 SWAP2 POP PUSH2 0x872 SWAP1 POP JUMP JUMPDEST PUSH2 0x7BE JUMP JUMPDEST SWAP1 MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x15180 PUSH2 0x44C PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x456 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x46C PUSH8 0xDE0B6B3A7640000 DUP4 PUSH2 0xD7E JUMP JUMPDEST SWAP1 POP DUP5 DUP2 SHR PUSH1 0x0 PUSH2 0x485 PUSH8 0xDE0B6B3A7640000 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x48F SWAP1 DUP6 PUSH2 0xDB9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4A9 DUP4 PUSH3 0x10000 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x4B3 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4C1 DUP3 DUP6 PUSH2 0x935 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x516 PUSH2 0x421 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP DUP8 SWAP2 POP PUSH2 0x872 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x267 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x50E9A71500000000000000000000000000000000000000000000000000000000 EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5DD JUMPI PUSH2 0x5DD PUSH2 0xDCC JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x640 JUMPI PUSH2 0x639 PUSH1 0x1 DUP5 PUSH2 0xDFB JUMP JUMPDEST SWAP3 POP PUSH2 0x7A2 JUMP JUMPDEST PUSH32 0xE000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x695 JUMPI PUSH2 0x639 PUSH1 0x2 DUP5 PUSH2 0xDFB JUMP JUMPDEST PUSH32 0xF000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x6EA JUMPI PUSH2 0x639 PUSH1 0x3 DUP5 PUSH2 0xDFB JUMP JUMPDEST PUSH32 0xF800000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x73F JUMPI PUSH2 0x639 PUSH1 0x4 DUP5 PUSH2 0xDFB JUMP JUMPDEST PUSH32 0xFC00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x794 JUMPI PUSH2 0x639 PUSH1 0x5 DUP5 PUSH2 0xDFB JUMP JUMPDEST PUSH2 0x79F PUSH1 0x6 DUP5 PUSH2 0xDFB JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP3 PUSH2 0x7AD DUP2 PUSH2 0xE0E JUMP JUMPDEST SWAP4 POP POP PUSH2 0x5C1 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x82C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x850 SWAP2 SWAP1 PUSH2 0xE46 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x861 DUP5 PUSH4 0x5F5E100 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x86B SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x881 PUSH3 0x76A700 DUP5 PUSH2 0xDFB JUMP JUMPDEST SWAP3 POP TIMESTAMP DUP4 GT ISZERO PUSH2 0x893 JUMPI POP PUSH1 0x0 PUSH2 0x86B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89F DUP5 TIMESTAMP PUSH2 0xDB9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x8CD PUSH32 0x0 DUP4 PUSH2 0x433 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 DUP2 LT PUSH2 0x929 JUMPI PUSH2 0x920 PUSH32 0x0 DUP3 PUSH2 0xDB9 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x86B JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 AND ISZERO PUSH2 0x968 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x95B PUSH8 0xDE0AD151D094180 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x965 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x2 DUP4 AND ISZERO PUSH2 0x999 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x98C PUSH8 0xDE0A37699596800 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x996 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x4 DUP4 AND ISZERO PUSH2 0x9CA JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x9BD PUSH8 0xDE09039A5FA5100 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x9C7 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x8 DUP4 AND ISZERO PUSH2 0x9FB JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x9EE PUSH8 0xDE069C00F3E1200 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x9F8 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x10 DUP4 AND ISZERO PUSH2 0xA2C JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xA1F PUSH8 0xDE01CCE21C94400 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xA29 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x20 DUP4 AND ISZERO PUSH2 0xA5D JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xA50 PUSH8 0xDDF82EF46CE1000 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xA5A SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 DUP4 AND ISZERO PUSH2 0xA8E JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xA81 PUSH8 0xDDE4F458F8E8D80 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xA8B SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x80 DUP4 AND ISZERO PUSH2 0xABF JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xAB2 PUSH8 0xDDBE84213D5F080 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xABC SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x100 DUP4 AND ISZERO PUSH2 0xAF1 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xAE4 PUSH8 0xDD71B7AA6DF5B80 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xAEE SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x200 DUP4 AND ISZERO PUSH2 0xB23 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xB16 PUSH8 0xDCD86E7F28CDE00 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xB20 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x400 DUP4 AND ISZERO PUSH2 0xB55 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xB48 PUSH8 0xDBA71A3084AD680 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xB52 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x800 DUP4 AND ISZERO PUSH2 0xB87 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xB7A PUSH8 0xD94961B13DBDE80 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xB84 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1000 DUP4 AND ISZERO PUSH2 0xBB9 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xBAC PUSH8 0xD4A171C35C98380 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xBB6 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2000 DUP4 AND ISZERO PUSH2 0xBEB JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xBDE PUSH8 0xCB9DA519CCFB700 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xBE8 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x4000 DUP4 AND ISZERO PUSH2 0xC1D JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xC10 PUSH8 0xBAB76D59C18D680 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xC1A SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x8000 DUP4 AND ISZERO PUSH2 0xC4F JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xC42 PUSH8 0x9D025DEFEE4DF80 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xC4C SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xCE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xCFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP10 SWAP1 SWAP9 POP SWAP2 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x40 ADD CALLDATALOAD SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x267 JUMPI PUSH2 0x267 PUSH2 0xD38 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xDB4 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x267 JUMPI PUSH2 0x267 PUSH2 0xD38 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x267 JUMPI PUSH2 0x267 PUSH2 0xD38 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xE3F JUMPI PUSH2 0xE3F PUSH2 0xD38 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0xEE NOT PUSH19 0x789ED12D69C43BB984759C3D84F50065C3E250 DUP14 0x4E DUP7 JUMP PUSH22 0xE467D74564736F6C6343000811003300000000000000 ",
              "sourceMap": "92:4591:45:-:0;;;272:289;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;985:22:52;;;;1032:14;;444:10:45;;456:11;;;;1044:1:52;;1032:14;;;;:::i;:::-;;;;;;;1017:29;;;;;;1071:11;1083:1;1071:14;;;;;;;;:::i;:::-;;;;;;;1056:29;;;;;;1110:11;1122:1;1110:14;;;;;;;;:::i;:::-;;;;;;;1095:29;;;;;;1149:11;1161:1;1149:14;;;;;;;;:::i;:::-;;;;;;;1134:29;;;;;;1188:11;1200:1;1188:14;;;;;;;;:::i;:::-;;;;;;;;;;;1173:29;;-1:-1:-1;;479:28:45::1;::::0;;;528:26:::1;517:37;::::0;-1:-1:-1;92:4591:45;;-1:-1:-1;92:4591:45;14:127:111;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1424;297:6;305;313;321;374:3;362:9;353:7;349:23;345:33;342:53;;;391:1;388;381:12;342:53;417:16;;-1:-1:-1;;;;;462:31:111;;452:42;;442:70;;508:1;505;498:12;442:70;555:2;586:18;;;580:25;531:5;;-1:-1:-1;555:2:111;-1:-1:-1;;;;;654:14:111;;;651:34;;;681:1;678;671:12;651:34;719:6;708:9;704:22;694:32;;764:7;757:4;753:2;749:13;745:27;735:55;;786:1;783;776:12;735:55;815:2;809:9;837:2;833;830:10;827:36;;;843:18;;:::i;:::-;889:2;886:1;882:10;921:2;915:9;984:2;980:7;975:2;971;967:11;963:25;955:6;951:38;1039:6;1027:10;1024:22;1019:2;1007:10;1004:18;1001:46;998:72;;;1050:18;;:::i;:::-;1086:2;1079:22;1136:18;;;1170:15;;;;-1:-1:-1;1212:11:111;;;1208:20;;;1240:19;;;1237:39;;;1272:1;1269;1262:12;1237:39;1296:11;;;;1316:135;1332:6;1327:3;1324:15;1316:135;;;1398:10;;1386:23;;1349:12;;;;1429;;;;1316:135;;;1516:2;1501:18;;1495:25;1560:2;1545:18;;;1539:25;146:1424;;1470:6;;-1:-1:-1;146:1424:111;-1:-1:-1;;;;;;;;146:1424:111:o;1575:127::-;1636:10;1631:3;1627:20;1624:1;1617:31;1667:4;1664:1;1657:15;1691:4;1688:1;1681:15;1575:127;92:4591:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_premium_10734": {
                  "entryPoint": 2162,
                  "id": 10734,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@addFractionalPremium_11112": {
                  "entryPoint": 2357,
                  "id": 11112,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@attoUSDToWei_11873": {
                  "entryPoint": 1982,
                  "id": 11873,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decayedPremium_10796": {
                  "entryPoint": 1075,
                  "id": 10796,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@premium_11834": {
                  "entryPoint": 1230,
                  "id": 11834,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@price1Letter_11665": {
                  "entryPoint": null,
                  "id": 11665,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price2Letter_11667": {
                  "entryPoint": null,
                  "id": 11667,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price3Letter_11669": {
                  "entryPoint": null,
                  "id": 11669,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price4Letter_11671": {
                  "entryPoint": null,
                  "id": 11671,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price5Letter_11673": {
                  "entryPoint": null,
                  "id": 11673,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price_11813": {
                  "entryPoint": 621,
                  "id": 11813,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@strlen_12019": {
                  "entryPoint": 1463,
                  "id": 12019,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_11126": {
                  "entryPoint": 604,
                  "id": 11126,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_11919": {
                  "entryPoint": 1311,
                  "id": 11919,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@usdOracle_11676": {
                  "entryPoint": null,
                  "id": 11676,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 3157,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int256_fromMemory": {
                  "entryPoint": 3654,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256": {
                  "entryPoint": 3223,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 3350,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3579,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 3454,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 3431,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 3513,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 3598,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3384,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3532,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3755:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "644:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "654:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "666:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "677:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "662:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "662:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "654:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "696:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "707:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "689:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "689:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "613:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "624:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "635:4:111",
                            "type": ""
                          }
                        ],
                        "src": "543:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "849:610:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "895:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "904:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "907:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "897:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "897:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "897:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "866:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "866:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "891:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "862:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "862:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "859:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "920:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "947:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "934:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "934:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "924:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "966:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "976:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "970:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1021:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1030:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1033:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1023:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1023:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1023:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1009:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1017:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1006:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1006:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1003:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1046:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1060:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1071:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1056:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1056:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1050:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1126:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1135:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1138:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1128:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1128:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1128:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1105:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1109:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1101:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1101:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1097:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1097:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1090:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1090:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1087:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1151:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1178:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1165:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1165:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1155:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1208:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1217:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1220:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1210:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1210:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1210:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1196:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1204:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1193:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1193:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1190:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1276:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1285:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1288:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1278:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1278:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1278:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1247:2:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1251:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1243:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1243:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1260:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1239:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1239:26:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1267:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1236:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1236:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1233:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1301:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1315:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1319:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1311:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1311:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1301:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1333:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1343:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1333:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1358:44:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1385:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1396:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1381:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1381:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1368:34:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1358:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1411:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1438:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1449:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1434:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1434:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1421:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1421:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1411:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "791:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "802:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "814:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "822:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "830:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "838:6:111",
                            "type": ""
                          }
                        ],
                        "src": "725:734:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1613:146:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1623:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1635:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1646:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1631:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1631:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1623:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1665:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1682:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1676:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1676:13:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1658:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1658:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1658:32:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1710:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1721:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1706:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1706:20:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1738:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1746:4:111",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1734:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1734:17:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1728:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1728:24:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1699:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1699:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1699:54:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1582:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1593:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1604:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1464:295:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1851:161:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1897:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1906:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1909:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1899:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1899:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1899:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1872:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1881:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1868:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1868:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1893:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1864:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1864:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1861:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1922:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1945:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1932:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1932:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1922:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1964:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1991:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2002:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1987:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1987:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1974:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1974:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1964:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1809:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1820:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1832:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1840:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1764:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2147:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2157:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2169:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2180:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2165:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2165:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2157:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2199:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2214:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2222:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2210:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2210:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2192:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2192:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2192:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2116:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2127:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2138:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2017:255:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2309:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2326:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2329:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2319:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2319:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2319:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2423:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2426:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2416:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2416:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2416:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2447:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2450:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2440:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2440:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2440:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2277:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2518:116:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2528:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2543:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2546:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "2539:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2539:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "2528:7:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2606:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2608:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2608:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2608:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "2577:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2570:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2570:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "2584:1:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "product",
                                                "nodeType": "YulIdentifier",
                                                "src": "2591:7:111"
                                              },
                                              {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "2600:1:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "2587:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2587:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nodeType": "YulIdentifier",
                                          "src": "2581:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2581:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "2567:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2567:37:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2560:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2560:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2557:71:111"
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2497:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2500:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "2506:7:111",
                            "type": ""
                          }
                        ],
                        "src": "2466:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2685:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2716:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2737:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2740:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2730:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2730:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2730:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2838:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2841:4:111",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2831:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2831:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2831:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2866:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2869:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2859:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2859:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2859:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2705:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2698:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2698:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2695:189:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2893:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2902:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2905:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "2898:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2898:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "2893:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2670:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2673:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "2679:1:111",
                            "type": ""
                          }
                        ],
                        "src": "2639:274:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2967:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2977:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2989:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2992:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "2985:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2985:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "2977:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3018:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3020:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3020:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3020:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "3009:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3015:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3006:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3006:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3003:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2949:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2952:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "2958:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2918:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3083:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3100:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3103:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3093:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3093:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3093:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3197:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3200:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3190:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3190:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3190:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3221:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3224:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3214:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3214:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3214:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3051:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3288:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3298:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3309:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3312:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3305:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3305:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "3298:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3337:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3339:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3339:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3339:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3329:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "3332:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3326:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3326:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3323:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3271:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3274:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "3280:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3240:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3417:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3508:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3510:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3510:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3510:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3433:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3440:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "3430:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3430:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3427:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3539:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3550:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3557:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3546:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3546:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "3539:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3399:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "3409:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3370:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3650:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3696:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3705:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3708:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3698:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3698:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3698:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3671:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3680:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3667:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3667:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3692:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3663:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3663:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3660:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3721:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3737:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3731:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3731:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3721:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3616:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3627:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3639:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3570:183:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 0x20), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 0x20)\n        value1 := length\n        value2 := calldataload(add(headStart, 0x20))\n        value3 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_decode_tuple_t_int256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "10600": [
                  {
                    "length": 32,
                    "start": 2216
                  }
                ],
                "10602": [
                  {
                    "length": 32,
                    "start": 2257
                  },
                  {
                    "length": 32,
                    "start": 2299
                  }
                ],
                "11665": [
                  {
                    "length": 32,
                    "start": 240
                  },
                  {
                    "length": 32,
                    "start": 923
                  }
                ],
                "11667": [
                  {
                    "length": 32,
                    "start": 531
                  },
                  {
                    "length": 32,
                    "start": 881
                  }
                ],
                "11669": [
                  {
                    "length": 32,
                    "start": 397
                  },
                  {
                    "length": 32,
                    "start": 831
                  }
                ],
                "11671": [
                  {
                    "length": 32,
                    "start": 570
                  },
                  {
                    "length": 32,
                    "start": 781
                  }
                ],
                "11673": [
                  {
                    "length": 32,
                    "start": 339
                  },
                  {
                    "length": 32,
                    "start": 724
                  }
                ],
                "11676": [
                  {
                    "length": 32,
                    "start": 455
                  },
                  {
                    "length": 32,
                    "start": 1987
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a200e15311610076578063c8a4271f1161005b578063c8a4271f146101c2578063cd5d2c741461020e578063d820ed421461023557600080fd5b8063a200e15314610188578063a34e3596146101af57600080fd5b806350e9a715116100a757806350e9a7151461012057806359b6b86c1461014e57806359e1777c1461017557600080fd5b806301ffc9a7146100c35780632c0fd74c146100eb575b600080fd5b6100d66100d1366004610c55565b61025c565b60405190151581526020015b60405180910390f35b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100e2565b61013361012e366004610c97565b61026d565b604080518251815260209283015192810192909252016100e2565b6101127f000000000000000000000000000000000000000000000000000000000000000081565b610112610183366004610d16565b610433565b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101126101bd366004610c97565b6104ce565b6101e97f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e2565b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101127f000000000000000000000000000000000000000000000000000000000000000081565b60006102678261051f565b92915050565b604080518082019091526000808252602082015260006102c286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506105b792505050565b90506000600582106102ff576102f8847f0000000000000000000000000000000000000000000000000000000000000000610d67565b90506103c2565b81600403610331576102f8847f0000000000000000000000000000000000000000000000000000000000000000610d67565b81600303610363576102f8847f0000000000000000000000000000000000000000000000000000000000000000610d67565b81600203610395576102f8847f0000000000000000000000000000000000000000000000000000000000000000610d67565b6103bf847f0000000000000000000000000000000000000000000000000000000000000000610d67565b90505b60405180604001604052806103d6836107be565b81526020016104266104218a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91506108729050565b6107be565b9052979650505050505050565b6000806201518061044c670de0b6b3a764000085610d67565b6104569190610d7e565b9050600061046c670de0b6b3a764000083610d7e565b905084811c6000610485670de0b6b3a764000084610d67565b61048f9085610db9565b90506000670de0b6b3a76400006104a98362010000610d67565b6104b39190610d7e565b905060006104c18285610935565b9998505050505050505050565b600061051661042186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892508791506108729050565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061026757507fffffffff0000000000000000000000000000000000000000000000000000000082167f50e9a715000000000000000000000000000000000000000000000000000000001492915050565b8051600090819081905b808210156107b55760008583815181106105dd576105dd610dcc565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f800000000000000000000000000000000000000000000000000000000000000081101561064057610639600184610dfb565b92506107a2565b7fe0000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561069557610639600284610dfb565b7ff0000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156106ea57610639600384610dfb565b7ff8000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561073f57610639600484610dfb565b7ffc000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561079457610639600584610dfb565b61079f600684610dfb565b92505b50826107ad81610e0e565b9350506105c1565b50909392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108509190610e46565b905080610861846305f5e100610d67565b61086b9190610d7e565b9392505050565b60006108816276a70084610dfb565b9250428311156108935750600061086b565b600061089f8442610db9565b905060006108cd7f000000000000000000000000000000000000000000000000000000000000000083610433565b90507f00000000000000000000000000000000000000000000000000000000000000008110610929576109207f000000000000000000000000000000000000000000000000000000000000000082610db9565b9250505061086b565b50600095945050505050565b6000600183161561096857670de0b6b3a764000061095b670de0ad151d09418084610d67565b6109659190610d7e565b91505b600283161561099957670de0b6b3a764000061098c670de0a3769959680084610d67565b6109969190610d7e565b91505b60048316156109ca57670de0b6b3a76400006109bd670de09039a5fa510084610d67565b6109c79190610d7e565b91505b60088316156109fb57670de0b6b3a76400006109ee670de069c00f3e120084610d67565b6109f89190610d7e565b91505b6010831615610a2c57670de0b6b3a7640000610a1f670de01cce21c9440084610d67565b610a299190610d7e565b91505b6020831615610a5d57670de0b6b3a7640000610a50670ddf82ef46ce100084610d67565b610a5a9190610d7e565b91505b6040831615610a8e57670de0b6b3a7640000610a81670dde4f458f8e8d8084610d67565b610a8b9190610d7e565b91505b6080831615610abf57670de0b6b3a7640000610ab2670ddbe84213d5f08084610d67565b610abc9190610d7e565b91505b610100831615610af157670de0b6b3a7640000610ae4670dd71b7aa6df5b8084610d67565b610aee9190610d7e565b91505b610200831615610b2357670de0b6b3a7640000610b16670dcd86e7f28cde0084610d67565b610b209190610d7e565b91505b610400831615610b5557670de0b6b3a7640000610b48670dba71a3084ad68084610d67565b610b529190610d7e565b91505b610800831615610b8757670de0b6b3a7640000610b7a670d94961b13dbde8084610d67565b610b849190610d7e565b91505b611000831615610bb957670de0b6b3a7640000610bac670d4a171c35c9838084610d67565b610bb69190610d7e565b91505b612000831615610beb57670de0b6b3a7640000610bde670cb9da519ccfb70084610d67565b610be89190610d7e565b91505b614000831615610c1d57670de0b6b3a7640000610c10670bab76d59c18d68084610d67565b610c1a9190610d7e565b91505b618000831615610c4f57670de0b6b3a7640000610c426709d025defee4df8084610d67565b610c4c9190610d7e565b91505b50919050565b600060208284031215610c6757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461086b57600080fd5b60008060008060608587031215610cad57600080fd5b843567ffffffffffffffff80821115610cc557600080fd5b818701915087601f830112610cd957600080fd5b813581811115610ce857600080fd5b886020828501011115610cfa57600080fd5b6020928301999098509187013596604001359550909350505050565b60008060408385031215610d2957600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761026757610267610d38565b600082610db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561026757610267610d38565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8082018082111561026757610267610d38565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e3f57610e3f610d38565b5060010190565b600060208284031215610e5857600080fd5b505191905056fea264697066735822122026ee1972789ed12d69c43bb984759c3d84f50065c3e2508d4e865675e467d74564736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA200E153 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC8A4271F GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC8A4271F EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0xCD5D2C74 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0xD820ED42 EQ PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA200E153 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xA34E3596 EQ PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x50E9A715 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x50E9A715 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x59B6B86C EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x59E1777C EQ PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x2C0FD74C EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE2 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0xC97 JUMP JUMPDEST PUSH2 0x26D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0xE2 JUMP JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x112 PUSH2 0x183 CALLDATASIZE PUSH1 0x4 PUSH2 0xD16 JUMP JUMPDEST PUSH2 0x433 JUMP JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x112 PUSH2 0x1BD CALLDATASIZE PUSH1 0x4 PUSH2 0xC97 JUMP JUMPDEST PUSH2 0x4CE JUMP JUMPDEST PUSH2 0x1E9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE2 JUMP JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x112 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x267 DUP3 PUSH2 0x51F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2C2 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x5B7 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 DUP3 LT PUSH2 0x2FF JUMPI PUSH2 0x2F8 DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0x4 SUB PUSH2 0x331 JUMPI PUSH2 0x2F8 DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST DUP2 PUSH1 0x3 SUB PUSH2 0x363 JUMPI PUSH2 0x2F8 DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST DUP2 PUSH1 0x2 SUB PUSH2 0x395 JUMPI PUSH2 0x2F8 DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x3BF DUP5 PUSH32 0x0 PUSH2 0xD67 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3D6 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x426 PUSH2 0x421 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP DUP12 SWAP2 POP PUSH2 0x872 SWAP1 POP JUMP JUMPDEST PUSH2 0x7BE JUMP JUMPDEST SWAP1 MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x15180 PUSH2 0x44C PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x456 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x46C PUSH8 0xDE0B6B3A7640000 DUP4 PUSH2 0xD7E JUMP JUMPDEST SWAP1 POP DUP5 DUP2 SHR PUSH1 0x0 PUSH2 0x485 PUSH8 0xDE0B6B3A7640000 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x48F SWAP1 DUP6 PUSH2 0xDB9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4A9 DUP4 PUSH3 0x10000 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x4B3 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4C1 DUP3 DUP6 PUSH2 0x935 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x516 PUSH2 0x421 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP DUP8 SWAP2 POP PUSH2 0x872 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x267 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x50E9A71500000000000000000000000000000000000000000000000000000000 EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5DD JUMPI PUSH2 0x5DD PUSH2 0xDCC JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x640 JUMPI PUSH2 0x639 PUSH1 0x1 DUP5 PUSH2 0xDFB JUMP JUMPDEST SWAP3 POP PUSH2 0x7A2 JUMP JUMPDEST PUSH32 0xE000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x695 JUMPI PUSH2 0x639 PUSH1 0x2 DUP5 PUSH2 0xDFB JUMP JUMPDEST PUSH32 0xF000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x6EA JUMPI PUSH2 0x639 PUSH1 0x3 DUP5 PUSH2 0xDFB JUMP JUMPDEST PUSH32 0xF800000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x73F JUMPI PUSH2 0x639 PUSH1 0x4 DUP5 PUSH2 0xDFB JUMP JUMPDEST PUSH32 0xFC00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x794 JUMPI PUSH2 0x639 PUSH1 0x5 DUP5 PUSH2 0xDFB JUMP JUMPDEST PUSH2 0x79F PUSH1 0x6 DUP5 PUSH2 0xDFB JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP3 PUSH2 0x7AD DUP2 PUSH2 0xE0E JUMP JUMPDEST SWAP4 POP POP PUSH2 0x5C1 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x82C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x850 SWAP2 SWAP1 PUSH2 0xE46 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x861 DUP5 PUSH4 0x5F5E100 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x86B SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x881 PUSH3 0x76A700 DUP5 PUSH2 0xDFB JUMP JUMPDEST SWAP3 POP TIMESTAMP DUP4 GT ISZERO PUSH2 0x893 JUMPI POP PUSH1 0x0 PUSH2 0x86B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89F DUP5 TIMESTAMP PUSH2 0xDB9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x8CD PUSH32 0x0 DUP4 PUSH2 0x433 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 DUP2 LT PUSH2 0x929 JUMPI PUSH2 0x920 PUSH32 0x0 DUP3 PUSH2 0xDB9 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x86B JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 AND ISZERO PUSH2 0x968 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x95B PUSH8 0xDE0AD151D094180 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x965 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x2 DUP4 AND ISZERO PUSH2 0x999 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x98C PUSH8 0xDE0A37699596800 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x996 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x4 DUP4 AND ISZERO PUSH2 0x9CA JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x9BD PUSH8 0xDE09039A5FA5100 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x9C7 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x8 DUP4 AND ISZERO PUSH2 0x9FB JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x9EE PUSH8 0xDE069C00F3E1200 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0x9F8 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x10 DUP4 AND ISZERO PUSH2 0xA2C JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xA1F PUSH8 0xDE01CCE21C94400 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xA29 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x20 DUP4 AND ISZERO PUSH2 0xA5D JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xA50 PUSH8 0xDDF82EF46CE1000 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xA5A SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 DUP4 AND ISZERO PUSH2 0xA8E JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xA81 PUSH8 0xDDE4F458F8E8D80 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xA8B SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x80 DUP4 AND ISZERO PUSH2 0xABF JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xAB2 PUSH8 0xDDBE84213D5F080 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xABC SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x100 DUP4 AND ISZERO PUSH2 0xAF1 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xAE4 PUSH8 0xDD71B7AA6DF5B80 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xAEE SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x200 DUP4 AND ISZERO PUSH2 0xB23 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xB16 PUSH8 0xDCD86E7F28CDE00 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xB20 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x400 DUP4 AND ISZERO PUSH2 0xB55 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xB48 PUSH8 0xDBA71A3084AD680 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xB52 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x800 DUP4 AND ISZERO PUSH2 0xB87 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xB7A PUSH8 0xD94961B13DBDE80 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xB84 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1000 DUP4 AND ISZERO PUSH2 0xBB9 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xBAC PUSH8 0xD4A171C35C98380 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xBB6 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2000 DUP4 AND ISZERO PUSH2 0xBEB JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xBDE PUSH8 0xCB9DA519CCFB700 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xBE8 SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x4000 DUP4 AND ISZERO PUSH2 0xC1D JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xC10 PUSH8 0xBAB76D59C18D680 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xC1A SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x8000 DUP4 AND ISZERO PUSH2 0xC4F JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xC42 PUSH8 0x9D025DEFEE4DF80 DUP5 PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xC4C SWAP2 SWAP1 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xCE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xCFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP10 SWAP1 SWAP9 POP SWAP2 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x40 ADD CALLDATALOAD SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x267 JUMPI PUSH2 0x267 PUSH2 0xD38 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xDB4 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x267 JUMPI PUSH2 0x267 PUSH2 0xD38 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x267 JUMPI PUSH2 0x267 PUSH2 0xD38 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xE3F JUMPI PUSH2 0xE3F PUSH2 0xD38 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0xEE NOT PUSH19 0x789ED12D69C43BB984759C3D84F50065C3E250 DUP14 0x4E DUP7 JUMP PUSH22 0xE467D74564736F6C6343000811003300000000000000 ",
              "sourceMap": "92:4591:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:195;;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;4486:195:45;;;;;;;;563:37:52;;;;;;;;689:25:111;;;677:2;662:18;563:37:52;543:177:111;1215:807:52;;;;;;:::i;:::-;;:::i;:::-;;;;1676:13:111;;1658:32;;1746:4;1734:17;;;1728:24;1706:20;;;1699:54;;;;1631:18;1215:807:52;1464:295:111;735:37:52;;;;;2166:507:45;;;;;;:::i;:::-;;:::i;649:37:52:-;;;;;2092:207;;;;;;:::i;:::-;;:::i;801:46::-;;;;;;;;2222:42:111;2210:55;;;2192:74;;2180:2;2165:18;801:46:52;2017:255:111;606:37:52;;;;;692;;;;;4486:195:45;4611:4;4638:36;4662:11;4638:23;:36::i;:::-;4631:43;4486:195;-1:-1:-1;;4486:195:45:o;1215:807:52:-;-1:-1:-1;;;;;;;;;;;;;;;;;1386:11:52;1400:13;:4;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1400:11:52;;-1:-1:-1;;;1400:13:52:i;:::-;1386:27;;1423:17;1462:1;1455:3;:8;1451:380;;1491:23;1506:8;1491:12;:23;:::i;:::-;1479:35;;1451:380;;;1535:3;1542:1;1535:8;1531:300;;1571:23;1586:8;1571:12;:23;:::i;1531:300::-;1615:3;1622:1;1615:8;1611:220;;1651:23;1666:8;1651:12;:23;:::i;1611:220::-;1695:3;1702:1;1695:8;1691:140;;1731:23;1746:8;1731:12;:23;:::i;1691:140::-;1797:23;1812:8;1797:12;:23;:::i;:::-;1785:35;;1691:140;1860:155;;;;;;;;1903:23;1916:9;1903:12;:23::i;:::-;1860:155;;;;1953:47;1966:33;1975:4;;1966:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1981:7:52;;-1:-1:-1;1990:8:52;;-1:-1:-1;1966:8:52;;-1:-1:-1;1966:33:52:i;:::-;1953:12;:47::i;:::-;1860:155;;1841:174;1215:807;-1:-1:-1;;;;;;;1215:807:52:o;2166:507:45:-;2274:7;;2340:6;2317:19;596:4;2317:7;:19;:::i;:::-;2316:30;;;;:::i;:::-;2297:49;-1:-1:-1;2356:15:45;2374:20;596:4;2297:49;2374:20;:::i;:::-;2356:38;-1:-1:-1;2422:23:45;;;2404:15;2485:19;596:4;2356:38;2485:19;:::i;:::-;2474:30;;:8;:30;:::i;:::-;2455:50;-1:-1:-1;2515:16:45;596:4;2535:17;2455:50;2546:5;2535:17;:::i;:::-;2534:31;;;;:::i;:::-;2515:50;;2575:20;2598:39;2619:8;2629:7;2598:20;:39::i;:::-;2575:62;2166:507;-1:-1:-1;;;;;;;;;2166:507:45:o;2092:207:52:-;2219:7;2245:47;2258:33;2267:4;;2258:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2273:7:52;;-1:-1:-1;2282:8:52;;-1:-1:-1;2258:8:52;;-1:-1:-1;2258:33:52:i;2245:47::-;2238:54;2092:207;-1:-1:-1;;;;;2092:207:52:o;2933:255::-;3041:4;3080:40;;;3095:25;3080:40;;:101;;-1:-1:-1;3136:45:52;;;3151:30;3136:45;3061:120;2933:255;-1:-1:-1;;2933:255:52:o;222:622:53:-;362:15;;278:7;;;;;;387:431;405:10;401:1;:14;387:431;;;438:8;455:1;458;449:11;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;478:8:53;;;474:334;;;506:6;511:1;506:6;;:::i;:::-;;;474:334;;;537:8;;;;;533:275;;;565:6;570:1;565:6;;:::i;533:275::-;596:8;;;;;592:216;;;624:6;629:1;624:6;;:::i;592:216::-;655:8;;;;;651:157;;;683:6;688:1;683:6;;:::i;651:157::-;714:8;;;;;710:98;;;742:6;747:1;742:6;;:::i;710:98::-;787:6;792:1;787:6;;:::i;:::-;;;710:98;-1:-1:-1;417:5:53;;;;:::i;:::-;;;;387:431;;;-1:-1:-1;834:3:53;;222:622;-1:-1:-1;;;222:622:53:o;2559:181:52:-;2620:7;2639:16;2666:9;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2639:52;-1:-1:-1;2639:52:52;2709:12;:6;2718:3;2709:12;:::i;:::-;2708:25;;;;:::i;:::-;2701:32;2559:181;-1:-1:-1;;;2559:181:52:o;1522:473:45:-;1643:7;1672:22;190:7;1672;:22;:::i;:::-;1662:32;;1718:15;1708:7;:25;1704:64;;;-1:-1:-1;1756:1:45;1749:8;;1704:64;1778:15;1796:25;1814:7;1796:15;:25;:::i;:::-;1778:43;;1831:15;1849:37;1864:12;1878:7;1849:14;:37::i;:::-;1831:55;;1911:8;1900:7;:19;1896:75;;1942:18;1952:8;1942:7;:18;:::i;:::-;1935:25;;;;;;1896:75;-1:-1:-1;1987:1:45;;1522:473;-1:-1:-1;;;;;1522:473:45:o;2679:1801::-;2791:7;2830:6;2818:19;;:24;2814:93;;596:4;2869:14;630:18;2869:7;:14;:::i;:::-;2868:28;;;;:::i;:::-;2858:38;;2814:93;2932:6;2920:19;;:24;2916:93;;596:4;2971:14;708:18;2971:7;:14;:::i;:::-;2970:28;;;;:::i;:::-;2960:38;;2916:93;3034:6;3022:19;;:24;3018:93;;596:4;3073:14;786:18;3073:7;:14;:::i;:::-;3072:28;;;;:::i;:::-;3062:38;;3018:93;3136:6;3124:19;;:24;3120:93;;596:4;3175:14;834:18;3175:7;:14;:::i;:::-;3174:28;;;;:::i;:::-;3164:38;;3120:93;3238:6;3226:19;;:24;3222:93;;596:4;3277:14;882:18;3277:7;:14;:::i;:::-;3276:28;;;;:::i;:::-;3266:38;;3222:93;3340:6;3328:19;;:24;3324:93;;596:4;3379:14;930:18;3379:7;:14;:::i;:::-;3378:28;;;;:::i;:::-;3368:38;;3324:93;3442:6;3430:19;;:24;3426:93;;596:4;3481:14;978:18;3481:7;:14;:::i;:::-;3480:28;;;;:::i;:::-;3470:38;;3426:93;3544:6;3532:19;;:24;3528:93;;596:4;3583:14;1026:18;3583:7;:14;:::i;:::-;3582:28;;;;:::i;:::-;3572:38;;3528:93;3646:6;3634:19;;:24;3630:93;;596:4;3685:14;1074:18;3685:7;:14;:::i;:::-;3684:28;;;;:::i;:::-;3674:38;;3630:93;3748:6;3736:19;;:24;3732:94;;596:4;3787:15;1123:18;3787:7;:15;:::i;:::-;3786:29;;;;:::i;:::-;3776:39;;3732:94;3851:7;3839:20;;:25;3835:95;;596:4;3891:15;1172:18;3891:7;:15;:::i;:::-;3890:29;;;;:::i;:::-;3880:39;;3835:95;3955:7;3943:20;;:25;3939:95;;596:4;3995:15;1221:18;3995:7;:15;:::i;:::-;3994:29;;;;:::i;:::-;3984:39;;3939:95;4059:7;4047:20;;:25;4043:95;;596:4;4099:15;1270:18;4099:7;:15;:::i;:::-;4098:29;;;;:::i;:::-;4088:39;;4043:95;4163:7;4151:20;;:25;4147:95;;596:4;4203:15;1319:18;4203:7;:15;:::i;:::-;4202:29;;;;:::i;:::-;4192:39;;4147:95;4267:7;4255:20;;:25;4251:95;;596:4;4307:15;1368:18;4307:7;:15;:::i;:::-;4306:29;;;;:::i;:::-;4296:39;;4251:95;4371:7;4359:20;;:25;4355:95;;596:4;4411:15;1417:18;4411:7;:15;:::i;:::-;4410:29;;;;:::i;:::-;4400:39;;4355:95;-1:-1:-1;4466:7:45;2679:1801;-1:-1:-1;2679:1801:45:o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;725:734;814:6;822;830;838;891:2;879:9;870:7;866:23;862:32;859:52;;;907:1;904;897:12;859:52;947:9;934:23;976:18;1017:2;1009:6;1006:14;1003:34;;;1033:1;1030;1023:12;1003:34;1071:6;1060:9;1056:22;1046:32;;1116:7;1109:4;1105:2;1101:13;1097:27;1087:55;;1138:1;1135;1128:12;1087:55;1178:2;1165:16;1204:2;1196:6;1193:14;1190:34;;;1220:1;1217;1210:12;1190:34;1267:7;1260:4;1251:6;1247:2;1243:15;1239:26;1236:39;1233:59;;;1288:1;1285;1278:12;1233:59;1319:4;1311:13;;;;1343:6;;-1:-1:-1;1381:20:111;;;1368:34;;1449:2;1434:18;1421:32;;-1:-1:-1;725:734:111;;-1:-1:-1;;;;725:734:111:o;1764:248::-;1832:6;1840;1893:2;1881:9;1872:7;1868:23;1864:32;1861:52;;;1909:1;1906;1899:12;1861:52;-1:-1:-1;;1932:23:111;;;2002:2;1987:18;;;1974:32;;-1:-1:-1;1764:248:111:o;2277:184::-;2329:77;2326:1;2319:88;2426:4;2423:1;2416:15;2450:4;2447:1;2440:15;2466:168;2539:9;;;2570;;2587:15;;;2581:22;;2567:37;2557:71;;2608:18;;:::i;2639:274::-;2679:1;2705;2695:189;;2740:77;2737:1;2730:88;2841:4;2838:1;2831:15;2869:4;2866:1;2859:15;2695:189;-1:-1:-1;2898:9:111;;2639:274::o;2918:128::-;2985:9;;;3006:11;;;3003:37;;;3020:18;;:::i;3051:184::-;3103:77;3100:1;3093:88;3200:4;3197:1;3190:15;3224:4;3221:1;3214:15;3240:125;3305:9;;;3326:10;;;3323:36;;;3339:18;;:::i;3370:195::-;3409:3;3440:66;3433:5;3430:77;3427:103;;3510:18;;:::i;:::-;-1:-1:-1;3557:1:111;3546:13;;3370:195::o;3570:183::-;3639:6;3692:2;3680:9;3671:7;3667:23;3663:32;3660:52;;;3708:1;3705;3698:12;3660:52;-1:-1:-1;3731:16:111;;3570:183;-1:-1:-1;3570:183:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "746600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "decayedPremium(uint256,uint256)": "infinite",
                "premium(string,uint256,uint256)": "infinite",
                "price(string,uint256,uint256)": "infinite",
                "price1Letter()": "infinite",
                "price2Letter()": "infinite",
                "price3Letter()": "infinite",
                "price4Letter()": "infinite",
                "price5Letter()": "infinite",
                "supportsInterface(bytes4)": "432",
                "usdOracle()": "infinite"
              },
              "internal": {
                "_premium(string memory,uint256,uint256)": "infinite",
                "addFractionalPremium(uint256,uint256)": "597"
              }
            },
            "methodIdentifiers": {
              "decayedPremium(uint256,uint256)": "59e1777c",
              "premium(string,uint256,uint256)": "a34e3596",
              "price(string,uint256,uint256)": "50e9a715",
              "price1Letter()": "2c0fd74c",
              "price2Letter()": "cd5d2c74",
              "price3Letter()": "a200e153",
              "price4Letter()": "d820ed42",
              "price5Letter()": "59b6b86c",
              "supportsInterface(bytes4)": "01ffc9a7",
              "usdOracle()": "c8a4271f"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorInterface\",\"name\":\"_usdOracle\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_rentPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"_startPremium\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDays\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"RentPriceChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startPremium\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"elapsed\",\"type\":\"uint256\"}],\"name\":\"decayedPremium\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"premium\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"base\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceOracle.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price2Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price3Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price4Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price5Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"decayedPremium(uint256,uint256)\":{\"details\":\"Returns the premium price at current time elapsed\",\"params\":{\"elapsed\":\"time past since expiry\",\"startPremium\":\"starting price\"}},\"premium(string,uint256,uint256)\":{\"details\":\"Returns the pricing premium in wei.\"},\"price(string,uint256,uint256)\":{\"details\":\"Returns the price to register or renew a name.\",\"params\":{\"duration\":\"How long the name is being registered or extended for, in seconds.\",\"expires\":\"When the name presently expires (0 if this is a new registration).\",\"name\":\"The name being registered or renewed.\"},\"returns\":{\"_0\":\"base premium tuple of base price + premium price\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/ExponentialPremiumPriceOracle.sol\":\"ExponentialPremiumPriceOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/ExponentialPremiumPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./StablePriceOracle.sol\\\";\\n\\ncontract ExponentialPremiumPriceOracle is StablePriceOracle {\\n    uint256 constant GRACE_PERIOD = 90 days;\\n    uint256 immutable startPremium;\\n    uint256 immutable endValue;\\n\\n    constructor(\\n        AggregatorInterface _usdOracle,\\n        uint256[] memory _rentPrices,\\n        uint256 _startPremium,\\n        uint256 totalDays\\n    ) StablePriceOracle(_usdOracle, _rentPrices) {\\n        startPremium = _startPremium;\\n        endValue = _startPremium >> totalDays;\\n    }\\n\\n    uint256 constant PRECISION = 1e18;\\n    uint256 constant bit1 = 999989423469314432; // 0.5 ^ 1/65536 * (10 ** 18)\\n    uint256 constant bit2 = 999978847050491904; // 0.5 ^ 2/65536 * (10 ** 18)\\n    uint256 constant bit3 = 999957694548431104;\\n    uint256 constant bit4 = 999915390886613504;\\n    uint256 constant bit5 = 999830788931929088;\\n    uint256 constant bit6 = 999661606496243712;\\n    uint256 constant bit7 = 999323327502650752;\\n    uint256 constant bit8 = 998647112890970240;\\n    uint256 constant bit9 = 997296056085470080;\\n    uint256 constant bit10 = 994599423483633152;\\n    uint256 constant bit11 = 989228013193975424;\\n    uint256 constant bit12 = 978572062087700096;\\n    uint256 constant bit13 = 957603280698573696;\\n    uint256 constant bit14 = 917004043204671232;\\n    uint256 constant bit15 = 840896415253714560;\\n    uint256 constant bit16 = 707106781186547584;\\n\\n    /**\\n     * @dev Returns the pricing premium in internal base units.\\n     */\\n    function _premium(\\n        string memory,\\n        uint256 expires,\\n        uint256\\n    ) internal view override returns (uint256) {\\n        expires = expires + GRACE_PERIOD;\\n        if (expires > block.timestamp) {\\n            return 0;\\n        }\\n\\n        uint256 elapsed = block.timestamp - expires;\\n        uint256 premium = decayedPremium(startPremium, elapsed);\\n        if (premium >= endValue) {\\n            return premium - endValue;\\n        }\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Returns the premium price at current time elapsed\\n     * @param startPremium starting price\\n     * @param elapsed time past since expiry\\n     */\\n    function decayedPremium(uint256 startPremium, uint256 elapsed)\\n        public\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 daysPast = (elapsed * PRECISION) / 1 days;\\n        uint256 intDays = daysPast / PRECISION;\\n        uint256 premium = startPremium >> intDays;\\n        uint256 partDay = (daysPast - intDays * PRECISION);\\n        uint256 fraction = (partDay * (2**16)) / PRECISION;\\n        uint256 totalPremium = addFractionalPremium(fraction, premium);\\n        return totalPremium;\\n    }\\n\\n    function addFractionalPremium(uint256 fraction, uint256 premium)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        if (fraction & (1 << 0) != 0) {\\n            premium = (premium * bit1) / PRECISION;\\n        }\\n        if (fraction & (1 << 1) != 0) {\\n            premium = (premium * bit2) / PRECISION;\\n        }\\n        if (fraction & (1 << 2) != 0) {\\n            premium = (premium * bit3) / PRECISION;\\n        }\\n        if (fraction & (1 << 3) != 0) {\\n            premium = (premium * bit4) / PRECISION;\\n        }\\n        if (fraction & (1 << 4) != 0) {\\n            premium = (premium * bit5) / PRECISION;\\n        }\\n        if (fraction & (1 << 5) != 0) {\\n            premium = (premium * bit6) / PRECISION;\\n        }\\n        if (fraction & (1 << 6) != 0) {\\n            premium = (premium * bit7) / PRECISION;\\n        }\\n        if (fraction & (1 << 7) != 0) {\\n            premium = (premium * bit8) / PRECISION;\\n        }\\n        if (fraction & (1 << 8) != 0) {\\n            premium = (premium * bit9) / PRECISION;\\n        }\\n        if (fraction & (1 << 9) != 0) {\\n            premium = (premium * bit10) / PRECISION;\\n        }\\n        if (fraction & (1 << 10) != 0) {\\n            premium = (premium * bit11) / PRECISION;\\n        }\\n        if (fraction & (1 << 11) != 0) {\\n            premium = (premium * bit12) / PRECISION;\\n        }\\n        if (fraction & (1 << 12) != 0) {\\n            premium = (premium * bit13) / PRECISION;\\n        }\\n        if (fraction & (1 << 13) != 0) {\\n            premium = (premium * bit14) / PRECISION;\\n        }\\n        if (fraction & (1 << 14) != 0) {\\n            premium = (premium * bit15) / PRECISION;\\n        }\\n        if (fraction & (1 << 15) != 0) {\\n            premium = (premium * bit16) / PRECISION;\\n        }\\n        return premium;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x27c65d1e85df53443323b399cc0356c7659304c58863655d66edbd1048a9a3aa\",\"license\":\"MIT\"},\"contracts/ethregistrar/IPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\ninterface IPriceOracle {\\n    struct Price {\\n        uint256 base;\\n        uint256 premium;\\n    }\\n\\n    /**\\n     * @dev Returns the price to register or renew a name.\\n     * @param name The name being registered or renewed.\\n     * @param expires When the name presently expires (0 if this is a new registration).\\n     * @param duration How long the name is being registered or extended for, in seconds.\\n     * @return base premium tuple of base price + premium price\\n     */\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (Price calldata);\\n}\\n\",\"keccak256\":\"0x1ec537b4c7f9cc40363b39dcc7ade8c29bf94662e6b01d38e681487637bd577e\",\"license\":\"MIT\"},\"contracts/ethregistrar/SafeMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\n/**\\n * @title SafeMath\\n * @dev Unsigned math operations with safety checks that revert on error\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Multiplies two unsigned integers, reverts on overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        uint256 c = a * b;\\n        require(c / a == b);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Solidity only automatically asserts when dividing by 0\\n        require(b > 0);\\n        uint256 c = a / b;\\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b <= a);\\n        uint256 c = a - b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Adds two unsigned integers, reverts on overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\\n     * reverts when dividing by zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b != 0);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0xcb33819183087dcf646afd774ac6d2fb59d4fcb3f669b45b679cb8a936f0d22b\",\"license\":\"MIT\"},\"contracts/ethregistrar/StablePriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./IPriceOracle.sol\\\";\\nimport \\\"./SafeMath.sol\\\";\\nimport \\\"./StringUtils.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\ninterface AggregatorInterface {\\n    function latestAnswer() external view returns (int256);\\n}\\n\\n// StablePriceOracle sets a price in USD, based on an oracle.\\ncontract StablePriceOracle is IPriceOracle {\\n    using SafeMath for *;\\n    using StringUtils for *;\\n\\n    // Rent in base price units by length\\n    uint256 public immutable price1Letter;\\n    uint256 public immutable price2Letter;\\n    uint256 public immutable price3Letter;\\n    uint256 public immutable price4Letter;\\n    uint256 public immutable price5Letter;\\n\\n    // Oracle address\\n    AggregatorInterface public immutable usdOracle;\\n\\n    event RentPriceChanged(uint256[] prices);\\n\\n    constructor(AggregatorInterface _usdOracle, uint256[] memory _rentPrices) {\\n        usdOracle = _usdOracle;\\n        price1Letter = _rentPrices[0];\\n        price2Letter = _rentPrices[1];\\n        price3Letter = _rentPrices[2];\\n        price4Letter = _rentPrices[3];\\n        price5Letter = _rentPrices[4];\\n    }\\n\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view override returns (IPriceOracle.Price memory) {\\n        uint256 len = name.strlen();\\n        uint256 basePrice;\\n\\n        if (len >= 5) {\\n            basePrice = price5Letter * duration;\\n        } else if (len == 4) {\\n            basePrice = price4Letter * duration;\\n        } else if (len == 3) {\\n            basePrice = price3Letter * duration;\\n        } else if (len == 2) {\\n            basePrice = price2Letter * duration;\\n        } else {\\n            basePrice = price1Letter * duration;\\n        }\\n\\n        return\\n            IPriceOracle.Price({\\n                base: attoUSDToWei(basePrice),\\n                premium: attoUSDToWei(_premium(name, expires, duration))\\n            });\\n    }\\n\\n    /**\\n     * @dev Returns the pricing premium in wei.\\n     */\\n    function premium(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (uint256) {\\n        return attoUSDToWei(_premium(name, expires, duration));\\n    }\\n\\n    /**\\n     * @dev Returns the pricing premium in internal base units.\\n     */\\n    function _premium(\\n        string memory name,\\n        uint256 expires,\\n        uint256 duration\\n    ) internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    function attoUSDToWei(uint256 amount) internal view returns (uint256) {\\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\\n        return (amount * 1e8) / ethPrice;\\n    }\\n\\n    function weiToAttoUSD(uint256 amount) internal view returns (uint256) {\\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\\n        return (amount * ethPrice) / 1e8;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IERC165).interfaceId ||\\n            interfaceID == type(IPriceOracle).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xb05505ede4d654283caaa035e1083af0ff7df41e1038889a35ac129703b45b58\",\"license\":\"MIT\"},\"contracts/ethregistrar/StringUtils.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nlibrary StringUtils {\\n    /**\\n     * @dev Returns the length of a given string\\n     *\\n     * @param s The string to measure the length of\\n     * @return The length of the input string\\n     */\\n    function strlen(string memory s) internal pure returns (uint256) {\\n        uint256 len;\\n        uint256 i = 0;\\n        uint256 bytelength = bytes(s).length;\\n        for (len = 0; i < bytelength; len++) {\\n            bytes1 b = bytes(s)[i];\\n            if (b < 0x80) {\\n                i += 1;\\n            } else if (b < 0xE0) {\\n                i += 2;\\n            } else if (b < 0xF0) {\\n                i += 3;\\n            } else if (b < 0xF8) {\\n                i += 4;\\n            } else if (b < 0xFC) {\\n                i += 5;\\n            } else {\\n                i += 6;\\n            }\\n        }\\n        return len;\\n    }\\n}\\n\",\"keccak256\":\"0x4cc8363a850dc9130c433ee50e7c97e29a45ae5d9bd0808205ac7134b34f24e4\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/IBaseRegistrar.sol": {
        "IBaseRegistrar": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "ControllerAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "ControllerRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "name": "NameMigrated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "name": "NameRegistered",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "name": "NameRenewed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "addController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "available",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "nameExpires",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "reclaim",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "register",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "removeController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "renew",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the number of tokens in ``owner``'s account."
              },
              "getApproved(uint256)": {
                "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "isApprovedForAll(address,address)": {
                "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"
              },
              "ownerOf(uint256)": {
                "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "reclaim(uint256,address)": {
                "details": "Reclaim ownership of a name in ENS, if you own it in the registrar."
              },
              "register(uint256,address,uint256)": {
                "details": "Register a name."
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "setApprovalForAll(address,bool)": {
                "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "addController(address)": "a7fc7a07",
              "approve(address,uint256)": "095ea7b3",
              "available(uint256)": "96e494e8",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "nameExpires(uint256)": "d6e4fa86",
              "ownerOf(uint256)": "6352211e",
              "reclaim(uint256,address)": "28ed4f6c",
              "register(uint256,address,uint256)": "fca247ac",
              "removeController(address)": "f6a74ed7",
              "renew(uint256,uint256)": "c475abff",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setResolver(address)": "4e543b26",
              "supportsInterface(bytes4)": "01ffc9a7",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"ControllerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"ControllerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"NameMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"NameRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"NameRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"addController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"available\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"nameExpires\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"reclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"register\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"removeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"renew\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"reclaim(uint256,address)\":{\"details\":\"Reclaim ownership of a name in ENS, if you own it in the registrar.\"},\"register(uint256,address,uint256)\":{\"details\":\"Register a name.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/IBaseRegistrar.sol\":\"IBaseRegistrar\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/IBulkRenewal.sol": {
        "IBulkRenewal": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string[]",
                  "name": "names",
                  "type": "string[]"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "renewAll",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string[]",
                  "name": "names",
                  "type": "string[]"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "rentPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "total",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "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": {
              "renewAll(string[],uint256)": "e8d6dbb4",
              "rentPrice(string[],uint256)": "3971d467"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"names\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"renewAll\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"names\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"rentPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/IBulkRenewal.sol\":\"IBulkRenewal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/ethregistrar/IBulkRenewal.sol\":{\"content\":\"interface IBulkRenewal {\\n    function rentPrice(string[] calldata names, uint256 duration)\\n        external\\n        view\\n        returns (uint256 total);\\n\\n    function renewAll(string[] calldata names, uint256 duration)\\n        external\\n        payable;\\n}\\n\",\"keccak256\":\"0x6f0f8f7c34faaef84a29951e00da8b769d12a2d20493c68dbec92aa79b25a05d\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/IETHRegistrarController.sol": {
        "IETHRegistrarController": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "name": "available",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "commit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes[]",
                  "name": "",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "name": "makeCommitment",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes[]",
                  "name": "",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "name": "register",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "renew",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "rentPrice",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "base",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "premium",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPriceOracle.Price",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "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": {
              "available(string)": "aeb8ce9b",
              "commit(bytes32)": "f14fcbc8",
              "makeCommitment(string,address,uint256,bytes32,address,bytes[],bool,uint32,uint64)": "d555254a",
              "register(string,address,uint256,bytes32,address,bytes[],bool,uint32,uint64)": "7acaaf26",
              "renew(string,uint256)": "acf1a841",
              "rentPrice(string,uint256)": "83e7f6ff"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"available\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"makeCommitment\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"renew\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rentPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"base\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceOracle.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/IETHRegistrarController.sol\":\"IETHRegistrarController\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/ethregistrar/IETHRegistrarController.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./IPriceOracle.sol\\\";\\n\\ninterface IETHRegistrarController {\\n    function rentPrice(string memory, uint256)\\n        external\\n        returns (IPriceOracle.Price memory);\\n\\n    function available(string memory) external returns (bool);\\n\\n    function makeCommitment(\\n        string memory,\\n        address,\\n        uint256,\\n        bytes32,\\n        address,\\n        bytes[] calldata,\\n        bool,\\n        uint32,\\n        uint64\\n    ) external returns (bytes32);\\n\\n    function commit(bytes32) external;\\n\\n    function register(\\n        string calldata,\\n        address,\\n        uint256,\\n        bytes32,\\n        address,\\n        bytes[] calldata,\\n        bool,\\n        uint32,\\n        uint64\\n    ) external payable;\\n\\n    function renew(string calldata, uint256) external payable;\\n}\\n\",\"keccak256\":\"0x999c1c3386cfef6a52b86b33a45820d551366141db8c5915740895c9f2425772\",\"license\":\"MIT\"},\"contracts/ethregistrar/IPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\ninterface IPriceOracle {\\n    struct Price {\\n        uint256 base;\\n        uint256 premium;\\n    }\\n\\n    /**\\n     * @dev Returns the price to register or renew a name.\\n     * @param name The name being registered or renewed.\\n     * @param expires When the name presently expires (0 if this is a new registration).\\n     * @param duration How long the name is being registered or extended for, in seconds.\\n     * @return base premium tuple of base price + premium price\\n     */\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (Price calldata);\\n}\\n\",\"keccak256\":\"0x1ec537b4c7f9cc40363b39dcc7ade8c29bf94662e6b01d38e681487637bd577e\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/IPriceOracle.sol": {
        "IPriceOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "price",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "base",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "premium",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPriceOracle.Price",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "price(string,uint256,uint256)": {
                "details": "Returns the price to register or renew a name.",
                "params": {
                  "duration": "How long the name is being registered or extended for, in seconds.",
                  "expires": "When the name presently expires (0 if this is a new registration).",
                  "name": "The name being registered or renewed."
                },
                "returns": {
                  "_0": "base premium tuple of base price + premium price"
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "price(string,uint256,uint256)": "50e9a715"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"base\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceOracle.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"price(string,uint256,uint256)\":{\"details\":\"Returns the price to register or renew a name.\",\"params\":{\"duration\":\"How long the name is being registered or extended for, in seconds.\",\"expires\":\"When the name presently expires (0 if this is a new registration).\",\"name\":\"The name being registered or renewed.\"},\"returns\":{\"_0\":\"base premium tuple of base price + premium price\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/IPriceOracle.sol\":\"IPriceOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/ethregistrar/IPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\ninterface IPriceOracle {\\n    struct Price {\\n        uint256 base;\\n        uint256 premium;\\n    }\\n\\n    /**\\n     * @dev Returns the price to register or renew a name.\\n     * @param name The name being registered or renewed.\\n     * @param expires When the name presently expires (0 if this is a new registration).\\n     * @param duration How long the name is being registered or extended for, in seconds.\\n     * @return base premium tuple of base price + premium price\\n     */\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (Price calldata);\\n}\\n\",\"keccak256\":\"0x1ec537b4c7f9cc40363b39dcc7ade8c29bf94662e6b01d38e681487637bd577e\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/LinearPremiumPriceOracle.sol": {
        "LinearPremiumPriceOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract AggregatorInterface",
                  "name": "_usdOracle",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_rentPrices",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256",
                  "name": "_initialPremium",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_premiumDecreaseRate",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "prices",
                  "type": "uint256[]"
                }
              ],
              "name": "RentPriceChanged",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "initialPremium",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "premium",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "premiumDecreaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "price",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "base",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "premium",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPriceOracle.Price",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price1Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price2Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price3Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price4Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price5Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "timeUntilPremium",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "usdOracle",
              "outputs": [
                {
                  "internalType": "contract AggregatorInterface",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "premium(string,uint256,uint256)": {
                "details": "Returns the pricing premium in wei."
              },
              "price(string,uint256,uint256)": {
                "details": "Returns the price to register or renew a name.",
                "params": {
                  "duration": "How long the name is being registered or extended for, in seconds.",
                  "expires": "When the name presently expires (0 if this is a new registration).",
                  "name": "The name being registered or renewed."
                },
                "returns": {
                  "_0": "base premium tuple of base price + premium price"
                }
              },
              "timeUntilPremium(uint256,uint256)": {
                "details": "Returns the timestamp at which a name with the specified expiry date will have      the specified re-registration price premium.",
                "params": {
                  "amount": "The amount, in wei, the caller is willing to pay",
                  "expires": "The timestamp at which the name expires."
                },
                "returns": {
                  "_0": "The timestamp at which the premium for this domain will be `amount`."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11391": {
                  "entryPoint": null,
                  "id": 11391,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_11725": {
                  "entryPoint": null,
                  "id": 11725,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256_fromMemory": {
                  "entryPoint": 308,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "panic_error_0x32": {
                  "entryPoint": 559,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 286,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1704:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "70:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "75:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "66:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "66:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "106:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "96:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "127:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "130:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "120:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "332:1238:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "379:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "388:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "391:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "381:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "381:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "381:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "353:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "362:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "349:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "349:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "374:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "342:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "404:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "423:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "417:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "417:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "408:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "496:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "505:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "508:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "498:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "498:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "498:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "466:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "481:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "486:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "477:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "477:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "490:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "473:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "473:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "462:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "462:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "452:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "452:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "445:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "445:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "442:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "521:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "531:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "521:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "545:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "555:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "549:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "566:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "590:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "601:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "586:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "586:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "580:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "580:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "570:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "614:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "632:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "636:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "628:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "628:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "640:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "618:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "669:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "678:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "681:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "671:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "671:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "671:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "657:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "665:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "654:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "654:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "651:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "694:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "708:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "719:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "704:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "704:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "698:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "774:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "783:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "786:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "776:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "776:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "776:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "753:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "757:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "749:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "749:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "764:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "745:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "745:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "738:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "738:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "735:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "799:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "815:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "809:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "809:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "803:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "841:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "843:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "843:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "843:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "833:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "837:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "830:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "830:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "827:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "872:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "886:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "889:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "882:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "882:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "876:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "901:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "921:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "915:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "915:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "905:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "933:56:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "955:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_5",
                                            "nodeType": "YulIdentifier",
                                            "src": "971:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "975:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "967:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "967:11:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "984:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "980:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "980:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "963:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "963:25:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "951:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "951:38:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "937:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1048:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1050:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1050:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1050:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1007:10:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1019:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1004:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1004:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1027:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1039:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1024:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1024:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1001:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1001:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "998:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1086:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1090:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1079:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1079:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1079:22:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1110:17:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1121:6:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1114:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1143:6:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1151:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1136:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1136:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1136:18:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1163:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1174:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1182:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1170:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1170:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1163:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1194:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "1216:2:111"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "1220:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1212:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1212:11:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1225:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1208:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1208:20:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "1198:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1260:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1269:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1272:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1262:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1262:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1262:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1243:6:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1251:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1240:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1240:19:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1237:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1285:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1300:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1304:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1296:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1296:11:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "1289:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1372:79:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1393:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1404:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1398:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1398:10:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1386:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1386:23:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1386:23:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1422:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1433:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1438:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1429:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1429:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1422:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1327:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1332:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1324:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1324:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1340:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1342:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1353:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1358:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1349:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1349:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1342:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1320:3:111",
                                "statements": []
                              },
                              "src": "1316:135:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1460:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1470:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1460:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1485:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1505:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1516:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1501:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1501:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1495:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1495:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1485:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1529:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1549:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1560:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1545:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1545:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1539:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1539:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1529:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "274:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "285:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "297:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "305:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "313:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "321:6:111",
                            "type": ""
                          }
                        ],
                        "src": "146:1424:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1607:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1624:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1636:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1627:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1627:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1617:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1617:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1617:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1664:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1667:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1657:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1657:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1657:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1688:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1691:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1681:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1681:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1681:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1575:127:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        let _1 := 32\n        let offset := mload(add(headStart, _1))\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(_5, 63), not(31)))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let dst := memPtr\n        mstore(memPtr, _4)\n        dst := add(memPtr, _1)\n        let srcEnd := add(add(_3, _5), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _1)\n        }\n        value1 := memPtr\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101a06040526276a700610140523480156200001a57600080fd5b50604051620010ad380380620010ad8339810160408190526200003d9162000134565b6001600160a01b0384166101205282518490849081906000906200006557620000656200022f565b602002602001015160808181525050806001815181106200008a576200008a6200022f565b602002602001015160a0818152505080600281518110620000af57620000af6200022f565b602002602001015160c0818152505080600381518110620000d457620000d46200022f565b602002602001015160e0818152505080600481518110620000f957620000f96200022f565b6020908102919091010151610100525050610160919091526101805250620002459050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200014b57600080fd5b84516001600160a01b03811681146200016357600080fd5b602086810151919550906001600160401b03808211156200018357600080fd5b818801915088601f8301126200019857600080fd5b815181811115620001ad57620001ad6200011e565b8060051b604051601f19603f83011681018181108582111715620001d557620001d56200011e565b60405291825284820192508381018501918b831115620001f457600080fd5b938501935b828510156200021457845184529385019392850192620001f9565b60408b01516060909b0151999c909b50975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e0516101005161012051610140516101605161018051610d95620003186000396000818161029e015281816105cf01526109a101526000818161019001528181610542015281816105a0015281816109ca0152610a00015260008181610573015261095a0152600081816101f1015281816108a30152610a29015260008181610169015261038301526000818161026401526103bc0152600081816101b701526103ee01526000818161023d0152610420015260008181610106015261044a0152610d956000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063a34e359611610081578063d820ed421161005b578063d820ed421461025f578063ed6c33ed14610286578063f05af2b71461029957600080fd5b8063a34e3596146101d9578063c8a4271f146101ec578063cd5d2c741461023857600080fd5b806359b6b86c116100b257806359b6b86c146101645780637d3fb8b71461018b578063a200e153146101b257600080fd5b806301ffc9a7146100d95780632c0fd74c1461010157806350e9a71514610136575b600080fd5b6100ec6100e7366004610b55565b6102c0565b60405190151581526020015b60405180910390f35b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100f8565b610149610144366004610b97565b61031c565b604080518251815260209283015192810192909252016100f8565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6101286101e7366004610b97565b6104e2565b6102137f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b610128610294366004610c16565b610533565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fa377dd960000000000000000000000000000000000000000000000000000000014806103165750610316826105ff565b92915050565b6040805180820190915260008082526020820152600061037186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061069792505050565b90506000600582106103ae576103a7847f0000000000000000000000000000000000000000000000000000000000000000610c67565b9050610471565b816004036103e0576103a7847f0000000000000000000000000000000000000000000000000000000000000000610c67565b81600303610412576103a7847f0000000000000000000000000000000000000000000000000000000000000000610c67565b81600203610444576103a7847f0000000000000000000000000000000000000000000000000000000000000000610c67565b61046e847f0000000000000000000000000000000000000000000000000000000000000000610c67565b90505b60405180604001604052806104858361089e565b81526020016104d56104d08a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91506109529050565b61089e565b9052979650505050505050565b600061052a6104d086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892508791506109529050565b95945050505050565b600061053e82610a24565b91507f000000000000000000000000000000000000000000000000000000000000000082111561056d57600080fd5b610597837f0000000000000000000000000000000000000000000000000000000000000000610ac7565b925060006105c57f000000000000000000000000000000000000000000000000000000000000000084610ae3565b905060006105f3827f0000000000000000000000000000000000000000000000000000000000000000610b06565b905061052a8582610ac7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061031657507fffffffff0000000000000000000000000000000000000000000000000000000082167f50e9a715000000000000000000000000000000000000000000000000000000001492915050565b8051600090819081905b808210156108955760008583815181106106bd576106bd610c7e565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f800000000000000000000000000000000000000000000000000000000000000081101561072057610719600184610cad565b9250610882565b7fe0000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561077557610719600284610cad565b7ff0000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156107ca57610719600384610cad565b7ff8000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561081f57610719600484610cad565b7ffc000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561087457610719600584610cad565b61087f600684610cad565b92505b508261088d81610cc0565b9350506106a1565b50909392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190610cf8565b905080610941846305f5e100610c67565b61094b9190610d11565b9392505050565b600061097e837f0000000000000000000000000000000000000000000000000000000000000000610ac7565b9250428311156109905750600061094b565b60006109c661099f4286610ae3565b7f000000000000000000000000000000000000000000000000000000000000000090610b20565b90507f00000000000000000000000000000000000000000000000000000000000000008111156109fa57600091505061094b565b61052a817f0000000000000000000000000000000000000000000000000000000000000000610d4c565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190610cf8565b90506305f5e1006109418285610c67565b600080610ad48385610cad565b90508381101561094b57600080fd5b600082821115610af257600080fd5b6000610afe8385610d4c565b949350505050565b6000808211610b1457600080fd5b6000610afe8385610d11565b600082600003610b3257506000610316565b6000610b3e8385610c67565b905082610b4b8583610d11565b1461094b57600080fd5b600060208284031215610b6757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461094b57600080fd5b60008060008060608587031215610bad57600080fd5b843567ffffffffffffffff80821115610bc557600080fd5b818701915087601f830112610bd957600080fd5b813581811115610be857600080fd5b886020828501011115610bfa57600080fd5b6020928301999098509187013596604001359550909350505050565b60008060408385031215610c2957600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761031657610316610c38565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8082018082111561031657610316610c38565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610cf157610cf1610c38565b5060010190565b600060208284031215610d0a57600080fd5b5051919050565b600082610d47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561031657610316610c3856fea2646970667358221220dd4e0bbcf31119dd97f8cccd4ba6e82365e6cdd8c6895b22b351a364cc6053b164736f6c63430008110033",
              "opcodes": "PUSH2 0x1A0 PUSH1 0x40 MSTORE PUSH3 0x76A700 PUSH2 0x140 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x10AD CODESIZE SUB DUP1 PUSH3 0x10AD DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x3D SWAP2 PUSH3 0x134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x120 MSTORE DUP3 MLOAD DUP5 SWAP1 DUP5 SWAP1 DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH3 0x65 JUMPI PUSH3 0x65 PUSH3 0x22F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x8A JUMPI PUSH3 0x8A PUSH3 0x22F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH3 0xAF JUMPI PUSH3 0xAF PUSH3 0x22F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x3 DUP2 MLOAD DUP2 LT PUSH3 0xD4 JUMPI PUSH3 0xD4 PUSH3 0x22F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xE0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x4 DUP2 MLOAD DUP2 LT PUSH3 0xF9 JUMPI PUSH3 0xF9 PUSH3 0x22F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH2 0x100 MSTORE POP POP PUSH2 0x160 SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x180 MSTORE POP PUSH3 0x245 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP7 DUP2 ADD MLOAD SWAP2 SWAP6 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x1AD JUMPI PUSH3 0x1AD PUSH3 0x11E JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH3 0x1D5 JUMPI PUSH3 0x1D5 PUSH3 0x11E JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 DUP3 MSTORE DUP5 DUP3 ADD SWAP3 POP DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP12 DUP4 GT ISZERO PUSH3 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP3 DUP6 LT ISZERO PUSH3 0x214 JUMPI DUP5 MLOAD DUP5 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP3 DUP6 ADD SWAP3 PUSH3 0x1F9 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x60 SWAP1 SWAP12 ADD MLOAD SWAP10 SWAP13 SWAP1 SWAP12 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0xD95 PUSH3 0x318 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x29E ADD MSTORE DUP2 DUP2 PUSH2 0x5CF ADD MSTORE PUSH2 0x9A1 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x190 ADD MSTORE DUP2 DUP2 PUSH2 0x542 ADD MSTORE DUP2 DUP2 PUSH2 0x5A0 ADD MSTORE DUP2 DUP2 PUSH2 0x9CA ADD MSTORE PUSH2 0xA00 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x573 ADD MSTORE PUSH2 0x95A ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x1F1 ADD MSTORE DUP2 DUP2 PUSH2 0x8A3 ADD MSTORE PUSH2 0xA29 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x169 ADD MSTORE PUSH2 0x383 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x264 ADD MSTORE PUSH2 0x3BC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x1B7 ADD MSTORE PUSH2 0x3EE ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x23D ADD MSTORE PUSH2 0x420 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x106 ADD MSTORE PUSH2 0x44A ADD MSTORE PUSH2 0xD95 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA34E3596 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD820ED42 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD820ED42 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0xED6C33ED EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0xF05AF2B7 EQ PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA34E3596 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xC8A4271F EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0xCD5D2C74 EQ PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x59B6B86C GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x59B6B86C EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x7D3FB8B7 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xA200E153 EQ PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x2C0FD74C EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x50E9A715 EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0xB55 JUMP JUMPDEST PUSH2 0x2C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0xF8 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x4E2 JUMP JUMPDEST PUSH2 0x213 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x294 CALLDATASIZE PUSH1 0x4 PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xA377DD9600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x316 JUMPI POP PUSH2 0x316 DUP3 PUSH2 0x5FF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x371 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x697 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 DUP3 LT PUSH2 0x3AE JUMPI PUSH2 0x3A7 DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST SWAP1 POP PUSH2 0x471 JUMP JUMPDEST DUP2 PUSH1 0x4 SUB PUSH2 0x3E0 JUMPI PUSH2 0x3A7 DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST DUP2 PUSH1 0x3 SUB PUSH2 0x412 JUMPI PUSH2 0x3A7 DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST DUP2 PUSH1 0x2 SUB PUSH2 0x444 JUMPI PUSH2 0x3A7 DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST PUSH2 0x46E DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x485 DUP4 PUSH2 0x89E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4D5 PUSH2 0x4D0 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP DUP12 SWAP2 POP PUSH2 0x952 SWAP1 POP JUMP JUMPDEST PUSH2 0x89E JUMP JUMPDEST SWAP1 MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A PUSH2 0x4D0 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP DUP8 SWAP2 POP PUSH2 0x952 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53E DUP3 PUSH2 0xA24 JUMP JUMPDEST SWAP2 POP PUSH32 0x0 DUP3 GT ISZERO PUSH2 0x56D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x597 DUP4 PUSH32 0x0 PUSH2 0xAC7 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 PUSH2 0x5C5 PUSH32 0x0 DUP5 PUSH2 0xAE3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5F3 DUP3 PUSH32 0x0 PUSH2 0xB06 JUMP JUMPDEST SWAP1 POP PUSH2 0x52A DUP6 DUP3 PUSH2 0xAC7 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x316 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x50E9A71500000000000000000000000000000000000000000000000000000000 EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x6BD JUMPI PUSH2 0x6BD PUSH2 0xC7E JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x720 JUMPI PUSH2 0x719 PUSH1 0x1 DUP5 PUSH2 0xCAD JUMP JUMPDEST SWAP3 POP PUSH2 0x882 JUMP JUMPDEST PUSH32 0xE000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x775 JUMPI PUSH2 0x719 PUSH1 0x2 DUP5 PUSH2 0xCAD JUMP JUMPDEST PUSH32 0xF000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x7CA JUMPI PUSH2 0x719 PUSH1 0x3 DUP5 PUSH2 0xCAD JUMP JUMPDEST PUSH32 0xF800000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x81F JUMPI PUSH2 0x719 PUSH1 0x4 DUP5 PUSH2 0xCAD JUMP JUMPDEST PUSH32 0xFC00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x874 JUMPI PUSH2 0x719 PUSH1 0x5 DUP5 PUSH2 0xCAD JUMP JUMPDEST PUSH2 0x87F PUSH1 0x6 DUP5 PUSH2 0xCAD JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP3 PUSH2 0x88D DUP2 PUSH2 0xCC0 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x6A1 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x90C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x930 SWAP2 SWAP1 PUSH2 0xCF8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x941 DUP5 PUSH4 0x5F5E100 PUSH2 0xC67 JUMP JUMPDEST PUSH2 0x94B SWAP2 SWAP1 PUSH2 0xD11 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97E DUP4 PUSH32 0x0 PUSH2 0xAC7 JUMP JUMPDEST SWAP3 POP TIMESTAMP DUP4 GT ISZERO PUSH2 0x990 JUMPI POP PUSH1 0x0 PUSH2 0x94B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C6 PUSH2 0x99F TIMESTAMP DUP7 PUSH2 0xAE3 JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0xB20 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x9FA JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x94B JUMP JUMPDEST PUSH2 0x52A DUP2 PUSH32 0x0 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA92 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAB6 SWAP2 SWAP1 PUSH2 0xCF8 JUMP JUMPDEST SWAP1 POP PUSH4 0x5F5E100 PUSH2 0x941 DUP3 DUP6 PUSH2 0xC67 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAD4 DUP4 DUP6 PUSH2 0xCAD JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAFE DUP4 DUP6 PUSH2 0xD4C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAFE DUP4 DUP6 PUSH2 0xD11 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 SUB PUSH2 0xB32 JUMPI POP PUSH1 0x0 PUSH2 0x316 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB3E DUP4 DUP6 PUSH2 0xC67 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xB4B DUP6 DUP4 PUSH2 0xD11 JUMP JUMPDEST EQ PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xBE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP10 SWAP1 SWAP9 POP SWAP2 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x40 ADD CALLDATALOAD SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x316 JUMPI PUSH2 0x316 PUSH2 0xC38 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x316 JUMPI PUSH2 0x316 PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xCF1 JUMPI PUSH2 0xCF1 PUSH2 0xC38 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xD47 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x316 JUMPI PUSH2 0x316 PUSH2 0xC38 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD 0x4E SIGNEXTEND 0xBC RETURN GT NOT 0xDD SWAP8 0xF8 0xCC 0xCD 0x4B 0xA6 0xE8 0x23 PUSH6 0xE6CDD8C6895B 0x22 0xB3 MLOAD LOG3 PUSH5 0xCC6053B164 PUSH20 0x6F6C634300081100330000000000000000000000 ",
              "sourceMap": "117:2381:50:-:0;;;238:7;205:40;;458:318;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;985:22:52;;;;1032:14;;650:10:50;;662:11;;;;1044:1:52;;1032:14;;;;:::i;:::-;;;;;;;1017:29;;;;;;1071:11;1083:1;1071:14;;;;;;;;:::i;:::-;;;;;;;1056:29;;;;;;1110:11;1122:1;1110:14;;;;;;;;:::i;:::-;;;;;;;1095:29;;;;;;1149:11;1161:1;1149:14;;;;;;;;:::i;:::-;;;;;;;1134:29;;;;;;1188:11;1200:1;1188:14;;;;;;;;:::i;:::-;;;;;;;;;;;1173:29;;-1:-1:-1;;685:32:50::1;::::0;;;;727:42:::1;::::0;-1:-1:-1;117:2381:50;;-1:-1:-1;117:2381:50;14:127:111;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1424;297:6;305;313;321;374:3;362:9;353:7;349:23;345:33;342:53;;;391:1;388;381:12;342:53;417:16;;-1:-1:-1;;;;;462:31:111;;452:42;;442:70;;508:1;505;498:12;442:70;555:2;586:18;;;580:25;531:5;;-1:-1:-1;555:2:111;-1:-1:-1;;;;;654:14:111;;;651:34;;;681:1;678;671:12;651:34;719:6;708:9;704:22;694:32;;764:7;757:4;753:2;749:13;745:27;735:55;;786:1;783;776:12;735:55;815:2;809:9;837:2;833;830:10;827:36;;;843:18;;:::i;:::-;889:2;886:1;882:10;921:2;915:9;984:2;980:7;975:2;971;967:11;963:25;955:6;951:38;1039:6;1027:10;1024:22;1019:2;1007:10;1004:18;1001:46;998:72;;;1050:18;;:::i;:::-;1086:2;1079:22;1136:18;;;1170:15;;;;-1:-1:-1;1212:11:111;;;1208:20;;;1240:19;;;1237:39;;;1272:1;1269;1262:12;1237:39;1296:11;;;;1316:135;1332:6;1327:3;1324:15;1316:135;;;1398:10;;1386:23;;1349:12;;;;1429;;;;1316:135;;;1516:2;1501:18;;1495:25;1560:2;1545:18;;;1539:25;146:1424;;1470:6;;-1:-1:-1;146:1424:111;-1:-1:-1;;;;;;;;146:1424:111:o;1575:127::-;1636:10;1631:3;1627:20;1624:1;1617:31;1667:4;1664:1;1657:15;1691:4;1688:1;1681:15;1575:127;117:2381:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_premium_11441": {
                  "entryPoint": 2386,
                  "id": 11441,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@add_11622": {
                  "entryPoint": 2759,
                  "id": 11622,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@attoUSDToWei_11873": {
                  "entryPoint": 2206,
                  "id": 11873,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@div_11572": {
                  "entryPoint": 2822,
                  "id": 11572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@initialPremium_11355": {
                  "entryPoint": null,
                  "id": 11355,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mul_11547": {
                  "entryPoint": 2848,
                  "id": 11547,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@premiumDecreaseRate_11357": {
                  "entryPoint": null,
                  "id": 11357,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@premium_11834": {
                  "entryPoint": 1250,
                  "id": 11834,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@price1Letter_11665": {
                  "entryPoint": null,
                  "id": 11665,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price2Letter_11667": {
                  "entryPoint": null,
                  "id": 11667,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price3Letter_11669": {
                  "entryPoint": null,
                  "id": 11669,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price4Letter_11671": {
                  "entryPoint": null,
                  "id": 11671,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price5Letter_11673": {
                  "entryPoint": null,
                  "id": 11673,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price_11813": {
                  "entryPoint": 796,
                  "id": 11813,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@strlen_12019": {
                  "entryPoint": 1687,
                  "id": 12019,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@sub_11597": {
                  "entryPoint": 2787,
                  "id": 11597,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@supportsInterface_11509": {
                  "entryPoint": 704,
                  "id": 11509,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_11919": {
                  "entryPoint": 1535,
                  "id": 11919,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@timeUntilPremium_11490": {
                  "entryPoint": 1331,
                  "id": 11490,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@usdOracle_11676": {
                  "entryPoint": null,
                  "id": 11676,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@weiToAttoUSD_11897": {
                  "entryPoint": 2596,
                  "id": 11897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 2901,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int256_fromMemory": {
                  "entryPoint": 3320,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256": {
                  "entryPoint": 2967,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 3094,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3245,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 3345,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 3175,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 3404,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 3264,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3128,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3198,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3755:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "644:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "654:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "666:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "677:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "662:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "662:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "654:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "696:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "707:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "689:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "689:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "613:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "624:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "635:4:111",
                            "type": ""
                          }
                        ],
                        "src": "543:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "849:610:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "895:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "904:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "907:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "897:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "897:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "897:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "866:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "866:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "891:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "862:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "862:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "859:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "920:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "947:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "934:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "934:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "924:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "966:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "976:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "970:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1021:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1030:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1033:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1023:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1023:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1023:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1009:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1017:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1006:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1006:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1003:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1046:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1060:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1071:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1056:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1056:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1050:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1126:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1135:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1138:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1128:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1128:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1128:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1105:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1109:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1101:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1101:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1097:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1097:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1090:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1090:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1087:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1151:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1178:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1165:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1165:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1155:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1208:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1217:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1220:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1210:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1210:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1210:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1196:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1204:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1193:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1193:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1190:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1276:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1285:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1288:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1278:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1278:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1278:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1247:2:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1251:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1243:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1243:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1260:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1239:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1239:26:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1267:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1236:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1236:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1233:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1301:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1315:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1319:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1311:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1311:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1301:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1333:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1343:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1333:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1358:44:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1385:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1396:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1381:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1381:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1368:34:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1358:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1411:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1438:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1449:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1434:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1434:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1421:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1421:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1411:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "791:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "802:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "814:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "822:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "830:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "838:6:111",
                            "type": ""
                          }
                        ],
                        "src": "725:734:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1613:146:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1623:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1635:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1646:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1631:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1631:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1623:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1665:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1682:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1676:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1676:13:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1658:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1658:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1658:32:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1710:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1721:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1706:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1706:20:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1738:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1746:4:111",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1734:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1734:17:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1728:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1728:24:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1699:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1699:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1699:54:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1582:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1593:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1604:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1464:295:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1894:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1904:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1916:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1927:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1912:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1912:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1904:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1946:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1961:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1969:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1957:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1957:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1939:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1939:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1939:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1863:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1874:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1885:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1764:255:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2111:161:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2157:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2166:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2169:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2159:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2159:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2159:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2132:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2141:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2128:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2128:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2153:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2124:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2124:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2121:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2182:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2205:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2192:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2192:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2182:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2224:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2251:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2262:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2247:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2247:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2234:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2234:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2224:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2069:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2080:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2092:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2100:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2024:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2309:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2326:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2329:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2319:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2319:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2319:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2423:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2426:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2416:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2416:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2416:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2447:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2450:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2440:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2440:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2440:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2277:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2518:116:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2528:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2543:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2546:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "2539:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2539:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "2528:7:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2606:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2608:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2608:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2608:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "2577:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2570:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2570:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "2584:1:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "product",
                                                "nodeType": "YulIdentifier",
                                                "src": "2591:7:111"
                                              },
                                              {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "2600:1:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "2587:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2587:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nodeType": "YulIdentifier",
                                          "src": "2581:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2581:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "2567:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2567:37:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2560:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2560:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2557:71:111"
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2497:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2500:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "2506:7:111",
                            "type": ""
                          }
                        ],
                        "src": "2466:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2671:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2688:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2691:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2681:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2681:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2681:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2785:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2788:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2778:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2778:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2778:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2809:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2812:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2802:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2802:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2802:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2639:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2876:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2886:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2897:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2900:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2893:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2893:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "2886:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2925:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2927:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2927:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2927:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2917:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "2920:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2914:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2914:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2911:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2859:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2862:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "2868:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2828:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3005:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3096:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3098:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3098:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3021:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "3018:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3018:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3015:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3127:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3138:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3145:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3134:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3134:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "3127:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2987:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "2997:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2958:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3238:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3284:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3293:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3296:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3286:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3286:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3286:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3259:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3268:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3255:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3255:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3280:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3251:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3251:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3248:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3309:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3325:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3319:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3319:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3309:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3204:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3215:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3227:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3158:183:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3392:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3423:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3444:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3447:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3437:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3437:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3437:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3545:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3548:4:111",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3538:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3538:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3538:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3573:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3576:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3566:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3566:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3566:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3412:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3405:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3405:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3402:189:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3600:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3609:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3612:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "3605:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3605:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "3600:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3377:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3380:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "3386:1:111",
                            "type": ""
                          }
                        ],
                        "src": "3346:274:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3674:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3684:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3696:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3699:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "3692:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3692:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "3684:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3725:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3727:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3727:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3727:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "3716:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3722:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3713:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3713:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3710:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3656:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3659:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "3665:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3625:128:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 0x20), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 0x20)\n        value1 := length\n        value2 := calldataload(add(headStart, 0x20))\n        value3 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n    }\n    function abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_decode_tuple_t_int256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "11353": [
                  {
                    "length": 32,
                    "start": 1395
                  },
                  {
                    "length": 32,
                    "start": 2394
                  }
                ],
                "11355": [
                  {
                    "length": 32,
                    "start": 400
                  },
                  {
                    "length": 32,
                    "start": 1346
                  },
                  {
                    "length": 32,
                    "start": 1440
                  },
                  {
                    "length": 32,
                    "start": 2506
                  },
                  {
                    "length": 32,
                    "start": 2560
                  }
                ],
                "11357": [
                  {
                    "length": 32,
                    "start": 670
                  },
                  {
                    "length": 32,
                    "start": 1487
                  },
                  {
                    "length": 32,
                    "start": 2465
                  }
                ],
                "11665": [
                  {
                    "length": 32,
                    "start": 262
                  },
                  {
                    "length": 32,
                    "start": 1098
                  }
                ],
                "11667": [
                  {
                    "length": 32,
                    "start": 573
                  },
                  {
                    "length": 32,
                    "start": 1056
                  }
                ],
                "11669": [
                  {
                    "length": 32,
                    "start": 439
                  },
                  {
                    "length": 32,
                    "start": 1006
                  }
                ],
                "11671": [
                  {
                    "length": 32,
                    "start": 612
                  },
                  {
                    "length": 32,
                    "start": 956
                  }
                ],
                "11673": [
                  {
                    "length": 32,
                    "start": 361
                  },
                  {
                    "length": 32,
                    "start": 899
                  }
                ],
                "11676": [
                  {
                    "length": 32,
                    "start": 497
                  },
                  {
                    "length": 32,
                    "start": 2211
                  },
                  {
                    "length": 32,
                    "start": 2601
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100d45760003560e01c8063a34e359611610081578063d820ed421161005b578063d820ed421461025f578063ed6c33ed14610286578063f05af2b71461029957600080fd5b8063a34e3596146101d9578063c8a4271f146101ec578063cd5d2c741461023857600080fd5b806359b6b86c116100b257806359b6b86c146101645780637d3fb8b71461018b578063a200e153146101b257600080fd5b806301ffc9a7146100d95780632c0fd74c1461010157806350e9a71514610136575b600080fd5b6100ec6100e7366004610b55565b6102c0565b60405190151581526020015b60405180910390f35b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100f8565b610149610144366004610b97565b61031c565b604080518251815260209283015192810192909252016100f8565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6101286101e7366004610b97565b6104e2565b6102137f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b610128610294366004610c16565b610533565b6101287f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fa377dd960000000000000000000000000000000000000000000000000000000014806103165750610316826105ff565b92915050565b6040805180820190915260008082526020820152600061037186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061069792505050565b90506000600582106103ae576103a7847f0000000000000000000000000000000000000000000000000000000000000000610c67565b9050610471565b816004036103e0576103a7847f0000000000000000000000000000000000000000000000000000000000000000610c67565b81600303610412576103a7847f0000000000000000000000000000000000000000000000000000000000000000610c67565b81600203610444576103a7847f0000000000000000000000000000000000000000000000000000000000000000610c67565b61046e847f0000000000000000000000000000000000000000000000000000000000000000610c67565b90505b60405180604001604052806104858361089e565b81526020016104d56104d08a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91506109529050565b61089e565b9052979650505050505050565b600061052a6104d086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892508791506109529050565b95945050505050565b600061053e82610a24565b91507f000000000000000000000000000000000000000000000000000000000000000082111561056d57600080fd5b610597837f0000000000000000000000000000000000000000000000000000000000000000610ac7565b925060006105c57f000000000000000000000000000000000000000000000000000000000000000084610ae3565b905060006105f3827f0000000000000000000000000000000000000000000000000000000000000000610b06565b905061052a8582610ac7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061031657507fffffffff0000000000000000000000000000000000000000000000000000000082167f50e9a715000000000000000000000000000000000000000000000000000000001492915050565b8051600090819081905b808210156108955760008583815181106106bd576106bd610c7e565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f800000000000000000000000000000000000000000000000000000000000000081101561072057610719600184610cad565b9250610882565b7fe0000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561077557610719600284610cad565b7ff0000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156107ca57610719600384610cad565b7ff8000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561081f57610719600484610cad565b7ffc000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216101561087457610719600584610cad565b61087f600684610cad565b92505b508261088d81610cc0565b9350506106a1565b50909392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190610cf8565b905080610941846305f5e100610c67565b61094b9190610d11565b9392505050565b600061097e837f0000000000000000000000000000000000000000000000000000000000000000610ac7565b9250428311156109905750600061094b565b60006109c661099f4286610ae3565b7f000000000000000000000000000000000000000000000000000000000000000090610b20565b90507f00000000000000000000000000000000000000000000000000000000000000008111156109fa57600091505061094b565b61052a817f0000000000000000000000000000000000000000000000000000000000000000610d4c565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190610cf8565b90506305f5e1006109418285610c67565b600080610ad48385610cad565b90508381101561094b57600080fd5b600082821115610af257600080fd5b6000610afe8385610d4c565b949350505050565b6000808211610b1457600080fd5b6000610afe8385610d11565b600082600003610b3257506000610316565b6000610b3e8385610c67565b905082610b4b8583610d11565b1461094b57600080fd5b600060208284031215610b6757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461094b57600080fd5b60008060008060608587031215610bad57600080fd5b843567ffffffffffffffff80821115610bc557600080fd5b818701915087601f830112610bd957600080fd5b813581811115610be857600080fd5b886020828501011115610bfa57600080fd5b6020928301999098509187013596604001359550909350505050565b60008060408385031215610c2957600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761031657610316610c38565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8082018082111561031657610316610c38565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610cf157610cf1610c38565b5060010190565b600060208284031215610d0a57600080fd5b5051919050565b600082610d47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561031657610316610c3856fea2646970667358221220dd4e0bbcf31119dd97f8cccd4ba6e82365e6cdd8c6895b22b351a364cc6053b164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA34E3596 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD820ED42 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD820ED42 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0xED6C33ED EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0xF05AF2B7 EQ PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA34E3596 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xC8A4271F EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0xCD5D2C74 EQ PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x59B6B86C GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x59B6B86C EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x7D3FB8B7 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xA200E153 EQ PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x2C0FD74C EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x50E9A715 EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0xB55 JUMP JUMPDEST PUSH2 0x2C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0xF8 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x4E2 JUMP JUMPDEST PUSH2 0x213 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x294 CALLDATASIZE PUSH1 0x4 PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST PUSH2 0x128 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xA377DD9600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x316 JUMPI POP PUSH2 0x316 DUP3 PUSH2 0x5FF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x371 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x697 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 DUP3 LT PUSH2 0x3AE JUMPI PUSH2 0x3A7 DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST SWAP1 POP PUSH2 0x471 JUMP JUMPDEST DUP2 PUSH1 0x4 SUB PUSH2 0x3E0 JUMPI PUSH2 0x3A7 DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST DUP2 PUSH1 0x3 SUB PUSH2 0x412 JUMPI PUSH2 0x3A7 DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST DUP2 PUSH1 0x2 SUB PUSH2 0x444 JUMPI PUSH2 0x3A7 DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST PUSH2 0x46E DUP5 PUSH32 0x0 PUSH2 0xC67 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x485 DUP4 PUSH2 0x89E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4D5 PUSH2 0x4D0 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP DUP12 SWAP2 POP PUSH2 0x952 SWAP1 POP JUMP JUMPDEST PUSH2 0x89E JUMP JUMPDEST SWAP1 MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A PUSH2 0x4D0 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP DUP8 SWAP2 POP PUSH2 0x952 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53E DUP3 PUSH2 0xA24 JUMP JUMPDEST SWAP2 POP PUSH32 0x0 DUP3 GT ISZERO PUSH2 0x56D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x597 DUP4 PUSH32 0x0 PUSH2 0xAC7 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 PUSH2 0x5C5 PUSH32 0x0 DUP5 PUSH2 0xAE3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5F3 DUP3 PUSH32 0x0 PUSH2 0xB06 JUMP JUMPDEST SWAP1 POP PUSH2 0x52A DUP6 DUP3 PUSH2 0xAC7 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x316 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x50E9A71500000000000000000000000000000000000000000000000000000000 EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x6BD JUMPI PUSH2 0x6BD PUSH2 0xC7E JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x720 JUMPI PUSH2 0x719 PUSH1 0x1 DUP5 PUSH2 0xCAD JUMP JUMPDEST SWAP3 POP PUSH2 0x882 JUMP JUMPDEST PUSH32 0xE000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x775 JUMPI PUSH2 0x719 PUSH1 0x2 DUP5 PUSH2 0xCAD JUMP JUMPDEST PUSH32 0xF000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x7CA JUMPI PUSH2 0x719 PUSH1 0x3 DUP5 PUSH2 0xCAD JUMP JUMPDEST PUSH32 0xF800000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x81F JUMPI PUSH2 0x719 PUSH1 0x4 DUP5 PUSH2 0xCAD JUMP JUMPDEST PUSH32 0xFC00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x874 JUMPI PUSH2 0x719 PUSH1 0x5 DUP5 PUSH2 0xCAD JUMP JUMPDEST PUSH2 0x87F PUSH1 0x6 DUP5 PUSH2 0xCAD JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP3 PUSH2 0x88D DUP2 PUSH2 0xCC0 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x6A1 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x90C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x930 SWAP2 SWAP1 PUSH2 0xCF8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x941 DUP5 PUSH4 0x5F5E100 PUSH2 0xC67 JUMP JUMPDEST PUSH2 0x94B SWAP2 SWAP1 PUSH2 0xD11 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97E DUP4 PUSH32 0x0 PUSH2 0xAC7 JUMP JUMPDEST SWAP3 POP TIMESTAMP DUP4 GT ISZERO PUSH2 0x990 JUMPI POP PUSH1 0x0 PUSH2 0x94B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C6 PUSH2 0x99F TIMESTAMP DUP7 PUSH2 0xAE3 JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0xB20 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x9FA JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x94B JUMP JUMPDEST PUSH2 0x52A DUP2 PUSH32 0x0 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA92 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAB6 SWAP2 SWAP1 PUSH2 0xCF8 JUMP JUMPDEST SWAP1 POP PUSH4 0x5F5E100 PUSH2 0x941 DUP3 DUP6 PUSH2 0xC67 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAD4 DUP4 DUP6 PUSH2 0xCAD JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAFE DUP4 DUP6 PUSH2 0xD4C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAFE DUP4 DUP6 PUSH2 0xD11 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 SUB PUSH2 0xB32 JUMPI POP PUSH1 0x0 PUSH2 0x316 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB3E DUP4 DUP6 PUSH2 0xC67 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xB4B DUP6 DUP4 PUSH2 0xD11 JUMP JUMPDEST EQ PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xBE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP10 SWAP1 SWAP9 POP SWAP2 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x40 ADD CALLDATALOAD SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x316 JUMPI PUSH2 0x316 PUSH2 0xC38 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x316 JUMPI PUSH2 0x316 PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xCF1 JUMPI PUSH2 0xCF1 PUSH2 0xC38 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xD47 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x316 JUMPI PUSH2 0x316 PUSH2 0xC38 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD 0x4E SIGNEXTEND 0xBC RETURN GT NOT 0xDD SWAP8 0xF8 0xCC 0xCD 0x4B 0xA6 0xE8 0x23 PUSH6 0xE6CDD8C6895B 0x22 0xB3 MLOAD LOG3 PUSH5 0xCC6053B164 PUSH20 0x6F6C634300081100330000000000000000000000 ",
              "sourceMap": "117:2381:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:261;;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;2235:261:50;;;;;;;;563:37:52;;;;;;;;689:25:111;;;677:2;662:18;563:37:52;543:177:111;1215:807:52;;;;;;:::i;:::-;;:::i;:::-;;;;1676:13:111;;1658:32;;1746:4;1734:17;;;1728:24;1706:20;;;1699:54;;;;1631:18;1215:807:52;1464:295:111;735:37:52;;;;;252:39:50;;;;;649:37:52;;;;;2092:207;;;;;;:::i;:::-;;:::i;801:46::-;;;;;;;;1969:42:111;1957:55;;;1939:74;;1927:2;1912:18;801:46:52;1764:255:111;606:37:52;;;;;692;;;;;1819:410:50;;;;;;:::i;:::-;;:::i;297:44::-;;;;;2235:261;2360:4;2400:36;;;;;;2399:90;;;2453:36;2477:11;2453:23;:36::i;:::-;2380:109;2235:261;-1:-1:-1;;2235:261:50:o;1215:807:52:-;-1:-1:-1;;;;;;;;;;;;;;;;;1386:11:52;1400:13;:4;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1400:11:52;;-1:-1:-1;;;1400:13:52:i;:::-;1386:27;;1423:17;1462:1;1455:3;:8;1451:380;;1491:23;1506:8;1491:12;:23;:::i;:::-;1479:35;;1451:380;;;1535:3;1542:1;1535:8;1531:300;;1571:23;1586:8;1571:12;:23;:::i;1531:300::-;1615:3;1622:1;1615:8;1611:220;;1651:23;1666:8;1651:12;:23;:::i;1611:220::-;1695:3;1702:1;1695:8;1691:140;;1731:23;1746:8;1731:12;:23;:::i;1691:140::-;1797:23;1812:8;1797:12;:23;:::i;:::-;1785:35;;1691:140;1860:155;;;;;;;;1903:23;1916:9;1903:12;:23::i;:::-;1860:155;;;;1953:47;1966:33;1975:4;;1966:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1981:7:52;;-1:-1:-1;1990:8:52;;-1:-1:-1;1966:8:52;;-1:-1:-1;1966:33:52:i;:::-;1953:12;:47::i;:::-;1860:155;;1841:174;1215:807;-1:-1:-1;;;;;;;1215:807:52:o;2092:207::-;2219:7;2245:47;2258:33;2267:4;;2258:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2273:7:52;;-1:-1:-1;2282:8:52;;-1:-1:-1;2258:8:52;;-1:-1:-1;2258:33:52:i;2245:47::-;2238:54;2092:207;-1:-1:-1;;;;;2092:207:52:o;1819:410:50:-;1925:7;1957:20;1970:6;1957:12;:20::i;:::-;1948:29;;2005:14;1995:6;:24;;1987:33;;;;;;2041:25;:7;2053:12;2041:11;:25::i;:::-;2031:35;-1:-1:-1;2077:16:50;2096:26;:14;2115:6;2096:18;:26::i;:::-;2077:45;-1:-1:-1;2132:16:50;2151:33;2077:45;2164:19;2151:12;:33::i;:::-;2132:52;-1:-1:-1;2201:21:50;:7;2132:52;2201:11;:21::i;2933:255:52:-;3041:4;3080:40;;;3095:25;3080:40;;:101;;-1:-1:-1;3136:45:52;;;3151:30;3136:45;3061:120;2933:255;-1:-1:-1;;2933:255:52:o;222:622:53:-;362:15;;278:7;;;;;;387:431;405:10;401:1;:14;387:431;;;438:8;455:1;458;449:11;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;478:8:53;;;474:334;;;506:6;511:1;506:6;;:::i;:::-;;;474:334;;;537:8;;;;;533:275;;;565:6;570:1;565:6;;:::i;533:275::-;596:8;;;;;592:216;;;624:6;629:1;624:6;;:::i;592:216::-;655:8;;;;;651:157;;;683:6;688:1;683:6;;:::i;651:157::-;714:8;;;;;710:98;;;742:6;747:1;742:6;;:::i;710:98::-;787:6;792:1;787:6;;:::i;:::-;;;710:98;-1:-1:-1;417:5:53;;;;:::i;:::-;;;;387:431;;;-1:-1:-1;834:3:53;;222:622;-1:-1:-1;;;222:622:53:o;2559:181:52:-;2620:7;2639:16;2666:9;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2639:52;-1:-1:-1;2639:52:52;2709:12;:6;2718:3;2709:12;:::i;:::-;2708:25;;;;:::i;:::-;2701:32;2559:181;-1:-1:-1;;;2559:181:52:o;782:650:50:-;921:7;950:25;:7;962:12;950:11;:25::i;:::-;940:35;;999:15;989:7;:25;985:103;;;-1:-1:-1;1076:1:50;1069:8;;985:103;1156:16;1175:75;1212:28;:15;1232:7;1212:19;:28::i;:::-;1175:19;;:23;:75::i;:::-;1156:94;;1334:14;1323:8;:25;1319:64;;;1371:1;1364:8;;;;;1319:64;1400:25;1417:8;1400:14;:25;:::i;2746:181:52:-;2807:7;2826:16;2853:9;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2826:52;-1:-1:-1;2917:3:52;2896:17;2826:52;2896:6;:17;:::i;1471:145:51:-;1529:7;;1560:5;1564:1;1560;:5;:::i;:::-;1548:17;;1588:1;1583;:6;;1575:15;;;;;1243:145;1301:7;1333:1;1328;:6;;1320:15;;;;;;1345:9;1357:5;1361:1;1357;:5;:::i;:::-;1345:17;1243:145;-1:-1:-1;;;;1243:145:51:o;814:296::-;872:7;969:1;965;:5;957:14;;;;;;981:9;993:5;997:1;993;:5;:::i;263:421::-;321:7;561:1;566;561:6;557:45;;-1:-1:-1;590:1:51;583:8;;557:45;612:9;624:5;628:1;624;:5;:::i;:::-;612:17;-1:-1:-1;656:1:51;647:5;651:1;612:17;647:5;:::i;:::-;:10;639:19;;;;;14:332:111;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;725:734;814:6;822;830;838;891:2;879:9;870:7;866:23;862:32;859:52;;;907:1;904;897:12;859:52;947:9;934:23;976:18;1017:2;1009:6;1006:14;1003:34;;;1033:1;1030;1023:12;1003:34;1071:6;1060:9;1056:22;1046:32;;1116:7;1109:4;1105:2;1101:13;1097:27;1087:55;;1138:1;1135;1128:12;1087:55;1178:2;1165:16;1204:2;1196:6;1193:14;1190:34;;;1220:1;1217;1210:12;1190:34;1267:7;1260:4;1251:6;1247:2;1243:15;1239:26;1236:39;1233:59;;;1288:1;1285;1278:12;1233:59;1319:4;1311:13;;;;1343:6;;-1:-1:-1;1381:20:111;;;1368:34;;1449:2;1434:18;1421:32;;-1:-1:-1;725:734:111;;-1:-1:-1;;;;725:734:111:o;2024:248::-;2092:6;2100;2153:2;2141:9;2132:7;2128:23;2124:32;2121:52;;;2169:1;2166;2159:12;2121:52;-1:-1:-1;;2192:23:111;;;2262:2;2247:18;;;2234:32;;-1:-1:-1;2024:248:111:o;2277:184::-;2329:77;2326:1;2319:88;2426:4;2423:1;2416:15;2450:4;2447:1;2440:15;2466:168;2539:9;;;2570;;2587:15;;;2581:22;;2567:37;2557:71;;2608:18;;:::i;2639:184::-;2691:77;2688:1;2681:88;2788:4;2785:1;2778:15;2812:4;2809:1;2802:15;2828:125;2893:9;;;2914:10;;;2911:36;;;2927:18;;:::i;2958:195::-;2997:3;3028:66;3021:5;3018:77;3015:103;;3098:18;;:::i;:::-;-1:-1:-1;3145:1:111;3134:13;;2958:195::o;3158:183::-;3227:6;3280:2;3268:9;3259:7;3255:23;3251:32;3248:52;;;3296:1;3293;3286:12;3248:52;-1:-1:-1;3319:16:111;;3158:183;-1:-1:-1;3158:183:111:o;3346:274::-;3386:1;3412;3402:189;;3447:77;3444:1;3437:88;3548:4;3545:1;3538:15;3576:4;3573:1;3566:15;3402:189;-1:-1:-1;3605:9:111;;3346:274::o;3625:128::-;3692:9;;;3713:11;;;3710:37;;;3727:18;;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "695400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "initialPremium()": "infinite",
                "premium(string,uint256,uint256)": "infinite",
                "premiumDecreaseRate()": "infinite",
                "price(string,uint256,uint256)": "infinite",
                "price1Letter()": "infinite",
                "price2Letter()": "infinite",
                "price3Letter()": "infinite",
                "price4Letter()": "infinite",
                "price5Letter()": "infinite",
                "supportsInterface(bytes4)": "465",
                "timeUntilPremium(uint256,uint256)": "infinite",
                "usdOracle()": "infinite"
              },
              "internal": {
                "_premium(string memory,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "initialPremium()": "7d3fb8b7",
              "premium(string,uint256,uint256)": "a34e3596",
              "premiumDecreaseRate()": "f05af2b7",
              "price(string,uint256,uint256)": "50e9a715",
              "price1Letter()": "2c0fd74c",
              "price2Letter()": "cd5d2c74",
              "price3Letter()": "a200e153",
              "price4Letter()": "d820ed42",
              "price5Letter()": "59b6b86c",
              "supportsInterface(bytes4)": "01ffc9a7",
              "timeUntilPremium(uint256,uint256)": "ed6c33ed",
              "usdOracle()": "c8a4271f"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorInterface\",\"name\":\"_usdOracle\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_rentPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"_initialPremium\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_premiumDecreaseRate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"RentPriceChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"initialPremium\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"premium\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"premiumDecreaseRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"base\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceOracle.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price2Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price3Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price4Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price5Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"timeUntilPremium\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"premium(string,uint256,uint256)\":{\"details\":\"Returns the pricing premium in wei.\"},\"price(string,uint256,uint256)\":{\"details\":\"Returns the price to register or renew a name.\",\"params\":{\"duration\":\"How long the name is being registered or extended for, in seconds.\",\"expires\":\"When the name presently expires (0 if this is a new registration).\",\"name\":\"The name being registered or renewed.\"},\"returns\":{\"_0\":\"base premium tuple of base price + premium price\"}},\"timeUntilPremium(uint256,uint256)\":{\"details\":\"Returns the timestamp at which a name with the specified expiry date will have      the specified re-registration price premium.\",\"params\":{\"amount\":\"The amount, in wei, the caller is willing to pay\",\"expires\":\"The timestamp at which the name expires.\"},\"returns\":{\"_0\":\"The timestamp at which the premium for this domain will be `amount`.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/LinearPremiumPriceOracle.sol\":\"LinearPremiumPriceOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\ninterface IPriceOracle {\\n    struct Price {\\n        uint256 base;\\n        uint256 premium;\\n    }\\n\\n    /**\\n     * @dev Returns the price to register or renew a name.\\n     * @param name The name being registered or renewed.\\n     * @param expires When the name presently expires (0 if this is a new registration).\\n     * @param duration How long the name is being registered or extended for, in seconds.\\n     * @return base premium tuple of base price + premium price\\n     */\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (Price calldata);\\n}\\n\",\"keccak256\":\"0x1ec537b4c7f9cc40363b39dcc7ade8c29bf94662e6b01d38e681487637bd577e\",\"license\":\"MIT\"},\"contracts/ethregistrar/LinearPremiumPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./SafeMath.sol\\\";\\nimport \\\"./StablePriceOracle.sol\\\";\\n\\ncontract LinearPremiumPriceOracle is StablePriceOracle {\\n    using SafeMath for *;\\n\\n    uint256 immutable GRACE_PERIOD = 90 days;\\n\\n    uint256 public immutable initialPremium;\\n    uint256 public immutable premiumDecreaseRate;\\n\\n    bytes4 private constant TIME_UNTIL_PREMIUM_ID =\\n        bytes4(keccak256(\\\"timeUntilPremium(uint,uint\\\"));\\n\\n    constructor(\\n        AggregatorInterface _usdOracle,\\n        uint256[] memory _rentPrices,\\n        uint256 _initialPremium,\\n        uint256 _premiumDecreaseRate\\n    ) public StablePriceOracle(_usdOracle, _rentPrices) {\\n        initialPremium = _initialPremium;\\n        premiumDecreaseRate = _premiumDecreaseRate;\\n    }\\n\\n    function _premium(\\n        string memory name,\\n        uint256 expires,\\n        uint256 /*duration*/\\n    ) internal view override returns (uint256) {\\n        expires = expires.add(GRACE_PERIOD);\\n        if (expires > block.timestamp) {\\n            // No premium for renewals\\n            return 0;\\n        }\\n\\n        // Calculate the discount off the maximum premium\\n        uint256 discount = premiumDecreaseRate.mul(\\n            block.timestamp.sub(expires)\\n        );\\n\\n        // If we've run out the premium period, return 0.\\n        if (discount > initialPremium) {\\n            return 0;\\n        }\\n\\n        return initialPremium - discount;\\n    }\\n\\n    /**\\n     * @dev Returns the timestamp at which a name with the specified expiry date will have\\n     *      the specified re-registration price premium.\\n     * @param expires The timestamp at which the name expires.\\n     * @param amount The amount, in wei, the caller is willing to pay\\n     * @return The timestamp at which the premium for this domain will be `amount`.\\n     */\\n    function timeUntilPremium(uint256 expires, uint256 amount)\\n        external\\n        view\\n        returns (uint256)\\n    {\\n        amount = weiToAttoUSD(amount);\\n        require(amount <= initialPremium);\\n\\n        expires = expires.add(GRACE_PERIOD);\\n\\n        uint256 discount = initialPremium.sub(amount);\\n        uint256 duration = discount.div(premiumDecreaseRate);\\n        return expires.add(duration);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            (interfaceID == TIME_UNTIL_PREMIUM_ID) ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x7e444e1eb2e7b30dd5c6f6b6d455a96e6ce92b1291300268ec1a9e146e9c0ef5\",\"license\":\"MIT\"},\"contracts/ethregistrar/SafeMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\n/**\\n * @title SafeMath\\n * @dev Unsigned math operations with safety checks that revert on error\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Multiplies two unsigned integers, reverts on overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        uint256 c = a * b;\\n        require(c / a == b);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Solidity only automatically asserts when dividing by 0\\n        require(b > 0);\\n        uint256 c = a / b;\\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b <= a);\\n        uint256 c = a - b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Adds two unsigned integers, reverts on overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\\n     * reverts when dividing by zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b != 0);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0xcb33819183087dcf646afd774ac6d2fb59d4fcb3f669b45b679cb8a936f0d22b\",\"license\":\"MIT\"},\"contracts/ethregistrar/StablePriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./IPriceOracle.sol\\\";\\nimport \\\"./SafeMath.sol\\\";\\nimport \\\"./StringUtils.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\ninterface AggregatorInterface {\\n    function latestAnswer() external view returns (int256);\\n}\\n\\n// StablePriceOracle sets a price in USD, based on an oracle.\\ncontract StablePriceOracle is IPriceOracle {\\n    using SafeMath for *;\\n    using StringUtils for *;\\n\\n    // Rent in base price units by length\\n    uint256 public immutable price1Letter;\\n    uint256 public immutable price2Letter;\\n    uint256 public immutable price3Letter;\\n    uint256 public immutable price4Letter;\\n    uint256 public immutable price5Letter;\\n\\n    // Oracle address\\n    AggregatorInterface public immutable usdOracle;\\n\\n    event RentPriceChanged(uint256[] prices);\\n\\n    constructor(AggregatorInterface _usdOracle, uint256[] memory _rentPrices) {\\n        usdOracle = _usdOracle;\\n        price1Letter = _rentPrices[0];\\n        price2Letter = _rentPrices[1];\\n        price3Letter = _rentPrices[2];\\n        price4Letter = _rentPrices[3];\\n        price5Letter = _rentPrices[4];\\n    }\\n\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view override returns (IPriceOracle.Price memory) {\\n        uint256 len = name.strlen();\\n        uint256 basePrice;\\n\\n        if (len >= 5) {\\n            basePrice = price5Letter * duration;\\n        } else if (len == 4) {\\n            basePrice = price4Letter * duration;\\n        } else if (len == 3) {\\n            basePrice = price3Letter * duration;\\n        } else if (len == 2) {\\n            basePrice = price2Letter * duration;\\n        } else {\\n            basePrice = price1Letter * duration;\\n        }\\n\\n        return\\n            IPriceOracle.Price({\\n                base: attoUSDToWei(basePrice),\\n                premium: attoUSDToWei(_premium(name, expires, duration))\\n            });\\n    }\\n\\n    /**\\n     * @dev Returns the pricing premium in wei.\\n     */\\n    function premium(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (uint256) {\\n        return attoUSDToWei(_premium(name, expires, duration));\\n    }\\n\\n    /**\\n     * @dev Returns the pricing premium in internal base units.\\n     */\\n    function _premium(\\n        string memory name,\\n        uint256 expires,\\n        uint256 duration\\n    ) internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    function attoUSDToWei(uint256 amount) internal view returns (uint256) {\\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\\n        return (amount * 1e8) / ethPrice;\\n    }\\n\\n    function weiToAttoUSD(uint256 amount) internal view returns (uint256) {\\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\\n        return (amount * ethPrice) / 1e8;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IERC165).interfaceId ||\\n            interfaceID == type(IPriceOracle).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xb05505ede4d654283caaa035e1083af0ff7df41e1038889a35ac129703b45b58\",\"license\":\"MIT\"},\"contracts/ethregistrar/StringUtils.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nlibrary StringUtils {\\n    /**\\n     * @dev Returns the length of a given string\\n     *\\n     * @param s The string to measure the length of\\n     * @return The length of the input string\\n     */\\n    function strlen(string memory s) internal pure returns (uint256) {\\n        uint256 len;\\n        uint256 i = 0;\\n        uint256 bytelength = bytes(s).length;\\n        for (len = 0; i < bytelength; len++) {\\n            bytes1 b = bytes(s)[i];\\n            if (b < 0x80) {\\n                i += 1;\\n            } else if (b < 0xE0) {\\n                i += 2;\\n            } else if (b < 0xF0) {\\n                i += 3;\\n            } else if (b < 0xF8) {\\n                i += 4;\\n            } else if (b < 0xFC) {\\n                i += 5;\\n            } else {\\n                i += 6;\\n            }\\n        }\\n        return len;\\n    }\\n}\\n\",\"keccak256\":\"0x4cc8363a850dc9130c433ee50e7c97e29a45ae5d9bd0808205ac7134b34f24e4\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/SafeMath.sol": {
        "SafeMath": {
          "abi": [],
          "devdoc": {
            "details": "Unsigned math operations with safety checks that revert on error",
            "kind": "dev",
            "methods": {},
            "title": "SafeMath",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204aa902e0b342cb8349a28a44c2c7aebcb1370ecea5b947dd3d85a79f25920d3664736f6c63430008110033",
              "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 0x4A 0xA9 MUL 0xE0 0xB3 TIMESTAMP 0xCB DUP4 0x49 LOG2 DUP11 DIFFICULTY 0xC2 0xC7 0xAE 0xBC 0xB1 CALLDATACOPY 0xE 0xCE 0xA5 0xB9 SELFBALANCE 0xDD RETURNDATASIZE DUP6 0xA7 SWAP16 0x25 SWAP3 0xD CALLDATASIZE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "157:1737:51:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;157:1737:51;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204aa902e0b342cb8349a28a44c2c7aebcb1370ecea5b947dd3d85a79f25920d3664736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A 0xA9 MUL 0xE0 0xB3 TIMESTAMP 0xCB DUP4 0x49 LOG2 DUP11 DIFFICULTY 0xC2 0xC7 0xAE 0xBC 0xB1 CALLDATACOPY 0xE 0xCE 0xA5 0xB9 SELFBALANCE 0xDD RETURNDATASIZE DUP6 0xA7 SWAP16 0x25 SWAP3 0xD CALLDATASIZE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "157:1737:51:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "add(uint256,uint256)": "infinite",
                "div(uint256,uint256)": "infinite",
                "mod(uint256,uint256)": "infinite",
                "mul(uint256,uint256)": "infinite",
                "sub(uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Unsigned math operations with safety checks that revert on error\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeMath\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/ethregistrar/SafeMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\n/**\\n * @title SafeMath\\n * @dev Unsigned math operations with safety checks that revert on error\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Multiplies two unsigned integers, reverts on overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        uint256 c = a * b;\\n        require(c / a == b);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Solidity only automatically asserts when dividing by 0\\n        require(b > 0);\\n        uint256 c = a / b;\\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b <= a);\\n        uint256 c = a - b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Adds two unsigned integers, reverts on overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\\n     * reverts when dividing by zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b != 0);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0xcb33819183087dcf646afd774ac6d2fb59d4fcb3f669b45b679cb8a936f0d22b\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/StablePriceOracle.sol": {
        "AggregatorInterface": {
          "abi": [
            {
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "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": {
              "latestAnswer()": "50d25bcd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"latestAnswer\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/StablePriceOracle.sol\":\"AggregatorInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\ninterface IPriceOracle {\\n    struct Price {\\n        uint256 base;\\n        uint256 premium;\\n    }\\n\\n    /**\\n     * @dev Returns the price to register or renew a name.\\n     * @param name The name being registered or renewed.\\n     * @param expires When the name presently expires (0 if this is a new registration).\\n     * @param duration How long the name is being registered or extended for, in seconds.\\n     * @return base premium tuple of base price + premium price\\n     */\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (Price calldata);\\n}\\n\",\"keccak256\":\"0x1ec537b4c7f9cc40363b39dcc7ade8c29bf94662e6b01d38e681487637bd577e\",\"license\":\"MIT\"},\"contracts/ethregistrar/SafeMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\n/**\\n * @title SafeMath\\n * @dev Unsigned math operations with safety checks that revert on error\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Multiplies two unsigned integers, reverts on overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        uint256 c = a * b;\\n        require(c / a == b);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Solidity only automatically asserts when dividing by 0\\n        require(b > 0);\\n        uint256 c = a / b;\\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b <= a);\\n        uint256 c = a - b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Adds two unsigned integers, reverts on overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\\n     * reverts when dividing by zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b != 0);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0xcb33819183087dcf646afd774ac6d2fb59d4fcb3f669b45b679cb8a936f0d22b\",\"license\":\"MIT\"},\"contracts/ethregistrar/StablePriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./IPriceOracle.sol\\\";\\nimport \\\"./SafeMath.sol\\\";\\nimport \\\"./StringUtils.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\ninterface AggregatorInterface {\\n    function latestAnswer() external view returns (int256);\\n}\\n\\n// StablePriceOracle sets a price in USD, based on an oracle.\\ncontract StablePriceOracle is IPriceOracle {\\n    using SafeMath for *;\\n    using StringUtils for *;\\n\\n    // Rent in base price units by length\\n    uint256 public immutable price1Letter;\\n    uint256 public immutable price2Letter;\\n    uint256 public immutable price3Letter;\\n    uint256 public immutable price4Letter;\\n    uint256 public immutable price5Letter;\\n\\n    // Oracle address\\n    AggregatorInterface public immutable usdOracle;\\n\\n    event RentPriceChanged(uint256[] prices);\\n\\n    constructor(AggregatorInterface _usdOracle, uint256[] memory _rentPrices) {\\n        usdOracle = _usdOracle;\\n        price1Letter = _rentPrices[0];\\n        price2Letter = _rentPrices[1];\\n        price3Letter = _rentPrices[2];\\n        price4Letter = _rentPrices[3];\\n        price5Letter = _rentPrices[4];\\n    }\\n\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view override returns (IPriceOracle.Price memory) {\\n        uint256 len = name.strlen();\\n        uint256 basePrice;\\n\\n        if (len >= 5) {\\n            basePrice = price5Letter * duration;\\n        } else if (len == 4) {\\n            basePrice = price4Letter * duration;\\n        } else if (len == 3) {\\n            basePrice = price3Letter * duration;\\n        } else if (len == 2) {\\n            basePrice = price2Letter * duration;\\n        } else {\\n            basePrice = price1Letter * duration;\\n        }\\n\\n        return\\n            IPriceOracle.Price({\\n                base: attoUSDToWei(basePrice),\\n                premium: attoUSDToWei(_premium(name, expires, duration))\\n            });\\n    }\\n\\n    /**\\n     * @dev Returns the pricing premium in wei.\\n     */\\n    function premium(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (uint256) {\\n        return attoUSDToWei(_premium(name, expires, duration));\\n    }\\n\\n    /**\\n     * @dev Returns the pricing premium in internal base units.\\n     */\\n    function _premium(\\n        string memory name,\\n        uint256 expires,\\n        uint256 duration\\n    ) internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    function attoUSDToWei(uint256 amount) internal view returns (uint256) {\\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\\n        return (amount * 1e8) / ethPrice;\\n    }\\n\\n    function weiToAttoUSD(uint256 amount) internal view returns (uint256) {\\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\\n        return (amount * ethPrice) / 1e8;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IERC165).interfaceId ||\\n            interfaceID == type(IPriceOracle).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xb05505ede4d654283caaa035e1083af0ff7df41e1038889a35ac129703b45b58\",\"license\":\"MIT\"},\"contracts/ethregistrar/StringUtils.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nlibrary StringUtils {\\n    /**\\n     * @dev Returns the length of a given string\\n     *\\n     * @param s The string to measure the length of\\n     * @return The length of the input string\\n     */\\n    function strlen(string memory s) internal pure returns (uint256) {\\n        uint256 len;\\n        uint256 i = 0;\\n        uint256 bytelength = bytes(s).length;\\n        for (len = 0; i < bytelength; len++) {\\n            bytes1 b = bytes(s)[i];\\n            if (b < 0x80) {\\n                i += 1;\\n            } else if (b < 0xE0) {\\n                i += 2;\\n            } else if (b < 0xF0) {\\n                i += 3;\\n            } else if (b < 0xF8) {\\n                i += 4;\\n            } else if (b < 0xFC) {\\n                i += 5;\\n            } else {\\n                i += 6;\\n            }\\n        }\\n        return len;\\n    }\\n}\\n\",\"keccak256\":\"0x4cc8363a850dc9130c433ee50e7c97e29a45ae5d9bd0808205ac7134b34f24e4\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "StablePriceOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract AggregatorInterface",
                  "name": "_usdOracle",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_rentPrices",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "prices",
                  "type": "uint256[]"
                }
              ],
              "name": "RentPriceChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "premium",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "price",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "base",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "premium",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPriceOracle.Price",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price1Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price2Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price3Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price4Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price5Letter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "usdOracle",
              "outputs": [
                {
                  "internalType": "contract AggregatorInterface",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "premium(string,uint256,uint256)": {
                "details": "Returns the pricing premium in wei."
              },
              "price(string,uint256,uint256)": {
                "details": "Returns the price to register or renew a name.",
                "params": {
                  "duration": "How long the name is being registered or extended for, in seconds.",
                  "expires": "When the name presently expires (0 if this is a new registration).",
                  "name": "The name being registered or renewed."
                },
                "returns": {
                  "_0": "base premium tuple of base price + premium price"
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11725": {
                  "entryPoint": null,
                  "id": 11725,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptr_fromMemory": {
                  "entryPoint": 283,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "panic_error_0x32": {
                  "entryPoint": 520,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 261,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1581:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "70:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "75:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "66:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "66:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "106:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "96:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "127:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "130:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "120:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "298:1149:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "344:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "353:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "356:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "346:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "346:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "346:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "319:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "328:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "315:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "315:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "340:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "311:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "311:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "308:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "369:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "388:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "382:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "382:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "373:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "461:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "470:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "473:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "463:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "463:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "463:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "420:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "431:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "446:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "451:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "442:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "442:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "455:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "438:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "438:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "427:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "427:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "417:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "417:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "410:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "410:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "407:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "486:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "496:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "486:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "510:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "520:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "514:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "531:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "555:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "566:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "551:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "551:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "545:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "545:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "535:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "579:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "597:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "601:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "593:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "593:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "605:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "589:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "589:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "583:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "634:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "643:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "646:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "636:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "636:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "636:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "622:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "630:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "619:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "619:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "616:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "659:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "673:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "684:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "669:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "669:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "663:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "739:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "748:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "751:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "741:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "741:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "741:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "718:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "722:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "714:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "714:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "729:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "710:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "710:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "703:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "703:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "700:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "764:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "780:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "774:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "774:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "768:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "806:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "808:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "808:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "808:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "798:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "802:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "795:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "795:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "792:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "837:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "851:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "854:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "847:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "847:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "841:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "866:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "886:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "880:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "880:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "870:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "898:56:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "920:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_5",
                                            "nodeType": "YulIdentifier",
                                            "src": "936:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "940:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "932:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "932:11:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "949:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "945:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "945:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "928:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "928:25:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "916:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "916:38:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "902:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1013:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1015:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1015:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1015:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "972:10:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "984:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "969:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "969:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "992:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "989:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "989:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "966:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "966:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "963:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1051:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1055:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1044:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1044:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1044:22:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1075:17:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1086:6:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1079:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1108:6:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1116:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1101:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1101:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1101:18:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1128:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1139:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1147:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1135:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1135:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1128:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1159:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "1181:2:111"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "1185:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1177:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1177:11:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1190:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1173:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1173:20:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "1163:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1225:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1234:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1237:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1227:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1227:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1227:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1208:6:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1216:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1205:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1205:19:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1202:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1250:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1265:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1269:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1261:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1261:11:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "1254:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1337:79:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1358:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1369:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1363:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1363:10:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1351:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1351:23:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1351:23:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1387:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1398:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1403:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1394:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1394:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1387:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1292:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1297:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1289:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1289:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1305:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1307:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1318:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1323:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1314:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1314:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1307:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1285:3:111",
                                "statements": []
                              },
                              "src": "1281:135:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1425:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1435:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1425:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "256:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "267:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "279:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "287:6:111",
                            "type": ""
                          }
                        ],
                        "src": "146:1301:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1484:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1501:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1508:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1513:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1504:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1504:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1494:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1494:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1544:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1534:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1534:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1534:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1565:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1568:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1558:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1558:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1558:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1452:127:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_contract$_AggregatorInterface_$11657t_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        let _1 := 32\n        let offset := mload(add(headStart, _1))\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(_5, 63), not(31)))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let dst := memPtr\n        mstore(memPtr, _4)\n        dst := add(memPtr, _1)\n        let srcEnd := add(add(_3, _5), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _1)\n        }\n        value1 := memPtr\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101406040523480156200001257600080fd5b5060405162000c4438038062000c4483398101604081905262000035916200011b565b6001600160a01b038216610120528051819060009062000059576200005962000208565b602002602001015160808181525050806001815181106200007e576200007e62000208565b602002602001015160a0818152505080600281518110620000a357620000a362000208565b602002602001015160c0818152505080600381518110620000c857620000c862000208565b602002602001015160e0818152505080600481518110620000ed57620000ed62000208565b6020026020010151610100818152505050506200021e565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200012f57600080fd5b82516001600160a01b03811681146200014757600080fd5b602084810151919350906001600160401b03808211156200016757600080fd5b818601915086601f8301126200017c57600080fd5b81518181111562000191576200019162000105565b8060051b604051601f19603f83011681018181108582111715620001b957620001b962000105565b604052918252848201925083810185019189831115620001d857600080fd5b938501935b82851015620001f857845184529385019392850192620001dd565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e05161010051610120516109ad620002976000396000818161019901526106ea015260008181610138015261032e01526000818161020c015261036701526000818161015f01526103990152600081816101e501526103cb01526000818160d501526103f501526109ad6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a200e15311610076578063c8a4271f1161005b578063c8a4271f14610194578063cd5d2c74146101e0578063d820ed421461020757600080fd5b8063a200e1531461015a578063a34e35961461018157600080fd5b806301ffc9a7146100a85780632c0fd74c146100d057806350e9a7151461010557806359b6b86c14610133575b600080fd5b6100bb6100b63660046107a2565b61022e565b60405190151581526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c7565b6101186101133660046107e4565b6102c7565b604080518251815260209283015192810192909252016100c7565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f761018f3660046107e4565b61048d565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c7565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f50e9a71500000000000000000000000000000000000000000000000000000000145b92915050565b6040805180820190915260008082526020820152600061031c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104de92505050565b905060006005821061035957610352847f0000000000000000000000000000000000000000000000000000000000000000610892565b905061041c565b8160040361038b57610352847f0000000000000000000000000000000000000000000000000000000000000000610892565b816003036103bd57610352847f0000000000000000000000000000000000000000000000000000000000000000610892565b816002036103ef57610352847f0000000000000000000000000000000000000000000000000000000000000000610892565b610419847f0000000000000000000000000000000000000000000000000000000000000000610892565b90505b6040518060400160405280610430836106e5565b815260200161048061047b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91506107999050565b6106e5565b9052979650505050505050565b60006104d561047b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892508791506107999050565b95945050505050565b8051600090819081905b808210156106dc576000858381518110610504576105046108a9565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f8000000000000000000000000000000000000000000000000000000000000000811015610567576105606001846108d8565b92506106c9565b7fe0000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156105bc576105606002846108d8565b7ff0000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082161015610611576105606003846108d8565b7ff8000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082161015610666576105606004846108d8565b7ffc000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156106bb576105606005846108d8565b6106c66006846108d8565b92505b50826106d4816108eb565b9350506104e8565b50909392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107779190610923565b905080610788846305f5e100610892565b610792919061093c565b9392505050565b60009392505050565b6000602082840312156107b457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461079257600080fd5b600080600080606085870312156107fa57600080fd5b843567ffffffffffffffff8082111561081257600080fd5b818701915087601f83011261082657600080fd5b81358181111561083557600080fd5b88602082850101111561084757600080fd5b6020928301999098509187013596604001359550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102c1576102c1610863565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156102c1576102c1610863565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361091c5761091c610863565b5060010190565b60006020828403121561093557600080fd5b5051919050565b600082610972577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212200bfebf2946e63a2e9dbe5a3a078ba64819a93dd233a3013d0c1e7db2c53f22f364736f6c63430008110033",
              "opcodes": "PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xC44 CODESIZE SUB DUP1 PUSH3 0xC44 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x11B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x120 MSTORE DUP1 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH3 0x59 JUMPI PUSH3 0x59 PUSH3 0x208 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x7E JUMPI PUSH3 0x7E PUSH3 0x208 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH3 0xA3 JUMPI PUSH3 0xA3 PUSH3 0x208 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x3 DUP2 MLOAD DUP2 LT PUSH3 0xC8 JUMPI PUSH3 0xC8 PUSH3 0x208 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xE0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH1 0x4 DUP2 MLOAD DUP2 LT PUSH3 0xED JUMPI PUSH3 0xED PUSH3 0x208 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x100 DUP2 DUP2 MSTORE POP POP POP POP PUSH3 0x21E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP2 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x191 JUMPI PUSH3 0x191 PUSH3 0x105 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH3 0x1B9 JUMPI PUSH3 0x1B9 PUSH3 0x105 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 DUP3 MSTORE DUP5 DUP3 ADD SWAP3 POP DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP10 DUP4 GT ISZERO PUSH3 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP3 DUP6 LT ISZERO PUSH3 0x1F8 JUMPI DUP5 MLOAD DUP5 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP3 DUP6 ADD SWAP3 PUSH3 0x1DD JUMP JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x9AD PUSH3 0x297 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x199 ADD MSTORE PUSH2 0x6EA ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x138 ADD MSTORE PUSH2 0x32E ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x20C ADD MSTORE PUSH2 0x367 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x15F ADD MSTORE PUSH2 0x399 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x1E5 ADD MSTORE PUSH2 0x3CB ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH1 0xD5 ADD MSTORE PUSH2 0x3F5 ADD MSTORE PUSH2 0x9AD PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA200E153 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC8A4271F GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC8A4271F EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xCD5D2C74 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xD820ED42 EQ PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA200E153 EQ PUSH2 0x15A JUMPI DUP1 PUSH4 0xA34E3596 EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x2C0FD74C EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x50E9A715 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x59B6B86C EQ PUSH2 0x133 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x22E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x48D JUMP JUMPDEST PUSH2 0x1BB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2C1 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x50E9A71500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x31C DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4DE SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 DUP3 LT PUSH2 0x359 JUMPI PUSH2 0x352 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST SWAP1 POP PUSH2 0x41C JUMP JUMPDEST DUP2 PUSH1 0x4 SUB PUSH2 0x38B JUMPI PUSH2 0x352 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST DUP2 PUSH1 0x3 SUB PUSH2 0x3BD JUMPI PUSH2 0x352 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST DUP2 PUSH1 0x2 SUB PUSH2 0x3EF JUMPI PUSH2 0x352 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST PUSH2 0x419 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x430 DUP4 PUSH2 0x6E5 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x480 PUSH2 0x47B DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP DUP12 SWAP2 POP PUSH2 0x799 SWAP1 POP JUMP JUMPDEST PUSH2 0x6E5 JUMP JUMPDEST SWAP1 MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D5 PUSH2 0x47B DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP DUP8 SWAP2 POP PUSH2 0x799 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x504 JUMPI PUSH2 0x504 PUSH2 0x8A9 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x567 JUMPI PUSH2 0x560 PUSH1 0x1 DUP5 PUSH2 0x8D8 JUMP JUMPDEST SWAP3 POP PUSH2 0x6C9 JUMP JUMPDEST PUSH32 0xE000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x5BC JUMPI PUSH2 0x560 PUSH1 0x2 DUP5 PUSH2 0x8D8 JUMP JUMPDEST PUSH32 0xF000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x611 JUMPI PUSH2 0x560 PUSH1 0x3 DUP5 PUSH2 0x8D8 JUMP JUMPDEST PUSH32 0xF800000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x666 JUMPI PUSH2 0x560 PUSH1 0x4 DUP5 PUSH2 0x8D8 JUMP JUMPDEST PUSH32 0xFC00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x6BB JUMPI PUSH2 0x560 PUSH1 0x5 DUP5 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x6C6 PUSH1 0x6 DUP5 PUSH2 0x8D8 JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP3 PUSH2 0x6D4 DUP2 PUSH2 0x8EB JUMP JUMPDEST SWAP4 POP POP PUSH2 0x4E8 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x753 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x777 SWAP2 SWAP1 PUSH2 0x923 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x788 DUP5 PUSH4 0x5F5E100 PUSH2 0x892 JUMP JUMPDEST PUSH2 0x792 SWAP2 SWAP1 PUSH2 0x93C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x7FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x826 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP10 SWAP1 SWAP9 POP SWAP2 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x40 ADD CALLDATALOAD SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x2C1 JUMPI PUSH2 0x2C1 PUSH2 0x863 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2C1 JUMPI PUSH2 0x2C1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x91C JUMPI PUSH2 0x91C PUSH2 0x863 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x935 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x972 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND INVALID 0xBF 0x29 CHAINID 0xE6 GASPRICE 0x2E SWAP14 0xBE GAS GASPRICE SMOD DUP12 0xA6 BASEFEE NOT 0xA9 RETURNDATASIZE 0xD2 CALLER LOG3 ADD RETURNDATASIZE 0xC 0x1E PUSH30 0xB2C53F22F364736F6C634300081100330000000000000000000000000000 ",
              "sourceMap": "416:2774:52:-:0;;;901:308;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;985:22:52;;;;1032:14;;:11;;1044:1;;1032:14;;;;:::i;:::-;;;;;;;1017:29;;;;;;1071:11;1083:1;1071:14;;;;;;;;:::i;:::-;;;;;;;1056:29;;;;;;1110:11;1122:1;1110:14;;;;;;;;:::i;:::-;;;;;;;1095:29;;;;;;1149:11;1161:1;1149:14;;;;;;;;:::i;:::-;;;;;;;1134:29;;;;;;1188:11;1200:1;1188:14;;;;;;;;:::i;:::-;;;;;;;1173:29;;;;;;901:308;;416:2774;;14:127:111;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1301;279:6;287;340:2;328:9;319:7;315:23;311:32;308:52;;;356:1;353;346:12;308:52;382:16;;-1:-1:-1;;;;;427:31:111;;417:42;;407:70;;473:1;470;463:12;407:70;520:2;551:18;;;545:25;496:5;;-1:-1:-1;520:2:111;-1:-1:-1;;;;;619:14:111;;;616:34;;;646:1;643;636:12;616:34;684:6;673:9;669:22;659:32;;729:7;722:4;718:2;714:13;710:27;700:55;;751:1;748;741:12;700:55;780:2;774:9;802:2;798;795:10;792:36;;;808:18;;:::i;:::-;854:2;851:1;847:10;886:2;880:9;949:2;945:7;940:2;936;932:11;928:25;920:6;916:38;1004:6;992:10;989:22;984:2;972:10;969:18;966:46;963:72;;;1015:18;;:::i;:::-;1051:2;1044:22;1101:18;;;1135:15;;;;-1:-1:-1;1177:11:111;;;1173:20;;;1205:19;;;1202:39;;;1237:1;1234;1227:12;1202:39;1261:11;;;;1281:135;1297:6;1292:3;1289:15;1281:135;;;1363:10;;1351:23;;1314:12;;;;1394;;;;1281:135;;;1435:6;1425:16;;;;;;;;146:1301;;;;;:::o;1452:127::-;1513:10;1508:3;1504:20;1501:1;1494:31;1544:4;1541:1;1534:15;1568:4;1565:1;1558:15;1452:127;416:2774:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_premium_11849": {
                  "entryPoint": 1945,
                  "id": 11849,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@attoUSDToWei_11873": {
                  "entryPoint": 1765,
                  "id": 11873,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@premium_11834": {
                  "entryPoint": 1165,
                  "id": 11834,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@price1Letter_11665": {
                  "entryPoint": null,
                  "id": 11665,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price2Letter_11667": {
                  "entryPoint": null,
                  "id": 11667,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price3Letter_11669": {
                  "entryPoint": null,
                  "id": 11669,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price4Letter_11671": {
                  "entryPoint": null,
                  "id": 11671,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price5Letter_11673": {
                  "entryPoint": null,
                  "id": 11673,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price_11813": {
                  "entryPoint": 711,
                  "id": 11813,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@strlen_12019": {
                  "entryPoint": 1246,
                  "id": 12019,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_11919": {
                  "entryPoint": 558,
                  "id": 11919,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@usdOracle_11676": {
                  "entryPoint": null,
                  "id": 11676,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 1954,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int256_fromMemory": {
                  "entryPoint": 2339,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256": {
                  "entryPoint": 2020,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2264,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 2364,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 2194,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 2283,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 2147,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 2217,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3369:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "644:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "654:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "666:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "677:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "662:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "662:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "654:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "696:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "707:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "689:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "689:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "613:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "624:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "635:4:111",
                            "type": ""
                          }
                        ],
                        "src": "543:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "849:610:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "895:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "904:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "907:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "897:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "897:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "897:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "866:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "866:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "891:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "862:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "862:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "859:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "920:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "947:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "934:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "934:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "924:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "966:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "976:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "970:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1021:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1030:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1033:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1023:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1023:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1023:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1009:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1017:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1006:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1006:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1003:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1046:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1060:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1071:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1056:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1056:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1050:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1126:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1135:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1138:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1128:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1128:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1128:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1105:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1109:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1101:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1101:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1097:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1097:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1090:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1090:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1087:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1151:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1178:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1165:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1165:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1155:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1208:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1217:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1220:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1210:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1210:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1210:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1196:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1204:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1193:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1193:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1190:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1276:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1285:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1288:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1278:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1278:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1278:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1247:2:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1251:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1243:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1243:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1260:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1239:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1239:26:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1267:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1236:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1236:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1233:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1301:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1315:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1319:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1311:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1311:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1301:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1333:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1343:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1333:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1358:44:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1385:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1396:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1381:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1381:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1368:34:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1358:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1411:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1438:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1449:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1434:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1434:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1421:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1421:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1411:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "791:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "802:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "814:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "822:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "830:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "838:6:111",
                            "type": ""
                          }
                        ],
                        "src": "725:734:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1613:146:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1623:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1635:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1646:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1631:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1631:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1623:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1665:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1682:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1676:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1676:13:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1658:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1658:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1658:32:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1710:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1721:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1706:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1706:20:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1738:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1746:4:111",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1734:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1734:17:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1728:5:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1728:24:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1699:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1699:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1699:54:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1582:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1593:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1604:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1464:295:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1894:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1904:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1916:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1927:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1912:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1912:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1904:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1946:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1961:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1969:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1957:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1957:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1939:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1939:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1939:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1863:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1874:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1885:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1764:255:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2056:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2073:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2076:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2066:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2066:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2066:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2170:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2173:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2163:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2163:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2163:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2194:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2197:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2187:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2187:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2187:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2024:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2265:116:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2275:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2290:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2293:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "2286:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2286:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "2275:7:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2353:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2355:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2355:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2355:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "2324:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2317:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2317:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "2331:1:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "product",
                                                "nodeType": "YulIdentifier",
                                                "src": "2338:7:111"
                                              },
                                              {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "2347:1:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "2334:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2334:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nodeType": "YulIdentifier",
                                          "src": "2328:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2328:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "2314:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2314:37:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2307:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2307:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2304:71:111"
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2244:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2247:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "2253:7:111",
                            "type": ""
                          }
                        ],
                        "src": "2213:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2418:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2435:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2438:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2428:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2428:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2428:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2532:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2535:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2525:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2525:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2525:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2556:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2559:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2549:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2549:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2549:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2386:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2623:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2633:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2644:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2647:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2640:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2640:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "2633:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2672:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2674:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2674:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2674:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2664:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "2667:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2661:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2661:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2658:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2606:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2609:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "2615:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2575:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2752:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2843:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2845:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2845:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2845:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2768:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2775:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "2765:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2765:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2762:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2874:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2885:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2892:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2881:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2881:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "2874:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2734:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "2744:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2705:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2985:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3031:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3040:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3043:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3033:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3033:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3033:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3006:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3015:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3002:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3002:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3027:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2998:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2998:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2995:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3056:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3072:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3066:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3066:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3056:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2951:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2962:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2974:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2905:183:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3139:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3170:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3191:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3194:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3184:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3184:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3184:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3292:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3295:4:111",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3285:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3285:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3285:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3320:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3323:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3313:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3313:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3313:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3159:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3152:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3152:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3149:189:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3347:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3356:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3359:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "3352:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3352:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "3347:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3124:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3127:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "3133:1:111",
                            "type": ""
                          }
                        ],
                        "src": "3093:274:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 0x20), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 0x20)\n        value1 := length\n        value2 := calldataload(add(headStart, 0x20))\n        value3 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_struct$_Price_$11328_memory_ptr__to_t_struct$_Price_$11328_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n    }\n    function abi_encode_tuple_t_contract$_AggregatorInterface_$11657__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_decode_tuple_t_int256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "11665": [
                  {
                    "length": 32,
                    "start": 213
                  },
                  {
                    "length": 32,
                    "start": 1013
                  }
                ],
                "11667": [
                  {
                    "length": 32,
                    "start": 485
                  },
                  {
                    "length": 32,
                    "start": 971
                  }
                ],
                "11669": [
                  {
                    "length": 32,
                    "start": 351
                  },
                  {
                    "length": 32,
                    "start": 921
                  }
                ],
                "11671": [
                  {
                    "length": 32,
                    "start": 524
                  },
                  {
                    "length": 32,
                    "start": 871
                  }
                ],
                "11673": [
                  {
                    "length": 32,
                    "start": 312
                  },
                  {
                    "length": 32,
                    "start": 814
                  }
                ],
                "11676": [
                  {
                    "length": 32,
                    "start": 409
                  },
                  {
                    "length": 32,
                    "start": 1770
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a200e15311610076578063c8a4271f1161005b578063c8a4271f14610194578063cd5d2c74146101e0578063d820ed421461020757600080fd5b8063a200e1531461015a578063a34e35961461018157600080fd5b806301ffc9a7146100a85780632c0fd74c146100d057806350e9a7151461010557806359b6b86c14610133575b600080fd5b6100bb6100b63660046107a2565b61022e565b60405190151581526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c7565b6101186101133660046107e4565b6102c7565b604080518251815260209283015192810192909252016100c7565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f761018f3660046107e4565b61048d565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c7565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f50e9a71500000000000000000000000000000000000000000000000000000000145b92915050565b6040805180820190915260008082526020820152600061031c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104de92505050565b905060006005821061035957610352847f0000000000000000000000000000000000000000000000000000000000000000610892565b905061041c565b8160040361038b57610352847f0000000000000000000000000000000000000000000000000000000000000000610892565b816003036103bd57610352847f0000000000000000000000000000000000000000000000000000000000000000610892565b816002036103ef57610352847f0000000000000000000000000000000000000000000000000000000000000000610892565b610419847f0000000000000000000000000000000000000000000000000000000000000000610892565b90505b6040518060400160405280610430836106e5565b815260200161048061047b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91506107999050565b6106e5565b9052979650505050505050565b60006104d561047b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892508791506107999050565b95945050505050565b8051600090819081905b808210156106dc576000858381518110610504576105046108a9565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f8000000000000000000000000000000000000000000000000000000000000000811015610567576105606001846108d8565b92506106c9565b7fe0000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156105bc576105606002846108d8565b7ff0000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082161015610611576105606003846108d8565b7ff8000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082161015610666576105606004846108d8565b7ffc000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610156106bb576105606005846108d8565b6106c66006846108d8565b92505b50826106d4816108eb565b9350506104e8565b50909392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107779190610923565b905080610788846305f5e100610892565b610792919061093c565b9392505050565b60009392505050565b6000602082840312156107b457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461079257600080fd5b600080600080606085870312156107fa57600080fd5b843567ffffffffffffffff8082111561081257600080fd5b818701915087601f83011261082657600080fd5b81358181111561083557600080fd5b88602082850101111561084757600080fd5b6020928301999098509187013596604001359550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102c1576102c1610863565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156102c1576102c1610863565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361091c5761091c610863565b5060010190565b60006020828403121561093557600080fd5b5051919050565b600082610972577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212200bfebf2946e63a2e9dbe5a3a078ba64819a93dd233a3013d0c1e7db2c53f22f364736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA200E153 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC8A4271F GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC8A4271F EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xCD5D2C74 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xD820ED42 EQ PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA200E153 EQ PUSH2 0x15A JUMPI DUP1 PUSH4 0xA34E3596 EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x2C0FD74C EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x50E9A715 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x59B6B86C EQ PUSH2 0x133 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x22E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x48D JUMP JUMPDEST PUSH2 0x1BB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xF7 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2C1 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x50E9A71500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x31C DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4DE SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 DUP3 LT PUSH2 0x359 JUMPI PUSH2 0x352 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST SWAP1 POP PUSH2 0x41C JUMP JUMPDEST DUP2 PUSH1 0x4 SUB PUSH2 0x38B JUMPI PUSH2 0x352 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST DUP2 PUSH1 0x3 SUB PUSH2 0x3BD JUMPI PUSH2 0x352 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST DUP2 PUSH1 0x2 SUB PUSH2 0x3EF JUMPI PUSH2 0x352 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST PUSH2 0x419 DUP5 PUSH32 0x0 PUSH2 0x892 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x430 DUP4 PUSH2 0x6E5 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x480 PUSH2 0x47B DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP DUP12 SWAP2 POP PUSH2 0x799 SWAP1 POP JUMP JUMPDEST PUSH2 0x6E5 JUMP JUMPDEST SWAP1 MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D5 PUSH2 0x47B DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP DUP8 SWAP2 POP PUSH2 0x799 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x504 JUMPI PUSH2 0x504 PUSH2 0x8A9 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT ISZERO PUSH2 0x567 JUMPI PUSH2 0x560 PUSH1 0x1 DUP5 PUSH2 0x8D8 JUMP JUMPDEST SWAP3 POP PUSH2 0x6C9 JUMP JUMPDEST PUSH32 0xE000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x5BC JUMPI PUSH2 0x560 PUSH1 0x2 DUP5 PUSH2 0x8D8 JUMP JUMPDEST PUSH32 0xF000000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x611 JUMPI PUSH2 0x560 PUSH1 0x3 DUP5 PUSH2 0x8D8 JUMP JUMPDEST PUSH32 0xF800000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x666 JUMPI PUSH2 0x560 PUSH1 0x4 DUP5 PUSH2 0x8D8 JUMP JUMPDEST PUSH32 0xFC00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND LT ISZERO PUSH2 0x6BB JUMPI PUSH2 0x560 PUSH1 0x5 DUP5 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x6C6 PUSH1 0x6 DUP5 PUSH2 0x8D8 JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP3 PUSH2 0x6D4 DUP2 PUSH2 0x8EB JUMP JUMPDEST SWAP4 POP POP PUSH2 0x4E8 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x753 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x777 SWAP2 SWAP1 PUSH2 0x923 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x788 DUP5 PUSH4 0x5F5E100 PUSH2 0x892 JUMP JUMPDEST PUSH2 0x792 SWAP2 SWAP1 PUSH2 0x93C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x7FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x826 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP10 SWAP1 SWAP9 POP SWAP2 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x40 ADD CALLDATALOAD SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x2C1 JUMPI PUSH2 0x2C1 PUSH2 0x863 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2C1 JUMPI PUSH2 0x2C1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x91C JUMPI PUSH2 0x91C PUSH2 0x863 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x935 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x972 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND INVALID 0xBF 0x29 CHAINID 0xE6 GASPRICE 0x2E SWAP14 0xBE GAS GASPRICE SMOD DUP12 0xA6 BASEFEE NOT 0xA9 RETURNDATASIZE 0xD2 CALLER LOG3 ADD RETURNDATASIZE 0xC 0x1E PUSH30 0xB2C53F22F364736F6C634300081100330000000000000000000000000000 ",
              "sourceMap": "416:2774:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2933:255;;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;2933:255:52;;;;;;;;563:37;;;;;;;;689:25:111;;;677:2;662:18;563:37:52;543:177:111;1215:807:52;;;;;;:::i;:::-;;:::i;:::-;;;;1676:13:111;;1658:32;;1746:4;1734:17;;;1728:24;1706:20;;;1699:54;;;;1631:18;1215:807:52;1464:295:111;735:37:52;;;;;649;;;;;2092:207;;;;;;:::i;:::-;;:::i;801:46::-;;;;;;;;1969:42:111;1957:55;;;1939:74;;1927:2;1912:18;801:46:52;1764:255:111;606:37:52;;;;;692;;;;;2933:255;3041:4;3080:40;;;3095:25;3080:40;;:101;;-1:-1:-1;3136:45:52;;;3151:30;3136:45;3080:101;3061:120;2933:255;-1:-1:-1;;2933:255:52:o;1215:807::-;-1:-1:-1;;;;;;;;;;;;;;;;;1386:11:52;1400:13;:4;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1400:11:52;;-1:-1:-1;;;1400:13:52:i;:::-;1386:27;;1423:17;1462:1;1455:3;:8;1451:380;;1491:23;1506:8;1491:12;:23;:::i;:::-;1479:35;;1451:380;;;1535:3;1542:1;1535:8;1531:300;;1571:23;1586:8;1571:12;:23;:::i;1531:300::-;1615:3;1622:1;1615:8;1611:220;;1651:23;1666:8;1651:12;:23;:::i;1611:220::-;1695:3;1702:1;1695:8;1691:140;;1731:23;1746:8;1731:12;:23;:::i;1691:140::-;1797:23;1812:8;1797:12;:23;:::i;:::-;1785:35;;1691:140;1860:155;;;;;;;;1903:23;1916:9;1903:12;:23::i;:::-;1860:155;;;;1953:47;1966:33;1975:4;;1966:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1981:7:52;;-1:-1:-1;1990:8:52;;-1:-1:-1;1966:8:52;;-1:-1:-1;1966:33:52:i;:::-;1953:12;:47::i;:::-;1860:155;;1841:174;1215:807;-1:-1:-1;;;;;;;1215:807:52:o;2092:207::-;2219:7;2245:47;2258:33;2267:4;;2258:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2273:7:52;;-1:-1:-1;2282:8:52;;-1:-1:-1;2258:8:52;;-1:-1:-1;2258:33:52:i;2245:47::-;2238:54;2092:207;-1:-1:-1;;;;;2092:207:52:o;222:622:53:-;362:15;;278:7;;;;;;387:431;405:10;401:1;:14;387:431;;;438:8;455:1;458;449:11;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;478:8:53;;;474:334;;;506:6;511:1;506:6;;:::i;:::-;;;474:334;;;537:8;;;;;533:275;;;565:6;570:1;565:6;;:::i;533:275::-;596:8;;;;;592:216;;;624:6;629:1;624:6;;:::i;592:216::-;655:8;;;;;651:157;;;683:6;688:1;683:6;;:::i;651:157::-;714:8;;;;;710:98;;;742:6;747:1;742:6;;:::i;710:98::-;787:6;792:1;787:6;;:::i;:::-;;;710:98;-1:-1:-1;417:5:53;;;;:::i;:::-;;;;387:431;;;-1:-1:-1;834:3:53;;222:622;-1:-1:-1;;;222:622:53:o;2559:181:52:-;2620:7;2639:16;2666:9;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2639:52;-1:-1:-1;2639:52:52;2709:12;:6;2718:3;2709:12;:::i;:::-;2708:25;;;;:::i;:::-;2701:32;2559:181;-1:-1:-1;;;2559:181:52:o;2385:168::-;2519:7;2385:168;;;;;:::o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;725:734;814:6;822;830;838;891:2;879:9;870:7;866:23;862:32;859:52;;;907:1;904;897:12;859:52;947:9;934:23;976:18;1017:2;1009:6;1006:14;1003:34;;;1033:1;1030;1023:12;1003:34;1071:6;1060:9;1056:22;1046:32;;1116:7;1109:4;1105:2;1101:13;1097:27;1087:55;;1138:1;1135;1128:12;1087:55;1178:2;1165:16;1204:2;1196:6;1193:14;1190:34;;;1220:1;1217;1210:12;1190:34;1267:7;1260:4;1251:6;1247:2;1243:15;1239:26;1236:39;1233:59;;;1288:1;1285;1278:12;1233:59;1319:4;1311:13;;;;1343:6;;-1:-1:-1;1381:20:111;;;1368:34;;1449:2;1434:18;1421:32;;-1:-1:-1;725:734:111;;-1:-1:-1;;;;725:734:111:o;2024:184::-;2076:77;2073:1;2066:88;2173:4;2170:1;2163:15;2197:4;2194:1;2187:15;2213:168;2286:9;;;2317;;2334:15;;;2328:22;;2314:37;2304:71;;2355:18;;:::i;2386:184::-;2438:77;2435:1;2428:88;2535:4;2532:1;2525:15;2559:4;2556:1;2549:15;2575:125;2640:9;;;2661:10;;;2658:36;;;2674:18;;:::i;2705:195::-;2744:3;2775:66;2768:5;2765:77;2762:103;;2845:18;;:::i;:::-;-1:-1:-1;2892:1:111;2881:13;;2705:195::o;2905:183::-;2974:6;3027:2;3015:9;3006:7;3002:23;2998:32;2995:52;;;3043:1;3040;3033:12;2995:52;-1:-1:-1;3066:16:111;;2905:183;-1:-1:-1;2905:183:111:o;3093:274::-;3133:1;3159;3149:189;;3194:77;3191:1;3184:88;3295:4;3292:1;3285:15;3323:4;3320:1;3313:15;3149:189;-1:-1:-1;3352:9:111;;3093:274::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "495400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "premium(string,uint256,uint256)": "infinite",
                "price(string,uint256,uint256)": "infinite",
                "price1Letter()": "infinite",
                "price2Letter()": "infinite",
                "price3Letter()": "infinite",
                "price4Letter()": "infinite",
                "price5Letter()": "infinite",
                "supportsInterface(bytes4)": "370",
                "usdOracle()": "infinite"
              },
              "internal": {
                "_premium(string memory,uint256,uint256)": "24",
                "attoUSDToWei(uint256)": "infinite",
                "weiToAttoUSD(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "premium(string,uint256,uint256)": "a34e3596",
              "price(string,uint256,uint256)": "50e9a715",
              "price1Letter()": "2c0fd74c",
              "price2Letter()": "cd5d2c74",
              "price3Letter()": "a200e153",
              "price4Letter()": "d820ed42",
              "price5Letter()": "59b6b86c",
              "supportsInterface(bytes4)": "01ffc9a7",
              "usdOracle()": "c8a4271f"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorInterface\",\"name\":\"_usdOracle\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_rentPrices\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"RentPriceChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"premium\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"base\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceOracle.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price2Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price3Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price4Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price5Letter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"premium(string,uint256,uint256)\":{\"details\":\"Returns the pricing premium in wei.\"},\"price(string,uint256,uint256)\":{\"details\":\"Returns the price to register or renew a name.\",\"params\":{\"duration\":\"How long the name is being registered or extended for, in seconds.\",\"expires\":\"When the name presently expires (0 if this is a new registration).\",\"name\":\"The name being registered or renewed.\"},\"returns\":{\"_0\":\"base premium tuple of base price + premium price\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/StablePriceOracle.sol\":\"StablePriceOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IPriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\ninterface IPriceOracle {\\n    struct Price {\\n        uint256 base;\\n        uint256 premium;\\n    }\\n\\n    /**\\n     * @dev Returns the price to register or renew a name.\\n     * @param name The name being registered or renewed.\\n     * @param expires When the name presently expires (0 if this is a new registration).\\n     * @param duration How long the name is being registered or extended for, in seconds.\\n     * @return base premium tuple of base price + premium price\\n     */\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (Price calldata);\\n}\\n\",\"keccak256\":\"0x1ec537b4c7f9cc40363b39dcc7ade8c29bf94662e6b01d38e681487637bd577e\",\"license\":\"MIT\"},\"contracts/ethregistrar/SafeMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\n/**\\n * @title SafeMath\\n * @dev Unsigned math operations with safety checks that revert on error\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Multiplies two unsigned integers, reverts on overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        uint256 c = a * b;\\n        require(c / a == b);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // Solidity only automatically asserts when dividing by 0\\n        require(b > 0);\\n        uint256 c = a / b;\\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b <= a);\\n        uint256 c = a - b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Adds two unsigned integers, reverts on overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a);\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\\n     * reverts when dividing by zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b != 0);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0xcb33819183087dcf646afd774ac6d2fb59d4fcb3f669b45b679cb8a936f0d22b\",\"license\":\"MIT\"},\"contracts/ethregistrar/StablePriceOracle.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"./IPriceOracle.sol\\\";\\nimport \\\"./SafeMath.sol\\\";\\nimport \\\"./StringUtils.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\ninterface AggregatorInterface {\\n    function latestAnswer() external view returns (int256);\\n}\\n\\n// StablePriceOracle sets a price in USD, based on an oracle.\\ncontract StablePriceOracle is IPriceOracle {\\n    using SafeMath for *;\\n    using StringUtils for *;\\n\\n    // Rent in base price units by length\\n    uint256 public immutable price1Letter;\\n    uint256 public immutable price2Letter;\\n    uint256 public immutable price3Letter;\\n    uint256 public immutable price4Letter;\\n    uint256 public immutable price5Letter;\\n\\n    // Oracle address\\n    AggregatorInterface public immutable usdOracle;\\n\\n    event RentPriceChanged(uint256[] prices);\\n\\n    constructor(AggregatorInterface _usdOracle, uint256[] memory _rentPrices) {\\n        usdOracle = _usdOracle;\\n        price1Letter = _rentPrices[0];\\n        price2Letter = _rentPrices[1];\\n        price3Letter = _rentPrices[2];\\n        price4Letter = _rentPrices[3];\\n        price5Letter = _rentPrices[4];\\n    }\\n\\n    function price(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view override returns (IPriceOracle.Price memory) {\\n        uint256 len = name.strlen();\\n        uint256 basePrice;\\n\\n        if (len >= 5) {\\n            basePrice = price5Letter * duration;\\n        } else if (len == 4) {\\n            basePrice = price4Letter * duration;\\n        } else if (len == 3) {\\n            basePrice = price3Letter * duration;\\n        } else if (len == 2) {\\n            basePrice = price2Letter * duration;\\n        } else {\\n            basePrice = price1Letter * duration;\\n        }\\n\\n        return\\n            IPriceOracle.Price({\\n                base: attoUSDToWei(basePrice),\\n                premium: attoUSDToWei(_premium(name, expires, duration))\\n            });\\n    }\\n\\n    /**\\n     * @dev Returns the pricing premium in wei.\\n     */\\n    function premium(\\n        string calldata name,\\n        uint256 expires,\\n        uint256 duration\\n    ) external view returns (uint256) {\\n        return attoUSDToWei(_premium(name, expires, duration));\\n    }\\n\\n    /**\\n     * @dev Returns the pricing premium in internal base units.\\n     */\\n    function _premium(\\n        string memory name,\\n        uint256 expires,\\n        uint256 duration\\n    ) internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    function attoUSDToWei(uint256 amount) internal view returns (uint256) {\\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\\n        return (amount * 1e8) / ethPrice;\\n    }\\n\\n    function weiToAttoUSD(uint256 amount) internal view returns (uint256) {\\n        uint256 ethPrice = uint256(usdOracle.latestAnswer());\\n        return (amount * ethPrice) / 1e8;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IERC165).interfaceId ||\\n            interfaceID == type(IPriceOracle).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xb05505ede4d654283caaa035e1083af0ff7df41e1038889a35ac129703b45b58\",\"license\":\"MIT\"},\"contracts/ethregistrar/StringUtils.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nlibrary StringUtils {\\n    /**\\n     * @dev Returns the length of a given string\\n     *\\n     * @param s The string to measure the length of\\n     * @return The length of the input string\\n     */\\n    function strlen(string memory s) internal pure returns (uint256) {\\n        uint256 len;\\n        uint256 i = 0;\\n        uint256 bytelength = bytes(s).length;\\n        for (len = 0; i < bytelength; len++) {\\n            bytes1 b = bytes(s)[i];\\n            if (b < 0x80) {\\n                i += 1;\\n            } else if (b < 0xE0) {\\n                i += 2;\\n            } else if (b < 0xF0) {\\n                i += 3;\\n            } else if (b < 0xF8) {\\n                i += 4;\\n            } else if (b < 0xFC) {\\n                i += 5;\\n            } else {\\n                i += 6;\\n            }\\n        }\\n        return len;\\n    }\\n}\\n\",\"keccak256\":\"0x4cc8363a850dc9130c433ee50e7c97e29a45ae5d9bd0808205ac7134b34f24e4\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ethregistrar/StringUtils.sol": {
        "StringUtils": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220deff26b408b0b0aeb0188ed407173d8729e0823b75a6165d964d6fcae258c03564736f6c63430008110033",
              "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 0xDE SELFDESTRUCT 0x26 0xB4 ADDMOD 0xB0 0xB0 0xAE 0xB0 XOR DUP15 0xD4 SMOD OR RETURNDATASIZE DUP8 0x29 0xE0 DUP3 EXTCODESIZE PUSH22 0xA6165D964D6FCAE258C03564736F6C63430008110033 ",
              "sourceMap": "26:820:53:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;26:820:53;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220deff26b408b0b0aeb0188ed407173d8729e0823b75a6165d964d6fcae258c03564736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE SELFDESTRUCT 0x26 0xB4 ADDMOD 0xB0 0xB0 0xAE 0xB0 XOR DUP15 0xD4 SMOD OR RETURNDATASIZE DUP8 0x29 0xE0 DUP3 EXTCODESIZE PUSH22 0xA6165D964D6FCAE258C03564736F6C63430008110033 ",
              "sourceMap": "26:820:53:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "strlen(string memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/StringUtils.sol\":\"StringUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/ethregistrar/StringUtils.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nlibrary StringUtils {\\n    /**\\n     * @dev Returns the length of a given string\\n     *\\n     * @param s The string to measure the length of\\n     * @return The length of the input string\\n     */\\n    function strlen(string memory s) internal pure returns (uint256) {\\n        uint256 len;\\n        uint256 i = 0;\\n        uint256 bytelength = bytes(s).length;\\n        for (len = 0; i < bytelength; len++) {\\n            bytes1 b = bytes(s)[i];\\n            if (b < 0x80) {\\n                i += 1;\\n            } else if (b < 0xE0) {\\n                i += 2;\\n            } else if (b < 0xF0) {\\n                i += 3;\\n            } else if (b < 0xF8) {\\n                i += 4;\\n            } else if (b < 0xFC) {\\n                i += 5;\\n            } else {\\n                i += 6;\\n            }\\n        }\\n        return len;\\n    }\\n}\\n\",\"keccak256\":\"0x4cc8363a850dc9130c433ee50e7c97e29a45ae5d9bd0808205ac7134b34f24e4\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/registry/ENS.sol": {
        "ENS": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "NewOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "NewResolver",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "NewTTL",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "recordExists",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "resolver",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "setOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "setSubnodeOwner",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setTTL",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "ttl",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "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": {
              "isApprovedForAll(address,address)": "e985e9c5",
              "owner(bytes32)": "02571be3",
              "recordExists(bytes32)": "f79fe538",
              "resolver(bytes32)": "0178b8bf",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setOwner(bytes32,address)": "5b0fc9c3",
              "setRecord(bytes32,address,address,uint64)": "cf408823",
              "setResolver(bytes32,address)": "1896f70a",
              "setSubnodeOwner(bytes32,bytes32,address)": "06ab5923",
              "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": "5ef2c7f0",
              "setTTL(bytes32,uint64)": "14ab9038",
              "ttl(bytes32)": "16a25cbd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NewOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"NewResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"NewTTL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"recordExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"ttl\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/ENS.sol\":\"ENS\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/registry/ENSRegistry.sol": {
        "ENSRegistry": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "NewOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "NewResolver",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "NewTTL",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "recordExists",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "resolver",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "setOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "setSubnodeOwner",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setTTL",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "ttl",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "constructor": {
                "details": "Constructs a new ENS registry."
              },
              "isApprovedForAll(address,address)": {
                "details": "Query if an address is an authorized operator for another address.",
                "params": {
                  "operator": "The address that acts on behalf of the owner.",
                  "owner": "The address that owns the records."
                },
                "returns": {
                  "_0": "True if `operator` is an approved operator for `owner`, false otherwise."
                }
              },
              "owner(bytes32)": {
                "details": "Returns the address that owns the specified node.",
                "params": {
                  "node": "The specified node."
                },
                "returns": {
                  "_0": "address of the owner."
                }
              },
              "recordExists(bytes32)": {
                "details": "Returns whether a record has been imported to the registry.",
                "params": {
                  "node": "The specified node."
                },
                "returns": {
                  "_0": "Bool if record exists"
                }
              },
              "resolver(bytes32)": {
                "details": "Returns the address of the resolver for the specified node.",
                "params": {
                  "node": "The specified node."
                },
                "returns": {
                  "_0": "address of the resolver."
                }
              },
              "setApprovalForAll(address,bool)": {
                "details": "Enable or disable approval for a third party (\"operator\") to manage  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.",
                "params": {
                  "approved": "True if the operator is approved, false to revoke approval.",
                  "operator": "Address to add to the set of authorized operators."
                }
              },
              "setOwner(bytes32,address)": {
                "details": "Transfers ownership of a node to a new address. May only be called by the current owner of the node.",
                "params": {
                  "node": "The node to transfer ownership of.",
                  "owner": "The address of the new owner."
                }
              },
              "setRecord(bytes32,address,address,uint64)": {
                "details": "Sets the record for a node.",
                "params": {
                  "node": "The node to update.",
                  "owner": "The address of the new owner.",
                  "resolver": "The address of the resolver.",
                  "ttl": "The TTL in seconds."
                }
              },
              "setResolver(bytes32,address)": {
                "details": "Sets the resolver address for the specified node.",
                "params": {
                  "node": "The node to update.",
                  "resolver": "The address of the resolver."
                }
              },
              "setSubnodeOwner(bytes32,bytes32,address)": {
                "details": "Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.",
                "params": {
                  "label": "The hash of the label specifying the subnode.",
                  "node": "The parent node.",
                  "owner": "The address of the new owner."
                }
              },
              "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": {
                "details": "Sets the record for a subnode.",
                "params": {
                  "label": "The hash of the label specifying the subnode.",
                  "node": "The parent node.",
                  "owner": "The address of the new owner.",
                  "resolver": "The address of the resolver.",
                  "ttl": "The TTL in seconds."
                }
              },
              "setTTL(bytes32,uint64)": {
                "details": "Sets the TTL for the specified node.",
                "params": {
                  "node": "The node to update.",
                  "ttl": "The TTL in seconds."
                }
              },
              "ttl(bytes32)": {
                "details": "Returns the TTL of a node, and any records associated with it.",
                "params": {
                  "node": "The specified node."
                },
                "returns": {
                  "_0": "ttl of the node."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_12221": {
                  "entryPoint": null,
                  "id": 12221,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb580546001600160a01b03191633179055610c1a806100596000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80635b0fc9c311610081578063cf4088231161005b578063cf4088231461022f578063e985e9c514610242578063f79fe5381461029b57600080fd5b80635b0fc9c3146101f65780635ef2c7f014610209578063a22cb4651461021c57600080fd5b806314ab9038116100b257806314ab90381461017057806316a25cbd146101855780631896f70a146101e357600080fd5b80630178b8bf146100d957806302571be31461013c57806306ab59231461014f575b600080fd5b6101126100e73660046109fc565b60009081526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61011261014a3660046109fc565b6102d3565b61016261015d366004610a3e565b61030e565b604051908152602001610133565b61018361017e366004610a8b565b61046b565b005b6101ca6101933660046109fc565b60009081526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1690565b60405167ffffffffffffffff9091168152602001610133565b6101836101f1366004610ab7565b61057d565b610183610204366004610ab7565b61068e565b610183610217366004610ada565b610799565b61018361022a366004610b31565b6107bb565b61018361023d366004610b6d565b610852565b61028b610250366004610bba565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610133565b61028b6102a93660046109fc565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff16151590565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff163081036103085750600092915050565b92915050565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff1633811480610373575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61037c57600080fd5b6040805160208101889052908101869052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120600081815292839052912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055905060405173ffffffffffffffffffffffffffffffffffffffff86168152869088907fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e829060200160405180910390a39695505050505050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16338114806104d0575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b6104d957600080fd5b60405167ffffffffffffffff8416815284907f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa689060200160405180910390a25050600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16338114806105e2575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b6105eb57600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09060200160405180910390a2505060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16338114806106f3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b6106fc57600080fd5b600084815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560405173ffffffffffffffffffffffffffffffffffffffff8416815284907fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2669060200160405180910390a250505050565b60006107a686868661030e565b90506107b381848461086d565b505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61085c848461068e565b61086784838361086d565b50505050565b60008381526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff838116911614610925576000838152602081815260409182902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155915191825284917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0910160405180910390a25b60008381526020819052604090206001015467ffffffffffffffff8281167401000000000000000000000000000000000000000090920416146109f7576000838152602081815260409182902060010180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff861690810291909117909155915191825284917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68910160405180910390a25b505050565b600060208284031215610a0e57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a3957600080fd5b919050565b600080600060608486031215610a5357600080fd5b8335925060208401359150610a6a60408501610a15565b90509250925092565b803567ffffffffffffffff81168114610a3957600080fd5b60008060408385031215610a9e57600080fd5b82359150610aae60208401610a73565b90509250929050565b60008060408385031215610aca57600080fd5b82359150610aae60208401610a15565b600080600080600060a08688031215610af257600080fd5b8535945060208601359350610b0960408701610a15565b9250610b1760608701610a15565b9150610b2560808701610a73565b90509295509295909350565b60008060408385031215610b4457600080fd5b610b4d83610a15565b915060208301358015158114610b6257600080fd5b809150509250929050565b60008060008060808587031215610b8357600080fd5b84359350610b9360208601610a15565b9250610ba160408601610a15565b9150610baf60608601610a73565b905092959194509250565b60008060408385031215610bcd57600080fd5b610bd683610a15565b9150610aae60208401610a1556fea2646970667358221220ff5852bb6d6b0c1adc71213e386a41f396c0a1dc5f0a93edf6571a490cc1166d64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 MSTORE PUSH32 0xAD3228B676F7D3CD4284A5443F17F1962B36E491B30A40B2405849E597BA5FB5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0xC1A DUP1 PUSH2 0x59 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B0FC9C3 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCF408823 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCF408823 EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xF79FE538 EQ PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5B0FC9C3 EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0x5EF2C7F0 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AB9038 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x14AB9038 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x16A25CBD EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x1896F70A EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x178B8BF EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x2571BE3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x6AB5923 EQ PUSH2 0x14F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112 PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x15D CALLDATASIZE PUSH1 0x4 PUSH2 0xA3E JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x133 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CA PUSH2 0x193 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x133 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0x57D JUMP JUMPDEST PUSH2 0x183 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0xADA JUMP JUMPDEST PUSH2 0x799 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0xB31 JUMP JUMPDEST PUSH2 0x7BB JUMP JUMPDEST PUSH2 0x183 PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0xB6D JUMP JUMPDEST PUSH2 0x852 JUMP JUMPDEST PUSH2 0x28B PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0xBBA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x133 JUMP JUMPDEST PUSH2 0x28B PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP2 SUB PUSH2 0x308 JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x373 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE SWAP3 DUP4 SWAP1 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND OR SWAP1 SSTORE SWAP1 POP PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP7 SWAP1 DUP9 SWAP1 PUSH32 0xCE0457FE73731F824CC272376169235128C118B49D344817417C6D108D155E82 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x4D0 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0x1D4F9BBFC9CAB89D66E1A1562F2233CCBF1308CB4F63DE2EAD5787ADDDB8FA68 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x5E2 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0x335721B01866DC23FBEE8B6B2C7B1E14D6F05C28CD35A2C934239F94095602A0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x6F3 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0xD4735D920B0F87494915F556DD9B54C8F309026070CAEA5C737245152564D266 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A6 DUP7 DUP7 DUP7 PUSH2 0x30E JUMP JUMPDEST SWAP1 POP PUSH2 0x7B3 DUP2 DUP5 DUP5 PUSH2 0x86D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x85C DUP5 DUP5 PUSH2 0x68E JUMP JUMPDEST PUSH2 0x867 DUP5 DUP4 DUP4 PUSH2 0x86D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0x925 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE DUP5 SWAP2 PUSH32 0x335721B01866DC23FBEE8B6B2C7B1E14D6F05C28CD35A2C934239F94095602A0 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV AND EQ PUSH2 0x9F7 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH8 0xFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE DUP5 SWAP2 PUSH32 0x1D4F9BBFC9CAB89D66E1A1562F2233CCBF1308CB4F63DE2EAD5787ADDDB8FA68 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0xA6A PUSH1 0x40 DUP6 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xAAE PUSH1 0x20 DUP5 ADD PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xAAE PUSH1 0x20 DUP5 ADD PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH2 0xB09 PUSH1 0x40 DUP8 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP3 POP PUSH2 0xB17 PUSH1 0x60 DUP8 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH2 0xB25 PUSH1 0x80 DUP8 ADD PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB4D DUP4 PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0xB93 PUSH1 0x20 DUP7 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP3 POP PUSH2 0xBA1 PUSH1 0x40 DUP7 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH2 0xBAF PUSH1 0x60 DUP7 ADD PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBD6 DUP4 PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH2 0xAAE PUSH1 0x20 DUP5 ADD PUSH2 0xA15 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFDESTRUCT PC MSTORE 0xBB PUSH14 0x6B0C1ADC71213E386A41F396C0A1 0xDC 0x5F EXP SWAP4 0xED 0xF6 JUMPI BYTE 0x49 0xC 0xC1 AND PUSH14 0x64736F6C63430008110033000000 ",
              "sourceMap": "85:6502:55:-:0;;;618:69;;;;;;;;;-1:-1:-1;649:7:55;:12;;;;;;:31;;-1:-1:-1;;;;;;649:31:55;670:10;649:31;;;85:6502;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_setOwner_12530": {
                  "entryPoint": null,
                  "id": 12530,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setResolverAndTTL_12580": {
                  "entryPoint": 2157,
                  "id": 12580,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@isApprovedForAll_12515": {
                  "entryPoint": null,
                  "id": 12515,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@owner_12447": {
                  "entryPoint": 723,
                  "id": 12447,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@recordExists_12497": {
                  "entryPoint": null,
                  "id": 12497,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@resolver_12462": {
                  "entryPoint": null,
                  "id": 12462,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@setApprovalForAll_12415": {
                  "entryPoint": 1979,
                  "id": 12415,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setOwner_12299": {
                  "entryPoint": 1678,
                  "id": 12299,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setRecord_12246": {
                  "entryPoint": 2130,
                  "id": 12246,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setResolver_12364": {
                  "entryPoint": 1405,
                  "id": 12364,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSubnodeOwner_12339": {
                  "entryPoint": 782,
                  "id": 12339,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@setSubnodeRecord_12276": {
                  "entryPoint": 1945,
                  "id": 12276,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@setTTL_12389": {
                  "entryPoint": 1131,
                  "id": 12389,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@ttl_12477": {
                  "entryPoint": null,
                  "id": 12477,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 2581,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 3002,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 2865,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 2556,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 2743,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_addresst_addresst_uint64": {
                  "entryPoint": 2925,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_address": {
                  "entryPoint": 2622,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64": {
                  "entryPoint": 2778,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bytes32t_uint64": {
                  "entryPoint": 2699,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint64": {
                  "entryPoint": 2675,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3976:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "155:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "178:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "165:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "165:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "155:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "300:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "310:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "322:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "333:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "318:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "318:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "310:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "352:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "367:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "375:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "363:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "363:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "345:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "269:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "280:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "291:4:111",
                            "type": ""
                          }
                        ],
                        "src": "199:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "479:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "489:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "511:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "498:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "498:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "489:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "604:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "613:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "616:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "606:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "606:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "606:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "540:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "551:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "558:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "547:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "547:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "537:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "537:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "530:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "530:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "527:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "458:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "469:5:111",
                            "type": ""
                          }
                        ],
                        "src": "430:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "735:218:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "781:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "790:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "793:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "783:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "783:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "783:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "756:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "765:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "752:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "752:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "777:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "748:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "748:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "745:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "806:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "829:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "816:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "816:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "806:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "848:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "875:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "886:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "871:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "871:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "858:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "858:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "848:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "899:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "932:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "943:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "928:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "928:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "909:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "909:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "899:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "685:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "696:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "708:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "716:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "724:6:111",
                            "type": ""
                          }
                        ],
                        "src": "631:322:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1059:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1069:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1081:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1092:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1077:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1077:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1069:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1111:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1122:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1104:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1104:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1104:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1028:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1039:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1050:4:111",
                            "type": ""
                          }
                        ],
                        "src": "958:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1188:123:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1198:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1220:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1207:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1207:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1198:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1289:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1298:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1301:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1291:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1291:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1291:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1249:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1260:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1267:18:111",
                                            "type": "",
                                            "value": "0xffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1256:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1256:30:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1246:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1246:41:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1239:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1239:49:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1236:69:111"
                            }
                          ]
                        },
                        "name": "abi_decode_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1167:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1178:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1140:171:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1402:166:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1448:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1457:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1460:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1450:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1450:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1450:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1423:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1432:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1419:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1419:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1444:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1415:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1415:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1412:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1473:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1496:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1483:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1483:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1515:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1547:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1558:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1543:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1543:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "1525:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1525:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1515:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1360:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1371:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1383:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1391:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1316:252:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1672:101:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1682:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1694:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1705:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1690:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1690:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1682:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1724:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1739:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1747:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1735:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1735:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1717:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1717:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1717:50:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1641:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1652:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1663:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1573:200:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1865:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1911:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1920:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1923:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1913:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1913:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1913:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1886:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1895:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1882:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1882:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1907:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1878:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1878:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1875:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1936:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1959:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1946:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1946:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1936:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1978:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2011:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2022:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2007:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2007:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1988:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1988:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1978:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1823:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1834:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1846:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1854:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1778:254:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2174:333:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2221:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2230:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2233:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2223:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2223:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2223:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2195:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2204:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2191:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2191:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2216:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2187:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2187:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2184:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2246:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2269:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2256:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2256:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2246:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2288:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2315:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2326:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2311:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2311:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2298:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2298:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2288:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2339:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2372:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2383:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2368:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2368:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2349:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2349:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2339:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2396:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2429:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2440:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2425:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2425:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2406:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2406:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2396:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2453:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2485:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2496:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2481:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2481:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "2463:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2463:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2453:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2108:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2119:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2131:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2139:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2147:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2155:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2163:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2037:470:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2596:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2642:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2651:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2654:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2644:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2644:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2644:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2617:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2626:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2613:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2613:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2638:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2609:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2609:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2606:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2667:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2696:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2677:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2677:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2667:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2715:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2745:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2756:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2741:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2741:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2728:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2728:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2719:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2813:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2822:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2825:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2815:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2815:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2815:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2782:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2803:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "2796:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2796:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2789:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2789:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2779:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2779:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2772:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2772:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2769:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2838:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2848:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2838:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2554:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2565:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2577:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2585:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2512:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2984:281:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3031:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3040:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3043:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3033:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3033:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3033:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3005:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3014:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3001:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3001:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3026:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2997:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2997:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2994:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3056:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3079:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3066:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3066:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3056:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3098:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3131:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3142:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3127:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3127:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3108:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3108:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3098:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3155:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3188:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3199:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3184:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3184:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3165:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3165:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3155:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3212:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3244:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3255:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3240:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3240:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "3222:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3222:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3212:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_addresst_addresst_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2926:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2937:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2949:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2957:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2965:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2973:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2864:401:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3357:173:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3403:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3412:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3415:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3405:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3405:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3405:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3378:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3387:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3374:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3374:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3399:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3370:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3370:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3367:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3428:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3457:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3438:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3438:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3428:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3476:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3509:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3520:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3505:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3505:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3486:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3486:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3476:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3315:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3326:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3338:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3346:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3270:260:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3630:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3640:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3652:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3663:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3648:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3648:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3640:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3682:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "3707:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3700:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3700:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "3693:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3693:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3675:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3675:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3675:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3599:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3610:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3621:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3535:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3874:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3891:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3896:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3884:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3884:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3884:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3923:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3928:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3919:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3919:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3933:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3912:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3912:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3912:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3949:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3960:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3965:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3956:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3956:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3949:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3842:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3847:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3855:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3866:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3727:247:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint64(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n        value3 := abi_decode_address(add(headStart, 96))\n        value4 := abi_decode_uint64(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_addresst_uint64(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n        value3 := abi_decode_uint64(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100d45760003560e01c80635b0fc9c311610081578063cf4088231161005b578063cf4088231461022f578063e985e9c514610242578063f79fe5381461029b57600080fd5b80635b0fc9c3146101f65780635ef2c7f014610209578063a22cb4651461021c57600080fd5b806314ab9038116100b257806314ab90381461017057806316a25cbd146101855780631896f70a146101e357600080fd5b80630178b8bf146100d957806302571be31461013c57806306ab59231461014f575b600080fd5b6101126100e73660046109fc565b60009081526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61011261014a3660046109fc565b6102d3565b61016261015d366004610a3e565b61030e565b604051908152602001610133565b61018361017e366004610a8b565b61046b565b005b6101ca6101933660046109fc565b60009081526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1690565b60405167ffffffffffffffff9091168152602001610133565b6101836101f1366004610ab7565b61057d565b610183610204366004610ab7565b61068e565b610183610217366004610ada565b610799565b61018361022a366004610b31565b6107bb565b61018361023d366004610b6d565b610852565b61028b610250366004610bba565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610133565b61028b6102a93660046109fc565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff16151590565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff163081036103085750600092915050565b92915050565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff1633811480610373575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61037c57600080fd5b6040805160208101889052908101869052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120600081815292839052912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055905060405173ffffffffffffffffffffffffffffffffffffffff86168152869088907fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e829060200160405180910390a39695505050505050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16338114806104d0575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b6104d957600080fd5b60405167ffffffffffffffff8416815284907f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa689060200160405180910390a25050600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16338114806105e2575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b6105eb57600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09060200160405180910390a2505060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16338114806106f3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b6106fc57600080fd5b600084815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560405173ffffffffffffffffffffffffffffffffffffffff8416815284907fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2669060200160405180910390a250505050565b60006107a686868661030e565b90506107b381848461086d565b505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61085c848461068e565b61086784838361086d565b50505050565b60008381526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff838116911614610925576000838152602081815260409182902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155915191825284917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0910160405180910390a25b60008381526020819052604090206001015467ffffffffffffffff8281167401000000000000000000000000000000000000000090920416146109f7576000838152602081815260409182902060010180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff861690810291909117909155915191825284917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68910160405180910390a25b505050565b600060208284031215610a0e57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a3957600080fd5b919050565b600080600060608486031215610a5357600080fd5b8335925060208401359150610a6a60408501610a15565b90509250925092565b803567ffffffffffffffff81168114610a3957600080fd5b60008060408385031215610a9e57600080fd5b82359150610aae60208401610a73565b90509250929050565b60008060408385031215610aca57600080fd5b82359150610aae60208401610a15565b600080600080600060a08688031215610af257600080fd5b8535945060208601359350610b0960408701610a15565b9250610b1760608701610a15565b9150610b2560808701610a73565b90509295509295909350565b60008060408385031215610b4457600080fd5b610b4d83610a15565b915060208301358015158114610b6257600080fd5b809150509250929050565b60008060008060808587031215610b8357600080fd5b84359350610b9360208601610a15565b9250610ba160408601610a15565b9150610baf60608601610a73565b905092959194509250565b60008060408385031215610bcd57600080fd5b610bd683610a15565b9150610aae60208401610a1556fea2646970667358221220ff5852bb6d6b0c1adc71213e386a41f396c0a1dc5f0a93edf6571a490cc1166d64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B0FC9C3 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCF408823 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCF408823 EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xF79FE538 EQ PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5B0FC9C3 EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0x5EF2C7F0 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AB9038 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x14AB9038 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x16A25CBD EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x1896F70A EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x178B8BF EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x2571BE3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x6AB5923 EQ PUSH2 0x14F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112 PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x15D CALLDATASIZE PUSH1 0x4 PUSH2 0xA3E JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x133 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CA PUSH2 0x193 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x133 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0x57D JUMP JUMPDEST PUSH2 0x183 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0xADA JUMP JUMPDEST PUSH2 0x799 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0xB31 JUMP JUMPDEST PUSH2 0x7BB JUMP JUMPDEST PUSH2 0x183 PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0xB6D JUMP JUMPDEST PUSH2 0x852 JUMP JUMPDEST PUSH2 0x28B PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0xBBA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x133 JUMP JUMPDEST PUSH2 0x28B PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP2 SUB PUSH2 0x308 JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x373 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE SWAP3 DUP4 SWAP1 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND OR SWAP1 SSTORE SWAP1 POP PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP7 SWAP1 DUP9 SWAP1 PUSH32 0xCE0457FE73731F824CC272376169235128C118B49D344817417C6D108D155E82 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x4D0 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0x1D4F9BBFC9CAB89D66E1A1562F2233CCBF1308CB4F63DE2EAD5787ADDDB8FA68 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x5E2 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0x335721B01866DC23FBEE8B6B2C7B1E14D6F05C28CD35A2C934239F94095602A0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x6F3 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0xD4735D920B0F87494915F556DD9B54C8F309026070CAEA5C737245152564D266 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A6 DUP7 DUP7 DUP7 PUSH2 0x30E JUMP JUMPDEST SWAP1 POP PUSH2 0x7B3 DUP2 DUP5 DUP5 PUSH2 0x86D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x85C DUP5 DUP5 PUSH2 0x68E JUMP JUMPDEST PUSH2 0x867 DUP5 DUP4 DUP4 PUSH2 0x86D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0x925 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE DUP5 SWAP2 PUSH32 0x335721B01866DC23FBEE8B6B2C7B1E14D6F05C28CD35A2C934239F94095602A0 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV AND EQ PUSH2 0x9F7 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH8 0xFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE DUP5 SWAP2 PUSH32 0x1D4F9BBFC9CAB89D66E1A1562F2233CCBF1308CB4F63DE2EAD5787ADDDB8FA68 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0xA6A PUSH1 0x40 DUP6 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xAAE PUSH1 0x20 DUP5 ADD PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xAAE PUSH1 0x20 DUP5 ADD PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH2 0xB09 PUSH1 0x40 DUP8 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP3 POP PUSH2 0xB17 PUSH1 0x60 DUP8 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH2 0xB25 PUSH1 0x80 DUP8 ADD PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB4D DUP4 PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0xB93 PUSH1 0x20 DUP7 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP3 POP PUSH2 0xBA1 PUSH1 0x40 DUP7 ADD PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH2 0xBAF PUSH1 0x60 DUP7 ADD PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBD6 DUP4 PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH2 0xAAE PUSH1 0x20 DUP5 ADD PUSH2 0xA15 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFDESTRUCT PC MSTORE 0xBB PUSH14 0x6B0C1ADC71213E386A41F396C0A1 0xDC 0x5F EXP SWAP4 0xED 0xF6 JUMPI BYTE 0x49 0xC 0xC1 AND PUSH14 0x64736F6C63430008110033000000 ",
              "sourceMap": "85:6502:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4753:169;;;;;;:::i;:::-;4863:7;4893:13;;;;;;;;;;:22;;;;;;4753:169;;;;375:42:111;363:55;;;345:74;;333:2;318:18;4753:169:55;;;;;;;;4307:273;;;;;;:::i;:::-;;:::i;2508:335::-;;;;;;:::i;:::-;;:::i;:::-;;;1104:25:111;;;1092:2;1077:18;2508:335:55;958:177:111;3388:191:55;;;;;;:::i;:::-;;:::i;:::-;;5090:114;;;;;;:::i;:::-;5155:6;5180:13;;;;;;;;;;:17;;;;;;;;;5090:114;;;;1747:18:111;1735:31;;;1717:50;;1705:2;1690:18;5090:114:55;1573:200:111;3018:222:55;;;;;;:::i;:::-;;:::i;1997:199::-;;;;;;:::i;:::-;;:::i;1464:294::-;;;;;;:::i;:::-;;:::i;3913:234::-;;;;;;:::i;:::-;;:::i;928:229::-;;;;;;:::i;:::-;;:::i;5870:199::-;;;;;;:::i;:::-;6036:16;;;;6009:4;6036:16;;;:9;:16;;;;;;;;:26;;;;;;;;;;;;;;;5870:199;;;;3700:14:111;;3693:22;3675:41;;3663:2;3648:18;5870:199:55;3535:187:111;5374:183:55;;;;;;:::i;:::-;5488:4;5515:13;;;;;;;;;;:19;:35;:19;:35;;;5374:183;4307:273;4414:7;4452:13;;;;;;;;;;:19;;;4501:4;4485:21;;4481:71;;-1:-1:-1;4537:3:55;;4307:273;-1:-1:-1;;4307:273:55:o;4481:71::-;4569:4;4307:273;-1:-1:-1;;4307:273:55:o;2508:335::-;2657:7;446:13;;;;;;;;;;:19;2642:4;;446:19;;492:10;483:19;;;:51;;-1:-1:-1;506:16:55;;;;;;;:9;:16;;;;;;;;523:10;506:28;;;;;;;;;;483:51;475:60;;;;;;2704:29:::1;::::0;;::::1;::::0;::::1;3884:19:111::0;;;3919:12;;;3912:28;;;2676:15:55::1;::::0;3956:12:111;;2704:29:55::1;::::0;;;;;::::1;::::0;;;;;;2694:40;;2704:29:::1;2694:40:::0;;::::1;::::0;6150:7;:13;;;;;;;;;:27;;;;;;;;;;2694:40;-1:-1:-1;2784:28:55::1;::::0;375:42:111;363:55;;345:74;;2799:5:55;;2793:4;;2784:28:::1;::::0;333:2:111;318:18;2784:28:55::1;;;;;;;2829:7:::0;2508:335;-1:-1:-1;;;;;;2508:335:55:o;3388:191::-;430:13;446;;;;;;;;;;:19;3497:4;;446:19;;492:10;483:19;;;:51;;-1:-1:-1;506:16:55;;;;;;;:9;:16;;;;;;;;523:10;506:28;;;;;;;;;;483:51;475:60;;;;;;3522:17:::1;::::0;1747:18:111;1735:31;;1717:50;;3529:4:55;;3522:17:::1;::::0;1705:2:111;1690:18;3522:17:55::1;;;;;;;-1:-1:-1::0;;3549:7:55::1;:13:::0;;;::::1;::::0;;;;;;;:17:::1;;:23:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3388:191::o;3018:222::-;430:13;446;;;;;;;;;;:19;3138:4;;446:19;;492:10;483:19;;;:51;;-1:-1:-1;506:16:55;;;;;;;:9;:16;;;;;;;;523:10;506:28;;;;;;;;;;483:51;475:60;;;;;;3163:27:::1;::::0;375:42:111;363:55;;345:74;;3175:4:55;;3163:27:::1;::::0;333:2:111;318:18;3163:27:55::1;;;;;;;-1:-1:-1::0;;3200:7:55::1;:13:::0;;;::::1;::::0;;;;;;;:22:::1;;:33:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;3018:222::o;1997:199::-;430:13;446;;;;;;;;;;:19;2111:4;;446:19;;492:10;483:19;;;:51;;-1:-1:-1;506:16:55;;;;;;;:9;:16;;;;;;;;523:10;506:28;;;;;;;;;;483:51;475:60;;;;;;6150:7;:13;;;;;;;;;;:27;;;;;;;;;;2168:21:::1;::::0;375:42:111;363:55;;345:74;;2177:4:55;;2168:21:::1;::::0;333:2:111;318:18;2168:21:55::1;;;;;;;420:133:::0;1997:199;;;:::o;1464:294::-;1646:15;1664:35;1680:4;1686:5;1693;1664:15;:35::i;:::-;1646:53;;1709:42;1728:7;1737:8;1747:3;1709:18;:42::i;:::-;1636:122;1464:294;;;;;:::o;3913:234::-;4047:10;4037:21;;;;:9;:21;;;;;;;;;:31;;;;;;;;;;;;:42;;;;;;;;;;;;;4094:46;;3675:41:111;;;4037:31:55;;4047:10;4094:46;;3648:18:111;4094:46:55;;;;;;;3913:234;;:::o;928:229::-;1080:21;1089:4;1095:5;1080:8;:21::i;:::-;1111:39;1130:4;1136:8;1146:3;1111:18;:39::i;:::-;928:229;;;;:::o;6190:395::-;6327:7;:13;;;;;;;;;;:22;;;;6315:34;;;6327:22;;6315:34;6311:144;;6365:7;:13;;;;;;;;;;;;:22;;:33;;;;;;;;;;;;;6417:27;;345:74:111;;;6365:13:55;;6417:27;;318:18:111;6417:27:55;;;;;;;6311:144;6476:7;:13;;;;;;;;;;:17;;;;6469:24;;;6476:17;;;;;6469:24;6465:114;;6509:7;:13;;;;;;;;;;;;:17;;:23;;;;;;;;;;;;;;;;;;6551:17;;1717:50:111;;;6509:13:55;;6551:17;;1690:18:111;6551:17:55;;;;;;;6465:114;6190:395;;;:::o;14:180:111:-;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:111;;14:180;-1:-1:-1;14:180:111:o;430:196::-;498:20;;558:42;547:54;;537:65;;527:93;;616:1;613;606:12;527:93;430:196;;;:::o;631:322::-;708:6;716;724;777:2;765:9;756:7;752:23;748:32;745:52;;;793:1;790;783:12;745:52;829:9;816:23;806:33;;886:2;875:9;871:18;858:32;848:42;;909:38;943:2;932:9;928:18;909:38;:::i;:::-;899:48;;631:322;;;;;:::o;1140:171::-;1207:20;;1267:18;1256:30;;1246:41;;1236:69;;1301:1;1298;1291:12;1316:252;1383:6;1391;1444:2;1432:9;1423:7;1419:23;1415:32;1412:52;;;1460:1;1457;1450:12;1412:52;1496:9;1483:23;1473:33;;1525:37;1558:2;1547:9;1543:18;1525:37;:::i;:::-;1515:47;;1316:252;;;;;:::o;1778:254::-;1846:6;1854;1907:2;1895:9;1886:7;1882:23;1878:32;1875:52;;;1923:1;1920;1913:12;1875:52;1959:9;1946:23;1936:33;;1988:38;2022:2;2011:9;2007:18;1988:38;:::i;2037:470::-;2131:6;2139;2147;2155;2163;2216:3;2204:9;2195:7;2191:23;2187:33;2184:53;;;2233:1;2230;2223:12;2184:53;2269:9;2256:23;2246:33;;2326:2;2315:9;2311:18;2298:32;2288:42;;2349:38;2383:2;2372:9;2368:18;2349:38;:::i;:::-;2339:48;;2406:38;2440:2;2429:9;2425:18;2406:38;:::i;:::-;2396:48;;2463:38;2496:3;2485:9;2481:19;2463:38;:::i;:::-;2453:48;;2037:470;;;;;;;;:::o;2512:347::-;2577:6;2585;2638:2;2626:9;2617:7;2613:23;2609:32;2606:52;;;2654:1;2651;2644:12;2606:52;2677:29;2696:9;2677:29;:::i;:::-;2667:39;;2756:2;2745:9;2741:18;2728:32;2803:5;2796:13;2789:21;2782:5;2779:32;2769:60;;2825:1;2822;2815:12;2769:60;2848:5;2838:15;;;2512:347;;;;;:::o;2864:401::-;2949:6;2957;2965;2973;3026:3;3014:9;3005:7;3001:23;2997:33;2994:53;;;3043:1;3040;3033:12;2994:53;3079:9;3066:23;3056:33;;3108:38;3142:2;3131:9;3127:18;3108:38;:::i;:::-;3098:48;;3165:38;3199:2;3188:9;3184:18;3165:38;:::i;:::-;3155:48;;3222:37;3255:2;3244:9;3240:18;3222:37;:::i;:::-;3212:47;;2864:401;;;;;;;:::o;3270:260::-;3338:6;3346;3399:2;3387:9;3378:7;3374:23;3370:32;3367:52;;;3415:1;3412;3405:12;3367:52;3438:29;3457:9;3438:29;:::i;:::-;3428:39;;3486:38;3520:2;3509:9;3505:18;3486:38;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "619600",
                "executionCost": "24904",
                "totalCost": "644504"
              },
              "external": {
                "isApprovedForAll(address,address)": "infinite",
                "owner(bytes32)": "2536",
                "recordExists(bytes32)": "2525",
                "resolver(bytes32)": "2475",
                "setApprovalForAll(address,bool)": "26625",
                "setOwner(bytes32,address)": "30567",
                "setRecord(bytes32,address,address,uint64)": "infinite",
                "setResolver(bytes32,address)": "30628",
                "setSubnodeOwner(bytes32,bytes32,address)": "31241",
                "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": "infinite",
                "setTTL(bytes32,uint64)": "30598",
                "ttl(bytes32)": "2518"
              },
              "internal": {
                "_setOwner(bytes32,address)": "infinite",
                "_setResolverAndTTL(bytes32,address,uint64)": "infinite"
              }
            },
            "methodIdentifiers": {
              "isApprovedForAll(address,address)": "e985e9c5",
              "owner(bytes32)": "02571be3",
              "recordExists(bytes32)": "f79fe538",
              "resolver(bytes32)": "0178b8bf",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setOwner(bytes32,address)": "5b0fc9c3",
              "setRecord(bytes32,address,address,uint64)": "cf408823",
              "setResolver(bytes32,address)": "1896f70a",
              "setSubnodeOwner(bytes32,bytes32,address)": "06ab5923",
              "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": "5ef2c7f0",
              "setTTL(bytes32,uint64)": "14ab9038",
              "ttl(bytes32)": "16a25cbd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NewOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"NewResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"NewTTL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"recordExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"ttl\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructs a new ENS registry.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Query if an address is an authorized operator for another address.\",\"params\":{\"operator\":\"The address that acts on behalf of the owner.\",\"owner\":\"The address that owns the records.\"},\"returns\":{\"_0\":\"True if `operator` is an approved operator for `owner`, false otherwise.\"}},\"owner(bytes32)\":{\"details\":\"Returns the address that owns the specified node.\",\"params\":{\"node\":\"The specified node.\"},\"returns\":{\"_0\":\"address of the owner.\"}},\"recordExists(bytes32)\":{\"details\":\"Returns whether a record has been imported to the registry.\",\"params\":{\"node\":\"The specified node.\"},\"returns\":{\"_0\":\"Bool if record exists\"}},\"resolver(bytes32)\":{\"details\":\"Returns the address of the resolver for the specified node.\",\"params\":{\"node\":\"The specified node.\"},\"returns\":{\"_0\":\"address of the resolver.\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\",\"params\":{\"approved\":\"True if the operator is approved, false to revoke approval.\",\"operator\":\"Address to add to the set of authorized operators.\"}},\"setOwner(bytes32,address)\":{\"details\":\"Transfers ownership of a node to a new address. May only be called by the current owner of the node.\",\"params\":{\"node\":\"The node to transfer ownership of.\",\"owner\":\"The address of the new owner.\"}},\"setRecord(bytes32,address,address,uint64)\":{\"details\":\"Sets the record for a node.\",\"params\":{\"node\":\"The node to update.\",\"owner\":\"The address of the new owner.\",\"resolver\":\"The address of the resolver.\",\"ttl\":\"The TTL in seconds.\"}},\"setResolver(bytes32,address)\":{\"details\":\"Sets the resolver address for the specified node.\",\"params\":{\"node\":\"The node to update.\",\"resolver\":\"The address of the resolver.\"}},\"setSubnodeOwner(bytes32,bytes32,address)\":{\"details\":\"Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\",\"params\":{\"label\":\"The hash of the label specifying the subnode.\",\"node\":\"The parent node.\",\"owner\":\"The address of the new owner.\"}},\"setSubnodeRecord(bytes32,bytes32,address,address,uint64)\":{\"details\":\"Sets the record for a subnode.\",\"params\":{\"label\":\"The hash of the label specifying the subnode.\",\"node\":\"The parent node.\",\"owner\":\"The address of the new owner.\",\"resolver\":\"The address of the resolver.\",\"ttl\":\"The TTL in seconds.\"}},\"setTTL(bytes32,uint64)\":{\"details\":\"Sets the TTL for the specified node.\",\"params\":{\"node\":\"The node to update.\",\"ttl\":\"The TTL in seconds.\"}},\"ttl(bytes32)\":{\"details\":\"Returns the TTL of a node, and any records associated with it.\",\"params\":{\"node\":\"The specified node.\"},\"returns\":{\"_0\":\"ttl of the node.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"The ENS registry contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/ENSRegistry.sol\":\"ENSRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/ENSRegistry.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\n\\n/**\\n * The ENS registry contract.\\n */\\ncontract ENSRegistry is ENS {\\n    struct Record {\\n        address owner;\\n        address resolver;\\n        uint64 ttl;\\n    }\\n\\n    mapping(bytes32 => Record) records;\\n    mapping(address => mapping(address => bool)) operators;\\n\\n    // Permits modifications only by the owner of the specified node.\\n    modifier authorised(bytes32 node) {\\n        address owner = records[node].owner;\\n        require(owner == msg.sender || operators[owner][msg.sender]);\\n        _;\\n    }\\n\\n    /**\\n     * @dev Constructs a new ENS registry.\\n     */\\n    constructor() public {\\n        records[0x0].owner = msg.sender;\\n    }\\n\\n    /**\\n     * @dev Sets the record for a node.\\n     * @param node The node to update.\\n     * @param owner The address of the new owner.\\n     * @param resolver The address of the resolver.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external virtual override {\\n        setOwner(node, owner);\\n        _setResolverAndTTL(node, resolver, ttl);\\n    }\\n\\n    /**\\n     * @dev Sets the record for a subnode.\\n     * @param node The parent node.\\n     * @param label The hash of the label specifying the subnode.\\n     * @param owner The address of the new owner.\\n     * @param resolver The address of the resolver.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external virtual override {\\n        bytes32 subnode = setSubnodeOwner(node, label, owner);\\n        _setResolverAndTTL(subnode, resolver, ttl);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of a node to a new address. May only be called by the current owner of the node.\\n     * @param node The node to transfer ownership of.\\n     * @param owner The address of the new owner.\\n     */\\n    function setOwner(bytes32 node, address owner)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        _setOwner(node, owner);\\n        emit Transfer(node, owner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\\n     * @param node The parent node.\\n     * @param label The hash of the label specifying the subnode.\\n     * @param owner The address of the new owner.\\n     */\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) public virtual override authorised(node) returns (bytes32) {\\n        bytes32 subnode = keccak256(abi.encodePacked(node, label));\\n        _setOwner(subnode, owner);\\n        emit NewOwner(node, label, owner);\\n        return subnode;\\n    }\\n\\n    /**\\n     * @dev Sets the resolver address for the specified node.\\n     * @param node The node to update.\\n     * @param resolver The address of the resolver.\\n     */\\n    function setResolver(bytes32 node, address resolver)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        emit NewResolver(node, resolver);\\n        records[node].resolver = resolver;\\n    }\\n\\n    /**\\n     * @dev Sets the TTL for the specified node.\\n     * @param node The node to update.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setTTL(bytes32 node, uint64 ttl)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        emit NewTTL(node, ttl);\\n        records[node].ttl = ttl;\\n    }\\n\\n    /**\\n     * @dev Enable or disable approval for a third party (\\\"operator\\\") to manage\\n     *  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\\n     * @param operator Address to add to the set of authorized operators.\\n     * @param approved True if the operator is approved, false to revoke approval.\\n     */\\n    function setApprovalForAll(address operator, bool approved)\\n        external\\n        virtual\\n        override\\n    {\\n        operators[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Returns the address that owns the specified node.\\n     * @param node The specified node.\\n     * @return address of the owner.\\n     */\\n    function owner(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        address addr = records[node].owner;\\n        if (addr == address(this)) {\\n            return address(0x0);\\n        }\\n\\n        return addr;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the resolver for the specified node.\\n     * @param node The specified node.\\n     * @return address of the resolver.\\n     */\\n    function resolver(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        return records[node].resolver;\\n    }\\n\\n    /**\\n     * @dev Returns the TTL of a node, and any records associated with it.\\n     * @param node The specified node.\\n     * @return ttl of the node.\\n     */\\n    function ttl(bytes32 node) public view virtual override returns (uint64) {\\n        return records[node].ttl;\\n    }\\n\\n    /**\\n     * @dev Returns whether a record has been imported to the registry.\\n     * @param node The specified node.\\n     * @return Bool if record exists\\n     */\\n    function recordExists(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return records[node].owner != address(0x0);\\n    }\\n\\n    /**\\n     * @dev Query if an address is an authorized operator for another address.\\n     * @param owner The address that owns the records.\\n     * @param operator The address that acts on behalf of the owner.\\n     * @return True if `operator` is an approved operator for `owner`, false otherwise.\\n     */\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return operators[owner][operator];\\n    }\\n\\n    function _setOwner(bytes32 node, address owner) internal virtual {\\n        records[node].owner = owner;\\n    }\\n\\n    function _setResolverAndTTL(\\n        bytes32 node,\\n        address resolver,\\n        uint64 ttl\\n    ) internal {\\n        if (resolver != records[node].resolver) {\\n            records[node].resolver = resolver;\\n            emit NewResolver(node, resolver);\\n        }\\n\\n        if (ttl != records[node].ttl) {\\n            records[node].ttl = ttl;\\n            emit NewTTL(node, ttl);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x047874111ed16d3add08a3bf6323012655e22685b8007eab45f51a074ae5793a\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 12175,
                "contract": "contracts/registry/ENSRegistry.sol:ENSRegistry",
                "label": "records",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_struct(Record)12170_storage)"
              },
              {
                "astId": 12181,
                "contract": "contracts/registry/ENSRegistry.sol:ENSRegistry",
                "label": "operators",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_mapping(t_address,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_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_bytes32,t_struct(Record)12170_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => struct ENSRegistry.Record)",
                "numberOfBytes": "32",
                "value": "t_struct(Record)12170_storage"
              },
              "t_struct(Record)12170_storage": {
                "encoding": "inplace",
                "label": "struct ENSRegistry.Record",
                "members": [
                  {
                    "astId": 12165,
                    "contract": "contracts/registry/ENSRegistry.sol:ENSRegistry",
                    "label": "owner",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address"
                  },
                  {
                    "astId": 12167,
                    "contract": "contracts/registry/ENSRegistry.sol:ENSRegistry",
                    "label": "resolver",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_address"
                  },
                  {
                    "astId": 12169,
                    "contract": "contracts/registry/ENSRegistry.sol:ENSRegistry",
                    "label": "ttl",
                    "offset": 20,
                    "slot": "1",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "The ENS registry contract.",
            "version": 1
          }
        }
      },
      "contracts/registry/ENSRegistryWithFallback.sol": {
        "ENSRegistryWithFallback": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "_old",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "NewOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "NewResolver",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "NewTTL",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "old",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "recordExists",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "resolver",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "setOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "setSubnodeOwner",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setTTL",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "ttl",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "constructor": {
                "details": "Constructs a new ENS registrar."
              },
              "isApprovedForAll(address,address)": {
                "details": "Query if an address is an authorized operator for another address.",
                "params": {
                  "operator": "The address that acts on behalf of the owner.",
                  "owner": "The address that owns the records."
                },
                "returns": {
                  "_0": "True if `operator` is an approved operator for `owner`, false otherwise."
                }
              },
              "owner(bytes32)": {
                "details": "Returns the address that owns the specified node.",
                "params": {
                  "node": "The specified node."
                },
                "returns": {
                  "_0": "address of the owner."
                }
              },
              "recordExists(bytes32)": {
                "details": "Returns whether a record has been imported to the registry.",
                "params": {
                  "node": "The specified node."
                },
                "returns": {
                  "_0": "Bool if record exists"
                }
              },
              "resolver(bytes32)": {
                "details": "Returns the address of the resolver for the specified node.",
                "params": {
                  "node": "The specified node."
                },
                "returns": {
                  "_0": "address of the resolver."
                }
              },
              "setApprovalForAll(address,bool)": {
                "details": "Enable or disable approval for a third party (\"operator\") to manage  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.",
                "params": {
                  "approved": "True if the operator is approved, false to revoke approval.",
                  "operator": "Address to add to the set of authorized operators."
                }
              },
              "setOwner(bytes32,address)": {
                "details": "Transfers ownership of a node to a new address. May only be called by the current owner of the node.",
                "params": {
                  "node": "The node to transfer ownership of.",
                  "owner": "The address of the new owner."
                }
              },
              "setRecord(bytes32,address,address,uint64)": {
                "details": "Sets the record for a node.",
                "params": {
                  "node": "The node to update.",
                  "owner": "The address of the new owner.",
                  "resolver": "The address of the resolver.",
                  "ttl": "The TTL in seconds."
                }
              },
              "setResolver(bytes32,address)": {
                "details": "Sets the resolver address for the specified node.",
                "params": {
                  "node": "The node to update.",
                  "resolver": "The address of the resolver."
                }
              },
              "setSubnodeOwner(bytes32,bytes32,address)": {
                "details": "Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.",
                "params": {
                  "label": "The hash of the label specifying the subnode.",
                  "node": "The parent node.",
                  "owner": "The address of the new owner."
                }
              },
              "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": {
                "details": "Sets the record for a subnode.",
                "params": {
                  "label": "The hash of the label specifying the subnode.",
                  "node": "The parent node.",
                  "owner": "The address of the new owner.",
                  "resolver": "The address of the resolver.",
                  "ttl": "The TTL in seconds."
                }
              },
              "setTTL(bytes32,uint64)": {
                "details": "Sets the TTL for the specified node.",
                "params": {
                  "node": "The node to update.",
                  "ttl": "The TTL in seconds."
                }
              },
              "ttl(bytes32)": {
                "details": "Returns the TTL of a node, and any records associated with it.",
                "params": {
                  "node": "The specified node."
                },
                "returns": {
                  "_0": "ttl of the node."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_12221": {
                  "entryPoint": null,
                  "id": 12221,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_12605": {
                  "entryPoint": null,
                  "id": 12605,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory": {
                  "entryPoint": 137,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:319:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "108:209:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "154:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "163:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "166:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "156:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "156:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "156:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "138:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "150:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "121:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "121:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "118:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "179:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "198:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "192:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "192:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "183:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "271:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "280:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "283:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "273:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "273:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "273:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "230:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "241:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "256:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "261:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "252:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "252:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "265:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "248:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "248:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "237:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "237:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "227:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "227:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "220:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "220:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "217:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "296:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "306:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "296:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "74:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "85:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "97:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:303:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_ENS_$12157_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051610f37380380610f3783398101604081905261002f91610089565b60008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58054336001600160a01b031991821617909155600280549091166001600160a01b03929092169190911790556100b9565b60006020828403121561009b57600080fd5b81516001600160a01b03811681146100b257600080fd5b9392505050565b610e6f806100c86000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80635b0fc9c31161008c578063b83f866311610066578063b83f8663146101e2578063cf40882314610202578063e985e9c514610215578063f79fe5381461026e57600080fd5b80635b0fc9c3146101a95780635ef2c7f0146101bc578063a22cb465146101cf57600080fd5b806314ab9038116100bd57806314ab90381461015557806316a25cbd1461016a5780631896f70a1461019657600080fd5b80630178b8bf146100e457806302571be31461012157806306ab592314610134575b600080fd5b6100f76100f2366004610c03565b6102a6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f761012f366004610c03565b610396565b610147610142366004610c41565b61041f565b604051908152602001610118565b610168610163366004610c90565b610516565b005b61017d610178366004610c03565b610628565b60405167ffffffffffffffff9091168152602001610118565b6101686101a4366004610cc0565b61071d565b6101686101b7366004610cc0565b61082e565b6101686101ca366004610ce5565b6108f7565b6101686101dd366004610d44565b610919565b6002546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b610168610210366004610d77565b6109b0565b61025e610223366004610dca565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610118565b61025e61027c366004610c03565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff16151590565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff16610369576002546040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690630178b8bf906024015b602060405180830381865afa15801561033f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103639190610df8565b92915050565b60008281526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff16610363565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff16610416576002546040517f02571be30000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906302571be390602401610322565b610363826109cb565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff1633811480610484575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61048d57600080fd5b604080516020808201899052818301889052825180830384018152606090920190925280519101206104bf8186610a00565b60405173ffffffffffffffffffffffffffffffffffffffff86168152869088907fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e829060200160405180910390a39695505050505050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff163381148061057b575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61058457600080fd5b60405167ffffffffffffffff8416815284907f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa689060200160405180910390a25050600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff166106e4576002546040517f16a25cbd0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906316a25cbd90602401602060405180830381865afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103639190610e1c565b60008281526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610363565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff1633811480610782575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61078b57600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09060200160405180910390a2505060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff1633811480610893575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61089c57600080fd5b6108a68484610a00565b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2669060200160405180910390a250505050565b600061090486868661041f565b9050610911818484610a75565b505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109ba848461082e565b6109c5848383610a75565b50505050565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff163081036103635750600092915050565b8073ffffffffffffffffffffffffffffffffffffffff8116610a1f5750305b600083815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055505050565b505050565b60008381526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff838116911614610b2d576000838152602081815260409182902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155915191825284917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0910160405180910390a25b60008381526020819052604090206001015467ffffffffffffffff828116740100000000000000000000000000000000000000009092041614610a70576000838152602081815260409182902060010180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff861690810291909117909155915191825284917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68910160405180910390a2505050565b600060208284031215610c1557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c3e57600080fd5b50565b600080600060608486031215610c5657600080fd5b83359250602084013591506040840135610c6f81610c1c565b809150509250925092565b67ffffffffffffffff81168114610c3e57600080fd5b60008060408385031215610ca357600080fd5b823591506020830135610cb581610c7a565b809150509250929050565b60008060408385031215610cd357600080fd5b823591506020830135610cb581610c1c565b600080600080600060a08688031215610cfd57600080fd5b85359450602086013593506040860135610d1681610c1c565b92506060860135610d2681610c1c565b91506080860135610d3681610c7a565b809150509295509295909350565b60008060408385031215610d5757600080fd5b8235610d6281610c1c565b915060208301358015158114610cb557600080fd5b60008060008060808587031215610d8d57600080fd5b843593506020850135610d9f81610c1c565b92506040850135610daf81610c1c565b91506060850135610dbf81610c7a565b939692955090935050565b60008060408385031215610ddd57600080fd5b8235610de881610c1c565b91506020830135610cb581610c1c565b600060208284031215610e0a57600080fd5b8151610e1581610c1c565b9392505050565b600060208284031215610e2e57600080fd5b8151610e1581610c7a56fea264697066735822122097e8cd5aa8e425ee3abb5342ea13f535df0f38838dcc62dbcb72aeb8b5c2731d64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF37 CODESIZE SUB DUP1 PUSH2 0xF37 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x89 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 MSTORE PUSH32 0xAD3228B676F7D3CD4284A5443F17F1962B36E491B30A40B2405849E597BA5FB5 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xB9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE6F DUP1 PUSH2 0xC8 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B0FC9C3 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xB83F8663 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB83F8663 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0xCF408823 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0xF79FE538 EQ PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5B0FC9C3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x5EF2C7F0 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AB9038 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x14AB9038 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x16A25CBD EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0x1896F70A EQ PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x178B8BF EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x2571BE3 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x6AB5923 EQ PUSH2 0x134 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x396 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0xC41 JUMP JUMPDEST PUSH2 0x41F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x163 CALLDATASIZE PUSH1 0x4 PUSH2 0xC90 JUMP JUMPDEST PUSH2 0x516 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17D PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x1A4 CALLDATASIZE PUSH1 0x4 PUSH2 0xCC0 JUMP JUMPDEST PUSH2 0x71D JUMP JUMPDEST PUSH2 0x168 PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCC0 JUMP JUMPDEST PUSH2 0x82E JUMP JUMPDEST PUSH2 0x168 PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0xCE5 JUMP JUMPDEST PUSH2 0x8F7 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0xD44 JUMP JUMPDEST PUSH2 0x919 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xF7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x210 CALLDATASIZE PUSH1 0x4 PUSH2 0xD77 JUMP JUMPDEST PUSH2 0x9B0 JUMP JUMPDEST PUSH2 0x25E PUSH2 0x223 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST PUSH2 0x25E PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x369 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x178B8BF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x178B8BF SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x33F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x363 SWAP2 SWAP1 PUSH2 0xDF8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x363 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x416 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH2 0x322 JUMP JUMPDEST PUSH2 0x363 DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x484 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP10 SWAP1 MSTORE DUP2 DUP4 ADD DUP9 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x4BF DUP2 DUP7 PUSH2 0xA00 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP7 SWAP1 DUP9 SWAP1 PUSH32 0xCE0457FE73731F824CC272376169235128C118B49D344817417C6D108D155E82 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x57B JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0x1D4F9BBFC9CAB89D66E1A1562F2233CCBF1308CB4F63DE2EAD5787ADDDB8FA68 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E4 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x16A25CBD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x16A25CBD SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x363 SWAP2 SWAP1 PUSH2 0xE1C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x363 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x782 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0x335721B01866DC23FBEE8B6B2C7B1E14D6F05C28CD35A2C934239F94095602A0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x893 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A6 DUP5 DUP5 PUSH2 0xA00 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0xD4735D920B0F87494915F556DD9B54C8F309026070CAEA5C737245152564D266 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x904 DUP7 DUP7 DUP7 PUSH2 0x41F JUMP JUMPDEST SWAP1 POP PUSH2 0x911 DUP2 DUP5 DUP5 PUSH2 0xA75 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x9BA DUP5 DUP5 PUSH2 0x82E JUMP JUMPDEST PUSH2 0x9C5 DUP5 DUP4 DUP4 PUSH2 0xA75 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP2 SUB PUSH2 0x363 JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xA1F JUMPI POP ADDRESS JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0xB2D JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE DUP5 SWAP2 PUSH32 0x335721B01866DC23FBEE8B6B2C7B1E14D6F05C28CD35A2C934239F94095602A0 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV AND EQ PUSH2 0xA70 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH8 0xFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE DUP5 SWAP2 PUSH32 0x1D4F9BBFC9CAB89D66E1A1562F2233CCBF1308CB4F63DE2EAD5787ADDDB8FA68 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xC6F DUP2 PUSH2 0xC1C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xCB5 DUP2 PUSH2 0xC7A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xCB5 DUP2 PUSH2 0xC1C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0xD16 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xD26 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0xD36 DUP2 PUSH2 0xC7A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xD62 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xD9F DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0xDAF DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0xDBF DUP2 PUSH2 0xC7A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xDE8 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xCB5 DUP2 PUSH2 0xC1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE15 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE15 DUP2 PUSH2 0xC7A JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0xE8 0xCD GAS 0xA8 0xE4 0x25 0xEE GASPRICE 0xBB MSTORE8 TIMESTAMP 0xEA SGT CREATE2 CALLDATALOAD 0xDF 0xF CODESIZE DUP4 DUP14 0xCC PUSH3 0xDBCB72 0xAE 0xB8 0xB5 0xC2 PUSH20 0x1D64736F6C634300081100330000000000000000 ",
              "sourceMap": "113:1510:56:-:0;;;248:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;649:7:55;:12;;;;;;:31;;670:10;-1:-1:-1;;;;;;649:31:55;;;;;;;301:3:56::1;:10:::0;;;;::::1;-1:-1:-1::0;;;;;301:10:56;;;::::1;::::0;;;::::1;::::0;;113:1510;;14:303:111;97:6;150:2;138:9;129:7;125:23;121:32;118:52;;;166:1;163;156:12;118:52;192:16;;-1:-1:-1;;;;;237:31:111;;227:42;;217:70;;283:1;280;273:12;217:70;306:5;14:303;-1:-1:-1;;;14:303:111:o;:::-;113:1510:56;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_setOwner_12530": {
                  "entryPoint": null,
                  "id": 12530,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setOwner_12718": {
                  "entryPoint": 2560,
                  "id": 12718,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setResolverAndTTL_12580": {
                  "entryPoint": 2677,
                  "id": 12580,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@isApprovedForAll_12515": {
                  "entryPoint": null,
                  "id": 12515,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@old_12591": {
                  "entryPoint": null,
                  "id": 12591,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@owner_12447": {
                  "entryPoint": 2507,
                  "id": 12447,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_12657": {
                  "entryPoint": 918,
                  "id": 12657,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@recordExists_12497": {
                  "entryPoint": null,
                  "id": 12497,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@resolver_12462": {
                  "entryPoint": null,
                  "id": 12462,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@resolver_12631": {
                  "entryPoint": 678,
                  "id": 12631,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@setApprovalForAll_12415": {
                  "entryPoint": 2329,
                  "id": 12415,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setOwner_12299": {
                  "entryPoint": 2094,
                  "id": 12299,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setRecord_12246": {
                  "entryPoint": 2480,
                  "id": 12246,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setResolver_12364": {
                  "entryPoint": 1821,
                  "id": 12364,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSubnodeOwner_12339": {
                  "entryPoint": 1055,
                  "id": 12339,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@setSubnodeRecord_12276": {
                  "entryPoint": 2295,
                  "id": 12276,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@setTTL_12389": {
                  "entryPoint": 1302,
                  "id": 12389,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@ttl_12477": {
                  "entryPoint": null,
                  "id": 12477,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@ttl_12683": {
                  "entryPoint": 1576,
                  "id": 12683,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 3576,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 3530,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 3396,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 3075,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 3264,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_addresst_addresst_uint64": {
                  "entryPoint": 3447,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_address": {
                  "entryPoint": 3137,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64": {
                  "entryPoint": 3301,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bytes32t_uint64": {
                  "entryPoint": 3216,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint64_fromMemory": {
                  "entryPoint": 3612,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "validator_revert_address": {
                  "entryPoint": 3100,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint64": {
                  "entryPoint": 3194,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:5416:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "155:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "178:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "165:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "165:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "155:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "300:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "310:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "322:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "333:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "318:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "318:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "310:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "352:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "367:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "375:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "363:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "363:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "345:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "269:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "280:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "291:4:111",
                            "type": ""
                          }
                        ],
                        "src": "199:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "475:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "562:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "571:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "574:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "564:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "564:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "564:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "498:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "509:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "516:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "505:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "505:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "495:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "495:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "485:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "464:5:111",
                            "type": ""
                          }
                        ],
                        "src": "430:154:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "693:279:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "739:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "748:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "751:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "741:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "741:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "741:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "714:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "723:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "710:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "710:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "735:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "706:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "706:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "703:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "764:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "787:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "774:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "774:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "764:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "806:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "833:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "844:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "829:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "829:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "816:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "816:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "806:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "857:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "887:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "898:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "883:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "883:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "870:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "870:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "861:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "936:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "911:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "911:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "911:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "951:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "961:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "951:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "643:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "654:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "666:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "674:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "682:6:111",
                            "type": ""
                          }
                        ],
                        "src": "589:383:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1078:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1088:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1100:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1111:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1096:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1096:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1088:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1130:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1141:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1123:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1123:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1123:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1047:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1058:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1069:4:111",
                            "type": ""
                          }
                        ],
                        "src": "977:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1203:85:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1266:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1275:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1278:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1268:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1268:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1268:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1226:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1237:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1244:18:111",
                                            "type": "",
                                            "value": "0xffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1233:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1233:30:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1223:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1223:41:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1216:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1216:49:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1213:69:111"
                            }
                          ]
                        },
                        "name": "validator_revert_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1192:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1159:129:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1379:227:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1425:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1434:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1437:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1427:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1427:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1427:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1400:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1409:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1396:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1396:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1421:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1392:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1392:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1389:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1450:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1473:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1460:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1460:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1450:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1492:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1522:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1533:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1518:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1518:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1505:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1505:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1496:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1570:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "1546:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1546:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1546:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1585:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1595:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1585:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1337:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1348:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1360:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1368:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1293:313:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1710:101:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1720:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1732:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1743:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1728:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1728:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1720:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1762:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1777:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1785:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1773:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1773:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1755:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1755:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1755:50:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1679:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1690:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1701:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1611:200:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1903:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1949:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1958:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1961:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1951:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1951:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1951:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1924:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1933:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1920:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1920:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1945:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1916:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1916:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1913:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1974:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1997:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1984:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1984:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1974:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2016:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2046:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2057:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2042:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2042:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2029:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2029:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2020:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2095:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2070:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2070:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2070:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2110:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2120:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1861:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1872:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1884:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1892:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1816:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2273:528:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2320:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2329:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2332:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2322:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2322:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2322:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2294:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2303:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2290:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2290:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2315:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2286:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2286:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2283:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2345:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2368:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2355:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2355:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2345:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2387:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2414:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2425:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2410:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2410:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2397:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2397:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2387:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2438:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2468:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2479:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2464:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2464:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2451:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2451:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2442:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2517:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2492:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2492:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2492:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2532:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2542:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2532:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2556:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2588:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2599:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2584:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2584:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2571:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2571:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2560:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2637:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2612:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2612:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2612:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2654:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2664:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2654:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2680:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2712:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2723:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2708:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2708:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2695:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2695:33:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2684:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2761:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "2737:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2737:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2737:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2778:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "2788:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2778:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2207:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2218:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2230:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2238:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2246:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2254:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2262:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2136:665:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2890:332:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2936:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2945:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2948:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2938:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2938:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2938:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2911:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2920:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2907:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2907:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2932:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2903:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2903:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2900:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2961:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2987:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2974:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2974:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2965:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3031:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3006:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3006:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3006:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3046:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3056:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3046:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3070:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3102:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3113:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3098:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3098:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3085:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3085:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3074:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3174:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3183:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3186:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3176:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3176:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3176:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3139:7:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "3162:7:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "3155:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3155:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3148:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3148:23:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3136:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3136:36:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3129:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3129:44:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3126:64:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3199:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3209:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3199:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2848:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2859:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2871:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2879:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2806:416:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3341:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3351:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3363:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3374:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3359:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3359:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3351:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3393:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3408:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3416:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3404:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3404:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3386:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3386:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3386:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3310:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3321:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3332:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3227:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3591:476:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3638:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3647:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3650:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3640:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3640:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3640:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3612:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3621:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3608:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3608:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3633:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3604:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3604:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3601:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3663:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3686:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3673:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3673:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3663:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3705:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3735:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3746:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3731:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3731:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3718:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3718:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3709:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3784:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3759:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3759:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3759:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3799:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3809:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3799:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3823:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3855:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3866:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3851:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3851:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3838:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3838:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3827:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3904:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3879:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3879:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3879:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3921:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3931:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3921:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3947:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3979:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3990:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3975:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3975:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3962:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3962:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3951:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4027:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "4003:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4003:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4003:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4044:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "4054:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4044:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_addresst_addresst_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3533:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3544:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3556:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3564:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3572:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3580:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3471:596:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4159:301:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4205:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4214:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4217:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4207:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4207:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4207:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4180:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4189:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4176:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4176:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4201:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4172:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4172:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4169:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4230:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4256:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4243:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4243:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4234:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4300:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4275:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4275:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4275:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4315:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4325:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4315:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4339:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4371:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4382:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4367:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4367:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4354:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4354:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4343:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4420:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4395:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4395:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4395:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4437:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4447:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4437:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4117:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4128:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4140:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4148:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4072:388:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4560:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4570:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4582:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4593:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4578:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4578:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4570:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4612:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "4637:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4630:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4630:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "4623:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4623:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4605:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4605:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4605:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4529:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4540:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4551:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4465:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4738:170:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4784:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4793:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4796:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4786:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4786:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4786:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4759:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4768:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4755:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4755:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4780:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4751:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4751:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4748:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4809:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4828:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4822:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4822:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4813:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4872:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4847:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4847:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4847:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4887:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4897:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4887:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4704:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4715:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4727:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4657:251:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5060:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5077:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5082:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5070:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5070:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5070:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5109:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5114:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5105:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5105:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5119:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5098:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5098:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5098:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5135:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5146:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5151:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5142:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5142:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5135:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "5028:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5033:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5041:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "5052:3:111",
                            "type": ""
                          }
                        ],
                        "src": "4913:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5245:169:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5291:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5300:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5303:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5293:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5293:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5293:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5266:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5275:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5262:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5262:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5287:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5258:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5258:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5255:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5316:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5335:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5329:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5329:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5320:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5378:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "5354:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5354:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5354:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5393:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5403:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5393:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint64_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5211:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5222:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5234:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5165:249:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function validator_revert_uint64(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_uint64(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_address(value_1)\n        value3 := value_1\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_uint64(value_2)\n        value4 := value_2\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_addresst_uint64(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_uint64(value_2)\n        value3 := value_2\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_decode_tuple_t_uint64_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint64(value)\n        value0 := value\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80635b0fc9c31161008c578063b83f866311610066578063b83f8663146101e2578063cf40882314610202578063e985e9c514610215578063f79fe5381461026e57600080fd5b80635b0fc9c3146101a95780635ef2c7f0146101bc578063a22cb465146101cf57600080fd5b806314ab9038116100bd57806314ab90381461015557806316a25cbd1461016a5780631896f70a1461019657600080fd5b80630178b8bf146100e457806302571be31461012157806306ab592314610134575b600080fd5b6100f76100f2366004610c03565b6102a6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f761012f366004610c03565b610396565b610147610142366004610c41565b61041f565b604051908152602001610118565b610168610163366004610c90565b610516565b005b61017d610178366004610c03565b610628565b60405167ffffffffffffffff9091168152602001610118565b6101686101a4366004610cc0565b61071d565b6101686101b7366004610cc0565b61082e565b6101686101ca366004610ce5565b6108f7565b6101686101dd366004610d44565b610919565b6002546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b610168610210366004610d77565b6109b0565b61025e610223366004610dca565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610118565b61025e61027c366004610c03565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff16151590565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff16610369576002546040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690630178b8bf906024015b602060405180830381865afa15801561033f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103639190610df8565b92915050565b60008281526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff16610363565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff16610416576002546040517f02571be30000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906302571be390602401610322565b610363826109cb565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff1633811480610484575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61048d57600080fd5b604080516020808201899052818301889052825180830384018152606090920190925280519101206104bf8186610a00565b60405173ffffffffffffffffffffffffffffffffffffffff86168152869088907fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e829060200160405180910390a39695505050505050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff163381148061057b575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61058457600080fd5b60405167ffffffffffffffff8416815284907f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa689060200160405180910390a25050600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff166106e4576002546040517f16a25cbd0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906316a25cbd90602401602060405180830381865afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103639190610e1c565b60008281526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610363565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff1633811480610782575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61078b57600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09060200160405180910390a2505060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff1633811480610893575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61089c57600080fd5b6108a68484610a00565b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2669060200160405180910390a250505050565b600061090486868661041f565b9050610911818484610a75565b505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109ba848461082e565b6109c5848383610a75565b50505050565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff163081036103635750600092915050565b8073ffffffffffffffffffffffffffffffffffffffff8116610a1f5750305b600083815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055505050565b505050565b60008381526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff838116911614610b2d576000838152602081815260409182902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155915191825284917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0910160405180910390a25b60008381526020819052604090206001015467ffffffffffffffff828116740100000000000000000000000000000000000000009092041614610a70576000838152602081815260409182902060010180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff861690810291909117909155915191825284917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68910160405180910390a2505050565b600060208284031215610c1557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c3e57600080fd5b50565b600080600060608486031215610c5657600080fd5b83359250602084013591506040840135610c6f81610c1c565b809150509250925092565b67ffffffffffffffff81168114610c3e57600080fd5b60008060408385031215610ca357600080fd5b823591506020830135610cb581610c7a565b809150509250929050565b60008060408385031215610cd357600080fd5b823591506020830135610cb581610c1c565b600080600080600060a08688031215610cfd57600080fd5b85359450602086013593506040860135610d1681610c1c565b92506060860135610d2681610c1c565b91506080860135610d3681610c7a565b809150509295509295909350565b60008060408385031215610d5757600080fd5b8235610d6281610c1c565b915060208301358015158114610cb557600080fd5b60008060008060808587031215610d8d57600080fd5b843593506020850135610d9f81610c1c565b92506040850135610daf81610c1c565b91506060850135610dbf81610c7a565b939692955090935050565b60008060408385031215610ddd57600080fd5b8235610de881610c1c565b91506020830135610cb581610c1c565b600060208284031215610e0a57600080fd5b8151610e1581610c1c565b9392505050565b600060208284031215610e2e57600080fd5b8151610e1581610c7a56fea264697066735822122097e8cd5aa8e425ee3abb5342ea13f535df0f38838dcc62dbcb72aeb8b5c2731d64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B0FC9C3 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xB83F8663 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB83F8663 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0xCF408823 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0xF79FE538 EQ PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5B0FC9C3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x5EF2C7F0 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AB9038 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x14AB9038 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x16A25CBD EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0x1896F70A EQ PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x178B8BF EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x2571BE3 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x6AB5923 EQ PUSH2 0x134 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x396 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0xC41 JUMP JUMPDEST PUSH2 0x41F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x163 CALLDATASIZE PUSH1 0x4 PUSH2 0xC90 JUMP JUMPDEST PUSH2 0x516 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17D PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x1A4 CALLDATASIZE PUSH1 0x4 PUSH2 0xCC0 JUMP JUMPDEST PUSH2 0x71D JUMP JUMPDEST PUSH2 0x168 PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCC0 JUMP JUMPDEST PUSH2 0x82E JUMP JUMPDEST PUSH2 0x168 PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0xCE5 JUMP JUMPDEST PUSH2 0x8F7 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0xD44 JUMP JUMPDEST PUSH2 0x919 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xF7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x210 CALLDATASIZE PUSH1 0x4 PUSH2 0xD77 JUMP JUMPDEST PUSH2 0x9B0 JUMP JUMPDEST PUSH2 0x25E PUSH2 0x223 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST PUSH2 0x25E PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x369 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x178B8BF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x178B8BF SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x33F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x363 SWAP2 SWAP1 PUSH2 0xDF8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x363 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x416 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH2 0x322 JUMP JUMPDEST PUSH2 0x363 DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x484 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP10 SWAP1 MSTORE DUP2 DUP4 ADD DUP9 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x4BF DUP2 DUP7 PUSH2 0xA00 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP7 SWAP1 DUP9 SWAP1 PUSH32 0xCE0457FE73731F824CC272376169235128C118B49D344817417C6D108D155E82 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x57B JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0x1D4F9BBFC9CAB89D66E1A1562F2233CCBF1308CB4F63DE2EAD5787ADDDB8FA68 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E4 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x16A25CBD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x16A25CBD SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x363 SWAP2 SWAP1 PUSH2 0xE1C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x363 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x782 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0x335721B01866DC23FBEE8B6B2C7B1E14D6F05C28CD35A2C934239F94095602A0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x893 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A6 DUP5 DUP5 PUSH2 0xA00 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP5 SWAP1 PUSH32 0xD4735D920B0F87494915F556DD9B54C8F309026070CAEA5C737245152564D266 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x904 DUP7 DUP7 DUP7 PUSH2 0x41F JUMP JUMPDEST SWAP1 POP PUSH2 0x911 DUP2 DUP5 DUP5 PUSH2 0xA75 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x9BA DUP5 DUP5 PUSH2 0x82E JUMP JUMPDEST PUSH2 0x9C5 DUP5 DUP4 DUP4 PUSH2 0xA75 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP2 SUB PUSH2 0x363 JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xA1F JUMPI POP ADDRESS JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0xB2D JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE DUP5 SWAP2 PUSH32 0x335721B01866DC23FBEE8B6B2C7B1E14D6F05C28CD35A2C934239F94095602A0 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV AND EQ PUSH2 0xA70 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH8 0xFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE DUP5 SWAP2 PUSH32 0x1D4F9BBFC9CAB89D66E1A1562F2233CCBF1308CB4F63DE2EAD5787ADDDB8FA68 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xC6F DUP2 PUSH2 0xC1C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xCB5 DUP2 PUSH2 0xC7A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xCB5 DUP2 PUSH2 0xC1C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0xD16 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xD26 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0xD36 DUP2 PUSH2 0xC7A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xD62 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xD9F DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0xDAF DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0xDBF DUP2 PUSH2 0xC7A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xDE8 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xCB5 DUP2 PUSH2 0xC1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE15 DUP2 PUSH2 0xC1C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE15 DUP2 PUSH2 0xC7A JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0xE8 0xCD GAS 0xA8 0xE4 0x25 0xEE GASPRICE 0xBB MSTORE8 TIMESTAMP 0xEA SGT CREATE2 CALLDATALOAD 0xDF 0xF CODESIZE DUP4 DUP14 0xCC PUSH3 0xDBCB72 0xAE 0xB8 0xB5 0xC2 PUSH20 0x1D64736F6C634300081100330000000000000000 ",
              "sourceMap": "113:1510:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;491:200;;;;;;:::i;:::-;;:::i;:::-;;;375:42:111;363:55;;;345:74;;333:2;318:18;491:200:56;;;;;;;;851:191;;;;;;:::i;:::-;;:::i;2508:335:55:-;;;;;;:::i;:::-;;:::i;:::-;;;1123:25:111;;;1111:2;1096:18;2508:335:55;977:177:111;3388:191:55;;;;;;:::i;:::-;;:::i;:::-;;1210:184:56;;;;;;:::i;:::-;;:::i;:::-;;;1785:18:111;1773:31;;;1755:50;;1743:2;1728:18;1210:184:56;1611:200:111;3018:222:55;;;;;;:::i;:::-;;:::i;1997:199::-;;;;;;:::i;:::-;;:::i;1464:294::-;;;;;;:::i;:::-;;:::i;3913:234::-;;;;;;:::i;:::-;;:::i;167:14:56:-;;;;;;;;;928:229:55;;;;;;:::i;:::-;;:::i;5870:199::-;;;;;;:::i;:::-;6036:16;;;;6009:4;6036:16;;;:9;:16;;;;;;;;:26;;;;;;;;;;;;;;;5870:199;;;;4630:14:111;;4623:22;4605:41;;4593:2;4578:18;5870:199:55;4465:187:111;5374:183:55;;;;;;:::i;:::-;5488:4;5515:13;;;;;;;;;;:19;:35;:19;:35;;;5374:183;491:200:56;553:7;5515:13:55;;;;;;;;;;:19;:35;:19;572:75:56;;618:3;;:18;;;;;;;;1123:25:111;;;618:3:56;;;;;:12;;1096:18:111;;618::56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;611:25;491:200;-1:-1:-1;;491:200:56:o;572:75::-;4863:7:55;4893:13;;;;;;;;;;:22;;;;;664:20:56;4753:169:55;851:191:56;910:7;5515:13:55;;;;;;;;;;:19;:35;:19;929:72:56;;975:3;;:15;;;;;;;;1123:25:111;;;975:3:56;;;;;:9;;1096:18:111;;975:15:56;977:177:111;929:72:56;1018:17;1030:4;1018:11;:17::i;2508:335:55:-;2657:7;446:13;;;;;;;;;;:19;2642:4;;446:19;;492:10;483:19;;;:51;;-1:-1:-1;506:16:55;;;;;;;:9;:16;;;;;;;;523:10;506:28;;;;;;;;;;483:51;475:60;;;;;;2704:29:::1;::::0;;::::1;::::0;;::::1;5070:19:111::0;;;5105:12;;;5098:28;;;2704:29:55;;;;;;;;;5142:12:111;;;;2704:29:55;;;2694:40;;;::::1;::::0;2744:25:::1;2694:40:::0;2763:5;2744:9:::1;:25::i;:::-;2784:28;::::0;375:42:111;363:55;;345:74;;2799:5:55;;2793:4;;2784:28:::1;::::0;333:2:111;318:18;2784:28:55::1;;;;;;;2829:7:::0;2508:335;-1:-1:-1;;;;;;2508:335:55:o;3388:191::-;430:13;446;;;;;;;;;;:19;3497:4;;446:19;;492:10;483:19;;;:51;;-1:-1:-1;506:16:55;;;;;;;:9;:16;;;;;;;;523:10;506:28;;;;;;;;;;483:51;475:60;;;;;;3522:17:::1;::::0;1785:18:111;1773:31;;1755:50;;3529:4:55;;3522:17:::1;::::0;1743:2:111;1728:18;3522:17:55::1;;;;;;;-1:-1:-1::0;;3549:7:55::1;:13:::0;;;::::1;::::0;;;;;;;:17:::1;;:23:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3388:191::o;1210:184:56:-;1267:6;5515:13:55;;;;;;;;;;:19;:35;:19;1285:70:56;;1331:3;;:13;;;;;;;;1123:25:111;;;1331:3:56;;;;;:7;;1096:18:111;;1331:13:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1285:70::-;5155:6:55;5180:13;;;;;;;;;;:17;;;;;;;;1372:15:56;5090:114:55;3018:222;430:13;446;;;;;;;;;;:19;3138:4;;446:19;;492:10;483:19;;;:51;;-1:-1:-1;506:16:55;;;;;;;:9;:16;;;;;;;;523:10;506:28;;;;;;;;;;483:51;475:60;;;;;;3163:27:::1;::::0;375:42:111;363:55;;345:74;;3175:4:55;;3163:27:::1;::::0;333:2:111;318:18;3163:27:55::1;;;;;;;-1:-1:-1::0;;3200:7:55::1;:13:::0;;;::::1;::::0;;;;;;;:22:::1;;:33:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;3018:222::o;1997:199::-;430:13;446;;;;;;;;;;:19;2111:4;;446:19;;492:10;483:19;;;:51;;-1:-1:-1;506:16:55;;;;;;;:9;:16;;;;;;;;523:10;506:28;;;;;;;;;;483:51;475:60;;;;;;2131:22:::1;2141:4;2147:5;2131:9;:22::i;:::-;2168:21;::::0;375:42:111;363:55;;345:74;;2177:4:55;;2168:21:::1;::::0;333:2:111;318:18;2168:21:55::1;;;;;;;420:133:::0;1997:199;;;:::o;1464:294::-;1646:15;1664:35;1680:4;1686:5;1693;1664:15;:35::i;:::-;1646:53;;1709:42;1728:7;1737:8;1747:3;1709:18;:42::i;:::-;1636:122;1464:294;;;;;:::o;3913:234::-;4047:10;4037:21;;;;:9;:21;;;;;;;;;:31;;;;;;;;;;;;:42;;;;;;;;;;;;;4094:46;;4605:41:111;;;4037:31:55;;4047:10;4094:46;;4578:18:111;4094:46:55;;;;;;;3913:234;;:::o;928:229::-;1080:21;1089:4;1095:5;1080:8;:21::i;:::-;1111:39;1130:4;1136:8;1146:3;1111:18;:39::i;:::-;928:229;;;;:::o;4307:273::-;4414:7;4452:13;;;;;;;;;;:19;;;4501:4;4485:21;;4481:71;;-1:-1:-1;4537:3:55;;4307:273;-1:-1:-1;;4307:273:55:o;1400:221:56:-;1491:5;1510:20;;;1506:71;;-1:-1:-1;1561:4:56;1506:71;6150:7:55;:13;;;;;;;;;;:27;;;;;;;;;;1466:155:56;1400:221;;:::o;1587:27::-;1466:155;1400:221;;:::o;6190:395:55:-;6327:7;:13;;;;;;;;;;:22;;;;6315:34;;;6327:22;;6315:34;6311:144;;6365:7;:13;;;;;;;;;;;;:22;;:33;;;;;;;;;;;;;6417:27;;345:74:111;;;6365:13:55;;6417:27;;318:18:111;6417:27:55;;;;;;;6311:144;6476:7;:13;;;;;;;;;;:17;;;;6469:24;;;6476:17;;;;;6469:24;6465:114;;6509:7;:13;;;;;;;;;;;;:17;;:23;;;;;;;;;;;;;;;;;;6551:17;;1755:50:111;;;6509:13:55;;6551:17;;1728:18:111;6551:17:55;;;;;;;6190:395;;;:::o;14:180:111:-;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:111;;14:180;-1:-1:-1;14:180:111:o;430:154::-;516:42;509:5;505:54;498:5;495:65;485:93;;574:1;571;564:12;485:93;430:154;:::o;589:383::-;666:6;674;682;735:2;723:9;714:7;710:23;706:32;703:52;;;751:1;748;741:12;703:52;787:9;774:23;764:33;;844:2;833:9;829:18;816:32;806:42;;898:2;887:9;883:18;870:32;911:31;936:5;911:31;:::i;:::-;961:5;951:15;;;589:383;;;;;:::o;1159:129::-;1244:18;1237:5;1233:30;1226:5;1223:41;1213:69;;1278:1;1275;1268:12;1293:313;1360:6;1368;1421:2;1409:9;1400:7;1396:23;1392:32;1389:52;;;1437:1;1434;1427:12;1389:52;1473:9;1460:23;1450:33;;1533:2;1522:9;1518:18;1505:32;1546:30;1570:5;1546:30;:::i;:::-;1595:5;1585:15;;;1293:313;;;;;:::o;1816:315::-;1884:6;1892;1945:2;1933:9;1924:7;1920:23;1916:32;1913:52;;;1961:1;1958;1951:12;1913:52;1997:9;1984:23;1974:33;;2057:2;2046:9;2042:18;2029:32;2070:31;2095:5;2070:31;:::i;2136:665::-;2230:6;2238;2246;2254;2262;2315:3;2303:9;2294:7;2290:23;2286:33;2283:53;;;2332:1;2329;2322:12;2283:53;2368:9;2355:23;2345:33;;2425:2;2414:9;2410:18;2397:32;2387:42;;2479:2;2468:9;2464:18;2451:32;2492:31;2517:5;2492:31;:::i;:::-;2542:5;-1:-1:-1;2599:2:111;2584:18;;2571:32;2612:33;2571:32;2612:33;:::i;:::-;2664:7;-1:-1:-1;2723:3:111;2708:19;;2695:33;2737:32;2695:33;2737:32;:::i;:::-;2788:7;2778:17;;;2136:665;;;;;;;;:::o;2806:416::-;2871:6;2879;2932:2;2920:9;2911:7;2907:23;2903:32;2900:52;;;2948:1;2945;2938:12;2900:52;2987:9;2974:23;3006:31;3031:5;3006:31;:::i;:::-;3056:5;-1:-1:-1;3113:2:111;3098:18;;3085:32;3155:15;;3148:23;3136:36;;3126:64;;3186:1;3183;3176:12;3471:596;3556:6;3564;3572;3580;3633:3;3621:9;3612:7;3608:23;3604:33;3601:53;;;3650:1;3647;3640:12;3601:53;3686:9;3673:23;3663:33;;3746:2;3735:9;3731:18;3718:32;3759:31;3784:5;3759:31;:::i;:::-;3809:5;-1:-1:-1;3866:2:111;3851:18;;3838:32;3879:33;3838:32;3879:33;:::i;:::-;3931:7;-1:-1:-1;3990:2:111;3975:18;;3962:32;4003;3962;4003;:::i;:::-;3471:596;;;;-1:-1:-1;3471:596:111;;-1:-1:-1;;3471:596:111:o;4072:388::-;4140:6;4148;4201:2;4189:9;4180:7;4176:23;4172:32;4169:52;;;4217:1;4214;4207:12;4169:52;4256:9;4243:23;4275:31;4300:5;4275:31;:::i;:::-;4325:5;-1:-1:-1;4382:2:111;4367:18;;4354:32;4395:33;4354:32;4395:33;:::i;4657:251::-;4727:6;4780:2;4768:9;4759:7;4755:23;4751:32;4748:52;;;4796:1;4793;4786:12;4748:52;4828:9;4822:16;4847:31;4872:5;4847:31;:::i;:::-;4897:5;4657:251;-1:-1:-1;;;4657:251:111:o;5165:249::-;5234:6;5287:2;5275:9;5266:7;5262:23;5258:32;5255:52;;;5303:1;5300;5293:12;5255:52;5335:9;5329:16;5354:30;5378:5;5354:30;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "739000",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "isApprovedForAll(address,address)": "infinite",
                "old()": "2324",
                "owner(bytes32)": "infinite",
                "recordExists(bytes32)": "2547",
                "resolver(bytes32)": "infinite",
                "setApprovalForAll(address,bool)": "26619",
                "setOwner(bytes32,address)": "30632",
                "setRecord(bytes32,address,address,uint64)": "infinite",
                "setResolver(bytes32,address)": "30627",
                "setSubnodeOwner(bytes32,bytes32,address)": "31298",
                "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": "infinite",
                "setTTL(bytes32,uint64)": "30597",
                "ttl(bytes32)": "infinite"
              },
              "internal": {
                "_setOwner(bytes32,address)": "24347"
              }
            },
            "methodIdentifiers": {
              "isApprovedForAll(address,address)": "e985e9c5",
              "old()": "b83f8663",
              "owner(bytes32)": "02571be3",
              "recordExists(bytes32)": "f79fe538",
              "resolver(bytes32)": "0178b8bf",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setOwner(bytes32,address)": "5b0fc9c3",
              "setRecord(bytes32,address,address,uint64)": "cf408823",
              "setResolver(bytes32,address)": "1896f70a",
              "setSubnodeOwner(bytes32,bytes32,address)": "06ab5923",
              "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": "5ef2c7f0",
              "setTTL(bytes32,uint64)": "14ab9038",
              "ttl(bytes32)": "16a25cbd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"_old\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NewOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"NewResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"NewTTL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"old\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"recordExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"ttl\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructs a new ENS registrar.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Query if an address is an authorized operator for another address.\",\"params\":{\"operator\":\"The address that acts on behalf of the owner.\",\"owner\":\"The address that owns the records.\"},\"returns\":{\"_0\":\"True if `operator` is an approved operator for `owner`, false otherwise.\"}},\"owner(bytes32)\":{\"details\":\"Returns the address that owns the specified node.\",\"params\":{\"node\":\"The specified node.\"},\"returns\":{\"_0\":\"address of the owner.\"}},\"recordExists(bytes32)\":{\"details\":\"Returns whether a record has been imported to the registry.\",\"params\":{\"node\":\"The specified node.\"},\"returns\":{\"_0\":\"Bool if record exists\"}},\"resolver(bytes32)\":{\"details\":\"Returns the address of the resolver for the specified node.\",\"params\":{\"node\":\"The specified node.\"},\"returns\":{\"_0\":\"address of the resolver.\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\",\"params\":{\"approved\":\"True if the operator is approved, false to revoke approval.\",\"operator\":\"Address to add to the set of authorized operators.\"}},\"setOwner(bytes32,address)\":{\"details\":\"Transfers ownership of a node to a new address. May only be called by the current owner of the node.\",\"params\":{\"node\":\"The node to transfer ownership of.\",\"owner\":\"The address of the new owner.\"}},\"setRecord(bytes32,address,address,uint64)\":{\"details\":\"Sets the record for a node.\",\"params\":{\"node\":\"The node to update.\",\"owner\":\"The address of the new owner.\",\"resolver\":\"The address of the resolver.\",\"ttl\":\"The TTL in seconds.\"}},\"setResolver(bytes32,address)\":{\"details\":\"Sets the resolver address for the specified node.\",\"params\":{\"node\":\"The node to update.\",\"resolver\":\"The address of the resolver.\"}},\"setSubnodeOwner(bytes32,bytes32,address)\":{\"details\":\"Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\",\"params\":{\"label\":\"The hash of the label specifying the subnode.\",\"node\":\"The parent node.\",\"owner\":\"The address of the new owner.\"}},\"setSubnodeRecord(bytes32,bytes32,address,address,uint64)\":{\"details\":\"Sets the record for a subnode.\",\"params\":{\"label\":\"The hash of the label specifying the subnode.\",\"node\":\"The parent node.\",\"owner\":\"The address of the new owner.\",\"resolver\":\"The address of the resolver.\",\"ttl\":\"The TTL in seconds.\"}},\"setTTL(bytes32,uint64)\":{\"details\":\"Sets the TTL for the specified node.\",\"params\":{\"node\":\"The node to update.\",\"ttl\":\"The TTL in seconds.\"}},\"ttl(bytes32)\":{\"details\":\"Returns the TTL of a node, and any records associated with it.\",\"params\":{\"node\":\"The specified node.\"},\"returns\":{\"_0\":\"ttl of the node.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"The ENS registry contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/ENSRegistryWithFallback.sol\":\"ENSRegistryWithFallback\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/ENSRegistry.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\n\\n/**\\n * The ENS registry contract.\\n */\\ncontract ENSRegistry is ENS {\\n    struct Record {\\n        address owner;\\n        address resolver;\\n        uint64 ttl;\\n    }\\n\\n    mapping(bytes32 => Record) records;\\n    mapping(address => mapping(address => bool)) operators;\\n\\n    // Permits modifications only by the owner of the specified node.\\n    modifier authorised(bytes32 node) {\\n        address owner = records[node].owner;\\n        require(owner == msg.sender || operators[owner][msg.sender]);\\n        _;\\n    }\\n\\n    /**\\n     * @dev Constructs a new ENS registry.\\n     */\\n    constructor() public {\\n        records[0x0].owner = msg.sender;\\n    }\\n\\n    /**\\n     * @dev Sets the record for a node.\\n     * @param node The node to update.\\n     * @param owner The address of the new owner.\\n     * @param resolver The address of the resolver.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external virtual override {\\n        setOwner(node, owner);\\n        _setResolverAndTTL(node, resolver, ttl);\\n    }\\n\\n    /**\\n     * @dev Sets the record for a subnode.\\n     * @param node The parent node.\\n     * @param label The hash of the label specifying the subnode.\\n     * @param owner The address of the new owner.\\n     * @param resolver The address of the resolver.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external virtual override {\\n        bytes32 subnode = setSubnodeOwner(node, label, owner);\\n        _setResolverAndTTL(subnode, resolver, ttl);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of a node to a new address. May only be called by the current owner of the node.\\n     * @param node The node to transfer ownership of.\\n     * @param owner The address of the new owner.\\n     */\\n    function setOwner(bytes32 node, address owner)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        _setOwner(node, owner);\\n        emit Transfer(node, owner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\\n     * @param node The parent node.\\n     * @param label The hash of the label specifying the subnode.\\n     * @param owner The address of the new owner.\\n     */\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) public virtual override authorised(node) returns (bytes32) {\\n        bytes32 subnode = keccak256(abi.encodePacked(node, label));\\n        _setOwner(subnode, owner);\\n        emit NewOwner(node, label, owner);\\n        return subnode;\\n    }\\n\\n    /**\\n     * @dev Sets the resolver address for the specified node.\\n     * @param node The node to update.\\n     * @param resolver The address of the resolver.\\n     */\\n    function setResolver(bytes32 node, address resolver)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        emit NewResolver(node, resolver);\\n        records[node].resolver = resolver;\\n    }\\n\\n    /**\\n     * @dev Sets the TTL for the specified node.\\n     * @param node The node to update.\\n     * @param ttl The TTL in seconds.\\n     */\\n    function setTTL(bytes32 node, uint64 ttl)\\n        public\\n        virtual\\n        override\\n        authorised(node)\\n    {\\n        emit NewTTL(node, ttl);\\n        records[node].ttl = ttl;\\n    }\\n\\n    /**\\n     * @dev Enable or disable approval for a third party (\\\"operator\\\") to manage\\n     *  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\\n     * @param operator Address to add to the set of authorized operators.\\n     * @param approved True if the operator is approved, false to revoke approval.\\n     */\\n    function setApprovalForAll(address operator, bool approved)\\n        external\\n        virtual\\n        override\\n    {\\n        operators[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Returns the address that owns the specified node.\\n     * @param node The specified node.\\n     * @return address of the owner.\\n     */\\n    function owner(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        address addr = records[node].owner;\\n        if (addr == address(this)) {\\n            return address(0x0);\\n        }\\n\\n        return addr;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the resolver for the specified node.\\n     * @param node The specified node.\\n     * @return address of the resolver.\\n     */\\n    function resolver(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        return records[node].resolver;\\n    }\\n\\n    /**\\n     * @dev Returns the TTL of a node, and any records associated with it.\\n     * @param node The specified node.\\n     * @return ttl of the node.\\n     */\\n    function ttl(bytes32 node) public view virtual override returns (uint64) {\\n        return records[node].ttl;\\n    }\\n\\n    /**\\n     * @dev Returns whether a record has been imported to the registry.\\n     * @param node The specified node.\\n     * @return Bool if record exists\\n     */\\n    function recordExists(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return records[node].owner != address(0x0);\\n    }\\n\\n    /**\\n     * @dev Query if an address is an authorized operator for another address.\\n     * @param owner The address that owns the records.\\n     * @param operator The address that acts on behalf of the owner.\\n     * @return True if `operator` is an approved operator for `owner`, false otherwise.\\n     */\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return operators[owner][operator];\\n    }\\n\\n    function _setOwner(bytes32 node, address owner) internal virtual {\\n        records[node].owner = owner;\\n    }\\n\\n    function _setResolverAndTTL(\\n        bytes32 node,\\n        address resolver,\\n        uint64 ttl\\n    ) internal {\\n        if (resolver != records[node].resolver) {\\n            records[node].resolver = resolver;\\n            emit NewResolver(node, resolver);\\n        }\\n\\n        if (ttl != records[node].ttl) {\\n            records[node].ttl = ttl;\\n            emit NewTTL(node, ttl);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x047874111ed16d3add08a3bf6323012655e22685b8007eab45f51a074ae5793a\"},\"contracts/registry/ENSRegistryWithFallback.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\nimport \\\"./ENSRegistry.sol\\\";\\n\\n/**\\n * The ENS registry contract.\\n */\\ncontract ENSRegistryWithFallback is ENSRegistry {\\n    ENS public old;\\n\\n    /**\\n     * @dev Constructs a new ENS registrar.\\n     */\\n    constructor(ENS _old) public ENSRegistry() {\\n        old = _old;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the resolver for the specified node.\\n     * @param node The specified node.\\n     * @return address of the resolver.\\n     */\\n    function resolver(bytes32 node) public view override returns (address) {\\n        if (!recordExists(node)) {\\n            return old.resolver(node);\\n        }\\n\\n        return super.resolver(node);\\n    }\\n\\n    /**\\n     * @dev Returns the address that owns the specified node.\\n     * @param node The specified node.\\n     * @return address of the owner.\\n     */\\n    function owner(bytes32 node) public view override returns (address) {\\n        if (!recordExists(node)) {\\n            return old.owner(node);\\n        }\\n\\n        return super.owner(node);\\n    }\\n\\n    /**\\n     * @dev Returns the TTL of a node, and any records associated with it.\\n     * @param node The specified node.\\n     * @return ttl of the node.\\n     */\\n    function ttl(bytes32 node) public view override returns (uint64) {\\n        if (!recordExists(node)) {\\n            return old.ttl(node);\\n        }\\n\\n        return super.ttl(node);\\n    }\\n\\n    function _setOwner(bytes32 node, address owner) internal override {\\n        address addr = owner;\\n        if (addr == address(0x0)) {\\n            addr = address(this);\\n        }\\n\\n        super._setOwner(node, addr);\\n    }\\n}\\n\",\"keccak256\":\"0x58c7033f76995a8b0b5c3298da29c1fa7c43b95e54e224045dd7cb81177ceaa6\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 12175,
                "contract": "contracts/registry/ENSRegistryWithFallback.sol:ENSRegistryWithFallback",
                "label": "records",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_struct(Record)12170_storage)"
              },
              {
                "astId": 12181,
                "contract": "contracts/registry/ENSRegistryWithFallback.sol:ENSRegistryWithFallback",
                "label": "operators",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 12591,
                "contract": "contracts/registry/ENSRegistryWithFallback.sol:ENSRegistryWithFallback",
                "label": "old",
                "offset": 0,
                "slot": "2",
                "type": "t_contract(ENS)12157"
              }
            ],
            "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(ENS)12157": {
                "encoding": "inplace",
                "label": "contract ENS",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_bytes32,t_struct(Record)12170_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => struct ENSRegistry.Record)",
                "numberOfBytes": "32",
                "value": "t_struct(Record)12170_storage"
              },
              "t_struct(Record)12170_storage": {
                "encoding": "inplace",
                "label": "struct ENSRegistry.Record",
                "members": [
                  {
                    "astId": 12165,
                    "contract": "contracts/registry/ENSRegistryWithFallback.sol:ENSRegistryWithFallback",
                    "label": "owner",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address"
                  },
                  {
                    "astId": 12167,
                    "contract": "contracts/registry/ENSRegistryWithFallback.sol:ENSRegistryWithFallback",
                    "label": "resolver",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_address"
                  },
                  {
                    "astId": 12169,
                    "contract": "contracts/registry/ENSRegistryWithFallback.sol:ENSRegistryWithFallback",
                    "label": "ttl",
                    "offset": 20,
                    "slot": "1",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "The ENS registry contract.",
            "version": 1
          }
        }
      },
      "contracts/registry/FIFSRegistrar.sol": {
        "FIFSRegistrar": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "ensAddr",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "register",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "constructor": {
                "params": {
                  "ensAddr": "The address of the ENS registry.",
                  "node": "The node that this registrar administers."
                }
              },
              "register(bytes32,address)": {
                "params": {
                  "label": "The hash of the label to register.",
                  "owner": "The address of the new owner."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_12779": {
                  "entryPoint": null,
                  "id": 12779,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory": {
                  "entryPoint": 88,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:380:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "125:253:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "171:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "180:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "183:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "173:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "173:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "173:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "146:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "155:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "142:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "142:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "167:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "138:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "138:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "135:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "196:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "215:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "209:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "209:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "200:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "288:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "297:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "300:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "290:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "290:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "290:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "247:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "258:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "273:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "278:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "269:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "269:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "282:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "265:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "265:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "254:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "254:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "244:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "244:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "237:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "237:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "234:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "313:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "323:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "313:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "337:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "357:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "368:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "353:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "353:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "347:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "347:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "337:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "83:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "94:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "106:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "114:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:364:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        value1 := mload(add(headStart, 32))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161036038038061036083398101604081905261002f91610058565b600080546001600160a01b0319166001600160a01b039390931692909217909155600155610092565b6000806040838503121561006b57600080fd5b82516001600160a01b038116811461008257600080fd5b6020939093015192949293505050565b6102bf806100a16000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d22057a914610030575b600080fd5b61004361003e36600461021c565b610045565b005b6000805460015460408051602080820193909352808201879052815180820383018152606082019283905280519301929092207f02571be300000000000000000000000000000000000000000000000000000000909152606482015284929173ffffffffffffffffffffffffffffffffffffffff16906302571be390608401602060405180830381865afa1580156100e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610105919061024c565b905073ffffffffffffffffffffffffffffffffffffffff8116158061013f575073ffffffffffffffffffffffffffffffffffffffff811633145b61014857600080fd5b6000546001546040517f06ab592300000000000000000000000000000000000000000000000000000000815260048101919091526024810186905273ffffffffffffffffffffffffffffffffffffffff8581166044830152909116906306ab5923906064016020604051808303816000875af11580156101cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f09190610270565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461021957600080fd5b50565b6000806040838503121561022f57600080fd5b823591506020830135610241816101f7565b809150509250929050565b60006020828403121561025e57600080fd5b8151610269816101f7565b9392505050565b60006020828403121561028257600080fd5b505191905056fea26469706673582212202717359a25a31e360acd5fe66036cdf202abe8a5cb4baa049ceb19a76ee65d5c64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x360 CODESIZE SUB DUP1 PUSH2 0x360 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x58 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SSTORE PUSH2 0x92 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH2 0x2BF DUP1 PUSH2 0xA1 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD22057A9 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x21C JUMP JUMPDEST PUSH2 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP3 SUB DUP4 ADD DUP2 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE DUP1 MLOAD SWAP4 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 MSTORE PUSH1 0x64 DUP3 ADD MSTORE DUP5 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x84 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x105 SWAP2 SWAP1 PUSH2 0x24C JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 PUSH2 0x13F JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ JUMPDEST PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F0 SWAP2 SWAP1 PUSH2 0x270 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x219 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x241 DUP2 PUSH2 0x1F7 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x269 DUP2 PUSH2 0x1F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 OR CALLDATALOAD SWAP11 0x25 LOG3 0x1E CALLDATASIZE EXP 0xCD 0x5F 0xE6 PUSH1 0x36 0xCD CALLCODE MUL 0xAB 0xE8 0xA5 0xCB 0x4B 0xAA DIV SWAP13 0xEB NOT 0xA7 PUSH15 0xE65D5C64736F6C6343000811003300 ",
              "sourceMap": "131:899:57:-:0;;;594:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;650:3;:13;;-1:-1:-1;;;;;;650:13:57;-1:-1:-1;;;;;650:13:57;;;;;;;;;;;-1:-1:-1;673:15:57;131:899;;14:364:111;106:6;114;167:2;155:9;146:7;142:23;138:32;135:52;;;183:1;180;173:12;135:52;209:16;;-1:-1:-1;;;;;254:31:111;;244:42;;234:70;;300:1;297;290:12;234:70;368:2;353:18;;;;347:25;323:5;;347:25;;-1:-1:-1;;;14:364:111:o;:::-;131:899:57;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@register_12799": {
                  "entryPoint": 69,
                  "id": 12799,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 588,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 624,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 540,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "validator_revert_address": {
                  "entryPoint": 503,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1742:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "59:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "146:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "155:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "158:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "148:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "148:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "148:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "82:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "93:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "100:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "89:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "89:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "79:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "79:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "72:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "72:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "69:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "48:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:154:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "260:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "306:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "315:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "318:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "308:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "308:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "308:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "281:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "290:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "277:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "277:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "302:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "273:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "273:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "270:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "331:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "354:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "341:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "341:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "331:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "373:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "403:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "414:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "399:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "399:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "386:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "386:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "377:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "452:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "427:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "427:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "427:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "467:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "477:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "467:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "218:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "229:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "241:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "249:6:111",
                            "type": ""
                          }
                        ],
                        "src": "173:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "640:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "657:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "662:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "650:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "650:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "650:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "689:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "694:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "685:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "685:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "699:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "678:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "678:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "678:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "715:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "726:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "731:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "722:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "722:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "715:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "608:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "613:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "621:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "632:3:111",
                            "type": ""
                          }
                        ],
                        "src": "493:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "846:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "856:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "868:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "879:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "864:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "864:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "898:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "909:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "891:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "891:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "891:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "815:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "826:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "837:4:111",
                            "type": ""
                          }
                        ],
                        "src": "745:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1008:170:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1054:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1063:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1066:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1056:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1056:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1056:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1029:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1038:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1025:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1025:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1050:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1021:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1021:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1018:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1079:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1098:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1092:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1092:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1083:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1142:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1117:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1117:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1117:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1157:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1167:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1157:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "974:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "985:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "997:6:111",
                            "type": ""
                          }
                        ],
                        "src": "927:251:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1340:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1350:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1362:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1373:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1358:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1358:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1350:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1392:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1403:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1385:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1385:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1385:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1430:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1441:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1426:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1426:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1446:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1419:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1419:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1419:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1473:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1484:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1469:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1469:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1493:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1501:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1489:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1489:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1462:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1462:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1462:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1293:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1304:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1312:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1320:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1331:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1183:368:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1637:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1683:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1692:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1695:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1685:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1685:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1685:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1658:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1667:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1654:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1654:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1679:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1650:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1650:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1647:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1708:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1724:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1718:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1718:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1708:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1603:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1614:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1626:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1556:184:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d22057a914610030575b600080fd5b61004361003e36600461021c565b610045565b005b6000805460015460408051602080820193909352808201879052815180820383018152606082019283905280519301929092207f02571be300000000000000000000000000000000000000000000000000000000909152606482015284929173ffffffffffffffffffffffffffffffffffffffff16906302571be390608401602060405180830381865afa1580156100e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610105919061024c565b905073ffffffffffffffffffffffffffffffffffffffff8116158061013f575073ffffffffffffffffffffffffffffffffffffffff811633145b61014857600080fd5b6000546001546040517f06ab592300000000000000000000000000000000000000000000000000000000815260048101919091526024810186905273ffffffffffffffffffffffffffffffffffffffff8581166044830152909116906306ab5923906064016020604051808303816000875af11580156101cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f09190610270565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461021957600080fd5b50565b6000806040838503121561022f57600080fd5b823591506020830135610241816101f7565b809150509250929050565b60006020828403121561025e57600080fd5b8151610269816101f7565b9392505050565b60006020828403121561028257600080fd5b505191905056fea26469706673582212202717359a25a31e360acd5fe66036cdf202abe8a5cb4baa049ceb19a76ee65d5c64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD22057A9 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x21C JUMP JUMPDEST PUSH2 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP3 SUB DUP4 ADD DUP2 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE DUP1 MLOAD SWAP4 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 MSTORE PUSH1 0x64 DUP3 ADD MSTORE DUP5 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x84 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x105 SWAP2 SWAP1 PUSH2 0x24C JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 PUSH2 0x13F JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ JUMPDEST PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F0 SWAP2 SWAP1 PUSH2 0x270 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x219 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x241 DUP2 PUSH2 0x1F7 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x269 DUP2 PUSH2 0x1F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 OR CALLDATALOAD SWAP11 0x25 LOG3 0x1E CALLDATASIZE EXP 0xCD 0x5F 0xE6 PUSH1 0x36 0xCD CALLCODE MUL 0xAB 0xE8 0xA5 0xCB 0x4B 0xAA DIV SWAP13 0xEB NOT 0xA7 PUSH15 0xE65D5C64736F6C6343000811003300 ",
              "sourceMap": "131:899:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:133;;;;;;:::i;:::-;;:::i;:::-;;;241:20;264:3;;;314:8;297:33;;;;;;;650:19:111;;;;685:12;;;678:28;;;297:33:57;;;;;;;;;722:12:111;;;297:33:57;;;;287:44;;;;;;;;264:77;;;;;;;891:25:111;678:28;;241:20:57;264:3;;;:9;;864:18:111;;264:77:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;241:100;-1:-1:-1;359:28:57;;;;;:58;;-1:-1:-1;391:26:57;;;407:10;391:26;359:58;351:67;;;;;;978:3:::1;::::0;;998:8;978:43:::1;::::0;;;;::::1;::::0;::::1;1385:25:111::0;;;;1426:18;;;1419:34;;;978:3:57::1;1489:55:111::0;;;1469:18;;;1462:83;978:3:57;;::::1;::::0;:19:::1;::::0;1358:18:111;;978:43:57::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;231:205:::0;895:133;;;:::o;14:154:111:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:315::-;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;354:9;341:23;331:33;;414:2;403:9;399:18;386:32;427:31;452:5;427:31;:::i;:::-;477:5;467:15;;;173:315;;;;;:::o;927:251::-;997:6;1050:2;1038:9;1029:7;1025:23;1021:32;1018:52;;;1066:1;1063;1056:12;1018:52;1098:9;1092:16;1117:31;1142:5;1117:31;:::i;:::-;1167:5;927:251;-1:-1:-1;;;927:251:111:o;1556:184::-;1626:6;1679:2;1667:9;1658:7;1654:23;1650:32;1647:52;;;1695:1;1692;1685:12;1647:52;-1:-1:-1;1718:16:111;;1556:184;-1:-1:-1;1556:184:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "140600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "register(bytes32,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "register(bytes32,address)": "d22057a9"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"ensAddr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"ensAddr\":\"The address of the ENS registry.\",\"node\":\"The node that this registrar administers.\"}},\"register(bytes32,address)\":{\"params\":{\"label\":\"The hash of the label to register.\",\"owner\":\"The address of the new owner.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor.\"},\"register(bytes32,address)\":{\"notice\":\"Register a name, or change the owner of an existing registration.\"}},\"notice\":\"A registrar that allocates subdomains to the first person to claim them.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/FIFSRegistrar.sol\":\"FIFSRegistrar\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/FIFSRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\n\\n/**\\n * A registrar that allocates subdomains to the first person to claim them.\\n */\\ncontract FIFSRegistrar {\\n    ENS ens;\\n    bytes32 rootNode;\\n\\n    modifier only_owner(bytes32 label) {\\n        address currentOwner = ens.owner(\\n            keccak256(abi.encodePacked(rootNode, label))\\n        );\\n        require(currentOwner == address(0x0) || currentOwner == msg.sender);\\n        _;\\n    }\\n\\n    /**\\n     * Constructor.\\n     * @param ensAddr The address of the ENS registry.\\n     * @param node The node that this registrar administers.\\n     */\\n    constructor(ENS ensAddr, bytes32 node) public {\\n        ens = ensAddr;\\n        rootNode = node;\\n    }\\n\\n    /**\\n     * Register a name, or change the owner of an existing registration.\\n     * @param label The hash of the label to register.\\n     * @param owner The address of the new owner.\\n     */\\n    function register(bytes32 label, address owner) public only_owner(label) {\\n        ens.setSubnodeOwner(rootNode, label, owner);\\n    }\\n}\\n\",\"keccak256\":\"0x5af9df8e33403ea1d14deb8dc5494af079e59e4cc03dcde92a9ae4bfe67b2e9f\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 12726,
                "contract": "contracts/registry/FIFSRegistrar.sol:FIFSRegistrar",
                "label": "ens",
                "offset": 0,
                "slot": "0",
                "type": "t_contract(ENS)12157"
              },
              {
                "astId": 12728,
                "contract": "contracts/registry/FIFSRegistrar.sol:FIFSRegistrar",
                "label": "rootNode",
                "offset": 0,
                "slot": "1",
                "type": "t_bytes32"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_contract(ENS)12157": {
                "encoding": "inplace",
                "label": "contract ENS",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "constructor": {
                "notice": "Constructor."
              },
              "register(bytes32,address)": {
                "notice": "Register a name, or change the owner of an existing registration."
              }
            },
            "notice": "A registrar that allocates subdomains to the first person to claim them.",
            "version": 1
          }
        }
      },
      "contracts/registry/IReverseRegistrar.sol": {
        "IReverseRegistrar": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "claim",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "claimForAddr",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "claimWithResolver",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "node",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setDefaultResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "setName",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "setNameForAddr",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "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": {
              "claim(address)": "1e83409a",
              "claimForAddr(address,address,address)": "65669631",
              "claimWithResolver(address,address)": "0f5a5466",
              "node(address)": "bffbe61c",
              "setDefaultResolver(address)": "c66485b2",
              "setName(string)": "c47f0027",
              "setNameForAddr(address,address,address,string)": "7a806d6b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimForAddr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimWithResolver\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setDefaultResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setNameForAddr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/IReverseRegistrar.sol\":\"IReverseRegistrar\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/registry/IReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface IReverseRegistrar {\\n    function setDefaultResolver(address resolver) external;\\n\\n    function claim(address owner) external returns (bytes32);\\n\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) external returns (bytes32);\\n\\n    function claimWithResolver(address owner, address resolver)\\n        external\\n        returns (bytes32);\\n\\n    function setName(string memory name) external returns (bytes32);\\n\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) external returns (bytes32);\\n\\n    function node(address addr) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd6ba83973ffbab31dec17a716af3bb5703844d16dceb5078583fb2c509f8bcc2\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/registry/ReverseRegistrar.sol": {
        "NameResolver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "setName",
              "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": {
              "setName(bytes32,string)": "77372213"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/ReverseRegistrar.sol\":\"NameResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/IReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface IReverseRegistrar {\\n    function setDefaultResolver(address resolver) external;\\n\\n    function claim(address owner) external returns (bytes32);\\n\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) external returns (bytes32);\\n\\n    function claimWithResolver(address owner, address resolver)\\n        external\\n        returns (bytes32);\\n\\n    function setName(string memory name) external returns (bytes32);\\n\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) external returns (bytes32);\\n\\n    function node(address addr) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd6ba83973ffbab31dec17a716af3bb5703844d16dceb5078583fb2c509f8bcc2\"},\"contracts/registry/ReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\nimport \\\"./IReverseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../root/Controllable.sol\\\";\\n\\nabstract contract NameResolver {\\n    function setName(bytes32 node, string memory name) public virtual;\\n}\\n\\nbytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\nbytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n// namehash('addr.reverse')\\n\\ncontract ReverseRegistrar is Ownable, Controllable, IReverseRegistrar {\\n    ENS public immutable ens;\\n    NameResolver public defaultResolver;\\n\\n    event ReverseClaimed(address indexed addr, bytes32 indexed node);\\n    event DefaultResolverChanged(NameResolver indexed resolver);\\n\\n    /**\\n     * @dev Constructor\\n     * @param ensAddr The address of the ENS registry.\\n     */\\n    constructor(ENS ensAddr) {\\n        ens = ensAddr;\\n\\n        // Assign ownership of the reverse record to our deployer\\n        ReverseRegistrar oldRegistrar = ReverseRegistrar(\\n            ensAddr.owner(ADDR_REVERSE_NODE)\\n        );\\n        if (address(oldRegistrar) != address(0x0)) {\\n            oldRegistrar.claim(msg.sender);\\n        }\\n    }\\n\\n    modifier authorised(address addr) {\\n        require(\\n            addr == msg.sender ||\\n                controllers[msg.sender] ||\\n                ens.isApprovedForAll(addr, msg.sender) ||\\n                ownsContract(addr),\\n            \\\"ReverseRegistrar: Caller is not a controller or authorised by address or the address itself\\\"\\n        );\\n        _;\\n    }\\n\\n    function setDefaultResolver(address resolver) public override onlyOwner {\\n        require(\\n            address(resolver) != address(0),\\n            \\\"ReverseRegistrar: Resolver address must not be 0\\\"\\n        );\\n        defaultResolver = NameResolver(resolver);\\n        emit DefaultResolverChanged(NameResolver(resolver));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claim(address owner) public override returns (bytes32) {\\n        return claimForAddr(msg.sender, owner, address(defaultResolver));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param addr The reverse record to set\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @param resolver The resolver of the reverse node\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) public override authorised(addr) returns (bytes32) {\\n        bytes32 labelHash = sha3HexAddress(addr);\\n        bytes32 reverseNode = keccak256(\\n            abi.encodePacked(ADDR_REVERSE_NODE, labelHash)\\n        );\\n        emit ReverseClaimed(addr, reverseNode);\\n        ens.setSubnodeRecord(ADDR_REVERSE_NODE, labelHash, owner, resolver, 0);\\n        return reverseNode;\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @param resolver The address of the resolver to set; 0 to leave unchanged.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claimWithResolver(address owner, address resolver)\\n        public\\n        override\\n        returns (bytes32)\\n    {\\n        return claimForAddr(msg.sender, owner, resolver);\\n    }\\n\\n    /**\\n     * @dev Sets the `name()` record for the reverse ENS record associated with\\n     * the calling account. First updates the resolver to the default reverse\\n     * resolver if necessary.\\n     * @param name The name to set for this address.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function setName(string memory name) public override returns (bytes32) {\\n        return\\n            setNameForAddr(\\n                msg.sender,\\n                msg.sender,\\n                address(defaultResolver),\\n                name\\n            );\\n    }\\n\\n    /**\\n     * @dev Sets the `name()` record for the reverse ENS record associated with\\n     * the account provided. Updates the resolver to a designated resolver\\n     * Only callable by controllers and authorised users\\n     * @param addr The reverse record to set\\n     * @param owner The owner of the reverse node\\n     * @param resolver The resolver of the reverse node\\n     * @param name The name to set for this address.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) public override returns (bytes32) {\\n        bytes32 node = claimForAddr(addr, owner, resolver);\\n        NameResolver(resolver).setName(node, name);\\n        return node;\\n    }\\n\\n    /**\\n     * @dev Returns the node hash for a given account's reverse records.\\n     * @param addr The address to hash\\n     * @return The ENS node hash.\\n     */\\n    function node(address addr) public pure override returns (bytes32) {\\n        return\\n            keccak256(\\n                abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr))\\n            );\\n    }\\n\\n    /**\\n     * @dev An optimised function to compute the sha3 of the lower-case\\n     *      hexadecimal representation of an Ethereum address.\\n     * @param addr The address to hash\\n     * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\\n     *         input address.\\n     */\\n    function sha3HexAddress(address addr) private pure returns (bytes32 ret) {\\n        assembly {\\n            for {\\n                let i := 40\\n            } gt(i, 0) {\\n\\n            } {\\n                i := sub(i, 1)\\n                mstore8(i, byte(and(addr, 0xf), lookup))\\n                addr := div(addr, 0x10)\\n                i := sub(i, 1)\\n                mstore8(i, byte(and(addr, 0xf), lookup))\\n                addr := div(addr, 0x10)\\n            }\\n\\n            ret := keccak256(0, 40)\\n        }\\n    }\\n\\n    function ownsContract(address addr) internal view returns (bool) {\\n        try Ownable(addr).owner() returns (address owner) {\\n            return owner == msg.sender;\\n        } catch {\\n            return false;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4430930561750d2de1163f7b7ba22ae003a7684394371e90a04374859a2337cf\"},\"contracts/root/Controllable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool enabled);\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n\\n    function setController(address controller, bool enabled) public onlyOwner {\\n        controllers[controller] = enabled;\\n        emit ControllerChanged(controller, enabled);\\n    }\\n}\\n\",\"keccak256\":\"0xb19b8c0fafe9ca2b4bf8aaafee486fa31437672e1e1977bdf84bfe03464969db\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "ReverseRegistrar": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "ensAddr",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "enabled",
                  "type": "bool"
                }
              ],
              "name": "ControllerChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "contract NameResolver",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "DefaultResolverChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "ReverseClaimed",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "claim",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "claimForAddr",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "claimWithResolver",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "controllers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultResolver",
              "outputs": [
                {
                  "internalType": "contract NameResolver",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "node",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "enabled",
                  "type": "bool"
                }
              ],
              "name": "setController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setDefaultResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "setName",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "setNameForAddr",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "claim(address)": {
                "details": "Transfers ownership of the reverse ENS record associated with the      calling account.",
                "params": {
                  "owner": "The address to set as the owner of the reverse record in ENS."
                },
                "returns": {
                  "_0": "The ENS node hash of the reverse record."
                }
              },
              "claimForAddr(address,address,address)": {
                "details": "Transfers ownership of the reverse ENS record associated with the      calling account.",
                "params": {
                  "addr": "The reverse record to set",
                  "owner": "The address to set as the owner of the reverse record in ENS.",
                  "resolver": "The resolver of the reverse node"
                },
                "returns": {
                  "_0": "The ENS node hash of the reverse record."
                }
              },
              "claimWithResolver(address,address)": {
                "details": "Transfers ownership of the reverse ENS record associated with the      calling account.",
                "params": {
                  "owner": "The address to set as the owner of the reverse record in ENS.",
                  "resolver": "The address of the resolver to set; 0 to leave unchanged."
                },
                "returns": {
                  "_0": "The ENS node hash of the reverse record."
                }
              },
              "constructor": {
                "details": "Constructor",
                "params": {
                  "ensAddr": "The address of the ENS registry."
                }
              },
              "node(address)": {
                "details": "Returns the node hash for a given account's reverse records.",
                "params": {
                  "addr": "The address to hash"
                },
                "returns": {
                  "_0": "The ENS node hash."
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "setName(string)": {
                "details": "Sets the `name()` record for the reverse ENS record associated with the calling account. First updates the resolver to the default reverse resolver if necessary.",
                "params": {
                  "name": "The name to set for this address."
                },
                "returns": {
                  "_0": "The ENS node hash of the reverse record."
                }
              },
              "setNameForAddr(address,address,address,string)": {
                "details": "Sets the `name()` record for the reverse ENS record associated with the account provided. Updates the resolver to a designated resolver Only callable by controllers and authorised users",
                "params": {
                  "addr": "The reverse record to set",
                  "name": "The name to set for this address.",
                  "owner": "The owner of the reverse node",
                  "resolver": "The resolver of the reverse node"
                },
                "returns": {
                  "_0": "The ENS node hash of the reverse record."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_12945": {
                  "entryPoint": null,
                  "id": 12945,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 347,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 491,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory": {
                  "entryPoint": 452,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "validator_revert_contract_ENS": {
                  "entryPoint": 427,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1266:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "64:86:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "128:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "137:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "140:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "130:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "130:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "130:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "87:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "98:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "113:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "118:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "109:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "109:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "122:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "105:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "105:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "94:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "94:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "84:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "84:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "77:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "77:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "74:70:111"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_ENS",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:136:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "249:175:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "295:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "304:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "307:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "297:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "297:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "297:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "270:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "266:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "266:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "291:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "262:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "262:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "259:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "320:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "339:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "333:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "324:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "388:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "358:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "358:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "358:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "403:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "413:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "403:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "215:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "226:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "238:6:111",
                            "type": ""
                          }
                        ],
                        "src": "155:269:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "530:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "540:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "552:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "563:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "548:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "548:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "582:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "575:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "575:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "575:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "499:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "510:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "521:4:111",
                            "type": ""
                          }
                        ],
                        "src": "429:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "692:175:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "738:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "747:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "750:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "740:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "740:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "740:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "713:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "722:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "709:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "709:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "734:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "705:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "705:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "702:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "763:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "782:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "776:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "776:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "767:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "831:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "801:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "801:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "801:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "846:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "856:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "846:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "658:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "669:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "681:6:111",
                            "type": ""
                          }
                        ],
                        "src": "611:256:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "973:102:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "983:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "995:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1006:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "991:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "991:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "983:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1025:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1040:6:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1056:3:111",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1061:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1052:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1052:11:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1065:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1048:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1048:19:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1036:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1036:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1018:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1018:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1018:51:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "942:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "953:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "964:4:111",
                            "type": ""
                          }
                        ],
                        "src": "872:203:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1161:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1207:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1216:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1219:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1209:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1209:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1209:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1182:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1191:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1178:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1178:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1203:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1174:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1171:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1232:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1248:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1242:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1242:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1232:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1127:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1138:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1150:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1080:184:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_contract_ENS(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_ENS_$12157_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_ENS(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_ENS(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a06040523480156200001157600080fd5b50604051620012f1380380620012f18339810160408190526200003491620001c4565b6200003f336200015b565b6001600160a01b03811660808190526040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26004820152600091906302571be390602401602060405180830381865afa158015620000ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d29190620001c4565b90506001600160a01b038116156200015357604051630f41a04d60e11b81523360048201526001600160a01b03821690631e83409a906024016020604051808303816000875af11580156200012b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001519190620001eb565b505b505062000205565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620001c157600080fd5b50565b600060208284031215620001d757600080fd5b8151620001e481620001ab565b9392505050565b600060208284031215620001fe57600080fd5b5051919050565b6080516110c26200022f6000396000818161012d0152818161033e015261058901526110c26000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063c66485b211610066578063c66485b214610208578063da8c229e1461021b578063e0dba60f1461024e578063f2fde38b1461026157600080fd5b80638da5cb5b146101c4578063bffbe61c146101e2578063c47f0027146101f557600080fd5b806365669631116100c85780636566963114610174578063715018a6146101875780637a806d6b14610191578063828eab0e146101a457600080fd5b80630f5a5466146100ef5780631e83409a146101155780633f15457f14610128575b600080fd5b6101026100fd366004610d75565b610274565b6040519081526020015b60405180910390f35b610102610123366004610dae565b610288565b61014f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b610102610182366004610dcb565b6102b7565b61018f6105f0565b005b61010261019f366004610ef0565b61067d565b60025461014f9073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1661014f565b6101026101f0366004610dae565b61071e565b610102610203366004610f65565b610779565b61018f610216366004610dae565b6107a3565b61023e610229366004610dae565b60016020526000908152604090205460ff1681565b604051901515815260200161010c565b61018f61025c366004610fb0565b610936565b61018f61026f366004610dae565b610a41565b60006102813384846102b7565b9392505050565b6002546000906102b1903390849073ffffffffffffffffffffffffffffffffffffffff166102b7565b92915050565b60008373ffffffffffffffffffffffffffffffffffffffff81163314806102ed57503360009081526001602052604090205460ff165b806103a957506040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190610fde565b806103b857506103b881610b71565b61046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f526576657273655265676973747261723a2043616c6c6572206973206e6f742060448201527f6120636f6e74726f6c6c6572206f7220617574686f726973656420627920616460648201527f6472657373206f7220746865206164647265737320697473656c660000000000608482015260a4015b60405180910390fd5b600061047a86610c22565b604080517f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26020808301919091528183018490528251808303840181526060909201928390528151910120919250819073ffffffffffffffffffffffffffffffffffffffff8916907f6ada868dd3058cf77a48a74489fd7963688e5464b2b0fa957ace976243270e9290600090a36040517f5ef2c7f00000000000000000000000000000000000000000000000000000000081527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526024810183905273ffffffffffffffffffffffffffffffffffffffff87811660448301528681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b50929998505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610466565b61067b6000610cde565b565b60008061068b8686866102b7565b6040517f7737221300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8516906377372213906106e29084908790600401610ffb565b600060405180830381600087803b1580156106fc57600080fd5b505af1158015610710573d6000803e3d6000fd5b509298975050505050505050565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e261074a83610c22565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b6002546000906102b1903390819073ffffffffffffffffffffffffffffffffffffffff168561067d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610466565b73ffffffffffffffffffffffffffffffffffffffff81166108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f526576657273655265676973747261723a205265736f6c76657220616464726560448201527f7373206d757374206e6f742062652030000000000000000000000000000000006064820152608401610466565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517feae17a84d9eb83d8c8eb317f9e7d64857bc363fa51674d996c023f4340c577cf90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610466565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ac2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610466565b73ffffffffffffffffffffffffffffffffffffffff8116610b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610466565b610b6e81610cde565b50565b60008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610bf8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610bf59181019061106f565b60015b610c0457506000919050565b73ffffffffffffffffffffffffffffffffffffffff16331492915050565b600060285b8015610cd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010909204917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a8153601083049250610c27565b50506028600020919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b6e57600080fd5b60008060408385031215610d8857600080fd5b8235610d9381610d53565b91506020830135610da381610d53565b809150509250929050565b600060208284031215610dc057600080fd5b813561028181610d53565b600080600060608486031215610de057600080fd5b8335610deb81610d53565b92506020840135610dfb81610d53565b91506040840135610e0b81610d53565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610e5657600080fd5b813567ffffffffffffffff80821115610e7157610e71610e16565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610eb757610eb7610e16565b81604052838152866020858801011115610ed057600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215610f0657600080fd5b8435610f1181610d53565b93506020850135610f2181610d53565b92506040850135610f3181610d53565b9150606085013567ffffffffffffffff811115610f4d57600080fd5b610f5987828801610e45565b91505092959194509250565b600060208284031215610f7757600080fd5b813567ffffffffffffffff811115610f8e57600080fd5b610f9a84828501610e45565b949350505050565b8015158114610b6e57600080fd5b60008060408385031215610fc357600080fd5b8235610fce81610d53565b91506020830135610da381610fa2565b600060208284031215610ff057600080fd5b815161028181610fa2565b82815260006020604081840152835180604085015260005b8181101561102f57858101830151858201606001528201611013565b5060006060828601015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60006020828403121561108157600080fd5b815161028181610d5356fea264697066735822122030f8ee7d282ef64d328e7804deeb2da69cb552c7cd254f7f899b8afc6a03042664736f6c63430008110033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x12F1 CODESIZE SUB DUP1 PUSH3 0x12F1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1C4 JUMP JUMPDEST PUSH3 0x3F CALLER PUSH3 0x15B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x40 MLOAD PUSH4 0x2571BE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x91D1777781884D03A6757A803996E38DE2A42967FB37EEACA72729271025A9E2 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD2 SWAP2 SWAP1 PUSH3 0x1C4 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH3 0x153 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF41A04D PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x1E83409A SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH3 0x12B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x151 SWAP2 SWAP1 PUSH3 0x1EB JUMP JUMPDEST POP JUMPDEST POP POP PUSH3 0x205 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x1E4 DUP2 PUSH3 0x1AB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x10C2 PUSH3 0x22F PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x12D ADD MSTORE DUP2 DUP2 PUSH2 0x33E ADD MSTORE PUSH2 0x589 ADD MSTORE PUSH2 0x10C2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC66485B2 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC66485B2 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0x21B JUMPI DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0xBFFBE61C EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0xC47F0027 EQ PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x65669631 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x65669631 EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x7A806D6B EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x828EAB0E EQ PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xF5A5466 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x1E83409A EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0x128 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xD75 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x102 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH2 0x14F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST PUSH2 0x102 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCB JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST PUSH2 0x18F PUSH2 0x5F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x102 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xEF0 JUMP JUMPDEST PUSH2 0x67D JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x14F SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x14F JUMP JUMPDEST PUSH2 0x102 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x71E JUMP JUMPDEST PUSH2 0x102 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x779 JUMP JUMPDEST PUSH2 0x18F PUSH2 0x216 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x7A3 JUMP JUMPDEST PUSH2 0x23E PUSH2 0x229 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST PUSH2 0x18F PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0xFB0 JUMP JUMPDEST PUSH2 0x936 JUMP JUMPDEST PUSH2 0x18F PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0xA41 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x281 CALLER DUP5 DUP5 PUSH2 0x2B7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x2B1 SWAP1 CALLER SWAP1 DUP5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ DUP1 PUSH2 0x2ED JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x3A9 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x385 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A9 SWAP2 SWAP1 PUSH2 0xFDE JUMP JUMPDEST DUP1 PUSH2 0x3B8 JUMPI POP PUSH2 0x3B8 DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526576657273655265676973747261723A2043616C6C6572206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6120636F6E74726F6C6C6572206F7220617574686F7269736564206279206164 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6472657373206F7220746865206164647265737320697473656C660000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47A DUP7 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1777781884D03A6757A803996E38DE2A42967FB37EEACA72729271025A9E2 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP3 DUP4 SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP3 POP DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 PUSH32 0x6ADA868DD3058CF77A48A74489FD7963688E5464B2B0FA957ACE976243270E92 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x91D1777781884D03A6757A803996E38DE2A42967FB37EEACA72729271025A9E2 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x671 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0x67B PUSH1 0x0 PUSH2 0xCDE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x68B DUP7 DUP7 DUP7 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7737221300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x77372213 SWAP1 PUSH2 0x6E2 SWAP1 DUP5 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xFFB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x710 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x91D1777781884D03A6757A803996E38DE2A42967FB37EEACA72729271025A9E2 PUSH2 0x74A DUP4 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x2B1 SWAP1 CALLER SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH2 0x67D JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x824 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x8C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526576657273655265676973747261723A205265736F6C766572206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373206D757374206E6F74206265203000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xEAE17A84D9EB83D8C8EB317F9E7D64857BC363FA51674D996C023F4340C577CF SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xAC2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xB65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0xB6E DUP2 PUSH2 0xCDE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xBF8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xBF5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x106F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC04 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x28 JUMPDEST DUP1 ISZERO PUSH2 0xCD2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP5 AND BYTE DUP2 MSTORE8 PUSH1 0x10 SWAP1 SWAP3 DIV SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP5 AND BYTE DUP2 MSTORE8 PUSH1 0x10 DUP4 DIV SWAP3 POP PUSH2 0xC27 JUMP JUMPDEST POP POP PUSH1 0x28 PUSH1 0x0 KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xD93 DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xDA3 DUP2 PUSH2 0xD53 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x281 DUP2 PUSH2 0xD53 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xDEB DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xDFB DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xE0B DUP2 PUSH2 0xD53 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE71 JUMPI PUSH2 0xE71 PUSH2 0xE16 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEB7 JUMPI PUSH2 0xEB7 PUSH2 0xE16 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0xED0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xF11 DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xF21 DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0xF31 DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF59 DUP8 DUP3 DUP9 ADD PUSH2 0xE45 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF9A DUP5 DUP3 DUP6 ADD PUSH2 0xE45 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFCE DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xDA3 DUP2 PUSH2 0xFA2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x281 DUP2 PUSH2 0xFA2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 DUP2 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x102F JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x60 ADD MSTORE DUP3 ADD PUSH2 0x1013 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1081 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x281 DUP2 PUSH2 0xD53 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS 0xF8 0xEE PUSH30 0x282EF64D328E7804DEEB2DA69CB552C7CD254F7F899B8AFC6A0304266473 PUSH16 0x6C634300081100330000000000000000 ",
              "sourceMap": "506:5989:59:-:0;;;885:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;921:32:2;719:10:14;921:18:2;:32::i;:::-;-1:-1:-1;;;;;920:13:59;;;;;;1072:32;;-1:-1:-1;;;1072:32:59;;408:66;1072:32;;;575:25:111;1010:29:59;;920:13;1072;;548:18:111;;1072:32:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1010:104;-1:-1:-1;;;;;;1128:37:59;;;1124:98;;1181:30;;-1:-1:-1;;;1181:30:59;;1200:10;1181:30;;;1018:51:111;-1:-1:-1;;;;;1181:18:59;;;;;991::111;;1181:30:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1124:98;910:318;885:343;506:5989;;2270:187:2;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:136:111:-;-1:-1:-1;;;;;94:31:111;;84:42;;74:70;;140:1;137;130:12;74:70;14:136;:::o;155:269::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;339:9;333:16;358:36;388:5;358:36;:::i;:::-;413:5;155:269;-1:-1:-1;;;155:269:111:o;1080:184::-;1150:6;1203:2;1191:9;1182:7;1178:23;1174:32;1171:52;;;1219:1;1216;1209:12;1171:52;-1:-1:-1;1242:16:111;;1080:184;-1:-1:-1;1080:184:111:o;:::-;506:5989:59;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 3294,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@claimForAddr_13079": {
                  "entryPoint": 695,
                  "id": 13079,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@claimWithResolver_13098": {
                  "entryPoint": 628,
                  "id": 13098,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@claim_13029": {
                  "entryPoint": 648,
                  "id": 13029,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@controllers_15628": {
                  "entryPoint": null,
                  "id": 15628,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@defaultResolver_12894": {
                  "entryPoint": null,
                  "id": 12894,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@ens_12891": {
                  "entryPoint": null,
                  "id": 12891,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@node_13174": {
                  "entryPoint": 1822,
                  "id": 13174,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownsContract_13212": {
                  "entryPoint": 2929,
                  "id": 13212,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@renounceOwnership_598": {
                  "entryPoint": 1520,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setController_15667": {
                  "entryPoint": 2358,
                  "id": 15667,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setDefaultResolver_13009": {
                  "entryPoint": 1955,
                  "id": 13009,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@setNameForAddr_13154": {
                  "entryPoint": 1661,
                  "id": 13154,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@setName_13120": {
                  "entryPoint": 1913,
                  "id": 13120,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@sha3HexAddress_13184": {
                  "entryPoint": 3106,
                  "id": 13184,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferOwnership_621": {
                  "entryPoint": 2625,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_string": {
                  "entryPoint": 3653,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 3502,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 4207,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 3445,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_address": {
                  "entryPoint": 3531,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_addresst_string_memory_ptr": {
                  "entryPoint": 3824,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 4016,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 4062,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptr": {
                  "entryPoint": 3941,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_rational_0_by_1__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4091,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_NameResolver_$12876__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb02bca886b66c8cccb8ebdd5f9e523f0cb437ea36db9ae94c35db86f94aa5fa__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_fe4e6cb0d911fbb084bbc1b17d0a5ac5b55e0dd119afa63b9e266f785db0c22d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 3606,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3411,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 4002,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:9042:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "59:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "146:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "155:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "158:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "148:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "148:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "148:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "82:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "93:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "100:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "89:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "89:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "79:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "79:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "72:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "72:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "69:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "48:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:154:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "260:301:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "306:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "315:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "318:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "308:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "308:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "308:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "281:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "290:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "277:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "277:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "302:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "273:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "273:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "270:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "331:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "357:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "344:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "344:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "335:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "401:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "376:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "376:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "376:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "416:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "426:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "416:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "440:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "472:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "483:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "468:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "468:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "455:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "455:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "444:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "521:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "496:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "496:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "496:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "538:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "548:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "538:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "218:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "229:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "241:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "249:6:111",
                            "type": ""
                          }
                        ],
                        "src": "173:388:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "667:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "677:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "689:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "700:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "685:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "685:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "677:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "719:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "730:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "712:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "712:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "712:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "636:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "647:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "658:4:111",
                            "type": ""
                          }
                        ],
                        "src": "566:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "818:177:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "864:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "873:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "876:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "866:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "866:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "866:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "839:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "848:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "835:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "835:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "860:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "831:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "831:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "828:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "889:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "915:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "902:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "902:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "893:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "959:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "934:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "934:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "934:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "974:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "984:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "974:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "784:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "795:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "807:6:111",
                            "type": ""
                          }
                        ],
                        "src": "748:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1114:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1124:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1136:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1147:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1132:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1132:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1124:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1166:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1181:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1189:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1177:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1177:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1159:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1159:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1159:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1083:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1094:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1105:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1000:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1348:425:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1394:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1403:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1406:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1396:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1396:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1396:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1369:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1378:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1365:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1365:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1390:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1361:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1361:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1358:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1419:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1445:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1432:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1432:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1423:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1489:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1464:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1464:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1464:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1504:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1514:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1504:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1528:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1560:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1571:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1556:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1556:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1543:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1543:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1532:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1609:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1584:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1584:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1584:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1626:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1636:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1626:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1652:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1684:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1695:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1680:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1680:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1667:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1667:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1656:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1733:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1708:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1708:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1708:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1750:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1760:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1750:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1298:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1309:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1321:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1329:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1337:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1244:529:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1810:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1827:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1830:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1820:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1820:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1820:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1924:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1927:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1917:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1917:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1917:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1948:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1951:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1941:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1941:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1941:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1778:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2020:725:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2069:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2078:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2081:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2071:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2071:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2071:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2048:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2056:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2044:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2044:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2063:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2040:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2040:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2033:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2033:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2030:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2094:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2117:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2104:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2104:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2098:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2133:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2143:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2137:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2184:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2186:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2186:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2186:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2176:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2180:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2173:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2173:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2170:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2215:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2225:66:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2219:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2300:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2320:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2314:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2314:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2304:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2332:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2354:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2378:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2382:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2374:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2374:13:111"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "2389:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2370:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2370:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2394:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2366:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2366:31:111"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2399:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2362:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2362:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2350:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2350:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2336:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2462:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2464:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2464:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2464:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2421:10:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2433:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2418:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2418:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2441:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2453:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2438:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2438:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2415:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2415:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2412:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2500:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2504:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2493:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2493:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2493:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2531:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2539:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2524:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2524:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2524:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2590:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2599:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2602:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2592:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2592:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2592:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2565:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2573:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2561:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2561:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2578:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2557:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2557:26:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "2585:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2554:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2554:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2551:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2632:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2640:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2628:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2628:17:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2651:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2659:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2647:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2647:17:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2666:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2615:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2615:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2615:54:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2693:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2701:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2689:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2689:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2706:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2685:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2685:26:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2713:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2678:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2678:37:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2678:37:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2724:15:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2733:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "2724:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1994:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2002:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2010:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1967:778:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2881:609:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2928:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2937:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2940:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2930:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2930:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2930:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2902:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2911:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2898:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2898:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2923:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2894:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2894:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2891:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2953:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2979:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2966:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2966:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2957:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3023:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2998:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2998:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2998:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3038:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3048:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3038:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3062:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3094:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3105:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3090:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3090:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3077:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3077:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3066:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3143:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3118:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3118:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3118:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3160:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3170:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3160:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3186:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3218:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3229:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3214:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3214:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3201:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3201:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3190:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3267:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3242:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3242:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3242:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3284:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "3294:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3284:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3310:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3341:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3352:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3337:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3337:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3324:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3324:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3314:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3399:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3408:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3411:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3401:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3401:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3401:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3371:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3379:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3368:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3368:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3365:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3424:60:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3456:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3467:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3452:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3452:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3476:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "3434:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3434:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3424:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_addresst_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2823:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2834:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2846:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2854:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2862:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2870:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2750:740:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3618:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3628:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3640:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3651:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3636:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3636:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3628:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3670:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3685:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3693:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3681:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3681:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3663:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3663:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3663:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_NameResolver_$12876__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3587:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3598:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3609:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3495:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3849:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3859:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3871:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3882:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3867:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3867:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3859:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3901:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3916:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3924:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3912:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3912:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3894:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3894:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3894:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3818:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3829:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3840:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3748:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4059:242:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4105:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4114:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4117:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4107:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4107:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4107:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4080:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4089:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4076:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4076:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4101:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4072:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4072:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4069:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4130:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4157:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4144:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4144:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4134:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4210:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4219:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4222:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4212:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4212:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4212:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4182:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4190:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4179:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4179:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4176:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4235:60:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4267:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4278:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4263:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4263:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4287:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "4245:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4245:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4235:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4025:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4036:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4048:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3979:322:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4401:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4411:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4423:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4434:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4419:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4419:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4411:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4453:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "4478:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4471:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4471:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "4464:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4464:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4446:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4446:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4446:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4370:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4381:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4392:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4306:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4540:76:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4594:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4603:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4606:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4596:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4596:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4596:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4563:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "4584:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "4577:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4577:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4570:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4570:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4560:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4560:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4553:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4553:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4550:60:111"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4529:5:111",
                            "type": ""
                          }
                        ],
                        "src": "4498:118:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4705:298:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4751:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4760:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4763:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4753:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4753:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4753:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4726:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4735:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4722:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4722:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4747:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4718:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4718:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4715:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4776:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4802:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4789:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4789:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4780:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4846:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4821:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4821:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4821:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4861:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4871:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4861:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4885:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4917:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4928:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4913:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4913:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4900:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4900:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4889:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4963:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "4941:21:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4941:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4941:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4980:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4990:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4980:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4663:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4674:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4686:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4694:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4621:382:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5137:198:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5147:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5159:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5170:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5155:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5155:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5147:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5182:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5192:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5186:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5250:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5265:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5273:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5261:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5261:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5243:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5243:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5243:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5297:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5308:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5293:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5293:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5317:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5325:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5313:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5313:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5286:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5286:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5286:43:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5098:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5109:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5117:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5128:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5008:327:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5418:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5464:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5473:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5476:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5466:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5466:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5466:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5439:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5448:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5435:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5435:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5460:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5431:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5431:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5428:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5489:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5508:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5502:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5502:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5493:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5549:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "5527:21:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5527:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5527:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5564:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5574:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5564:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5384:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5395:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5407:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5340:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5764:321:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5781:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5792:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5774:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5774:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5774:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5815:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5826:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5811:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5811:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5831:2:111",
                                    "type": "",
                                    "value": "91"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5804:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5804:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5804:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5854:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5865:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5850:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5850:18:111"
                                  },
                                  {
                                    "hexValue": "526576657273655265676973747261723a2043616c6c6572206973206e6f7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5870:34:111",
                                    "type": "",
                                    "value": "ReverseRegistrar: Caller is not "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5843:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5843:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5843:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5925:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5936:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5921:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5921:18:111"
                                  },
                                  {
                                    "hexValue": "6120636f6e74726f6c6c6572206f7220617574686f7269736564206279206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5941:34:111",
                                    "type": "",
                                    "value": "a controller or authorised by ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5914:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5914:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5914:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5996:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6007:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5992:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5992:19:111"
                                  },
                                  {
                                    "hexValue": "6472657373206f7220746865206164647265737320697473656c66",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6013:29:111",
                                    "type": "",
                                    "value": "dress or the address itself"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5985:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5985:58:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5985:58:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6052:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6064:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6075:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6060:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6060:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6052:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fe4e6cb0d911fbb084bbc1b17d0a5ac5b55e0dd119afa63b9e266f785db0c22d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5741:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5755:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5590:495:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6237:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6254:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6259:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6247:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6247:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6247:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6286:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6291:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6282:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6282:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6296:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6275:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6275:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6275:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6312:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6323:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6328:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6319:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6319:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6312:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6205:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6210:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6218:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6229:3:111",
                            "type": ""
                          }
                        ],
                        "src": "6090:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6562:354:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6572:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6584:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6595:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6580:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6580:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6572:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6615:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6626:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6608:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6608:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6608:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6664:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6649:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6649:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6669:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6642:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6642:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6642:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6685:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6695:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6689:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6757:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6768:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6753:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6753:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6777:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6773:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6773:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6746:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6746:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6746:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6809:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6820:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6805:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6805:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "6829:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6837:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6825:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6825:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6798:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6798:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6798:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6861:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6872:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6857:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6857:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "6882:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6890:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6878:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6878:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6850:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6850:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6850:60:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_rational_0_by_1__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6499:9:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6510:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6518:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6526:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6534:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6542:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6553:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6342:574:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7095:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7112:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7123:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7105:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7105:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7105:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7146:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7157:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7142:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7142:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7162:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7135:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7135:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7135:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7185:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7196:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7181:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7181:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7201:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7174:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7174:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7174:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7245:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7257:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7268:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7253:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7253:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7245:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7072:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7086:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6921:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7431:529:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7448:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7459:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7441:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7441:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7441:25:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7475:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7485:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7479:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7507:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7518:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7503:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7503:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7523:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7496:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7496:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7496:30:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7535:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7555:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7549:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7549:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7539:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7582:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7593:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7578:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7578:18:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7598:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7571:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7571:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7571:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7614:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7623:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7618:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7683:90:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7712:9:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7723:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7708:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7708:17:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7727:2:111",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7704:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7704:26:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7746:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7754:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7742:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7742:14:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7758:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7738:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7738:23:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7732:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7732:30:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7697:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7697:66:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7697:66:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7644:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7647:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7641:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7641:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7655:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7657:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7666:1:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7669:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7662:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7662:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7657:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7637:3:111",
                                "statements": []
                              },
                              "src": "7633:140:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7797:9:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "7808:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7793:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7793:22:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7817:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7789:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7789:31:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7822:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7782:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7782:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7782:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7833:121:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7849:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7868:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7876:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7864:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7864:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7881:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7860:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7860:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7845:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7845:104:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7951:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7841:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7841:113:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7833:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7392:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7403:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7411:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7422:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7282:678:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8139:238:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8156:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8167:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8149:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8149:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8149:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8190:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8201:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8186:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8186:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8206:2:111",
                                    "type": "",
                                    "value": "48"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8179:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8179:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8179:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8229:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8240:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8225:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8225:18:111"
                                  },
                                  {
                                    "hexValue": "526576657273655265676973747261723a205265736f6c766572206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8245:34:111",
                                    "type": "",
                                    "value": "ReverseRegistrar: Resolver addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8218:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8218:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8218:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8300:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8311:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8296:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8296:18:111"
                                  },
                                  {
                                    "hexValue": "7373206d757374206e6f742062652030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8316:18:111",
                                    "type": "",
                                    "value": "ss must not be 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8289:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8289:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8289:46:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8344:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8356:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8367:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8352:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8352:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8344:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb02bca886b66c8cccb8ebdd5f9e523f0cb437ea36db9ae94c35db86f94aa5fa__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8116:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8130:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7965:412:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8556:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8573:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8584:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8566:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8566:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8566:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8607:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8618:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8603:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8603:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8623:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8596:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8596:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8596:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8646:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8657:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8642:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8642:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8662:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8635:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8635:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8635:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8717:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8728:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8713:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8713:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8733:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8706:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8706:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8706:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8751:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8763:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8774:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8759:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8759:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8751:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8533:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8547:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8382:402:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8870:170:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8916:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8925:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8928:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8918:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8918:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8918:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8891:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8900:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8887:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8887:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8912:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8883:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8883:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8880:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8941:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8960:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8954:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8954:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8945:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9004:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8979:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8979:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8979:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9019:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9029:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9019:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8836:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8847:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8859:6:111",
                            "type": ""
                          }
                        ],
                        "src": "8789:251:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0xffffffffffffffff\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_addresst_addresst_addresst_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_NameResolver_$12876__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_string(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_fe4e6cb0d911fbb084bbc1b17d0a5ac5b55e0dd119afa63b9e266f785db0c22d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 91)\n        mstore(add(headStart, 64), \"ReverseRegistrar: Caller is not \")\n        mstore(add(headStart, 96), \"a controller or authorised by ad\")\n        mstore(add(headStart, 128), \"dress or the address itself\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_rational_0_by_1__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__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        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        let _1 := 32\n        mstore(add(headStart, _1), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value1, i), _1)))\n        }\n        mstore(add(add(headStart, length), 96), 0)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eb02bca886b66c8cccb8ebdd5f9e523f0cb437ea36db9ae94c35db86f94aa5fa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ReverseRegistrar: Resolver addre\")\n        mstore(add(headStart, 96), \"ss must not be 0\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "12891": [
                  {
                    "length": 32,
                    "start": 301
                  },
                  {
                    "length": 32,
                    "start": 830
                  },
                  {
                    "length": 32,
                    "start": 1417
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063c66485b211610066578063c66485b214610208578063da8c229e1461021b578063e0dba60f1461024e578063f2fde38b1461026157600080fd5b80638da5cb5b146101c4578063bffbe61c146101e2578063c47f0027146101f557600080fd5b806365669631116100c85780636566963114610174578063715018a6146101875780637a806d6b14610191578063828eab0e146101a457600080fd5b80630f5a5466146100ef5780631e83409a146101155780633f15457f14610128575b600080fd5b6101026100fd366004610d75565b610274565b6040519081526020015b60405180910390f35b610102610123366004610dae565b610288565b61014f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b610102610182366004610dcb565b6102b7565b61018f6105f0565b005b61010261019f366004610ef0565b61067d565b60025461014f9073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1661014f565b6101026101f0366004610dae565b61071e565b610102610203366004610f65565b610779565b61018f610216366004610dae565b6107a3565b61023e610229366004610dae565b60016020526000908152604090205460ff1681565b604051901515815260200161010c565b61018f61025c366004610fb0565b610936565b61018f61026f366004610dae565b610a41565b60006102813384846102b7565b9392505050565b6002546000906102b1903390849073ffffffffffffffffffffffffffffffffffffffff166102b7565b92915050565b60008373ffffffffffffffffffffffffffffffffffffffff81163314806102ed57503360009081526001602052604090205460ff165b806103a957506040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190610fde565b806103b857506103b881610b71565b61046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f526576657273655265676973747261723a2043616c6c6572206973206e6f742060448201527f6120636f6e74726f6c6c6572206f7220617574686f726973656420627920616460648201527f6472657373206f7220746865206164647265737320697473656c660000000000608482015260a4015b60405180910390fd5b600061047a86610c22565b604080517f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26020808301919091528183018490528251808303840181526060909201928390528151910120919250819073ffffffffffffffffffffffffffffffffffffffff8916907f6ada868dd3058cf77a48a74489fd7963688e5464b2b0fa957ace976243270e9290600090a36040517f5ef2c7f00000000000000000000000000000000000000000000000000000000081527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526024810183905273ffffffffffffffffffffffffffffffffffffffff87811660448301528681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b50929998505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610466565b61067b6000610cde565b565b60008061068b8686866102b7565b6040517f7737221300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8516906377372213906106e29084908790600401610ffb565b600060405180830381600087803b1580156106fc57600080fd5b505af1158015610710573d6000803e3d6000fd5b509298975050505050505050565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e261074a83610c22565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b6002546000906102b1903390819073ffffffffffffffffffffffffffffffffffffffff168561067d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610466565b73ffffffffffffffffffffffffffffffffffffffff81166108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f526576657273655265676973747261723a205265736f6c76657220616464726560448201527f7373206d757374206e6f742062652030000000000000000000000000000000006064820152608401610466565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517feae17a84d9eb83d8c8eb317f9e7d64857bc363fa51674d996c023f4340c577cf90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610466565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ac2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610466565b73ffffffffffffffffffffffffffffffffffffffff8116610b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610466565b610b6e81610cde565b50565b60008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610bf8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610bf59181019061106f565b60015b610c0457506000919050565b73ffffffffffffffffffffffffffffffffffffffff16331492915050565b600060285b8015610cd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010909204917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a8153601083049250610c27565b50506028600020919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b6e57600080fd5b60008060408385031215610d8857600080fd5b8235610d9381610d53565b91506020830135610da381610d53565b809150509250929050565b600060208284031215610dc057600080fd5b813561028181610d53565b600080600060608486031215610de057600080fd5b8335610deb81610d53565b92506020840135610dfb81610d53565b91506040840135610e0b81610d53565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610e5657600080fd5b813567ffffffffffffffff80821115610e7157610e71610e16565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610eb757610eb7610e16565b81604052838152866020858801011115610ed057600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215610f0657600080fd5b8435610f1181610d53565b93506020850135610f2181610d53565b92506040850135610f3181610d53565b9150606085013567ffffffffffffffff811115610f4d57600080fd5b610f5987828801610e45565b91505092959194509250565b600060208284031215610f7757600080fd5b813567ffffffffffffffff811115610f8e57600080fd5b610f9a84828501610e45565b949350505050565b8015158114610b6e57600080fd5b60008060408385031215610fc357600080fd5b8235610fce81610d53565b91506020830135610da381610fa2565b600060208284031215610ff057600080fd5b815161028181610fa2565b82815260006020604081840152835180604085015260005b8181101561102f57858101830151858201606001528201611013565b5060006060828601015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60006020828403121561108157600080fd5b815161028181610d5356fea264697066735822122030f8ee7d282ef64d328e7804deeb2da69cb552c7cd254f7f899b8afc6a03042664736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC66485B2 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC66485B2 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0x21B JUMPI DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0xBFFBE61C EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0xC47F0027 EQ PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x65669631 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x65669631 EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x7A806D6B EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x828EAB0E EQ PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xF5A5466 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x1E83409A EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0x128 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xD75 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x102 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH2 0x14F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST PUSH2 0x102 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCB JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST PUSH2 0x18F PUSH2 0x5F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x102 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xEF0 JUMP JUMPDEST PUSH2 0x67D JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x14F SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x14F JUMP JUMPDEST PUSH2 0x102 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x71E JUMP JUMPDEST PUSH2 0x102 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x779 JUMP JUMPDEST PUSH2 0x18F PUSH2 0x216 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x7A3 JUMP JUMPDEST PUSH2 0x23E PUSH2 0x229 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST PUSH2 0x18F PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0xFB0 JUMP JUMPDEST PUSH2 0x936 JUMP JUMPDEST PUSH2 0x18F PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0xA41 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x281 CALLER DUP5 DUP5 PUSH2 0x2B7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x2B1 SWAP1 CALLER SWAP1 DUP5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ DUP1 PUSH2 0x2ED JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x3A9 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x385 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A9 SWAP2 SWAP1 PUSH2 0xFDE JUMP JUMPDEST DUP1 PUSH2 0x3B8 JUMPI POP PUSH2 0x3B8 DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526576657273655265676973747261723A2043616C6C6572206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6120636F6E74726F6C6C6572206F7220617574686F7269736564206279206164 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6472657373206F7220746865206164647265737320697473656C660000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47A DUP7 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1777781884D03A6757A803996E38DE2A42967FB37EEACA72729271025A9E2 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP3 DUP4 SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP3 POP DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 PUSH32 0x6ADA868DD3058CF77A48A74489FD7963688E5464B2B0FA957ACE976243270E92 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x91D1777781884D03A6757A803996E38DE2A42967FB37EEACA72729271025A9E2 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x671 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0x67B PUSH1 0x0 PUSH2 0xCDE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x68B DUP7 DUP7 DUP7 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7737221300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x77372213 SWAP1 PUSH2 0x6E2 SWAP1 DUP5 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xFFB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x710 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x91D1777781884D03A6757A803996E38DE2A42967FB37EEACA72729271025A9E2 PUSH2 0x74A DUP4 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x2B1 SWAP1 CALLER SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH2 0x67D JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x824 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x8C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526576657273655265676973747261723A205265736F6C766572206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373206D757374206E6F74206265203000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xEAE17A84D9EB83D8C8EB317F9E7D64857BC363FA51674D996C023F4340C577CF SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xAC2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xB65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0xB6E DUP2 PUSH2 0xCDE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xBF8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xBF5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x106F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC04 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x28 JUMPDEST DUP1 ISZERO PUSH2 0xCD2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP5 AND BYTE DUP2 MSTORE8 PUSH1 0x10 SWAP1 SWAP3 DIV SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP5 AND BYTE DUP2 MSTORE8 PUSH1 0x10 DUP4 DIV SWAP3 POP PUSH2 0xC27 JUMP JUMPDEST POP POP PUSH1 0x28 PUSH1 0x0 KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xD93 DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xDA3 DUP2 PUSH2 0xD53 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x281 DUP2 PUSH2 0xD53 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xDEB DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xDFB DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xE0B DUP2 PUSH2 0xD53 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE71 JUMPI PUSH2 0xE71 PUSH2 0xE16 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEB7 JUMPI PUSH2 0xEB7 PUSH2 0xE16 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0xED0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xF11 DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xF21 DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0xF31 DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF59 DUP8 DUP3 DUP9 ADD PUSH2 0xE45 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF9A DUP5 DUP3 DUP6 ADD PUSH2 0xE45 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFCE DUP2 PUSH2 0xD53 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xDA3 DUP2 PUSH2 0xFA2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x281 DUP2 PUSH2 0xFA2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 DUP2 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x102F JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x60 ADD MSTORE DUP3 ADD PUSH2 0x1013 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1081 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x281 DUP2 PUSH2 0xD53 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS 0xF8 0xEE PUSH30 0x282EF64D328E7804DEEB2DA69CB552C7CD254F7F899B8AFC6A0304266473 PUSH16 0x6C634300081100330000000000000000 ",
              "sourceMap": "506:5989:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:187;;;;;;:::i;:::-;;:::i;:::-;;;712:25:111;;;700:2;685:18;3525:187:59;;;;;;;;2190:145;;;;;;:::i;:::-;;:::i;582:24::-;;;;;;;;1189:42:111;1177:55;;;1159:74;;1147:2;1132:18;582:24:59;1000:239:111;2703:474:59;;;;;;:::i;:::-;;:::i;1668:101:2:-;;;:::i;:::-;;4780:303:59;;;;;;:::i;:::-;;:::i;612:35::-;;;;;;;;;1036:85:2;1082:7;1108:6;;;1036:85;;5251:201:59;;;;;;:::i;:::-;;:::i;4031:255::-;;;;;;:::i;:::-;;:::i;1597:326::-;;;;;;:::i;:::-;;:::i;118:43:87:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4471:14:111;;4464:22;4446:41;;4434:2;4419:18;118:43:87;4306:187:111;410:177:87;;;;;;:::i;:::-;;:::i;1918:198:2:-;;;;;;:::i;:::-;;:::i;3525:187:59:-;3634:7;3664:41;3677:10;3689:5;3696:8;3664:12;:41::i;:::-;3657:48;3525:187;-1:-1:-1;;;3525:187:59:o;2190:145::-;2311:15;;2245:7;;2271:57;;2284:10;;2296:5;;2311:15;;2271:12;:57::i;:::-;2264:64;2190:145;-1:-1:-1;;2190:145:59:o;2703:474::-;2844:7;2829:4;1299:18;;;1307:10;1299:18;;:61;;-1:-1:-1;1349:10:59;1337:23;;;;:11;:23;;;;;;;;1299:61;:119;;;-1:-1:-1;1380:38:59;;;;;:20;5261:15:111;;;1380:38:59;;;5243:34:111;1407:10:59;5293:18:111;;;5286:43;1380:3:59;:20;;;;5155:18:111;;1380:38:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1299:157;;;;1438:18;1451:4;1438:12;:18::i;:::-;1278:295;;;;;;;5792:2:111;1278:295:59;;;5774:21:111;5831:2;5811:18;;;5804:30;5870:34;5850:18;;;5843:62;5941:34;5921:18;;;5914:62;6013:29;5992:19;;;5985:58;6060:19;;1278:295:59;;;;;;;;;2863:17:::1;2883:20;2898:4;2883:14;:20::i;:::-;2958:46;::::0;;408:66:::1;2958:46;::::0;;::::1;6247:19:111::0;;;;6282:12;;;6275:28;;;2958:46:59;;;;;;;;;6319:12:111;;;;2958:46:59;;;;2935:79;;;::::1;::::0;6275:28:111;;-1:-1:-1;2935:79:59;;3029:33:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;3029:33:59::1;3072:70;::::0;;;;408:66:::1;3072:70;::::0;::::1;6608:25:111::0;6649:18;;;6642:34;;;3072:20:59::1;6773:15:111::0;;;6753:18;;;6746:43;6825:15;;;6805:18;;;6798:43;3093:17:59::1;6857:19:111::0;;;6850:60;3072:3:59::1;:20;::::0;::::1;::::0;6580:19:111;;3072:70:59::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;3159:11:59;;2703:474;-1:-1:-1;;;;;;;;;2703:474:59:o;1668:101:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;7123:2:111;1240:68:2;;;7105:21:111;;;7142:18;;;7135:30;7201:34;7181:18;;;7174:62;7253:18;;1240:68:2;6921:356:111;1240:68:2;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;4780:303:59:-;4934:7;4953:12;4968:35;4981:4;4987:5;4994:8;4968:12;:35::i;:::-;5013:42;;;;;4953:50;;-1:-1:-1;5013:30:59;;;;;;:42;;4953:50;;5050:4;;5013:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5072:4:59;;4780:303;-1:-1:-1;;;;;;;;4780:303:59:o;5251:201::-;5309:7;408:66;5410:20;5425:4;5410:14;:20::i;:::-;5374:57;;;;;;6247:19:111;;;;6282:12;;6275:28;6319:12;;5374:57:59;;;;;;;;;;;;5347:98;;;;;;5328:117;;5251:201;;;:::o;4031:255::-;4227:15;;4093:7;;4131:148;;4163:10;;;;4227:15;;4261:4;4131:14;:148::i;1597:326::-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;7123:2:111;1240:68:2;;;7105:21:111;;;7142:18;;;7135:30;7201:34;7181:18;;;7174:62;7253:18;;1240:68:2;6921:356:111;1240:68:2;1700:31:59::1;::::0;::::1;1679:126;;;::::0;::::1;::::0;;8167:2:111;1679:126:59::1;::::0;::::1;8149:21:111::0;8206:2;8186:18;;;8179:30;8245:34;8225:18;;;8218:62;8316:18;8296;;;8289:46;8352:19;;1679:126:59::1;7965:412:111::0;1679:126:59::1;1815:15;:40:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1870:46:::1;::::0;::::1;::::0;-1:-1:-1;;1870:46:59::1;1597:326:::0;:::o;410:177:87:-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;7123:2:111;1240:68:2;;;7105:21:111;;;7142:18;;;7135:30;7201:34;7181:18;;;7174:62;7253:18;;1240:68:2;6921:356:111;1240:68:2;494:23:87::1;::::0;::::1;;::::0;;;:11:::1;:23;::::0;;;;;;;;:33;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;542:38;;4446:41:111;;;542:38:87::1;::::0;4419:18:111;542:38:87::1;;;;;;;410:177:::0;;:::o;1918:198:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;7123:2:111;1240:68:2;;;7105:21:111;;;7142:18;;;7135:30;7201:34;7181:18;;;7174:62;7253:18;;1240:68:2;6921:356:111;1240:68:2;2006:22:::1;::::0;::::1;1998:73;;;::::0;::::1;::::0;;8584:2:111;1998:73:2::1;::::0;::::1;8566:21:111::0;8623:2;8603:18;;;8596:30;8662:34;8642:18;;;8635:62;8733:8;8713:18;;;8706:36;8759:19;;1998:73:2::1;8382:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;6267:226:59:-;6326:4;6354;6346:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6346:21:59;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;6342:145;;-1:-1:-1;6471:5:59;;6267:226;-1:-1:-1;6267:226:59:o;6342:145::-;6413:19;;6422:10;6413:19;;6267:226;-1:-1:-1;;6267:226:59:o;5757:504::-;5817:11;5894:2;5863:345;5911:8;;5863:345;;5960:9;;6018:6;6012:3;6002:14;;5997:28;5960:9;5986:40;6061:4;6051:15;;;;6088:9;;6146:6;6140:3;6130:14;;6125:28;6088:9;6114:40;6189:4;6183;6179:15;6171:23;;5863:345;;;-1:-1:-1;;6242:2:59;6239:1;6229:16;;5757:504;-1:-1:-1;5757:504:59:o;2270:187:2:-;2343:16;2362:6;;;2378:17;;;;;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:154:111:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:388;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;-1:-1:-1;483:2:111;468:18;;455:32;496:33;455:32;496:33;:::i;:::-;548:7;538:17;;;173:388;;;;;:::o;748:247::-;807:6;860:2;848:9;839:7;835:23;831:32;828:52;;;876:1;873;866:12;828:52;915:9;902:23;934:31;959:5;934:31;:::i;1244:529::-;1321:6;1329;1337;1390:2;1378:9;1369:7;1365:23;1361:32;1358:52;;;1406:1;1403;1396:12;1358:52;1445:9;1432:23;1464:31;1489:5;1464:31;:::i;:::-;1514:5;-1:-1:-1;1571:2:111;1556:18;;1543:32;1584:33;1543:32;1584:33;:::i;:::-;1636:7;-1:-1:-1;1695:2:111;1680:18;;1667:32;1708:33;1667:32;1708:33;:::i;:::-;1760:7;1750:17;;;1244:529;;;;;:::o;1778:184::-;1830:77;1827:1;1820:88;1927:4;1924:1;1917:15;1951:4;1948:1;1941:15;1967:778;2010:5;2063:3;2056:4;2048:6;2044:17;2040:27;2030:55;;2081:1;2078;2071:12;2030:55;2117:6;2104:20;2143:18;2180:2;2176;2173:10;2170:36;;;2186:18;;:::i;:::-;2320:2;2314:9;2382:4;2374:13;;2225:66;2370:22;;;2394:2;2366:31;2362:40;2350:53;;;2418:18;;;2438:22;;;2415:46;2412:72;;;2464:18;;:::i;:::-;2504:10;2500:2;2493:22;2539:2;2531:6;2524:18;2585:3;2578:4;2573:2;2565:6;2561:15;2557:26;2554:35;2551:55;;;2602:1;2599;2592:12;2551:55;2666:2;2659:4;2651:6;2647:17;2640:4;2632:6;2628:17;2615:54;2713:1;2706:4;2701:2;2693:6;2689:15;2685:26;2678:37;2733:6;2724:15;;;;;;1967:778;;;;:::o;2750:740::-;2846:6;2854;2862;2870;2923:3;2911:9;2902:7;2898:23;2894:33;2891:53;;;2940:1;2937;2930:12;2891:53;2979:9;2966:23;2998:31;3023:5;2998:31;:::i;:::-;3048:5;-1:-1:-1;3105:2:111;3090:18;;3077:32;3118:33;3077:32;3118:33;:::i;:::-;3170:7;-1:-1:-1;3229:2:111;3214:18;;3201:32;3242:33;3201:32;3242:33;:::i;:::-;3294:7;-1:-1:-1;3352:2:111;3337:18;;3324:32;3379:18;3368:30;;3365:50;;;3411:1;3408;3401:12;3365:50;3434;3476:7;3467:6;3456:9;3452:22;3434:50;:::i;:::-;3424:60;;;2750:740;;;;;;;:::o;3979:322::-;4048:6;4101:2;4089:9;4080:7;4076:23;4072:32;4069:52;;;4117:1;4114;4107:12;4069:52;4157:9;4144:23;4190:18;4182:6;4179:30;4176:50;;;4222:1;4219;4212:12;4176:50;4245;4287:7;4278:6;4267:9;4263:22;4245:50;:::i;:::-;4235:60;3979:322;-1:-1:-1;;;;3979:322:111:o;4498:118::-;4584:5;4577:13;4570:21;4563:5;4560:32;4550:60;;4606:1;4603;4596:12;4621:382;4686:6;4694;4747:2;4735:9;4726:7;4722:23;4718:32;4715:52;;;4763:1;4760;4753:12;4715:52;4802:9;4789:23;4821:31;4846:5;4821:31;:::i;:::-;4871:5;-1:-1:-1;4928:2:111;4913:18;;4900:32;4941:30;4900:32;4941:30;:::i;5340:245::-;5407:6;5460:2;5448:9;5439:7;5435:23;5431:32;5428:52;;;5476:1;5473;5466:12;5428:52;5508:9;5502:16;5527:28;5549:5;5527:28;:::i;7282:678::-;7459:6;7448:9;7441:25;7422:4;7485:2;7523;7518;7507:9;7503:18;7496:30;7555:6;7549:13;7598:6;7593:2;7582:9;7578:18;7571:34;7623:1;7633:140;7647:6;7644:1;7641:13;7633:140;;;7742:14;;;7738:23;;7732:30;7708:17;;;7727:2;7704:26;7697:66;7662:10;;7633:140;;;7637:3;7822:1;7817:2;7808:6;7797:9;7793:22;7789:31;7782:42;7951:2;7881:66;7876:2;7868:6;7864:15;7860:88;7849:9;7845:104;7841:113;7833:121;;;;7282:678;;;;;:::o;8789:251::-;8859:6;8912:2;8900:9;8891:7;8887:23;8883:32;8880:52;;;8928:1;8925;8918:12;8880:52;8960:9;8954:16;8979:31;9004:5;8979:31;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "858000",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "claim(address)": "infinite",
                "claimForAddr(address,address,address)": "infinite",
                "claimWithResolver(address,address)": "infinite",
                "controllers(address)": "2557",
                "defaultResolver()": "2402",
                "ens()": "infinite",
                "node(address)": "infinite",
                "owner()": "2330",
                "renounceOwnership()": "28120",
                "setController(address,bool)": "infinite",
                "setDefaultResolver(address)": "27838",
                "setName(string)": "infinite",
                "setNameForAddr(address,address,address,string)": "infinite",
                "transferOwnership(address)": "infinite"
              },
              "internal": {
                "ownsContract(address)": "infinite",
                "sha3HexAddress(address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "claim(address)": "1e83409a",
              "claimForAddr(address,address,address)": "65669631",
              "claimWithResolver(address,address)": "0f5a5466",
              "controllers(address)": "da8c229e",
              "defaultResolver()": "828eab0e",
              "ens()": "3f15457f",
              "node(address)": "bffbe61c",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "setController(address,bool)": "e0dba60f",
              "setDefaultResolver(address)": "c66485b2",
              "setName(string)": "c47f0027",
              "setNameForAddr(address,address,address,string)": "7a806d6b",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"ensAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"ControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract NameResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"DefaultResolverChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"ReverseClaimed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimForAddr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimWithResolver\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"controllers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultResolver\",\"outputs\":[{\"internalType\":\"contract NameResolver\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setDefaultResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setNameForAddr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claim(address)\":{\"details\":\"Transfers ownership of the reverse ENS record associated with the      calling account.\",\"params\":{\"owner\":\"The address to set as the owner of the reverse record in ENS.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"claimForAddr(address,address,address)\":{\"details\":\"Transfers ownership of the reverse ENS record associated with the      calling account.\",\"params\":{\"addr\":\"The reverse record to set\",\"owner\":\"The address to set as the owner of the reverse record in ENS.\",\"resolver\":\"The resolver of the reverse node\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"claimWithResolver(address,address)\":{\"details\":\"Transfers ownership of the reverse ENS record associated with the      calling account.\",\"params\":{\"owner\":\"The address to set as the owner of the reverse record in ENS.\",\"resolver\":\"The address of the resolver to set; 0 to leave unchanged.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"constructor\":{\"details\":\"Constructor\",\"params\":{\"ensAddr\":\"The address of the ENS registry.\"}},\"node(address)\":{\"details\":\"Returns the node hash for a given account's reverse records.\",\"params\":{\"addr\":\"The address to hash\"},\"returns\":{\"_0\":\"The ENS node hash.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setName(string)\":{\"details\":\"Sets the `name()` record for the reverse ENS record associated with the calling account. First updates the resolver to the default reverse resolver if necessary.\",\"params\":{\"name\":\"The name to set for this address.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"setNameForAddr(address,address,address,string)\":{\"details\":\"Sets the `name()` record for the reverse ENS record associated with the account provided. Updates the resolver to a designated resolver Only callable by controllers and authorised users\",\"params\":{\"addr\":\"The reverse record to set\",\"name\":\"The name to set for this address.\",\"owner\":\"The owner of the reverse node\",\"resolver\":\"The resolver of the reverse node\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/ReverseRegistrar.sol\":\"ReverseRegistrar\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/IReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface IReverseRegistrar {\\n    function setDefaultResolver(address resolver) external;\\n\\n    function claim(address owner) external returns (bytes32);\\n\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) external returns (bytes32);\\n\\n    function claimWithResolver(address owner, address resolver)\\n        external\\n        returns (bytes32);\\n\\n    function setName(string memory name) external returns (bytes32);\\n\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) external returns (bytes32);\\n\\n    function node(address addr) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd6ba83973ffbab31dec17a716af3bb5703844d16dceb5078583fb2c509f8bcc2\"},\"contracts/registry/ReverseRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\nimport \\\"./IReverseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../root/Controllable.sol\\\";\\n\\nabstract contract NameResolver {\\n    function setName(bytes32 node, string memory name) public virtual;\\n}\\n\\nbytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\nbytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n// namehash('addr.reverse')\\n\\ncontract ReverseRegistrar is Ownable, Controllable, IReverseRegistrar {\\n    ENS public immutable ens;\\n    NameResolver public defaultResolver;\\n\\n    event ReverseClaimed(address indexed addr, bytes32 indexed node);\\n    event DefaultResolverChanged(NameResolver indexed resolver);\\n\\n    /**\\n     * @dev Constructor\\n     * @param ensAddr The address of the ENS registry.\\n     */\\n    constructor(ENS ensAddr) {\\n        ens = ensAddr;\\n\\n        // Assign ownership of the reverse record to our deployer\\n        ReverseRegistrar oldRegistrar = ReverseRegistrar(\\n            ensAddr.owner(ADDR_REVERSE_NODE)\\n        );\\n        if (address(oldRegistrar) != address(0x0)) {\\n            oldRegistrar.claim(msg.sender);\\n        }\\n    }\\n\\n    modifier authorised(address addr) {\\n        require(\\n            addr == msg.sender ||\\n                controllers[msg.sender] ||\\n                ens.isApprovedForAll(addr, msg.sender) ||\\n                ownsContract(addr),\\n            \\\"ReverseRegistrar: Caller is not a controller or authorised by address or the address itself\\\"\\n        );\\n        _;\\n    }\\n\\n    function setDefaultResolver(address resolver) public override onlyOwner {\\n        require(\\n            address(resolver) != address(0),\\n            \\\"ReverseRegistrar: Resolver address must not be 0\\\"\\n        );\\n        defaultResolver = NameResolver(resolver);\\n        emit DefaultResolverChanged(NameResolver(resolver));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claim(address owner) public override returns (bytes32) {\\n        return claimForAddr(msg.sender, owner, address(defaultResolver));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param addr The reverse record to set\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @param resolver The resolver of the reverse node\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claimForAddr(\\n        address addr,\\n        address owner,\\n        address resolver\\n    ) public override authorised(addr) returns (bytes32) {\\n        bytes32 labelHash = sha3HexAddress(addr);\\n        bytes32 reverseNode = keccak256(\\n            abi.encodePacked(ADDR_REVERSE_NODE, labelHash)\\n        );\\n        emit ReverseClaimed(addr, reverseNode);\\n        ens.setSubnodeRecord(ADDR_REVERSE_NODE, labelHash, owner, resolver, 0);\\n        return reverseNode;\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the reverse ENS record associated with the\\n     *      calling account.\\n     * @param owner The address to set as the owner of the reverse record in ENS.\\n     * @param resolver The address of the resolver to set; 0 to leave unchanged.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function claimWithResolver(address owner, address resolver)\\n        public\\n        override\\n        returns (bytes32)\\n    {\\n        return claimForAddr(msg.sender, owner, resolver);\\n    }\\n\\n    /**\\n     * @dev Sets the `name()` record for the reverse ENS record associated with\\n     * the calling account. First updates the resolver to the default reverse\\n     * resolver if necessary.\\n     * @param name The name to set for this address.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function setName(string memory name) public override returns (bytes32) {\\n        return\\n            setNameForAddr(\\n                msg.sender,\\n                msg.sender,\\n                address(defaultResolver),\\n                name\\n            );\\n    }\\n\\n    /**\\n     * @dev Sets the `name()` record for the reverse ENS record associated with\\n     * the account provided. Updates the resolver to a designated resolver\\n     * Only callable by controllers and authorised users\\n     * @param addr The reverse record to set\\n     * @param owner The owner of the reverse node\\n     * @param resolver The resolver of the reverse node\\n     * @param name The name to set for this address.\\n     * @return The ENS node hash of the reverse record.\\n     */\\n    function setNameForAddr(\\n        address addr,\\n        address owner,\\n        address resolver,\\n        string memory name\\n    ) public override returns (bytes32) {\\n        bytes32 node = claimForAddr(addr, owner, resolver);\\n        NameResolver(resolver).setName(node, name);\\n        return node;\\n    }\\n\\n    /**\\n     * @dev Returns the node hash for a given account's reverse records.\\n     * @param addr The address to hash\\n     * @return The ENS node hash.\\n     */\\n    function node(address addr) public pure override returns (bytes32) {\\n        return\\n            keccak256(\\n                abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr))\\n            );\\n    }\\n\\n    /**\\n     * @dev An optimised function to compute the sha3 of the lower-case\\n     *      hexadecimal representation of an Ethereum address.\\n     * @param addr The address to hash\\n     * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\\n     *         input address.\\n     */\\n    function sha3HexAddress(address addr) private pure returns (bytes32 ret) {\\n        assembly {\\n            for {\\n                let i := 40\\n            } gt(i, 0) {\\n\\n            } {\\n                i := sub(i, 1)\\n                mstore8(i, byte(and(addr, 0xf), lookup))\\n                addr := div(addr, 0x10)\\n                i := sub(i, 1)\\n                mstore8(i, byte(and(addr, 0xf), lookup))\\n                addr := div(addr, 0x10)\\n            }\\n\\n            ret := keccak256(0, 40)\\n        }\\n    }\\n\\n    function ownsContract(address addr) internal view returns (bool) {\\n        try Ownable(addr).owner() returns (address owner) {\\n            return owner == msg.sender;\\n        } catch {\\n            return false;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4430930561750d2de1163f7b7ba22ae003a7684394371e90a04374859a2337cf\"},\"contracts/root/Controllable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool enabled);\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n\\n    function setController(address controller, bool enabled) public onlyOwner {\\n        controllers[controller] = enabled;\\n        emit ControllerChanged(controller, enabled);\\n    }\\n}\\n\",\"keccak256\":\"0xb19b8c0fafe9ca2b4bf8aaafee486fa31437672e1e1977bdf84bfe03464969db\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "contracts/registry/ReverseRegistrar.sol:ReverseRegistrar",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 15628,
                "contract": "contracts/registry/ReverseRegistrar.sol:ReverseRegistrar",
                "label": "controllers",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_bool)"
              },
              {
                "astId": 12894,
                "contract": "contracts/registry/ReverseRegistrar.sol:ReverseRegistrar",
                "label": "defaultResolver",
                "offset": 0,
                "slot": "2",
                "type": "t_contract(NameResolver)12876"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_contract(NameResolver)12876": {
                "encoding": "inplace",
                "label": "contract NameResolver",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/registry/TestRegistrar.sol": {
        "TestRegistrar": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "ensAddr",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "expiryTimes",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "register",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rootNode",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "constructor": {
                "params": {
                  "ensAddr": "The address of the ENS registry.",
                  "node": "The node that this registrar administers."
                }
              },
              "register(bytes32,address)": {
                "params": {
                  "label": "The hash of the label to register.",
                  "owner": "The address of the new owner."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_13247": {
                  "entryPoint": null,
                  "id": 13247,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory": {
                  "entryPoint": 69,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:380:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "125:253:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "171:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "180:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "183:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "173:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "173:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "173:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "146:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "155:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "142:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "142:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "167:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "138:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "138:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "135:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "196:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "215:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "209:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "209:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "200:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "288:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "297:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "300:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "290:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "290:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "290:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "247:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "258:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "273:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "278:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "269:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "269:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "282:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "265:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "265:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "254:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "254:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "244:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "244:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "237:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "237:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "234:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "313:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "323:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "313:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "337:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "357:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "368:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "353:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "353:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "347:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "347:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "337:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "83:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "94:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "106:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "114:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:364:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_ENS_$12157t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        value1 := mload(add(headStart, 32))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b506040516103ca3803806103ca83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161031a6100b06000396000818160ea015261016d015260008181605601526101b7015261031a6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633f15457f14610051578063af9f26e4146100a2578063d22057a9146100d0578063faff50a8146100e5575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100c26100b0366004610229565b60006020819052908152604090205481565b604051908152602001610099565b6100e36100de366004610242565b61010c565b005b6100c27f000000000000000000000000000000000000000000000000000000000000000081565b600082815260208190526040902054421161012657600080fd5b6101336224ea004261028b565b6000838152602081905260409081902091909155517f06ab59230000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201526024810183905273ffffffffffffffffffffffffffffffffffffffff82811660448301527f000000000000000000000000000000000000000000000000000000000000000016906306ab5923906064016020604051808303816000875af1158015610200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022491906102cb565b505050565b60006020828403121561023b57600080fd5b5035919050565b6000806040838503121561025557600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461028057600080fd5b809150509250929050565b808201808211156102c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b6000602082840312156102dd57600080fd5b505191905056fea26469706673582212204bdff64a2392a2c486401fea4112dc955a3bdf72b12687ee34718ee6e5a854f564736f6c63430008110033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3CA CODESIZE SUB DUP1 PUSH2 0x3CA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x80 MSTORE PUSH1 0xA0 MSTORE PUSH2 0x7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x31A PUSH2 0xB0 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xEA ADD MSTORE PUSH2 0x16D ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH1 0x56 ADD MSTORE PUSH2 0x1B7 ADD MSTORE PUSH2 0x31A PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3F15457F EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xAF9F26E4 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD22057A9 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xFAFF50A8 EQ PUSH2 0xE5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x78 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC2 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x229 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x99 JUMP JUMPDEST PUSH2 0xE3 PUSH2 0xDE CALLDATASIZE PUSH1 0x4 PUSH2 0x242 JUMP JUMPDEST PUSH2 0x10C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC2 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP GT PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH3 0x24EA00 TIMESTAMP PUSH2 0x28B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x200 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x224 SWAP2 SWAP1 PUSH2 0x2CB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2C5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B 0xDF 0xF6 0x4A 0x23 SWAP3 LOG2 0xC4 DUP7 BLOCKHASH 0x1F 0xEA COINBASE SLT 0xDC SWAP6 GAS EXTCODESIZE 0xDF PUSH19 0xB12687EE34718EE6E5A854F564736F6C634300 ADDMOD GT STOP CALLER ",
              "sourceMap": "208:871:60:-:0;;;563:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;612:13:60;;;;;635:15;;208:871;;14:364:111;106:6;114;167:2;155:9;146:7;142:23;138:32;135:52;;;183:1;180;173:12;135:52;209:16;;-1:-1:-1;;;;;254:31:111;;244:42;;234:70;;300:1;297;290:12;234:70;368:2;353:18;;;;347:25;323:5;;347:25;;-1:-1:-1;;;14:364:111:o;:::-;208:871:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ens_13223": {
                  "entryPoint": null,
                  "id": 13223,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@expiryTimes_13229": {
                  "entryPoint": null,
                  "id": 13229,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@register_13282": {
                  "entryPoint": 268,
                  "id": 13282,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@rootNode_13225": {
                  "entryPoint": null,
                  "id": 13225,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 553,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 715,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 578,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 651,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2032:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "128:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "138:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "150:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "161:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "146:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "146:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "138:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "195:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "203:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "191:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "191:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "173:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "173:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "173:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "97:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "108:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "119:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "328:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "374:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "383:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "386:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "376:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "376:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "376:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "349:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "358:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "345:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "345:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "370:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "341:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "341:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "338:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "399:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "422:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "409:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "409:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "399:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "294:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "305:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "317:6:111",
                            "type": ""
                          }
                        ],
                        "src": "258:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "544:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "554:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "566:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "577:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "554:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "596:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "607:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "589:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "589:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "589:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "513:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "524:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "535:4:111",
                            "type": ""
                          }
                        ],
                        "src": "443:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "712:290:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "758:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "767:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "770:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "760:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "760:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "760:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "733:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "742:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "729:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "729:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "754:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "725:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "725:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "722:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "783:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "806:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "793:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "793:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "783:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "825:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "855:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "866:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "851:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "851:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "838:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "838:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "829:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "956:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "965:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "968:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "958:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "958:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "958:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "892:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "903:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "910:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "899:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "899:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "889:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "889:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "882:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "882:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "879:93:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "981:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "991:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "981:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "670:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "681:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "693:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "701:6:111",
                            "type": ""
                          }
                        ],
                        "src": "625:377:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1108:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1118:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1130:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1141:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1126:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1126:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1118:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1160:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1171:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1153:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1153:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1153:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1077:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1088:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1099:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1007:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1237:231:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1247:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1258:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1261:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1254:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1254:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "1247:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1294:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1315:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1318:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1308:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1308:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1308:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1416:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1419:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1409:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1409:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1409:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1444:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1447:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1437:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1437:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1437:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1278:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "1281:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1275:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1275:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1272:190:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1220:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1223:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "1229:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1189:279:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1630:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1640:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1652:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1663:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1648:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1640:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1682:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1693:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1675:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1675:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1675:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1720:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1731:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1716:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1716:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1736:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1709:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1709:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1709:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1763:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1774:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1759:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1759:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1783:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1791:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1779:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1779:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1752:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1752:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1752:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1583:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1594:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1602:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1610:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1621:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1473:368:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1927:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1973:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1982:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1985:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1975:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1975:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1975:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1948:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1957:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1944:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1944:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1969:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1940:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1940:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1937:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1998:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2014:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2008:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2008:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1998:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1893:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1904:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1916:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1846:184:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32(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_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "13223": [
                  {
                    "length": 32,
                    "start": 86
                  },
                  {
                    "length": 32,
                    "start": 439
                  }
                ],
                "13225": [
                  {
                    "length": 32,
                    "start": 234
                  },
                  {
                    "length": 32,
                    "start": 365
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80633f15457f14610051578063af9f26e4146100a2578063d22057a9146100d0578063faff50a8146100e5575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100c26100b0366004610229565b60006020819052908152604090205481565b604051908152602001610099565b6100e36100de366004610242565b61010c565b005b6100c27f000000000000000000000000000000000000000000000000000000000000000081565b600082815260208190526040902054421161012657600080fd5b6101336224ea004261028b565b6000838152602081905260409081902091909155517f06ab59230000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201526024810183905273ffffffffffffffffffffffffffffffffffffffff82811660448301527f000000000000000000000000000000000000000000000000000000000000000016906306ab5923906064016020604051808303816000875af1158015610200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022491906102cb565b505050565b60006020828403121561023b57600080fd5b5035919050565b6000806040838503121561025557600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461028057600080fd5b809150509250929050565b808201808211156102c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b6000602082840312156102dd57600080fd5b505191905056fea26469706673582212204bdff64a2392a2c486401fea4112dc955a3bdf72b12687ee34718ee6e5a854f564736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3F15457F EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xAF9F26E4 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD22057A9 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xFAFF50A8 EQ PUSH2 0xE5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x78 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC2 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x229 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x99 JUMP JUMPDEST PUSH2 0xE3 PUSH2 0xDE CALLDATASIZE PUSH1 0x4 PUSH2 0x242 JUMP JUMPDEST PUSH2 0x10C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC2 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP GT PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH3 0x24EA00 TIMESTAMP PUSH2 0x28B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x200 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x224 SWAP2 SWAP1 PUSH2 0x2CB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2C5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B 0xDF 0xF6 0x4A 0x23 SWAP3 LOG2 0xC4 DUP7 BLOCKHASH 0x1F 0xEA COINBASE SLT 0xDC SWAP6 GAS EXTCODESIZE 0xDF PUSH19 0xB12687EE34718EE6E5A854F564736F6C634300 ADDMOD GT STOP CALLER ",
              "sourceMap": "208:871:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;289:24;;;;;;;;203:42:111;191:55;;;173:74;;161:2;146:18;289:24:60;;;;;;;;358:46;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;589:25:111;;;577:2;562:18;358:46:60;443:177:111;839:238:60;;;;;;:::i;:::-;;:::i;:::-;;319:33;;;;;839:238;912:11;:18;;;;;;;;;;;933:15;-1:-1:-1;904:45:60;;;;;;981:36;275:7;981:15;:36;:::i;:::-;960:11;:18;;;;;;;;;;;;:57;;;;1027:43;;;;1047:8;1027:43;;;1675:25:111;1716:18;;;1709:34;;;1027:19:60;1779:55:111;;;1759:18;;;1752:83;1027:3:60;:19;;;;1648:18:111;;1027:43:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;839:238;;:::o;258:180:111:-;317:6;370:2;358:9;349:7;345:23;341:32;338:52;;;386:1;383;376:12;338:52;-1:-1:-1;409:23:111;;258:180;-1:-1:-1;258:180:111:o;625:377::-;693:6;701;754:2;742:9;733:7;729:23;725:32;722:52;;;770:1;767;760:12;722:52;806:9;793:23;783:33;;866:2;855:9;851:18;838:32;910:42;903:5;899:54;892:5;889:65;879:93;;968:1;965;958:12;879:93;991:5;981:15;;;625:377;;;;;:::o;1189:279::-;1254:9;;;1275:10;;;1272:190;;;1318:77;1315:1;1308:88;1419:4;1416:1;1409:15;1447:4;1444:1;1437:15;1272:190;1189:279;;;;:::o;1846:184::-;1916:6;1969:2;1957:9;1948:7;1944:23;1940:32;1937:52;;;1985:1;1982;1975:12;1937:52;-1:-1:-1;2008:16:111;;1846:184;-1:-1:-1;1846:184:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "158800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "ens()": "infinite",
                "expiryTimes(bytes32)": "2441",
                "register(bytes32,address)": "infinite",
                "rootNode()": "infinite"
              }
            },
            "methodIdentifiers": {
              "ens()": "3f15457f",
              "expiryTimes(bytes32)": "af9f26e4",
              "register(bytes32,address)": "d22057a9",
              "rootNode()": "faff50a8"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"ensAddr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"expiryTimes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"ensAddr\":\"The address of the ENS registry.\",\"node\":\"The node that this registrar administers.\"}},\"register(bytes32,address)\":{\"params\":{\"label\":\"The hash of the label to register.\",\"owner\":\"The address of the new owner.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor.\"},\"register(bytes32,address)\":{\"notice\":\"Register a name that's not currently registered\"}},\"notice\":\"A registrar that allocates subdomains to the first person to claim them, but expires registrations a fixed period after they're initially claimed.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/TestRegistrar.sol\":\"TestRegistrar\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/registry/TestRegistrar.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\nimport \\\"./ENS.sol\\\";\\n\\n/**\\n * A registrar that allocates subdomains to the first person to claim them, but\\n * expires registrations a fixed period after they're initially claimed.\\n */\\ncontract TestRegistrar {\\n    uint256 constant registrationPeriod = 4 weeks;\\n\\n    ENS public immutable ens;\\n    bytes32 public immutable rootNode;\\n    mapping(bytes32 => uint256) public expiryTimes;\\n\\n    /**\\n     * Constructor.\\n     * @param ensAddr The address of the ENS registry.\\n     * @param node The node that this registrar administers.\\n     */\\n    constructor(ENS ensAddr, bytes32 node) {\\n        ens = ensAddr;\\n        rootNode = node;\\n    }\\n\\n    /**\\n     * Register a name that's not currently registered\\n     * @param label The hash of the label to register.\\n     * @param owner The address of the new owner.\\n     */\\n    function register(bytes32 label, address owner) public {\\n        require(expiryTimes[label] < block.timestamp);\\n\\n        expiryTimes[label] = block.timestamp + registrationPeriod;\\n        ens.setSubnodeOwner(rootNode, label, owner);\\n    }\\n}\\n\",\"keccak256\":\"0xd75b19e2a15f32f01ed14a4c8cef51036a4bb3fb0c5e92fd51c0257aa276e731\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13229,
                "contract": "contracts/registry/TestRegistrar.sol:TestRegistrar",
                "label": "expiryTimes",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint256)"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_uint256)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "constructor": {
                "notice": "Constructor."
              },
              "register(bytes32,address)": {
                "notice": "Register a name that's not currently registered"
              }
            },
            "notice": "A registrar that allocates subdomains to the first person to claim them, but expires registrations a fixed period after they're initially claimed.",
            "version": 1
          }
        }
      },
      "contracts/resolvers/IMulticallable.sol": {
        "IMulticallable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "multicall",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "multicallWithNodeCheck",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "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": {
              "multicall(bytes[])": "ac9650d8",
              "multicallWithNodeCheck(bytes32,bytes[])": "e32954eb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicallWithNodeCheck\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/IMulticallable.sol\":\"IMulticallable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/IMulticallable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IMulticallable {\\n    function multicall(bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    function multicallWithNodeCheck(bytes32, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n}\\n\",\"keccak256\":\"0x78b9070106d539e070dde613caaa03522143ab55c206a2efd5664c9da783741a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/resolvers/Multicallable.sol": {
        "Multicallable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "multicall",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "nodehash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "multicallWithNodeCheck",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "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": {
              "multicall(bytes[])": "ac9650d8",
              "multicallWithNodeCheck(bytes32,bytes[])": "e32954eb",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodehash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicallWithNodeCheck\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/Multicallable.sol\":\"Multicallable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/IMulticallable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IMulticallable {\\n    function multicall(bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    function multicallWithNodeCheck(bytes32, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n}\\n\",\"keccak256\":\"0x78b9070106d539e070dde613caaa03522143ab55c206a2efd5664c9da783741a\",\"license\":\"MIT\"},\"contracts/resolvers/Multicallable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\nimport \\\"./IMulticallable.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nabstract contract Multicallable is IMulticallable, ERC165 {\\n    function _multicall(bytes32 nodehash, bytes[] calldata data)\\n        internal\\n        returns (bytes[] memory results)\\n    {\\n        results = new bytes[](data.length);\\n        for (uint256 i = 0; i < data.length; i++) {\\n            if (nodehash != bytes32(0)) {\\n                bytes32 txNamehash = bytes32(data[i][4:36]);\\n                require(\\n                    txNamehash == nodehash,\\n                    \\\"multicall: All records must have a matching namehash\\\"\\n                );\\n            }\\n            (bool success, bytes memory result) = address(this).delegatecall(\\n                data[i]\\n            );\\n            require(success);\\n            results[i] = result;\\n        }\\n        return results;\\n    }\\n\\n    // This function provides an extra security check when called\\n    // from priviledged contracts (such as EthRegistrarController)\\n    // that can set records on behalf of the node owners\\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results)\\n    {\\n        return _multicall(nodehash, data);\\n    }\\n\\n    function multicall(bytes[] calldata data)\\n        public\\n        override\\n        returns (bytes[] memory results)\\n    {\\n        return _multicall(bytes32(0), data);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IMulticallable).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x0232b14c50b5c8bef0777fa8c130228a6a2c10b27f9be08760d40a44fd8823e9\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/resolvers/OwnedResolver.sol": {
        "OwnedResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                }
              ],
              "name": "ABIChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "AddrChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "newAddress",
                  "type": "bytes"
                }
              ],
              "name": "AddressChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "ContenthashChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "record",
                  "type": "bytes"
                }
              ],
              "name": "DNSRecordChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "DNSRecordDeleted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "lastzonehash",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "zonehash",
                  "type": "bytes"
                }
              ],
              "name": "DNSZonehashChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "InterfaceChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "NameChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "PubkeyChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "string",
                  "name": "indexedKey",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "TextChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentTypes",
                  "type": "uint256"
                }
              ],
              "name": "ABI",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "contenthash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "name",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "dnsRecord",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "name",
                  "type": "bytes32"
                }
              ],
              "name": "hasDNSRecords",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "interfaceImplementer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "pubkey",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "setABI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "a",
                  "type": "bytes"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "setContenthash",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "setDNSRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "setInterface",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "newName",
                  "type": "string"
                }
              ],
              "name": "setName",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "setPubkey",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "setText",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "setZonehash",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                }
              ],
              "name": "text",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "zonehash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "ABI(bytes32,uint256)": {
                "params": {
                  "contentTypes": "A bitwise OR of the ABI formats accepted by the caller.",
                  "node": "The ENS node to query"
                },
                "returns": {
                  "_0": "contentType The content type of the return value",
                  "_1": "data The ABI data"
                }
              },
              "addr(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated address."
                }
              },
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "contenthash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              },
              "dnsRecord(bytes32,bytes32,uint16)": {
                "params": {
                  "name": "the keccak-256 hash of the fully-qualified name for which to fetch the record",
                  "node": "the namehash of the node for which to fetch the record",
                  "resource": "the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types"
                },
                "returns": {
                  "_0": "the DNS record in wire format if present, otherwise empty"
                }
              },
              "hasDNSRecords(bytes32,bytes32)": {
                "params": {
                  "name": "the namehash of the node for which to check the records",
                  "node": "the namehash of the node for which to check the records"
                }
              },
              "interfaceImplementer(bytes32,bytes4)": {
                "params": {
                  "interfaceID": "The EIP 165 interface ID to check for.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The address that implements this interface, or 0 if the interface is unsupported."
                }
              },
              "name(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated name."
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "pubkey(bytes32)": {
                "params": {
                  "node": "The ENS node to query"
                },
                "returns": {
                  "x": "The X coordinate of the curve point for the public key.",
                  "y": "The Y coordinate of the curve point for the public key."
                }
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "setABI(bytes32,uint256,bytes)": {
                "params": {
                  "contentType": "The content type of the ABI",
                  "data": "The ABI data.",
                  "node": "The node to update."
                }
              },
              "setAddr(bytes32,address)": {
                "params": {
                  "a": "The address to set.",
                  "node": "The node to update."
                }
              },
              "setContenthash(bytes32,bytes)": {
                "params": {
                  "hash": "The contenthash to set",
                  "node": "The node to update."
                }
              },
              "setDNSRecords(bytes32,bytes)": {
                "params": {
                  "data": "the DNS wire format records to set",
                  "node": "the namehash of the node for which to set the records"
                }
              },
              "setInterface(bytes32,bytes4,address)": {
                "params": {
                  "implementer": "The address of a contract that implements this interface for this node.",
                  "interfaceID": "The EIP 165 interface ID.",
                  "node": "The node to update."
                }
              },
              "setName(bytes32,string)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "setPubkey(bytes32,bytes32,bytes32)": {
                "params": {
                  "node": "The ENS node to query",
                  "x": "the X coordinate of the curve point for the public key.",
                  "y": "the Y coordinate of the curve point for the public key."
                }
              },
              "setText(bytes32,string,string)": {
                "params": {
                  "key": "The key to set.",
                  "node": "The node to update.",
                  "value": "The text data value to set."
                }
              },
              "setZonehash(bytes32,bytes)": {
                "params": {
                  "hash": "The zonehash to set",
                  "node": "The node to update."
                }
              },
              "text(bytes32,string)": {
                "params": {
                  "key": "The text data key to query.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated text data."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "zonehash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 31,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612c60806200007f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063691f3431116100f9578063c869023311610097578063d700ff3311610071578063d700ff331461044c578063e59d895d1461048f578063f1cb7e06146104a2578063f2fde38b146104b557600080fd5b8063c8690233146103cc578063ce3decdc14610426578063d5fa2b001461043957600080fd5b80638b95dd71116100d35780638b95dd71146103755780638da5cb5b14610388578063a8fa5682146103a6578063bc1c58d1146103b957600080fd5b8063691f343114610347578063715018a61461035a578063773722131461036257600080fd5b8063304e6ade116101665780634cbf6ba4116101405780634cbf6ba4146102b357806359d1d43c146103015780635c98042b14610321578063623195b01461033457600080fd5b8063304e6ade1461027a5780633603d7581461028d5780633b3b57de146102a057600080fd5b8063124a319c11610197578063124a319c1461020e5780632203ab561461024657806329cd62ea1461026757600080fd5b806301ffc9a7146101be5780630af179d7146101e657806310f13a8c146101fb575b600080fd5b6101d16101cc366004612382565b6104c8565b60405190151581526020015b60405180910390f35b6101f96101f43660046123df565b6104d9565b005b6101f961020936600461242b565b6106f8565b61022161021c3660046124a5565b6107da565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b6102596102543660046124d1565b610b37565b6040516101dd929190612543565b6101f961027536600461255c565b610c6f565b6101f96102883660046123df565b610d24565b6101f961029b366004612588565b610db5565b6102216102ae366004612588565b610e6d565b6101d16102c13660046124d1565b60008281526001602090815260408083205467ffffffffffffffff1683526007825280832094835293815283822092825291909152205461ffff16151590565b61031461030f3660046123df565b610e9f565b6040516101dd91906125a1565b61031461032f366004612588565b610f81565b6101f96103423660046125b4565b611042565b610314610355366004612588565b6110f4565b6101f9611130565b6101f96103703660046123df565b6111c2565b6101f9610383366004612636565b611253565b60005473ffffffffffffffffffffffffffffffffffffffff16610221565b6103146103b43660046126fa565b611355565b6103146103c7366004612588565b6113a5565b6104116103da366004612588565b60008181526001602081815260408084205467ffffffffffffffff168452600a825280842094845293905291902080549101549091565b604080519283526020830191909152016101dd565b6101f96104343660046123df565b6113e1565b6101f961044736600461275e565b611539565b61047661045a366004612588565b60016020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101dd565b6101f961049d366004612781565b611573565b6103146104b03660046124d1565b61166c565b6101f96104c33660046127bd565b611736565b60006104d382611866565b92915050565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146104ff57600080fd5b6000848152600160209081526040808320548151601f870184900484028101840190925285825283926060928392859267ffffffffffffffff9091169183916105679183918d908d908190840183828082843760009201919091525092939250506118bc9050565b90505b80515160208201511015610691578661ffff166000036105cf57806040015196506105948161191d565b9450846040516020016105a791906127d8565b6040516020818303038152906040528051906020012092506105c88161193e565b9350610683565b60006105da8261191d565b9050816040015161ffff168861ffff161415806105fe57506105fc868261195a565b155b156106815761065a8c878a8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518d9150610651908290612823565b8b51158a611978565b81604001519750816020015196508095508580519060200120935061067e8261193e565b94505b505b61068c81611be5565b61056a565b508351156106ec576106ec8a85888c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506106e391508290508f612823565b89511588611978565b50505050505050505050565b600054859073ffffffffffffffffffffffffffffffffffffffff16331461071e57600080fd5b60008681526001602090815260408083205467ffffffffffffffff168352600b8252808320898452909152908190209051849184916107609089908990612836565b9081526020016040518091039020918261077b9291906128e7565b50848460405161078c929190612836565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516107ca94939291906129d2565b60405180910390a3505050505050565b60008281526001602090815260408083205467ffffffffffffffff1683526008825280832085845282528083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff1680156108555790506104d3565b600061086085610e6d565b905073ffffffffffffffffffffffffffffffffffffffff8116610888576000925050506104d3565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790525161093491906127d8565b600060405180830381855afa9150503d806000811461096f576040519150601f19603f3d011682016040523d82523d6000602084013e610974565b606091505b5091509150811580610987575060208151105b806109c9575080601f815181106109a0576109a0612a04565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b156109db5760009450505050506104d3565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610a8491906127d8565b600060405180830381855afa9150503d8060008114610abf576040519150601f19603f3d011682016040523d82523d6000602084013e610ac4565b606091505b509092509050811580610ad8575060208151105b80610b1a575080601f81518110610af157610af1612a04565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610b2c5760009450505050506104d3565b509095945050505050565b60008281526001602081815260408084205467ffffffffffffffff1684526002825280842086855290915282206060915b848111610c4f5780851615801590610b98575060008181526020839052604081208054610b9490612846565b9050115b15610c475780826000838152602001908152602001600020808054610bbc90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610be890612846565b8015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b50505050509050935093505050610c68565b60011b610b68565b5060006040518060200160405280600081525092509250505b9250929050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610c9557600080fd5b6040805180820182528481526020808201858152600088815260018084528582205467ffffffffffffffff168252600a84528582208a835290935284902092518355519101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610d169086908690918252602082015260400190565b60405180910390a250505050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610d4a57600080fd5b60008481526001602090815260408083205467ffffffffffffffff168352600482528083208784529091529020610d828385836128e7565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610d16929190612a33565b600054819073ffffffffffffffffffffffffffffffffffffffff163314610ddb57600080fd5b6000828152600160205260408120805467ffffffffffffffff1691610dff83612a47565b82546101009290920a67ffffffffffffffff8181021990931691831602179091556000848152600160209081526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b600080610e7b83603c61166c565b90508051600003610e8f5750600092915050565b610e9881611ccd565b9392505050565b60008381526001602090815260408083205467ffffffffffffffff168352600b825280832086845290915290819020905160609190610ee19085908590612836565b90815260200160405180910390208054610efa90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2690612846565b8015610f735780601f10610f4857610100808354040283529160200191610f73565b820191906000526020600020905b815481529060010190602001808311610f5657829003601f168201915b505050505090509392505050565b60008181526001602090815260408083205467ffffffffffffffff168352600582528083208484529091529020805460609190610fbd90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe990612846565b80156110365780601f1061100b57610100808354040283529160200191611036565b820191906000526020600020905b81548152906001019060200180831161101957829003601f168201915b50505050509050919050565b600054849073ffffffffffffffffffffffffffffffffffffffff16331461106857600080fd5b83611074600182612823565b161561107f57600080fd5b60008581526001602090815260408083205467ffffffffffffffff16835260028252808320888452825280832087845290915290206110bf8385836128e7565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526001602090815260408083205467ffffffffffffffff168352600982528083208484529091529020805460609190610fbd90612846565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6111c06000611cf5565b565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146111e857600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526009825280832087845290915290206112208385836128e7565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610d16929190612a33565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461127957600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040516112ab929190612543565b60405180910390a2603c830361130f57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd26112e684611ccd565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25b60008481526001602090815260408083205467ffffffffffffffff168352600382528083208784528252808320868452909152902061134e8382612a6e565b5050505050565b60008381526001602090815260408083205467ffffffffffffffff168352600682528083208684528252808320858452825280832061ffff851684529091529020805460609190610efa90612846565b60008181526001602090815260408083205467ffffffffffffffff168352600482528083208484529091529020805460609190610fbd90612846565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461140757600080fd5b60008481526001602090815260408083205467ffffffffffffffff16808452600583528184208885529092528220805491929161144390612846565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90612846565b80156114bc5780601f10611491576101008083540402835291602001916114bc565b820191906000526020600020905b81548152906001019060200180831161149f57829003601f168201915b5050505067ffffffffffffffff841660009081526005602090815260408083208b845290915290209192506114f490508587836128e7565b50857f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f8582878760405161152993929190612b2e565b60405180910390a2505050505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331461155f57600080fd5b61156e83603c61038385611d6a565b505050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461159957600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526008825280832087845282528083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b60008281526001602090815260408083205467ffffffffffffffff16835260038252808320858452825280832084845290915290208054606091906116b090612846565b80601f01602080910402602001604051908101604052809291908181526020018280546116dc90612846565b80156117295780601f106116fe57610100808354040283529160200191611729565b820191906000526020600020905b81548152906001019060200180831161170c57829003601f168201915b5050505050905092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111ad565b73ffffffffffffffffffffffffffffffffffffffff811661185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016111ad565b61186381611cf5565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c0000000000000000000000000000000000000000000000000000000014806104d357506104d382611da3565b61190a6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c081018290526104d381611be5565b602081015181516060916104d3916119359082611df9565b84519190611e5b565b60a081015160c08201516060916104d391611935908290612823565b600081518351148015610e985750610e988360008460008751611ed2565b86516020880120600061198c878787611e5b565b90508315611ab65767ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c168452909152902080546119d790612846565b159050611a365767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611a1a83612b5e565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091528120611a77916122ff565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611aa9929190612b7c565b60405180910390a26106ec565b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611af990612846565b9050600003611b5a5767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611b3e83612ba2565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091529020611b9c8282612a6e565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611bd193929190612bb9565b60405180910390a250505050505050505050565b60c08101516020820181905281515111611bfc5750565b6000611c1082600001518360200151611df9565b8260200151611c1f9190612be8565b8251909150611c2e9082611ef5565b61ffff166040830152611c42600282612be8565b8251909150611c519082611ef5565b61ffff166060830152611c65600282612be8565b8251909150611c749082611f1d565b63ffffffff166080830152611c8a600482612be8565b8251909150600090611c9c9083611ef5565b61ffff169050611cad600283612be8565b60a084018190529150611cc08183612be8565b60c0909301929092525050565b60008151601414611cdd57600080fd5b50602001516c01000000000000000000000000900490565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc86902330000000000000000000000000000000000000000000000000000000014806104d357506104d382611f47565b6000815b83518110611e0d57611e0d612bfb565b6000611e198583611f9d565b60ff169050611e29816001612be8565b611e339083612be8565b915080600003611e435750611e49565b50611dfd565b611e538382612823565b949350505050565b8251606090611e6a8385612be8565b1115611e7557600080fd5b60008267ffffffffffffffff811115611e9057611e90612607565b6040519080825280601f01601f191660200182016040528015611eba576020820181803683370190505b50905060208082019086860101610b2c828287611fc1565b6000611edf848484612017565b611eea878785612017565b149695505050505050565b8151600090611f05836002612be8565b1115611f1057600080fd5b50016002015161ffff1690565b8151600090611f2d836004612be8565b1115611f3857600080fd5b50016004015163ffffffff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f34310000000000000000000000000000000000000000000000000000000014806104d357506104d38261203b565b6000828281518110611fb157611fb1612a04565b016020015160f81c905092915050565b60208110611ff95781518352611fd8602084612be8565b9250611fe5602083612be8565b9150611ff2602082612823565b9050611fc1565b905182516020929092036101000a6000190180199091169116179052565b82516000906120268385612be8565b111561203157600080fd5b5091016020012090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c0000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa568200000000000000000000000000000000000000000000000000000000148061211f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d10000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061220d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab560000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fd700ff330000000000000000000000000000000000000000000000000000000014806104d357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104d3565b50805461230b90612846565b6000825580601f1061231b575050565b601f01602090049060005260206000209081019061186391905b808211156123495760008155600101612335565b5090565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461237d57600080fd5b919050565b60006020828403121561239457600080fd5b610e988261234d565b60008083601f8401126123af57600080fd5b50813567ffffffffffffffff8111156123c757600080fd5b602083019150836020828501011115610c6857600080fd5b6000806000604084860312156123f457600080fd5b83359250602084013567ffffffffffffffff81111561241257600080fd5b61241e8682870161239d565b9497909650939450505050565b60008060008060006060868803121561244357600080fd5b85359450602086013567ffffffffffffffff8082111561246257600080fd5b61246e89838a0161239d565b9096509450604088013591508082111561248757600080fd5b506124948882890161239d565b969995985093965092949392505050565b600080604083850312156124b857600080fd5b823591506124c86020840161234d565b90509250929050565b600080604083850312156124e457600080fd5b50508035926020909101359150565b60005b8381101561250e5781810151838201526020016124f6565b50506000910152565b6000815180845261252f8160208601602086016124f3565b601f01601f19169290920160200192915050565b828152604060208201526000611e536040830184612517565b60008060006060848603121561257157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561259a57600080fd5b5035919050565b602081526000610e986020830184612517565b600080600080606085870312156125ca57600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156125ef57600080fd5b6125fb8782880161239d565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561264b57600080fd5b8335925060208401359150604084013567ffffffffffffffff8082111561267157600080fd5b818601915086601f83011261268557600080fd5b81358181111561269757612697612607565b604051601f8201601f19908116603f011681019083821181831017156126bf576126bf612607565b816040528281528960208487010111156126d857600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561270f57600080fd5b8335925060208401359150604084013561ffff8116811461272f57600080fd5b809150509250925092565b803573ffffffffffffffffffffffffffffffffffffffff8116811461237d57600080fd5b6000806040838503121561277157600080fd5b823591506124c86020840161273a565b60008060006060848603121561279657600080fd5b833592506127a66020850161234d565b91506127b46040850161273a565b90509250925092565b6000602082840312156127cf57600080fd5b610e988261273a565b600082516127ea8184602087016124f3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104d3576104d36127f4565b8183823760009101908152919050565b600181811c9082168061285a57607f821691505b602082108103612893577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561156e57600081815260208120601f850160051c810160208610156128c05750805b601f850160051c820191505b818110156128df578281556001016128cc565b505050505050565b67ffffffffffffffff8311156128ff576128ff612607565b6129138361290d8354612846565b83612899565b6000601f841160018114612947576000851561292f5750838201355b600019600387901b1c1916600186901b17835561134e565b600083815260209020601f19861690835b828110156129785786850135825560209485019460019092019101612958565b50868210156129955760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006129e66040830186886129a7565b82810360208401526129f98185876129a7565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602081526000611e536020830184866129a7565b600067ffffffffffffffff808316818103612a6457612a646127f4565b6001019392505050565b815167ffffffffffffffff811115612a8857612a88612607565b612a9c81612a968454612846565b84612899565b602080601f831160018114612ad15760008415612ab95750858301515b600019600386901b1c1916600185901b1785556128df565b600085815260208120601f198616915b82811015612b0057888601518255948401946001909101908401612ae1565b5085821015612b1e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612b416040830186612517565b8281036020840152612b548185876129a7565b9695505050505050565b600061ffff821680612b7257612b726127f4565b6000190192915050565b604081526000612b8f6040830185612517565b905061ffff831660208301529392505050565b600061ffff808316818103612a6457612a646127f4565b606081526000612bcc6060830186612517565b61ffff851660208401528281036040840152612b548185612517565b808201808211156104d3576104d36127f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea264697066735822122077fd1eaea1e9f2eae2e4c087dcf5d04bfe704aef62b57897cf9faf23fe0fdbce64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x2C60 DUP1 PUSH3 0x7F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x691F3431 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC8690233 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD700FF33 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD700FF33 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0xE59D895D EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0xF1CB7E06 EQ PUSH2 0x4A2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC8690233 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0xCE3DECDC EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0xD5FA2B00 EQ PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8B95DD71 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8B95DD71 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0xA8FA5682 EQ PUSH2 0x3A6 JUMPI DUP1 PUSH4 0xBC1C58D1 EQ PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x691F3431 EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0x77372213 EQ PUSH2 0x362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x304E6ADE GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x4CBF6BA4 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x4CBF6BA4 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x59D1D43C EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x5C98042B EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x623195B0 EQ PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x304E6ADE EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x3603D758 EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x3B3B57DE EQ PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x124A319C GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x124A319C EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x2203AB56 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x29CD62EA EQ PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0xAF179D7 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x10F13A8C EQ PUSH2 0x1FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D1 PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2382 JUMP JUMPDEST PUSH2 0x4C8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F9 PUSH2 0x1F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x4D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F9 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH2 0x6F8 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D1 JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP3 SWAP2 SWAP1 PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x275 CALLDATASIZE PUSH1 0x4 PUSH2 0x255C JUMP JUMPDEST PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xD24 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x29B CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0xE6D JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x2C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x7 DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 SWAP3 DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0xFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xE9F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP2 SWAP1 PUSH2 0x25A1 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0xF81 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x25B4 JUMP JUMPDEST PUSH2 0x1042 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x1130 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x370 CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x383 CALLDATASIZE PUSH1 0x4 PUSH2 0x2636 JUMP JUMPDEST PUSH2 0x1253 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x221 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x13A5 JUMP JUMPDEST PUSH2 0x411 PUSH2 0x3DA CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP5 KECCAK256 SWAP5 DUP5 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 ADD SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1DD JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x434 CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x13E1 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x275E JUMP JUMPDEST PUSH2 0x1539 JUMP JUMPDEST PUSH2 0x476 PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x49D CALLDATASIZE PUSH1 0x4 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1573 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D1 JUMP JUMPDEST PUSH2 0x166C JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x4C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x27BD JUMP JUMPDEST PUSH2 0x1736 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D3 DUP3 PUSH2 0x1866 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x1F DUP8 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP6 DUP3 MSTORE DUP4 SWAP3 PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP6 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 SWAP2 PUSH2 0x567 SWAP2 DUP4 SWAP2 DUP14 SWAP1 DUP14 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x18BC SWAP1 POP JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x691 JUMPI DUP7 PUSH2 0xFFFF AND PUSH1 0x0 SUB PUSH2 0x5CF JUMPI DUP1 PUSH1 0x40 ADD MLOAD SWAP7 POP PUSH2 0x594 DUP2 PUSH2 0x191D JUMP JUMPDEST SWAP5 POP DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5A7 SWAP2 SWAP1 PUSH2 0x27D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP PUSH2 0x5C8 DUP2 PUSH2 0x193E JUMP JUMPDEST SWAP4 POP PUSH2 0x683 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DA DUP3 PUSH2 0x191D JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND DUP9 PUSH2 0xFFFF AND EQ ISZERO DUP1 PUSH2 0x5FE JUMPI POP PUSH2 0x5FC DUP7 DUP3 PUSH2 0x195A JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x681 JUMPI PUSH2 0x65A DUP13 DUP8 DUP11 DUP15 DUP15 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP PUSH1 0x20 DUP9 ADD MLOAD DUP14 SWAP2 POP PUSH2 0x651 SWAP1 DUP3 SWAP1 PUSH2 0x2823 JUMP JUMPDEST DUP12 MLOAD ISZERO DUP11 PUSH2 0x1978 JUMP JUMPDEST DUP2 PUSH1 0x40 ADD MLOAD SWAP8 POP DUP2 PUSH1 0x20 ADD MLOAD SWAP7 POP DUP1 SWAP6 POP DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP PUSH2 0x67E DUP3 PUSH2 0x193E JUMP JUMPDEST SWAP5 POP JUMPDEST POP JUMPDEST PUSH2 0x68C DUP2 PUSH2 0x1BE5 JUMP JUMPDEST PUSH2 0x56A JUMP JUMPDEST POP DUP4 MLOAD ISZERO PUSH2 0x6EC JUMPI PUSH2 0x6EC DUP11 DUP6 DUP9 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP PUSH2 0x6E3 SWAP2 POP DUP3 SWAP1 POP DUP16 PUSH2 0x2823 JUMP JUMPDEST DUP10 MLOAD ISZERO DUP9 PUSH2 0x1978 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD DUP5 SWAP2 DUP5 SWAP2 PUSH2 0x760 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x2836 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP2 DUP3 PUSH2 0x77B SWAP3 SWAP2 SWAP1 PUSH2 0x28E7 JUMP JUMPDEST POP DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x78C SWAP3 SWAP2 SWAP1 PUSH2 0x2836 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP7 PUSH32 0x448BC014F1536726CF8D54FF3D6481ED3CBC683C2591CA204274009AFA09B1A1 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7CA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x855 JUMPI SWAP1 POP PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x860 DUP6 PUSH2 0xE6D JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x888 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH2 0x934 SWAP2 SWAP1 PUSH2 0x27D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x96F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x974 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x987 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT JUMPDEST DUP1 PUSH2 0x9C9 JUMPI POP DUP1 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0x9A0 JUMPI PUSH2 0x9A0 PUSH2 0x2A04 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND ISZERO JUMPDEST ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x27D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAC4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 PUSH2 0xAD8 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT JUMPDEST DUP1 PUSH2 0xB1A JUMPI POP DUP1 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0xAF1 JUMPI PUSH2 0xAF1 PUSH2 0x2A04 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND ISZERO JUMPDEST ISZERO PUSH2 0xB2C JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x4D3 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP7 DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 PUSH1 0x60 SWAP2 JUMPDEST DUP5 DUP2 GT PUSH2 0xC4F JUMPI DUP1 DUP6 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB98 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xB94 SWAP1 PUSH2 0x2846 JUMP JUMPDEST SWAP1 POP GT JUMPDEST ISZERO PUSH2 0xC47 JUMPI DUP1 DUP3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 DUP1 SLOAD PUSH2 0xBBC SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xBE8 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC35 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC0A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC35 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC18 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP4 POP SWAP4 POP POP POP PUSH2 0xC68 JUMP JUMPDEST PUSH1 0x1 SHL PUSH2 0xB68 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP6 DUP2 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x1 DUP1 DUP5 MSTORE DUP6 DUP3 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 MSTORE PUSH1 0xA DUP5 MSTORE DUP6 DUP3 KECCAK256 DUP11 DUP4 MSTORE SWAP1 SWAP4 MSTORE DUP5 SWAP1 KECCAK256 SWAP3 MLOAD DUP4 SSTORE MLOAD SWAP2 ADD SSTORE MLOAD DUP5 SWAP1 PUSH32 0x1D6F5E03D3F63EB58751986629A5439BAEE5079FF04F345BECB66E23EB154E46 SWAP1 PUSH2 0xD16 SWAP1 DUP7 SWAP1 DUP7 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xD4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0xD82 DUP4 DUP6 DUP4 PUSH2 0x28E7 JUMP JUMPDEST POP DUP4 PUSH32 0xE379C1624ED7E714CC0937528A32359D69D5281337765313DBA4E081B72D7578 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD16 SWAP3 SWAP2 SWAP1 PUSH2 0x2A33 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0xDFF DUP4 PUSH2 0x2A47 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND DUP2 MSTORE DUP5 SWAP3 POP PUSH32 0xC6621CCB8F3F5A04BB6502154B2CAF6ADF5983FE76DFEF1CFC9C42E3579DB444 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE7B DUP4 PUSH1 0x3C PUSH2 0x166C JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xE8F JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE98 DUP2 PUSH2 0x1CCD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xEE1 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x2836 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xEFA SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF26 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF73 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF48 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF73 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF56 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x5 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFBD SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xFE9 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1036 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x100B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1036 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1019 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1068 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x1074 PUSH1 0x1 DUP3 PUSH2 0x2823 JUMP JUMPDEST AND ISZERO PUSH2 0x107F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x10BF DUP4 DUP6 DUP4 PUSH2 0x28E7 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 SWAP1 DUP7 SWAP1 PUSH32 0xAA121BBEEF5F32F5961A2A28966E769023910FC9479059EE3495D4C1A696EFE3 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x9 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFBD SWAP1 PUSH2 0x2846 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x11B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11C0 PUSH1 0x0 PUSH2 0x1CF5 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x11E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x9 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1220 DUP4 DUP6 DUP4 PUSH2 0x28E7 JUMP JUMPDEST POP DUP4 PUSH32 0xB7D29E911041E8D9B843369E890BCB72C9388692BA48B65AC54E7214C4C348F7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD16 SWAP3 SWAP2 SWAP1 PUSH2 0x2A33 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH32 0x65412581168E88A1E60C6459D7F44AE83AD0832E670826C05A4E2476B57AF752 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x12AB SWAP3 SWAP2 SWAP1 PUSH2 0x2543 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x3C DUP4 SUB PUSH2 0x130F JUMPI DUP4 PUSH32 0x52D7D861F09AB3D26239D492E8968629F95E9E318CF0B73BFDDC441522A15FD2 PUSH2 0x12E6 DUP5 PUSH2 0x1CCD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x134E DUP4 DUP3 PUSH2 0x2A6E JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x6 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xEFA SWAP1 PUSH2 0x2846 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFBD SWAP1 PUSH2 0x2846 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP1 DUP5 MSTORE PUSH1 0x5 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP9 DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH2 0x1443 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x146F SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14BC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1491 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14BC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x149F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SWAP2 SWAP3 POP PUSH2 0x14F4 SWAP1 POP DUP6 DUP8 DUP4 PUSH2 0x28E7 JUMP JUMPDEST POP DUP6 PUSH32 0x8F15ED4B723EF428F250961DA8315675B507046737E19319FC1A4D81BFE87F85 DUP3 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1529 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x155F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156E DUP4 PUSH1 0x3C PUSH2 0x383 DUP6 PUSH2 0x1D6A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE DUP7 SWAP2 PUSH32 0x7C69F06BEA0BDEF565B709E93A147836B0063BA2DD89F02D0B7E8D931E6A6DAA SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0x16B0 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x16DC SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1729 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x16FE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1729 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x170C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x17B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x185A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11AD JUMP JUMPDEST PUSH2 0x1863 DUP2 PUSH2 0x1CF5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x59D1D43C00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0x190A PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x4D3 DUP2 PUSH2 0x1BE5 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 PUSH2 0x4D3 SWAP2 PUSH2 0x1935 SWAP1 DUP3 PUSH2 0x1DF9 JUMP JUMPDEST DUP5 MLOAD SWAP2 SWAP1 PUSH2 0x1E5B JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 SWAP2 PUSH2 0x4D3 SWAP2 PUSH2 0x1935 SWAP1 DUP3 SWAP1 PUSH2 0x2823 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0xE98 JUMPI POP PUSH2 0xE98 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0x1ED2 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x20 DUP9 ADD KECCAK256 PUSH1 0x0 PUSH2 0x198C DUP8 DUP8 DUP8 PUSH2 0x1E5B JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1AB6 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x19D7 SWAP1 PUSH2 0x2846 JUMP JUMPDEST ISZERO SWAP1 POP PUSH2 0x1A36 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF AND SWAP2 PUSH2 0x1A1A DUP4 PUSH2 0x2B5E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 PUSH2 0x1A77 SWAP2 PUSH2 0x22FF JUMP JUMPDEST DUP10 PUSH32 0x3528ED0C2A3EBC993B12CE3C16BB382F9C7D88EF7D8A1BF290EAF35955A1207 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1AA9 SWAP3 SWAP2 SWAP1 PUSH2 0x2B7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x6EC JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1AF9 SWAP1 PUSH2 0x2846 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SUB PUSH2 0x1B5A JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF AND SWAP2 PUSH2 0x1B3E DUP4 PUSH2 0x2BA2 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1B9C DUP3 DUP3 PUSH2 0x2A6E JUMP JUMPDEST POP DUP10 PUSH32 0x52A608B3303A48862D07A73D82FA221318C0027FBBCFB1B2329BFACE3F19FF2B DUP11 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1BD1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0x1BFC JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C10 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1DF9 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1C1F SWAP2 SWAP1 PUSH2 0x2BE8 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1C2E SWAP1 DUP3 PUSH2 0x1EF5 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1C42 PUSH1 0x2 DUP3 PUSH2 0x2BE8 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1C51 SWAP1 DUP3 PUSH2 0x1EF5 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1C65 PUSH1 0x2 DUP3 PUSH2 0x2BE8 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1C74 SWAP1 DUP3 PUSH2 0x1F1D JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1C8A PUSH1 0x4 DUP3 PUSH2 0x2BE8 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1C9C SWAP1 DUP4 PUSH2 0x1EF5 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0x1CAD PUSH1 0x2 DUP4 PUSH2 0x2BE8 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0x1CC0 DUP2 DUP4 PUSH2 0x2BE8 JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x14 EQ PUSH2 0x1CDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x14 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP PUSH13 0x1000000000000000000000000 SWAP3 SWAP1 SWAP3 MUL PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xC869023300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0x1E0D JUMPI PUSH2 0x1E0D PUSH2 0x2BFB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E19 DUP6 DUP4 PUSH2 0x1F9D JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1E29 DUP2 PUSH1 0x1 PUSH2 0x2BE8 JUMP JUMPDEST PUSH2 0x1E33 SWAP1 DUP4 PUSH2 0x2BE8 JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0x1E43 JUMPI POP PUSH2 0x1E49 JUMP JUMPDEST POP PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x1E53 DUP4 DUP3 PUSH2 0x2823 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x1E6A DUP4 DUP6 PUSH2 0x2BE8 JUMP JUMPDEST GT ISZERO PUSH2 0x1E75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E90 JUMPI PUSH2 0x1E90 PUSH2 0x2607 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1EBA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0xB2C DUP3 DUP3 DUP8 PUSH2 0x1FC1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EDF DUP5 DUP5 DUP5 PUSH2 0x2017 JUMP JUMPDEST PUSH2 0x1EEA DUP8 DUP8 DUP6 PUSH2 0x2017 JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F05 DUP4 PUSH1 0x2 PUSH2 0x2BE8 JUMP JUMPDEST GT ISZERO PUSH2 0x1F10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F2D DUP4 PUSH1 0x4 PUSH2 0x2BE8 JUMP JUMPDEST GT ISZERO PUSH2 0x1F38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x691F343100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH2 0x203B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FB1 JUMPI PUSH2 0x1FB1 PUSH2 0x2A04 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1FF9 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x1FD8 PUSH1 0x20 DUP5 PUSH2 0x2BE8 JUMP JUMPDEST SWAP3 POP PUSH2 0x1FE5 PUSH1 0x20 DUP4 PUSH2 0x2BE8 JUMP JUMPDEST SWAP2 POP PUSH2 0x1FF2 PUSH1 0x20 DUP3 PUSH2 0x2823 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FC1 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2026 DUP4 DUP6 PUSH2 0x2BE8 JUMP JUMPDEST GT ISZERO PUSH2 0x2031 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x124A319C00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xA8FA568200000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x211F JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5C98042B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xBC1C58D100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x3B3B57DE00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x220D JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xF1CB7E0600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x2203AB5600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD700FF3300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x4D3 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x230B SWAP1 PUSH2 0x2846 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x231B JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1863 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2349 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2335 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x237D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE98 DUP3 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x23AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xC68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x241E DUP7 DUP3 DUP8 ADD PUSH2 0x239D JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x246E DUP10 DUP4 DUP11 ADD PUSH2 0x239D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2494 DUP9 DUP3 DUP10 ADD PUSH2 0x239D JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x24C8 PUSH1 0x20 DUP5 ADD PUSH2 0x234D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x250E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x24F6 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x252F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x24F3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1E53 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2517 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x259A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE98 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2517 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x25CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x25EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25FB DUP8 DUP3 DUP9 ADD PUSH2 0x239D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x264B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2697 JUMPI PUSH2 0x2697 PUSH2 0x2607 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x26BF JUMPI PUSH2 0x26BF PUSH2 0x2607 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP10 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x26D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x270F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x272F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x237D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x24C8 PUSH1 0x20 DUP5 ADD PUSH2 0x273A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x27A6 PUSH1 0x20 DUP6 ADD PUSH2 0x234D JUMP JUMPDEST SWAP2 POP PUSH2 0x27B4 PUSH1 0x40 DUP6 ADD PUSH2 0x273A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE98 DUP3 PUSH2 0x273A JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x27EA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x24F3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0x27F4 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x285A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2893 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x156E JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x28C0 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28DF JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x28CC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x28FF JUMPI PUSH2 0x28FF PUSH2 0x2607 JUMP JUMPDEST PUSH2 0x2913 DUP4 PUSH2 0x290D DUP4 SLOAD PUSH2 0x2846 JUMP JUMPDEST DUP4 PUSH2 0x2899 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2947 JUMPI PUSH1 0x0 DUP6 ISZERO PUSH2 0x292F JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x134E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP1 DUP4 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2978 JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2958 JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x2995 JUMPI PUSH1 0x0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x29E6 PUSH1 0x40 DUP4 ADD DUP7 DUP9 PUSH2 0x29A7 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x29F9 DUP2 DUP6 DUP8 PUSH2 0x29A7 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1E53 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x29A7 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2A64 JUMPI PUSH2 0x2A64 PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A88 JUMPI PUSH2 0x2A88 PUSH2 0x2607 JUMP JUMPDEST PUSH2 0x2A9C DUP2 PUSH2 0x2A96 DUP5 SLOAD PUSH2 0x2846 JUMP JUMPDEST DUP5 PUSH2 0x2899 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2AD1 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x2AB9 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x28DF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2B00 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x2AE1 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x2B1E JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B41 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2517 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2B54 DUP2 DUP6 DUP8 PUSH2 0x29A7 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND DUP1 PUSH2 0x2B72 JUMPI PUSH2 0x2B72 PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B8F PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2517 JUMP JUMPDEST SWAP1 POP PUSH2 0xFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2A64 JUMPI PUSH2 0x2A64 PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2BCC PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2517 JUMP JUMPDEST PUSH2 0xFFFF DUP6 AND PUSH1 0x20 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2B54 DUP2 DUP6 PUSH2 0x2517 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0x27F4 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0xFD1EAEA1E9F2EAE2E4C087DCF5D04BFE704AEF62B57897CF SWAP16 0xAF 0x23 INVALID 0xF 0xDB 0xCE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "495:747:63:-:0;;;;;;;;;;;;-1:-1:-1;921:32:2;719:10:14;921:18:2;:32::i;:::-;495:747:63;;2270:187:2;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;495:747:63:-;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ABI_14121": {
                  "entryPoint": 2871,
                  "id": 14121,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 7413,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@addr_14217": {
                  "entryPoint": 3693,
                  "id": 14217,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@addr_14281": {
                  "entryPoint": 5740,
                  "id": 14281,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@addressToBytes_14341": {
                  "entryPoint": 7530,
                  "id": 14341,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@bytesToAddress_14325": {
                  "entryPoint": 7373,
                  "id": 14325,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@clearRecords_13973": {
                  "entryPoint": 3509,
                  "id": 13973,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@contenthash_14401": {
                  "entryPoint": 5029,
                  "id": 14401,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@dnsRecord_14667": {
                  "entryPoint": 4949,
                  "id": 14667,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@done_6366": {
                  "entryPoint": null,
                  "id": 6366,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@equals_4449": {
                  "entryPoint": 7890,
                  "id": 4449,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@equals_4535": {
                  "entryPoint": 6490,
                  "id": 4535,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@hasDNSRecords_14691": {
                  "entryPoint": null,
                  "id": 14691,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@interfaceImplementer_15316": {
                  "entryPoint": 2010,
                  "id": 15316,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isAuthorised_13504": {
                  "entryPoint": null,
                  "id": 13504,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@iterateRRs_6349": {
                  "entryPoint": 6332,
                  "id": 6349,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@keccak_4263": {
                  "entryPoint": 8215,
                  "id": 4263,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@memcpy_4702": {
                  "entryPoint": 8129,
                  "id": 4702,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@nameLength_6069": {
                  "entryPoint": 7673,
                  "id": 6069,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_15397": {
                  "entryPoint": 4340,
                  "id": 15397,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_6493": {
                  "entryPoint": 6429,
                  "id": 6493,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@next_6470": {
                  "entryPoint": 7141,
                  "id": 6470,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@pubkey_15504": {
                  "entryPoint": null,
                  "id": 15504,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@rdata_6515": {
                  "entryPoint": 6462,
                  "id": 6515,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@readUint16_4572": {
                  "entryPoint": 7925,
                  "id": 4572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint32_4592": {
                  "entryPoint": 7965,
                  "id": 4592,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 8093,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@recordVersions_13932": {
                  "entryPoint": null,
                  "id": 13932,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@renounceOwnership_598": {
                  "entryPoint": 4400,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setABI_14054": {
                  "entryPoint": 4162,
                  "id": 14054,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setAddr_14185": {
                  "entryPoint": 5433,
                  "id": 14185,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setAddr_14260": {
                  "entryPoint": 4691,
                  "id": 14260,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setContenthash_14383": {
                  "entryPoint": 3364,
                  "id": 14383,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setDNSRRSet_14898": {
                  "entryPoint": 6520,
                  "id": 14898,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@setDNSRecords_14641": {
                  "entryPoint": 1241,
                  "id": 14641,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setInterface_15192": {
                  "entryPoint": 5491,
                  "id": 15192,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setName_15379": {
                  "entryPoint": 4546,
                  "id": 15379,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setPubkey_15472": {
                  "entryPoint": 3183,
                  "id": 15472,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setText_15575": {
                  "entryPoint": 1784,
                  "id": 15575,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@setZonehash_14731": {
                  "entryPoint": 5089,
                  "id": 14731,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@substring_4745": {
                  "entryPoint": 7771,
                  "id": 4745,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@supportsInterface_13526": {
                  "entryPoint": 1224,
                  "id": 13526,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_13994": {
                  "entryPoint": null,
                  "id": 13994,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_14142": {
                  "entryPoint": null,
                  "id": 14142,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_14309": {
                  "entryPoint": null,
                  "id": 14309,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_14422": {
                  "entryPoint": null,
                  "id": 14422,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_14777": {
                  "entryPoint": null,
                  "id": 14777,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_15337": {
                  "entryPoint": 8251,
                  "id": 15337,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_15418": {
                  "entryPoint": 8007,
                  "id": 15418,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_15525": {
                  "entryPoint": 7587,
                  "id": 15525,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_15618": {
                  "entryPoint": 6246,
                  "id": 15618,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_3081": {
                  "entryPoint": null,
                  "id": 3081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@text_15597": {
                  "entryPoint": 3743,
                  "id": 15597,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transferOwnership_621": {
                  "entryPoint": 5942,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@zonehash_14749": {
                  "entryPoint": 3969,
                  "id": 14749,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 10042,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bytes4": {
                  "entryPoint": 9037,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 9117,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 10173,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 9608,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 10078,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_bytes32": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_bytes32": {
                  "entryPoint": 9564,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_uint16": {
                  "entryPoint": 9978,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes4": {
                  "entryPoint": 9381,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_bytes4t_address": {
                  "entryPoint": 10113,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr": {
                  "entryPoint": 9183,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_string_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_string_calldata_ptrt_string_calldata_ptr": {
                  "entryPoint": 9259,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bytes32t_uint256": {
                  "entryPoint": 9425,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 9652,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptr": {
                  "entryPoint": 9782,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 9090,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 9495,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_calldata": {
                  "entryPoint": 10663,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 10200,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 10294,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10803,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_calldata_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11054,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_uint16__to_t_bytes_memory_ptr_t_uint16__fromStack_reversed": {
                  "entryPoint": 11132,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11193,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10706,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 9633,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 9539,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 11240,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 10275,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_string_storage": {
                  "entryPoint": 10393,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage": {
                  "entryPoint": 10862,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage": {
                  "entryPoint": 10471,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 9459,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "decrement_t_uint16": {
                  "entryPoint": 11102,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 10310,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint16": {
                  "entryPoint": 11170,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint64": {
                  "entryPoint": 10823,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x01": {
                  "entryPoint": 11259,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x11": {
                  "entryPoint": 10228,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 10756,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 9735,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:20769:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "62:171:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "72:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "94:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "81:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "81:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "72:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "211:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "220:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "223:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "213:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "213:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "213:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "123:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "134:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "141:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "130:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "130:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "120:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "120:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "113:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "113:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "110:117:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "41:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "52:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:219:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "307:115:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "353:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "362:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "365:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "355:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "355:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "355:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "328:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "337:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "324:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "324:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "349:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "320:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "320:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "317:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "378:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "406:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "388:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "388:28:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "378:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "273:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "284:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "296:6:111",
                            "type": ""
                          }
                        ],
                        "src": "238:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "522:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "532:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "544:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "555:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "532:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "574:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "599:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "592:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "592:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "585:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "585:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "567:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "567:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "567:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "491:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "502:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "513:4:111",
                            "type": ""
                          }
                        ],
                        "src": "427:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "691:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "740:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "749:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "752:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "742:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "742:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "742:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "719:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "727:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "715:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "715:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "734:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "711:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "711:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "704:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "704:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "701:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "765:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "788:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "775:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "775:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "765:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "838:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "847:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "850:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "840:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "840:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "840:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "810:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "818:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "807:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "807:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "804:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "863:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "879:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "887:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "875:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "875:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "863:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "944:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "953:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "956:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "946:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "946:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "946:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "915:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "923:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "911:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "911:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "932:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "907:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "907:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "939:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "904:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "904:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "901:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "654:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "662:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "670:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "680:6:111",
                            "type": ""
                          }
                        ],
                        "src": "619:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1077:371:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1123:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1132:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1135:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1125:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1125:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1125:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1098:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1107:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1094:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1094:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1119:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1090:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1090:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1087:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1148:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1171:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1158:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1158:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1148:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1190:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1221:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1232:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1217:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1217:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1204:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1204:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1194:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1279:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1288:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1291:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1281:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1281:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1251:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1259:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1248:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1248:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1245:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1304:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1360:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1371:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1356:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1356:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1380:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1330:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1330:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1308:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1318:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1397:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1407:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1424:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1434:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1424:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1027:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1038:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1050:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1058:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1066:6:111",
                            "type": ""
                          }
                        ],
                        "src": "971:477:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1597:643:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1643:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1652:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1655:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1645:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1645:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1645:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1618:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1627:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1614:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1614:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1639:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1610:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1610:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1607:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1668:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1691:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1678:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1678:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1668:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1710:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1752:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1724:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1724:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1714:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1765:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1775:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1769:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1820:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1829:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1832:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1822:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1822:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1822:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1808:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1816:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1805:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1805:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1802:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1845:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1901:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1912:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1897:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1897:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1921:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1871:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1871:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1849:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1859:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1938:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1948:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1938:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1965:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1975:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1965:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1992:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2025:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2036:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2021:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2021:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2008:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2008:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1996:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2069:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2078:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2081:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2071:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2071:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2071:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2055:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2065:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2052:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2052:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2049:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2094:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2150:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2161:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2146:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2146:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2172:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2120:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2120:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2098:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2108:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2189:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "2199:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2189:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2216:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "2226:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2216:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_calldata_ptrt_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1531:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1542:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1554:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1562:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1570:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1578:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1586:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1453:787:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2331:166:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2377:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2386:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2389:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2379:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2379:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2379:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2352:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2348:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2348:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2373:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2344:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2344:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2341:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2402:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2425:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2412:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2412:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2402:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2444:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2476:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2487:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2472:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2472:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2454:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2454:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2444:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2289:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2300:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2312:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2320:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2245:252:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2603:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2613:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2625:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2636:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2621:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2621:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2613:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2655:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2670:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2678:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2666:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2666:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2648:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2648:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2648:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2572:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2583:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2594:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2502:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2820:161:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2866:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2875:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2878:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2868:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2868:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2868:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2841:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2850:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2837:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2837:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2862:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2833:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2833:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2830:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2891:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2914:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2901:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2901:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2891:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2933:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2960:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2971:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2956:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2956:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2943:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2943:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2933:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2778:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2789:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2801:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2809:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2733:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3052:184:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3062:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3071:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3066:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3131:63:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "3156:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "3161:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3152:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3152:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3175:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3180:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3171:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3171:11:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3165:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3165:18:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3145:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3145:39:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3145:39:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3092:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3095:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3089:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3089:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3103:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3105:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "3114:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3117:2:111",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3110:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3110:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3105:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3085:3:111",
                                "statements": []
                              },
                              "src": "3081:113:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "3214:3:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3219:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3210:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3210:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3228:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3203:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3203:27:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3203:27:111"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "3030:3:111",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "3035:3:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3040:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2986:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3290:280:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3300:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3320:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3314:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3314:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3304:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3342:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3347:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3335:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3335:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3335:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3402:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3409:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3398:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3398:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3420:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3425:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3416:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3416:14:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3432:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "3363:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3363:76:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3363:76:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3448:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3463:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3476:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3484:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3472:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3472:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3489:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3468:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3468:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3459:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3459:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3559:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3455:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3455:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3448:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3267:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3274:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3282:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3241:329:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3722:141:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3739:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3750:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3732:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3732:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3732:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3777:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3788:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3773:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3773:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3793:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3766:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3766:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3766:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3805:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3830:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3842:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3853:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3838:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3838:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3813:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3813:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3805:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3683:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3694:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3702:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3713:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3575:288:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3972:212:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4018:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4027:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4030:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4020:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4020:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4020:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3993:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4002:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3989:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4014:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3985:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3985:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3982:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4043:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4066:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4053:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4053:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4043:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4085:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4112:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4123:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4108:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4108:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4095:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4095:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4085:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4136:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4163:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4174:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4159:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4159:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4146:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4146:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4136:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3922:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3933:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3945:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3953:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3961:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3868:316:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4259:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4305:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4314:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4317:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4307:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4307:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4307:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4280:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4289:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4276:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4276:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4301:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4272:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4272:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4269:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4330:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4353:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4340:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4340:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4330:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4225:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4236:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4248:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4189:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4491:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4501:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4513:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4524:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4509:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4509:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4501:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4543:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4558:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4566:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4554:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4554:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4536:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4536:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4536:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4460:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4471:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4482:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4374:242:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4708:161:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4754:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4763:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4766:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4756:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4756:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4756:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4729:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4738:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4725:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4725:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4750:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4721:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4721:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4718:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4779:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4802:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4789:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4789:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4779:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4821:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4848:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4859:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4844:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4844:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4831:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4831:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4821:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4666:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4677:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4689:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4697:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4621:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4981:371:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5027:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5036:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5039:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5029:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5029:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5029:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5002:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5011:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4998:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4998:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5023:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4994:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4991:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5052:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5075:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5062:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5062:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5052:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5094:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5125:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5136:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5121:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5121:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5108:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5108:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5098:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5183:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5192:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5195:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5185:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5185:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5185:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5155:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5163:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5152:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5152:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5149:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5208:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5264:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5275:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5260:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5260:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5284:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "5234:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5234:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5212:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5222:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5301:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "5311:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5301:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5328:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "5338:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5328:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4931:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4942:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4954:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4962:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4970:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4874:478:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5478:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5495:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5506:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5488:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5488:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5488:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5518:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5543:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5555:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5566:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5551:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5551:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5526:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5526:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5518:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5447:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5458:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5469:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5357:219:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5700:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5717:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5728:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5710:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5710:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5710:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5740:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5765:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5777:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5788:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5773:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5773:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5748:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5748:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5740:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5669:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5680:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5691:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5581:217:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5926:422:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5972:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5981:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5984:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5974:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5974:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5974:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5947:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5956:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5943:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5943:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5968:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5939:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5939:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5936:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5997:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6020:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6007:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6007:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5997:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6039:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6066:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6077:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6062:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6062:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6049:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6049:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6039:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6090:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6121:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6132:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6117:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6117:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6104:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6104:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6094:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6179:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6188:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6191:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6181:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6181:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6181:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6151:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6159:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6148:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6148:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6145:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6204:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6260:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6271:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6256:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6256:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6280:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "6230:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6230:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6208:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6218:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6297:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "6307:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6324:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "6334:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5868:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5879:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5891:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5899:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5907:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5915:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5803:545:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6385:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6402:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6405:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6395:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6395:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6499:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6492:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6492:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6492:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6523:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6526:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6516:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6516:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6516:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6353:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6655:1003:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6701:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6710:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6713:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6703:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6703:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6703:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6676:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6685:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6672:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6672:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6697:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6668:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6668:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6665:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6726:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6749:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6736:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6736:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6726:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6768:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6795:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6806:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6791:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6791:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6778:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6778:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6768:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6819:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6850:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6861:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6846:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6846:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6833:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6833:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6823:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6874:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6884:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6878:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6929:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6938:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6941:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6931:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6931:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6931:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6917:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6925:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6914:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6914:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6911:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6954:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6968:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6979:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6964:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6964:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6958:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7034:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7043:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7046:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7036:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7036:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7036:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7013:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7017:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7009:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7009:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7024:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7005:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7005:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6998:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6998:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6995:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7059:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7082:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7069:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7069:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7063:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7108:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7110:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7110:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7110:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7100:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7104:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7097:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7097:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7094:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7139:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7149:66:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "7143:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7224:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7244:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7238:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7238:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7228:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7256:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7278:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7302:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "7306:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7298:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7298:13:111"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "7313:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "7294:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7294:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7318:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7290:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7290:31:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7323:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7286:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7286:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7274:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7274:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7260:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7386:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7388:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7388:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7388:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7345:10:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7357:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7342:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7342:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7365:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7377:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7362:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7362:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7339:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7339:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7336:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7424:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7428:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7417:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7417:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7417:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7455:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7463:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7448:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7448:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7448:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7512:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7521:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7524:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7514:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7514:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7514:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7489:2:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "7493:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7485:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7485:11:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7498:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7481:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7481:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7503:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7478:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7478:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7475:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7554:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7562:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7550:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7550:15:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7571:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7575:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7567:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7567:11:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7580:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "7537:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7537:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7537:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "7607:6:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "7615:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7603:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7603:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7620:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7599:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7599:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7625:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7592:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7592:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7592:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7636:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "7646:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7636:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6605:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6616:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6628:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6636:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6644:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6542:1116:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7766:305:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7812:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7821:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7824:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7814:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7814:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7814:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7787:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7796:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7783:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7783:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7808:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7779:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7779:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7776:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7837:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7860:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7847:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7847:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7837:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7879:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7906:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7917:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7902:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7902:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7889:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7889:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7879:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7930:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7960:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7971:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7956:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7956:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7943:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7943:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7934:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8025:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8034:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8037:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8027:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8027:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8027:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7997:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "8008:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8015:6:111",
                                            "type": "",
                                            "value": "0xffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8004:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8004:18:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7994:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7994:29:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7987:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7987:37:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7984:57:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8050:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8060:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8050:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7716:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7727:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7739:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7747:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7755:6:111",
                            "type": ""
                          }
                        ],
                        "src": "7663:408:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8205:119:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8215:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8227:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8238:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8223:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8223:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8215:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8257:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8268:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8250:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8250:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8250:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8295:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8306:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8291:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8291:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8311:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8284:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8284:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8284:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8166:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8177:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8185:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8196:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8076:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8378:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8388:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8410:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8397:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8397:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "8388:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8503:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8512:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8515:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8505:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8505:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8505:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8439:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "8450:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8457:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8446:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8446:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "8436:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8436:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8429:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8429:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8426:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "8357:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "8368:5:111",
                            "type": ""
                          }
                        ],
                        "src": "8329:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8617:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8663:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8672:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8675:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8665:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8665:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8665:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8638:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8647:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8634:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8634:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8659:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8630:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8630:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8627:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8688:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8711:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8698:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8698:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8688:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8730:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8763:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8774:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8759:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8759:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8740:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8740:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8730:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8575:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8586:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8598:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8606:6:111",
                            "type": ""
                          }
                        ],
                        "src": "8530:254:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8888:101:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8898:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8910:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8921:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8906:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8906:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8898:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8940:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8955:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8963:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8951:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8951:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8933:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8933:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8933:50:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8857:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8868:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8879:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8789:200:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9097:223:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9143:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9152:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9155:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9145:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9145:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9145:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9118:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9127:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9114:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9114:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9139:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9110:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9110:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9107:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9168:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9191:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9178:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9178:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9168:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9210:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9242:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9253:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9238:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9238:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9220:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9220:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9210:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9266:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9299:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9310:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9295:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9295:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9276:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9276:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9266:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes4t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9047:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9058:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9070:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9078:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9086:6:111",
                            "type": ""
                          }
                        ],
                        "src": "8994:326:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9395:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9441:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9450:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9453:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9443:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9443:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9443:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9416:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9425:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9412:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9412:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9437:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9408:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9408:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9405:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9466:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9495:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9476:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9476:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9466:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9361:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9372:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9384:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9325:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9653:150:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9663:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9683:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9677:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9677:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9667:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9738:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9746:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9734:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9734:17:111"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "9753:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9758:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "9699:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9699:66:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9699:66:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9774:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "9785:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9790:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9781:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9781:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "9774:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "9629:3:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9634:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9645:3:111",
                            "type": ""
                          }
                        ],
                        "src": "9516:287:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9840:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9857:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9860:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9850:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9850:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9850:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9954:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9957:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9947:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9947:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9947:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9978:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9981:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "9971:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9971:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9971:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "9808:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10046:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10056:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "10068:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "10071:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "10064:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10064:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "10056:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10097:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "10099:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10099:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10099:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "10088:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "10094:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10085:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10085:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10082:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "10028:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "10031:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "10037:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9997:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10279:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10302:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10307:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10315:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "10289:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10289:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10289:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10331:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10345:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10350:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10341:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10341:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10335:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10373:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10377:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10366:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10366:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10366:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10388:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "10395:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "10388:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "10247:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10252:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10260:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10271:3:111",
                            "type": ""
                          }
                        ],
                        "src": "10130:273:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10463:382:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10473:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10487:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "10490:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "10483:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10483:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10473:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10504:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "10534:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10540:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "10530:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10530:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "10508:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10581:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10583:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "10597:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10605:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "10593:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10593:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10583:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "10561:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10554:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10554:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10551:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10671:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10692:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10695:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10685:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10685:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10685:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10793:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10796:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10786:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10786:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10786:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10821:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10824:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10814:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10814:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10814:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "10627:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10650:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10658:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10647:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10647:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "10624:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10624:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10621:218:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "10443:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10452:6:111",
                            "type": ""
                          }
                        ],
                        "src": "10408:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10906:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10923:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10926:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10916:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10916:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10916:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10939:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10957:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10960:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "10947:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10947:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "10939:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "10889:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "10897:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10850:121:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11057:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11090:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11104:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "11114:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "11108:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11135:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "11139:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11128:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11128:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11128:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11158:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11180:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11184:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "11170:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11170:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "11162:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11202:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "11225:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11235:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11242:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "11254:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "11238:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11238:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "11231:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11231:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11221:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11221:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "11206:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "11296:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "11298:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "11313:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "11298:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "11278:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11290:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "11275:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11275:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "11272:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11332:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "11346:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11356:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11363:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "11368:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "11359:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11359:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "11352:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11352:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11342:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11342:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "11336:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11386:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "11399:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "11390:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "11484:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "11493:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "11500:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "11486:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11486:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "11486:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "11434:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "11441:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "11431:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11431:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "11445:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "11447:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "11460:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11467:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "11456:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11456:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "11447:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "11427:3:111",
                                      "statements": []
                                    },
                                    "src": "11423:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "11073:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11078:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11070:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11070:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11067:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "11029:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "11036:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "11041:10:111",
                            "type": ""
                          }
                        ],
                        "src": "10976:545:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11611:141:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11621:125:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "11636:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "11654:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11657:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11650:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11650:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11663:66:111",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "11646:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11646:84:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "11642:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11642:89:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11632:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11632:100:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11738:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "11741:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "11734:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11734:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "11629:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11629:117:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "11621:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "11588:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "11594:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "11602:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11526:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11860:1222:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11901:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "11903:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11903:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11903:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "11876:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11881:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11873:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11873:27:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11870:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "11976:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "12014:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "12008:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12008:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "11982:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11982:38:111"
                                  },
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "12022:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "11932:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11932:94:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11932:94:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12035:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12052:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "12039:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "12096:728:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "12110:91:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "12129:3:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "12134:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "12125:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12125:76:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "12114:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "12214:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "12258:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "12228:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12228:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "12218:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "12276:18:111",
                                        "value": {
                                          "name": "srcOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "12285:9:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "12280:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "12364:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12389:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12414:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12419:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "12410:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "12410:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "calldataload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12397:12:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12397:33:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12382:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12382:49:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "12382:49:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "12448:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12462:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "12470:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12458:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12458:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12448:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "12489:33:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12506:9:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "12517:4:111",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12502:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12502:20:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12489:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "12318:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "12321:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "12315:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12315:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "12330:21:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "12332:17:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12341:1:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "12344:4:111",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12337:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12337:12:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12332:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "12311:3:111",
                                          "statements": []
                                        },
                                        "src": "12307:229:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "12581:187:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12606:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "src",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12635:3:111"
                                                              },
                                                              {
                                                                "name": "srcOffset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12640:9:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "add",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "12631:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12631:19:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "calldataload",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "12618:12:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "12618:33:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12669:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "len",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12672:3:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "12665:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "12665:11:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "12678:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "12661:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12661:21:111"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12684:66:111",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "12657:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12657:94:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "12653:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "12653:99:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12614:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12614:139:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12599:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12599:155:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "12599:155:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "12555:7:111"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "12564:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "12552:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12552:16:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "12549:219:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "12788:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "12802:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12805:3:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12798:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "12798:11:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "12811:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "12794:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12794:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12781:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12781:33:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "12781:33:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "12089:735:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12094:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "12841:235:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "12855:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12868:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "12859:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "12901:74:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "12919:42:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12945:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12950:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12941:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12941:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "calldataload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12928:12:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12928:33:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12919:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "len",
                                          "nodeType": "YulIdentifier",
                                          "src": "12885:3:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "12882:93:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "12995:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13054:5:111"
                                                },
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13061:3:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "13001:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13001:64:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12988:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12988:78:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "12988:78:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "12833:243:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "12072:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12077:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12069:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12069:11:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "12062:1014:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "11840:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "11846:3:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "11851:3:111",
                            "type": ""
                          }
                        ],
                        "src": "11757:1325:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13154:259:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13171:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13176:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13164:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13164:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13164:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "13209:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13214:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13205:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13205:14:111"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "13221:5:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13228:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "13192:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13192:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13192:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "13259:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "13264:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13255:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13255:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13273:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13251:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13251:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13280:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13244:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13244:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13244:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13291:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "13306:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "13319:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13327:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "13315:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13315:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13332:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "13311:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13311:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13302:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13402:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13298:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13298:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "13291:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "13123:5:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "13130:6:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "13138:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "13146:3:111",
                            "type": ""
                          }
                        ],
                        "src": "13087:326:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13607:248:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13624:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13635:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13617:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13617:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13617:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13647:76:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13688:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13696:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13708:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13719:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13704:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13704:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "13661:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13661:62:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13651:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13743:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13754:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13739:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13739:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13763:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13771:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13759:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13759:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13732:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13732:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13732:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13791:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13826:6:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13834:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13842:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "13799:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13799:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13791:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13552:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13563:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13571:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13579:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13587:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13598:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13418:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13959:149:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13969:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13981:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13992:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13977:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13977:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13969:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14011:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14026:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14034:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14022:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14022:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14004:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14004:98:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14004:98:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13928:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13939:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13950:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13860:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14145:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14162:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14165:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14155:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14155:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14155:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14259:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14262:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14252:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14252:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14252:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14283:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14286:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14276:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14276:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14276:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14113:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14403:1222:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14444:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "14446:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14446:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14446:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "14419:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14424:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14416:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14416:27:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14413:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "14519:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "14557:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "14551:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14551:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "14525:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14525:38:111"
                                  },
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "14565:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "14475:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14475:94:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14475:94:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14578:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14595:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "14582:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "14639:728:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "14653:91:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "14672:3:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14677:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "14668:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14668:76:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "14657:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "14757:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "14801:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "14771:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14771:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "14761:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "14819:18:111",
                                        "value": {
                                          "name": "srcOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "14828:9:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "14823:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "14907:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14932:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "14957:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "14962:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "14953:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "14953:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "calldataload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "14940:12:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "14940:33:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14925:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14925:49:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "14925:49:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "14991:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15005:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "15013:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15001:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15001:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14991:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "15032:33:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15049:9:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "15060:4:111",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15045:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15045:20:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15032:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "14861:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "14864:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "14858:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14858:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "14873:21:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "14875:17:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14884:1:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "14887:4:111",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14880:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14880:12:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14875:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "14854:3:111",
                                          "statements": []
                                        },
                                        "src": "14850:229:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "15124:187:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15149:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "src",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "15178:3:111"
                                                              },
                                                              {
                                                                "name": "srcOffset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "15183:9:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "add",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "15174:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "15174:19:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "calldataload",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "15161:12:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "15161:33:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15212:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "len",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15215:3:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "15208:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "15208:11:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "15221:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "15204:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15204:21:111"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "15227:66:111",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "15200:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "15200:94:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "15196:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "15196:99:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15157:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "15157:139:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15142:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15142:155:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "15142:155:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "15098:7:111"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "15107:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "15095:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15095:16:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "15092:219:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "15331:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "15345:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15348:3:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15341:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "15341:11:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "15354:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "15337:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "15337:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15324:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15324:33:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "15324:33:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "14632:735:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14637:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "15384:235:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "15398:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15411:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "15402:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "15444:74:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "15462:42:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15488:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15493:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15484:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "15484:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "calldataload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15471:12:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15471:33:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15462:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "len",
                                          "nodeType": "YulIdentifier",
                                          "src": "15428:3:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "15425:93:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "15538:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15597:5:111"
                                                },
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15604:3:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "15544:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "15544:64:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15531:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15531:78:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "15531:78:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "15376:243:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "14615:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14620:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14612:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14612:11:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "14605:1014:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "14383:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "14389:3:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "14394:3:111",
                            "type": ""
                          }
                        ],
                        "src": "14302:1323:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15759:116:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15776:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15787:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15769:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15769:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15769:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15799:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15834:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15842:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15854:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15865:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15850:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15850:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "15807:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15807:62:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15799:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15720:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15731:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15739:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15750:4:111",
                            "type": ""
                          }
                        ],
                        "src": "15630:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15926:163:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15936:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15946:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15940:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15973:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "15992:5:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15999:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "15988:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15988:14:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15977:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16030:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16032:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16032:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16032:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16017:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16026:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "16014:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16014:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "16011:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16061:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16072:7:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16081:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16068:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16068:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "16061:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "15908:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "15918:3:111",
                            "type": ""
                          }
                        ],
                        "src": "15880:209:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16268:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16285:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16296:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16278:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16278:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16278:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16319:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16330:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16315:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16315:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16335:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16308:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16308:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16308:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16358:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16369:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16354:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16354:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16374:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16347:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16347:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16347:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16418:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16430:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16441:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16426:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16426:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16418:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16245:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16259:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16094:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16586:116:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16603:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16614:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16596:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16596:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16596:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16626:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16661:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16669:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16681:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16692:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16677:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16677:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "16634:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16634:62:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16626:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16547:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16558:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16566:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16577:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16455:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16816:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16826:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16838:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16849:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16834:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16834:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16826:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16868:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16883:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16891:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16879:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16879:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16861:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16861:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16861:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16785:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16796:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16807:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16707:234:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17040:1375:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17050:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "17070:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17064:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17064:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "17054:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17117:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "17119:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17119:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17119:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "17089:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17097:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17086:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17086:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "17083:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "17192:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "17230:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "17224:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17224:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "17198:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17198:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "17238:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "17148:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17148:97:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17148:97:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17254:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17271:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "17258:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17281:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17300:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17285:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17313:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "17326:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "17313:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "17383:775:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "17397:94:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "17416:6:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "17424:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "17412:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17412:79:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "17401:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "17504:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "17548:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "17518:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17518:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "17508:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "17566:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17575:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "17570:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "17653:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17678:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "17696:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "17701:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "17692:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "17692:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "17686:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "17686:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17671:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17671:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "17671:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "17730:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17744:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "17752:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17740:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17740:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17730:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "17771:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17788:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17799:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17784:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17784:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17771:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "17600:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "17603:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "17597:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17597:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "17612:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "17614:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17623:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17626:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17619:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17619:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17614:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "17593:3:111",
                                          "statements": []
                                        },
                                        "src": "17589:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "17873:226:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "17891:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17918:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17923:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "17914:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "17914:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17908:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17908:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "17895:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17958:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17970:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17997:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18000:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "17993:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "17993:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "18009:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "17989:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17989:24:111"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "18015:66:111",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "17985:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "17985:97:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "17981:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "17981:102:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "17966:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "17966:118:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17951:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17951:134:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "17951:134:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "17844:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "17853:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "17841:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17841:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "17838:261:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "18119:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "18133:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18136:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18129:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "18129:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "18145:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "18125:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18125:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "18112:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18112:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "18112:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "17376:782:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17381:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "18175:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "18189:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18202:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "18193:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "18238:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "18256:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18275:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18280:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18271:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "18271:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18265:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "18265:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18256:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "18219:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "18216:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "18325:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18384:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18391:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "18331:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18331:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "18318:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18318:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "18318:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "18167:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "17356:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17364:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17353:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17353:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "17346:1063:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "17025:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "17031:3:111",
                            "type": ""
                          }
                        ],
                        "src": "16946:1469:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18595:230:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18612:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18623:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18605:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18605:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18605:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18635:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18666:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18678:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18689:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18674:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18674:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "18649:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18649:44:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18639:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18713:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18724:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18709:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18709:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18733:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18741:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "18729:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18729:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18702:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18702:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18702:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18761:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18796:6:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18804:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18812:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "18769:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18769:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18761:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_calldata_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18548:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18559:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18567:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18575:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18586:4:111",
                            "type": ""
                          }
                        ],
                        "src": "18420:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19004:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19021:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19032:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19014:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19014:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19014:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19055:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19066:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19051:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19051:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19071:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19044:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19044:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19044:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19094:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19105:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19090:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19090:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19110:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19083:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19083:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19083:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19165:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19176:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19161:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19161:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19181:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19154:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19154:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19154:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19199:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19211:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19222:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19207:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19207:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19199:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18981:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18995:4:111",
                            "type": ""
                          }
                        ],
                        "src": "18830:402:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19283:195:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19293:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19312:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19319:6:111",
                                    "type": "",
                                    "value": "0xffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "19308:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19308:18:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19297:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19354:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19356:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19356:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19356:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19345:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19338:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19338:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19335:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19385:87:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19396:7:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19405:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19392:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19392:80:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "19385:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19265:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "19275:3:111",
                            "type": ""
                          }
                        ],
                        "src": "19237:241:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19628:154:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19645:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19656:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19638:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19638:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19638:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19668:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19693:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19705:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19716:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19701:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19701:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "19676:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19676:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19668:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19740:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19751:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19736:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19736:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19760:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19768:6:111",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19756:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19756:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19729:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19729:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19729:47:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_uint16__to_t_bytes_memory_ptr_t_uint16__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19589:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19600:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19608:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19619:4:111",
                            "type": ""
                          }
                        ],
                        "src": "19483:299:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19833:151:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19843:16:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19853:6:111",
                                "type": "",
                                "value": "0xffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19847:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19868:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19887:5:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19894:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "19883:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19883:14:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19872:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19925:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19927:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19927:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19927:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19912:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19921:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "19909:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19909:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19906:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19956:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19967:7:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19976:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19963:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19963:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "19956:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19815:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "19825:3:111",
                            "type": ""
                          }
                        ],
                        "src": "19787:197:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20180:268:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20197:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20208:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20190:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20190:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20190:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20220:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20251:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20263:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20274:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20259:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20259:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "20234:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20234:44:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20224:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20298:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20309:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20294:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20294:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20318:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20326:6:111",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20314:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20314:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20287:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20287:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20287:47:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20354:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20365:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20350:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20350:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20374:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20382:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20370:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20370:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20343:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20343:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20343:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20402:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20427:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20435:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "20410:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20410:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20402:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20133:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20144:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20152:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20160:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20171:4:111",
                            "type": ""
                          }
                        ],
                        "src": "19989:459:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20501:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20511:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20522:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20525:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20518:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20518:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "20511:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20550:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20552:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20552:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20552:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20542:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "20545:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20539:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20539:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "20536:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20484:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20487:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "20493:3:111",
                            "type": ""
                          }
                        ],
                        "src": "20453:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20615:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20632:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20635:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20625:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20625:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20625:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20729:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20732:4:111",
                                    "type": "",
                                    "value": "0x01"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20722:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20722:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20722:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20753:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20756:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "20746:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20746:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20746:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x01",
                        "nodeType": "YulFunctionDefinition",
                        "src": "20583:184:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes4(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_bytes4(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_bytes32t_string_calldata_ptrt_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_bytes32t_bytes4(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_bytes4(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_bytes32(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_address_payable__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value2 := memPtr\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_uint16(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n        value2 := value\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes4t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_bytes4(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := srcOffset\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function abi_encode_string_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_string_calldata(value0, value1, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_string_calldata(value2, value3, tail_1)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := srcOffset\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 32))\n    }\n    function increment_t_uint64(value) -> ret\n    {\n        let _1 := 0xffffffffffffffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes_calldata_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_string_calldata(value1, value2, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function decrement_t_uint16(value) -> ret\n    {\n        let value_1 := and(value, 0xffff)\n        if iszero(value_1) { panic_error_0x11() }\n        ret := add(value_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_uint16__to_t_bytes_memory_ptr_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xffff))\n    }\n    function increment_t_uint16(value) -> ret\n    {\n        let _1 := 0xffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_bytes(value0, add(headStart, 96))\n        mstore(add(headStart, 32), and(value1, 0xffff))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_bytes(value2, tail_1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101b95760003560e01c8063691f3431116100f9578063c869023311610097578063d700ff3311610071578063d700ff331461044c578063e59d895d1461048f578063f1cb7e06146104a2578063f2fde38b146104b557600080fd5b8063c8690233146103cc578063ce3decdc14610426578063d5fa2b001461043957600080fd5b80638b95dd71116100d35780638b95dd71146103755780638da5cb5b14610388578063a8fa5682146103a6578063bc1c58d1146103b957600080fd5b8063691f343114610347578063715018a61461035a578063773722131461036257600080fd5b8063304e6ade116101665780634cbf6ba4116101405780634cbf6ba4146102b357806359d1d43c146103015780635c98042b14610321578063623195b01461033457600080fd5b8063304e6ade1461027a5780633603d7581461028d5780633b3b57de146102a057600080fd5b8063124a319c11610197578063124a319c1461020e5780632203ab561461024657806329cd62ea1461026757600080fd5b806301ffc9a7146101be5780630af179d7146101e657806310f13a8c146101fb575b600080fd5b6101d16101cc366004612382565b6104c8565b60405190151581526020015b60405180910390f35b6101f96101f43660046123df565b6104d9565b005b6101f961020936600461242b565b6106f8565b61022161021c3660046124a5565b6107da565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b6102596102543660046124d1565b610b37565b6040516101dd929190612543565b6101f961027536600461255c565b610c6f565b6101f96102883660046123df565b610d24565b6101f961029b366004612588565b610db5565b6102216102ae366004612588565b610e6d565b6101d16102c13660046124d1565b60008281526001602090815260408083205467ffffffffffffffff1683526007825280832094835293815283822092825291909152205461ffff16151590565b61031461030f3660046123df565b610e9f565b6040516101dd91906125a1565b61031461032f366004612588565b610f81565b6101f96103423660046125b4565b611042565b610314610355366004612588565b6110f4565b6101f9611130565b6101f96103703660046123df565b6111c2565b6101f9610383366004612636565b611253565b60005473ffffffffffffffffffffffffffffffffffffffff16610221565b6103146103b43660046126fa565b611355565b6103146103c7366004612588565b6113a5565b6104116103da366004612588565b60008181526001602081815260408084205467ffffffffffffffff168452600a825280842094845293905291902080549101549091565b604080519283526020830191909152016101dd565b6101f96104343660046123df565b6113e1565b6101f961044736600461275e565b611539565b61047661045a366004612588565b60016020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101dd565b6101f961049d366004612781565b611573565b6103146104b03660046124d1565b61166c565b6101f96104c33660046127bd565b611736565b60006104d382611866565b92915050565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146104ff57600080fd5b6000848152600160209081526040808320548151601f870184900484028101840190925285825283926060928392859267ffffffffffffffff9091169183916105679183918d908d908190840183828082843760009201919091525092939250506118bc9050565b90505b80515160208201511015610691578661ffff166000036105cf57806040015196506105948161191d565b9450846040516020016105a791906127d8565b6040516020818303038152906040528051906020012092506105c88161193e565b9350610683565b60006105da8261191d565b9050816040015161ffff168861ffff161415806105fe57506105fc868261195a565b155b156106815761065a8c878a8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518d9150610651908290612823565b8b51158a611978565b81604001519750816020015196508095508580519060200120935061067e8261193e565b94505b505b61068c81611be5565b61056a565b508351156106ec576106ec8a85888c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506106e391508290508f612823565b89511588611978565b50505050505050505050565b600054859073ffffffffffffffffffffffffffffffffffffffff16331461071e57600080fd5b60008681526001602090815260408083205467ffffffffffffffff168352600b8252808320898452909152908190209051849184916107609089908990612836565b9081526020016040518091039020918261077b9291906128e7565b50848460405161078c929190612836565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516107ca94939291906129d2565b60405180910390a3505050505050565b60008281526001602090815260408083205467ffffffffffffffff1683526008825280832085845282528083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff1680156108555790506104d3565b600061086085610e6d565b905073ffffffffffffffffffffffffffffffffffffffff8116610888576000925050506104d3565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790525161093491906127d8565b600060405180830381855afa9150503d806000811461096f576040519150601f19603f3d011682016040523d82523d6000602084013e610974565b606091505b5091509150811580610987575060208151105b806109c9575080601f815181106109a0576109a0612a04565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b156109db5760009450505050506104d3565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610a8491906127d8565b600060405180830381855afa9150503d8060008114610abf576040519150601f19603f3d011682016040523d82523d6000602084013e610ac4565b606091505b509092509050811580610ad8575060208151105b80610b1a575080601f81518110610af157610af1612a04565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610b2c5760009450505050506104d3565b509095945050505050565b60008281526001602081815260408084205467ffffffffffffffff1684526002825280842086855290915282206060915b848111610c4f5780851615801590610b98575060008181526020839052604081208054610b9490612846565b9050115b15610c475780826000838152602001908152602001600020808054610bbc90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610be890612846565b8015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b50505050509050935093505050610c68565b60011b610b68565b5060006040518060200160405280600081525092509250505b9250929050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610c9557600080fd5b6040805180820182528481526020808201858152600088815260018084528582205467ffffffffffffffff168252600a84528582208a835290935284902092518355519101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610d169086908690918252602082015260400190565b60405180910390a250505050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610d4a57600080fd5b60008481526001602090815260408083205467ffffffffffffffff168352600482528083208784529091529020610d828385836128e7565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610d16929190612a33565b600054819073ffffffffffffffffffffffffffffffffffffffff163314610ddb57600080fd5b6000828152600160205260408120805467ffffffffffffffff1691610dff83612a47565b82546101009290920a67ffffffffffffffff8181021990931691831602179091556000848152600160209081526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b600080610e7b83603c61166c565b90508051600003610e8f5750600092915050565b610e9881611ccd565b9392505050565b60008381526001602090815260408083205467ffffffffffffffff168352600b825280832086845290915290819020905160609190610ee19085908590612836565b90815260200160405180910390208054610efa90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2690612846565b8015610f735780601f10610f4857610100808354040283529160200191610f73565b820191906000526020600020905b815481529060010190602001808311610f5657829003601f168201915b505050505090509392505050565b60008181526001602090815260408083205467ffffffffffffffff168352600582528083208484529091529020805460609190610fbd90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe990612846565b80156110365780601f1061100b57610100808354040283529160200191611036565b820191906000526020600020905b81548152906001019060200180831161101957829003601f168201915b50505050509050919050565b600054849073ffffffffffffffffffffffffffffffffffffffff16331461106857600080fd5b83611074600182612823565b161561107f57600080fd5b60008581526001602090815260408083205467ffffffffffffffff16835260028252808320888452825280832087845290915290206110bf8385836128e7565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526001602090815260408083205467ffffffffffffffff168352600982528083208484529091529020805460609190610fbd90612846565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6111c06000611cf5565b565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146111e857600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526009825280832087845290915290206112208385836128e7565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610d16929190612a33565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461127957600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040516112ab929190612543565b60405180910390a2603c830361130f57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd26112e684611ccd565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25b60008481526001602090815260408083205467ffffffffffffffff168352600382528083208784528252808320868452909152902061134e8382612a6e565b5050505050565b60008381526001602090815260408083205467ffffffffffffffff168352600682528083208684528252808320858452825280832061ffff851684529091529020805460609190610efa90612846565b60008181526001602090815260408083205467ffffffffffffffff168352600482528083208484529091529020805460609190610fbd90612846565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461140757600080fd5b60008481526001602090815260408083205467ffffffffffffffff16808452600583528184208885529092528220805491929161144390612846565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90612846565b80156114bc5780601f10611491576101008083540402835291602001916114bc565b820191906000526020600020905b81548152906001019060200180831161149f57829003601f168201915b5050505067ffffffffffffffff841660009081526005602090815260408083208b845290915290209192506114f490508587836128e7565b50857f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f8582878760405161152993929190612b2e565b60405180910390a2505050505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331461155f57600080fd5b61156e83603c61038385611d6a565b505050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461159957600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526008825280832087845282528083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b60008281526001602090815260408083205467ffffffffffffffff16835260038252808320858452825280832084845290915290208054606091906116b090612846565b80601f01602080910402602001604051908101604052809291908181526020018280546116dc90612846565b80156117295780601f106116fe57610100808354040283529160200191611729565b820191906000526020600020905b81548152906001019060200180831161170c57829003601f168201915b5050505050905092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111ad565b73ffffffffffffffffffffffffffffffffffffffff811661185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016111ad565b61186381611cf5565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c0000000000000000000000000000000000000000000000000000000014806104d357506104d382611da3565b61190a6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c081018290526104d381611be5565b602081015181516060916104d3916119359082611df9565b84519190611e5b565b60a081015160c08201516060916104d391611935908290612823565b600081518351148015610e985750610e988360008460008751611ed2565b86516020880120600061198c878787611e5b565b90508315611ab65767ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c168452909152902080546119d790612846565b159050611a365767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611a1a83612b5e565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091528120611a77916122ff565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611aa9929190612b7c565b60405180910390a26106ec565b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611af990612846565b9050600003611b5a5767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611b3e83612ba2565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091529020611b9c8282612a6e565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611bd193929190612bb9565b60405180910390a250505050505050505050565b60c08101516020820181905281515111611bfc5750565b6000611c1082600001518360200151611df9565b8260200151611c1f9190612be8565b8251909150611c2e9082611ef5565b61ffff166040830152611c42600282612be8565b8251909150611c519082611ef5565b61ffff166060830152611c65600282612be8565b8251909150611c749082611f1d565b63ffffffff166080830152611c8a600482612be8565b8251909150600090611c9c9083611ef5565b61ffff169050611cad600283612be8565b60a084018190529150611cc08183612be8565b60c0909301929092525050565b60008151601414611cdd57600080fd5b50602001516c01000000000000000000000000900490565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc86902330000000000000000000000000000000000000000000000000000000014806104d357506104d382611f47565b6000815b83518110611e0d57611e0d612bfb565b6000611e198583611f9d565b60ff169050611e29816001612be8565b611e339083612be8565b915080600003611e435750611e49565b50611dfd565b611e538382612823565b949350505050565b8251606090611e6a8385612be8565b1115611e7557600080fd5b60008267ffffffffffffffff811115611e9057611e90612607565b6040519080825280601f01601f191660200182016040528015611eba576020820181803683370190505b50905060208082019086860101610b2c828287611fc1565b6000611edf848484612017565b611eea878785612017565b149695505050505050565b8151600090611f05836002612be8565b1115611f1057600080fd5b50016002015161ffff1690565b8151600090611f2d836004612be8565b1115611f3857600080fd5b50016004015163ffffffff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f34310000000000000000000000000000000000000000000000000000000014806104d357506104d38261203b565b6000828281518110611fb157611fb1612a04565b016020015160f81c905092915050565b60208110611ff95781518352611fd8602084612be8565b9250611fe5602083612be8565b9150611ff2602082612823565b9050611fc1565b905182516020929092036101000a6000190180199091169116179052565b82516000906120268385612be8565b111561203157600080fd5b5091016020012090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c0000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa568200000000000000000000000000000000000000000000000000000000148061211f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d10000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061220d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab560000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fd700ff330000000000000000000000000000000000000000000000000000000014806104d357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104d3565b50805461230b90612846565b6000825580601f1061231b575050565b601f01602090049060005260206000209081019061186391905b808211156123495760008155600101612335565b5090565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461237d57600080fd5b919050565b60006020828403121561239457600080fd5b610e988261234d565b60008083601f8401126123af57600080fd5b50813567ffffffffffffffff8111156123c757600080fd5b602083019150836020828501011115610c6857600080fd5b6000806000604084860312156123f457600080fd5b83359250602084013567ffffffffffffffff81111561241257600080fd5b61241e8682870161239d565b9497909650939450505050565b60008060008060006060868803121561244357600080fd5b85359450602086013567ffffffffffffffff8082111561246257600080fd5b61246e89838a0161239d565b9096509450604088013591508082111561248757600080fd5b506124948882890161239d565b969995985093965092949392505050565b600080604083850312156124b857600080fd5b823591506124c86020840161234d565b90509250929050565b600080604083850312156124e457600080fd5b50508035926020909101359150565b60005b8381101561250e5781810151838201526020016124f6565b50506000910152565b6000815180845261252f8160208601602086016124f3565b601f01601f19169290920160200192915050565b828152604060208201526000611e536040830184612517565b60008060006060848603121561257157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561259a57600080fd5b5035919050565b602081526000610e986020830184612517565b600080600080606085870312156125ca57600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156125ef57600080fd5b6125fb8782880161239d565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561264b57600080fd5b8335925060208401359150604084013567ffffffffffffffff8082111561267157600080fd5b818601915086601f83011261268557600080fd5b81358181111561269757612697612607565b604051601f8201601f19908116603f011681019083821181831017156126bf576126bf612607565b816040528281528960208487010111156126d857600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561270f57600080fd5b8335925060208401359150604084013561ffff8116811461272f57600080fd5b809150509250925092565b803573ffffffffffffffffffffffffffffffffffffffff8116811461237d57600080fd5b6000806040838503121561277157600080fd5b823591506124c86020840161273a565b60008060006060848603121561279657600080fd5b833592506127a66020850161234d565b91506127b46040850161273a565b90509250925092565b6000602082840312156127cf57600080fd5b610e988261273a565b600082516127ea8184602087016124f3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104d3576104d36127f4565b8183823760009101908152919050565b600181811c9082168061285a57607f821691505b602082108103612893577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561156e57600081815260208120601f850160051c810160208610156128c05750805b601f850160051c820191505b818110156128df578281556001016128cc565b505050505050565b67ffffffffffffffff8311156128ff576128ff612607565b6129138361290d8354612846565b83612899565b6000601f841160018114612947576000851561292f5750838201355b600019600387901b1c1916600186901b17835561134e565b600083815260209020601f19861690835b828110156129785786850135825560209485019460019092019101612958565b50868210156129955760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006129e66040830186886129a7565b82810360208401526129f98185876129a7565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602081526000611e536020830184866129a7565b600067ffffffffffffffff808316818103612a6457612a646127f4565b6001019392505050565b815167ffffffffffffffff811115612a8857612a88612607565b612a9c81612a968454612846565b84612899565b602080601f831160018114612ad15760008415612ab95750858301515b600019600386901b1c1916600185901b1785556128df565b600085815260208120601f198616915b82811015612b0057888601518255948401946001909101908401612ae1565b5085821015612b1e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612b416040830186612517565b8281036020840152612b548185876129a7565b9695505050505050565b600061ffff821680612b7257612b726127f4565b6000190192915050565b604081526000612b8f6040830185612517565b905061ffff831660208301529392505050565b600061ffff808316818103612a6457612a646127f4565b606081526000612bcc6060830186612517565b61ffff851660208401528281036040840152612b548185612517565b808201808211156104d3576104d36127f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea264697066735822122077fd1eaea1e9f2eae2e4c087dcf5d04bfe704aef62b57897cf9faf23fe0fdbce64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x691F3431 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC8690233 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD700FF33 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD700FF33 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0xE59D895D EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0xF1CB7E06 EQ PUSH2 0x4A2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC8690233 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0xCE3DECDC EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0xD5FA2B00 EQ PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8B95DD71 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8B95DD71 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0xA8FA5682 EQ PUSH2 0x3A6 JUMPI DUP1 PUSH4 0xBC1C58D1 EQ PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x691F3431 EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0x77372213 EQ PUSH2 0x362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x304E6ADE GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x4CBF6BA4 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x4CBF6BA4 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x59D1D43C EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x5C98042B EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x623195B0 EQ PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x304E6ADE EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x3603D758 EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x3B3B57DE EQ PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x124A319C GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x124A319C EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x2203AB56 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x29CD62EA EQ PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0xAF179D7 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x10F13A8C EQ PUSH2 0x1FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D1 PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2382 JUMP JUMPDEST PUSH2 0x4C8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F9 PUSH2 0x1F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x4D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F9 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH2 0x6F8 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D1 JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP3 SWAP2 SWAP1 PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x275 CALLDATASIZE PUSH1 0x4 PUSH2 0x255C JUMP JUMPDEST PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xD24 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x29B CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0xE6D JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x2C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x7 DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 SWAP3 DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0xFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xE9F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP2 SWAP1 PUSH2 0x25A1 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0xF81 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x25B4 JUMP JUMPDEST PUSH2 0x1042 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x1130 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x370 CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x383 CALLDATASIZE PUSH1 0x4 PUSH2 0x2636 JUMP JUMPDEST PUSH2 0x1253 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x221 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH2 0x13A5 JUMP JUMPDEST PUSH2 0x411 PUSH2 0x3DA CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP5 KECCAK256 SWAP5 DUP5 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 ADD SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1DD JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x434 CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x13E1 JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x275E JUMP JUMPDEST PUSH2 0x1539 JUMP JUMPDEST PUSH2 0x476 PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x2588 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x49D CALLDATASIZE PUSH1 0x4 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1573 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D1 JUMP JUMPDEST PUSH2 0x166C JUMP JUMPDEST PUSH2 0x1F9 PUSH2 0x4C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x27BD JUMP JUMPDEST PUSH2 0x1736 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D3 DUP3 PUSH2 0x1866 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x1F DUP8 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP6 DUP3 MSTORE DUP4 SWAP3 PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP6 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 SWAP2 PUSH2 0x567 SWAP2 DUP4 SWAP2 DUP14 SWAP1 DUP14 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x18BC SWAP1 POP JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x691 JUMPI DUP7 PUSH2 0xFFFF AND PUSH1 0x0 SUB PUSH2 0x5CF JUMPI DUP1 PUSH1 0x40 ADD MLOAD SWAP7 POP PUSH2 0x594 DUP2 PUSH2 0x191D JUMP JUMPDEST SWAP5 POP DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5A7 SWAP2 SWAP1 PUSH2 0x27D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP PUSH2 0x5C8 DUP2 PUSH2 0x193E JUMP JUMPDEST SWAP4 POP PUSH2 0x683 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DA DUP3 PUSH2 0x191D JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND DUP9 PUSH2 0xFFFF AND EQ ISZERO DUP1 PUSH2 0x5FE JUMPI POP PUSH2 0x5FC DUP7 DUP3 PUSH2 0x195A JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x681 JUMPI PUSH2 0x65A DUP13 DUP8 DUP11 DUP15 DUP15 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP PUSH1 0x20 DUP9 ADD MLOAD DUP14 SWAP2 POP PUSH2 0x651 SWAP1 DUP3 SWAP1 PUSH2 0x2823 JUMP JUMPDEST DUP12 MLOAD ISZERO DUP11 PUSH2 0x1978 JUMP JUMPDEST DUP2 PUSH1 0x40 ADD MLOAD SWAP8 POP DUP2 PUSH1 0x20 ADD MLOAD SWAP7 POP DUP1 SWAP6 POP DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP PUSH2 0x67E DUP3 PUSH2 0x193E JUMP JUMPDEST SWAP5 POP JUMPDEST POP JUMPDEST PUSH2 0x68C DUP2 PUSH2 0x1BE5 JUMP JUMPDEST PUSH2 0x56A JUMP JUMPDEST POP DUP4 MLOAD ISZERO PUSH2 0x6EC JUMPI PUSH2 0x6EC DUP11 DUP6 DUP9 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP PUSH2 0x6E3 SWAP2 POP DUP3 SWAP1 POP DUP16 PUSH2 0x2823 JUMP JUMPDEST DUP10 MLOAD ISZERO DUP9 PUSH2 0x1978 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD DUP5 SWAP2 DUP5 SWAP2 PUSH2 0x760 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x2836 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP2 DUP3 PUSH2 0x77B SWAP3 SWAP2 SWAP1 PUSH2 0x28E7 JUMP JUMPDEST POP DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x78C SWAP3 SWAP2 SWAP1 PUSH2 0x2836 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP7 PUSH32 0x448BC014F1536726CF8D54FF3D6481ED3CBC683C2591CA204274009AFA09B1A1 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7CA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x855 JUMPI SWAP1 POP PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x860 DUP6 PUSH2 0xE6D JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x888 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH2 0x934 SWAP2 SWAP1 PUSH2 0x27D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x96F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x974 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x987 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT JUMPDEST DUP1 PUSH2 0x9C9 JUMPI POP DUP1 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0x9A0 JUMPI PUSH2 0x9A0 PUSH2 0x2A04 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND ISZERO JUMPDEST ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x27D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAC4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 PUSH2 0xAD8 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT JUMPDEST DUP1 PUSH2 0xB1A JUMPI POP DUP1 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0xAF1 JUMPI PUSH2 0xAF1 PUSH2 0x2A04 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND ISZERO JUMPDEST ISZERO PUSH2 0xB2C JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x4D3 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP7 DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 PUSH1 0x60 SWAP2 JUMPDEST DUP5 DUP2 GT PUSH2 0xC4F JUMPI DUP1 DUP6 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB98 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xB94 SWAP1 PUSH2 0x2846 JUMP JUMPDEST SWAP1 POP GT JUMPDEST ISZERO PUSH2 0xC47 JUMPI DUP1 DUP3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 DUP1 SLOAD PUSH2 0xBBC SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xBE8 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC35 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC0A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC35 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC18 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP4 POP SWAP4 POP POP POP PUSH2 0xC68 JUMP JUMPDEST PUSH1 0x1 SHL PUSH2 0xB68 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP6 DUP2 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x1 DUP1 DUP5 MSTORE DUP6 DUP3 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 MSTORE PUSH1 0xA DUP5 MSTORE DUP6 DUP3 KECCAK256 DUP11 DUP4 MSTORE SWAP1 SWAP4 MSTORE DUP5 SWAP1 KECCAK256 SWAP3 MLOAD DUP4 SSTORE MLOAD SWAP2 ADD SSTORE MLOAD DUP5 SWAP1 PUSH32 0x1D6F5E03D3F63EB58751986629A5439BAEE5079FF04F345BECB66E23EB154E46 SWAP1 PUSH2 0xD16 SWAP1 DUP7 SWAP1 DUP7 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xD4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0xD82 DUP4 DUP6 DUP4 PUSH2 0x28E7 JUMP JUMPDEST POP DUP4 PUSH32 0xE379C1624ED7E714CC0937528A32359D69D5281337765313DBA4E081B72D7578 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD16 SWAP3 SWAP2 SWAP1 PUSH2 0x2A33 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0xDFF DUP4 PUSH2 0x2A47 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND DUP2 MSTORE DUP5 SWAP3 POP PUSH32 0xC6621CCB8F3F5A04BB6502154B2CAF6ADF5983FE76DFEF1CFC9C42E3579DB444 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE7B DUP4 PUSH1 0x3C PUSH2 0x166C JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xE8F JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE98 DUP2 PUSH2 0x1CCD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xEE1 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x2836 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xEFA SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF26 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF73 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF48 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF73 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF56 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x5 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFBD SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xFE9 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1036 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x100B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1036 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1019 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1068 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x1074 PUSH1 0x1 DUP3 PUSH2 0x2823 JUMP JUMPDEST AND ISZERO PUSH2 0x107F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x10BF DUP4 DUP6 DUP4 PUSH2 0x28E7 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 SWAP1 DUP7 SWAP1 PUSH32 0xAA121BBEEF5F32F5961A2A28966E769023910FC9479059EE3495D4C1A696EFE3 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x9 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFBD SWAP1 PUSH2 0x2846 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x11B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11C0 PUSH1 0x0 PUSH2 0x1CF5 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x11E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x9 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1220 DUP4 DUP6 DUP4 PUSH2 0x28E7 JUMP JUMPDEST POP DUP4 PUSH32 0xB7D29E911041E8D9B843369E890BCB72C9388692BA48B65AC54E7214C4C348F7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD16 SWAP3 SWAP2 SWAP1 PUSH2 0x2A33 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH32 0x65412581168E88A1E60C6459D7F44AE83AD0832E670826C05A4E2476B57AF752 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x12AB SWAP3 SWAP2 SWAP1 PUSH2 0x2543 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x3C DUP4 SUB PUSH2 0x130F JUMPI DUP4 PUSH32 0x52D7D861F09AB3D26239D492E8968629F95E9E318CF0B73BFDDC441522A15FD2 PUSH2 0x12E6 DUP5 PUSH2 0x1CCD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x134E DUP4 DUP3 PUSH2 0x2A6E JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x6 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xEFA SWAP1 PUSH2 0x2846 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFBD SWAP1 PUSH2 0x2846 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP1 DUP5 MSTORE PUSH1 0x5 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP9 DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH2 0x1443 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x146F SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14BC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1491 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14BC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x149F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SWAP2 SWAP3 POP PUSH2 0x14F4 SWAP1 POP DUP6 DUP8 DUP4 PUSH2 0x28E7 JUMP JUMPDEST POP DUP6 PUSH32 0x8F15ED4B723EF428F250961DA8315675B507046737E19319FC1A4D81BFE87F85 DUP3 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1529 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x155F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156E DUP4 PUSH1 0x3C PUSH2 0x383 DUP6 PUSH2 0x1D6A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE DUP7 SWAP2 PUSH32 0x7C69F06BEA0BDEF565B709E93A147836B0063BA2DD89F02D0B7E8D931E6A6DAA SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0x16B0 SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x16DC SWAP1 PUSH2 0x2846 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1729 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x16FE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1729 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x170C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x17B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x185A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11AD JUMP JUMPDEST PUSH2 0x1863 DUP2 PUSH2 0x1CF5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x59D1D43C00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0x190A PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x4D3 DUP2 PUSH2 0x1BE5 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 PUSH2 0x4D3 SWAP2 PUSH2 0x1935 SWAP1 DUP3 PUSH2 0x1DF9 JUMP JUMPDEST DUP5 MLOAD SWAP2 SWAP1 PUSH2 0x1E5B JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 SWAP2 PUSH2 0x4D3 SWAP2 PUSH2 0x1935 SWAP1 DUP3 SWAP1 PUSH2 0x2823 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0xE98 JUMPI POP PUSH2 0xE98 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0x1ED2 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x20 DUP9 ADD KECCAK256 PUSH1 0x0 PUSH2 0x198C DUP8 DUP8 DUP8 PUSH2 0x1E5B JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1AB6 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x19D7 SWAP1 PUSH2 0x2846 JUMP JUMPDEST ISZERO SWAP1 POP PUSH2 0x1A36 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF AND SWAP2 PUSH2 0x1A1A DUP4 PUSH2 0x2B5E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 PUSH2 0x1A77 SWAP2 PUSH2 0x22FF JUMP JUMPDEST DUP10 PUSH32 0x3528ED0C2A3EBC993B12CE3C16BB382F9C7D88EF7D8A1BF290EAF35955A1207 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1AA9 SWAP3 SWAP2 SWAP1 PUSH2 0x2B7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x6EC JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1AF9 SWAP1 PUSH2 0x2846 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SUB PUSH2 0x1B5A JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF AND SWAP2 PUSH2 0x1B3E DUP4 PUSH2 0x2BA2 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1B9C DUP3 DUP3 PUSH2 0x2A6E JUMP JUMPDEST POP DUP10 PUSH32 0x52A608B3303A48862D07A73D82FA221318C0027FBBCFB1B2329BFACE3F19FF2B DUP11 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1BD1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0x1BFC JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C10 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1DF9 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1C1F SWAP2 SWAP1 PUSH2 0x2BE8 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1C2E SWAP1 DUP3 PUSH2 0x1EF5 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1C42 PUSH1 0x2 DUP3 PUSH2 0x2BE8 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1C51 SWAP1 DUP3 PUSH2 0x1EF5 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1C65 PUSH1 0x2 DUP3 PUSH2 0x2BE8 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1C74 SWAP1 DUP3 PUSH2 0x1F1D JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1C8A PUSH1 0x4 DUP3 PUSH2 0x2BE8 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1C9C SWAP1 DUP4 PUSH2 0x1EF5 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0x1CAD PUSH1 0x2 DUP4 PUSH2 0x2BE8 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0x1CC0 DUP2 DUP4 PUSH2 0x2BE8 JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x14 EQ PUSH2 0x1CDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x14 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP PUSH13 0x1000000000000000000000000 SWAP3 SWAP1 SWAP3 MUL PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xC869023300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0x1E0D JUMPI PUSH2 0x1E0D PUSH2 0x2BFB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E19 DUP6 DUP4 PUSH2 0x1F9D JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1E29 DUP2 PUSH1 0x1 PUSH2 0x2BE8 JUMP JUMPDEST PUSH2 0x1E33 SWAP1 DUP4 PUSH2 0x2BE8 JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0x1E43 JUMPI POP PUSH2 0x1E49 JUMP JUMPDEST POP PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x1E53 DUP4 DUP3 PUSH2 0x2823 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x1E6A DUP4 DUP6 PUSH2 0x2BE8 JUMP JUMPDEST GT ISZERO PUSH2 0x1E75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E90 JUMPI PUSH2 0x1E90 PUSH2 0x2607 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1EBA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0xB2C DUP3 DUP3 DUP8 PUSH2 0x1FC1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EDF DUP5 DUP5 DUP5 PUSH2 0x2017 JUMP JUMPDEST PUSH2 0x1EEA DUP8 DUP8 DUP6 PUSH2 0x2017 JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F05 DUP4 PUSH1 0x2 PUSH2 0x2BE8 JUMP JUMPDEST GT ISZERO PUSH2 0x1F10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F2D DUP4 PUSH1 0x4 PUSH2 0x2BE8 JUMP JUMPDEST GT ISZERO PUSH2 0x1F38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x691F343100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH2 0x203B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FB1 JUMPI PUSH2 0x1FB1 PUSH2 0x2A04 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1FF9 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x1FD8 PUSH1 0x20 DUP5 PUSH2 0x2BE8 JUMP JUMPDEST SWAP3 POP PUSH2 0x1FE5 PUSH1 0x20 DUP4 PUSH2 0x2BE8 JUMP JUMPDEST SWAP2 POP PUSH2 0x1FF2 PUSH1 0x20 DUP3 PUSH2 0x2823 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FC1 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2026 DUP4 DUP6 PUSH2 0x2BE8 JUMP JUMPDEST GT ISZERO PUSH2 0x2031 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x124A319C00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xA8FA568200000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x211F JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5C98042B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xBC1C58D100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x3B3B57DE00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x220D JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xF1CB7E0600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x2203AB5600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH2 0x4D3 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD700FF3300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x4D3 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x4D3 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x230B SWAP1 PUSH2 0x2846 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x231B JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1863 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2349 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2335 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x237D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE98 DUP3 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x23AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xC68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x241E DUP7 DUP3 DUP8 ADD PUSH2 0x239D JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x246E DUP10 DUP4 DUP11 ADD PUSH2 0x239D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2494 DUP9 DUP3 DUP10 ADD PUSH2 0x239D JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x24C8 PUSH1 0x20 DUP5 ADD PUSH2 0x234D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x250E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x24F6 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x252F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x24F3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1E53 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2517 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x259A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE98 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2517 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x25CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x25EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25FB DUP8 DUP3 DUP9 ADD PUSH2 0x239D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x264B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2697 JUMPI PUSH2 0x2697 PUSH2 0x2607 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x26BF JUMPI PUSH2 0x26BF PUSH2 0x2607 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP10 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x26D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x270F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x272F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x237D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x24C8 PUSH1 0x20 DUP5 ADD PUSH2 0x273A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x27A6 PUSH1 0x20 DUP6 ADD PUSH2 0x234D JUMP JUMPDEST SWAP2 POP PUSH2 0x27B4 PUSH1 0x40 DUP6 ADD PUSH2 0x273A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE98 DUP3 PUSH2 0x273A JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x27EA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x24F3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0x27F4 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x285A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2893 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x156E JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x28C0 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28DF JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x28CC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x28FF JUMPI PUSH2 0x28FF PUSH2 0x2607 JUMP JUMPDEST PUSH2 0x2913 DUP4 PUSH2 0x290D DUP4 SLOAD PUSH2 0x2846 JUMP JUMPDEST DUP4 PUSH2 0x2899 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2947 JUMPI PUSH1 0x0 DUP6 ISZERO PUSH2 0x292F JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x134E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP1 DUP4 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2978 JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2958 JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x2995 JUMPI PUSH1 0x0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x29E6 PUSH1 0x40 DUP4 ADD DUP7 DUP9 PUSH2 0x29A7 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x29F9 DUP2 DUP6 DUP8 PUSH2 0x29A7 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1E53 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x29A7 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2A64 JUMPI PUSH2 0x2A64 PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A88 JUMPI PUSH2 0x2A88 PUSH2 0x2607 JUMP JUMPDEST PUSH2 0x2A9C DUP2 PUSH2 0x2A96 DUP5 SLOAD PUSH2 0x2846 JUMP JUMPDEST DUP5 PUSH2 0x2899 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2AD1 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x2AB9 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x28DF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2B00 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x2AE1 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x2B1E JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B41 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2517 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2B54 DUP2 DUP6 DUP8 PUSH2 0x29A7 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND DUP1 PUSH2 0x2B72 JUMPI PUSH2 0x2B72 PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B8F PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2517 JUMP JUMPDEST SWAP1 POP PUSH2 0xFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2A64 JUMPI PUSH2 0x2A64 PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2BCC PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2517 JUMP JUMPDEST PUSH2 0xFFFF DUP6 AND PUSH1 0x20 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2B54 DUP2 DUP6 PUSH2 0x2517 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0x27F4 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0xFD1EAEA1E9F2EAE2E4C087DCF5D04BFE704AEF62B57897CF SWAP16 0xAF 0x23 INVALID 0xF 0xDB 0xCE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "495:747:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:425;;;;;;:::i;:::-;;:::i;:::-;;;592:14:111;;585:22;567:41;;555:2;540:18;815:425:63;;;;;;;;2069:1766:70;;;;;;:::i;:::-;;:::i;:::-;;549:263:86;;;;;;:::i;:::-;;:::i;1704:1150:83:-;;;;;;:::i;:::-;;:::i;:::-;;;2678:42:111;2666:55;;;2648:74;;2636:2;2621:18;1704:1150:83;2502:226:111;1253:665:67;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;603:241:85:-;;;;;;:::i;:::-;;:::i;505:236:69:-;;;;;;:::i;:::-;;:::i;662:164:66:-;;;;;;:::i;:::-;;:::i;937:290:68:-;;;;;;:::i;:::-;;:::i;4684:237:70:-;;;;;;:::i;:::-;4796:4;4853:20;;;:14;:20;;;;;;;;;;;4824:50;;:28;:50;;;;;:56;;;;;;;;;:84;;;;;;;;;;;:89;;;4684:237;1029:222:86;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5706:204:70:-;;;;;;:::i;:::-;;:::i;568:364:67:-;;;;;;:::i;:::-;;:::i;887:196:84:-;;;;;;:::i;:::-;;:::i;1668:101:2:-;;;:::i;456:231:84:-;;;;;;:::i;:::-;;:::i;1233:361:68:-;;;;;;:::i;:::-;;:::i;1036:85:2:-;1082:7;1108:6;;;1036:85;;4237:233:70;;;;;;:::i;:::-;;:::i;908:203:69:-;;;;;;:::i;:::-;;:::i;1149:356:85:-;;;;;;:::i;:::-;1259:9;1325:20;;;:14;:20;;;;;;;;;;;1376:41;;:19;:41;;;;;:47;;;;;;;;;:49;;1439;;;1376;;1149:356;;;;;8250:25:111;;;8306:2;8291:18;;8284:34;;;;8223:18;1149:356:85;8076:248:111;5141:411:70;;;;;;:::i;:::-;;:::i;610:168:68:-;;;;;;:::i;:::-;;:::i;239:48:66:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8963:18:111;8951:31;;;8933:50;;8921:2;8906:18;239:48:66;8789:200:111;769:298:83;;;;;;:::i;:::-;;:::i;1600:225:68:-;;;;;;:::i;:::-;;:::i;1918:198:2:-;;;;;;:::i;:::-;;:::i;815:425:63:-;1170:4;1197:36;1221:11;1197:23;:36::i;:::-;1190:43;815:425;-1:-1:-1;;815:425:63:o;2069:1766:70:-;758:4:63;1108:6:2;2179:4:70;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;2199:15:70::1;2354:20:::0;;;:14:::1;:20;::::0;;;;;;;;2496:15;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;2199;;2256:17:::1;::::0;;;2199:15;;2354:20:::1;::::0;;::::1;::::0;2199:15;;2496:18:::1;::::0;2199:15;;2496:4;;;;;;:15;::::1;:4:::0;;;;:15;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;2496:15:70;;:18;-1:-1:-1;;2496:15:70::1;:18:::0;-1:-1:-1;2496:18:70:i:1;:::-;2463:51;;2445:1090;4584:9:29::0;;:16;4569:11;;;;:31;;2445:1090:70::1;;2594:8;:13;;2606:1;2594:13:::0;2590:935:::1;;2638:4;:12;;;2627:23;;2675:11;:4;:9;:11::i;:::-;2668:18;;2742:4;2725:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;2715:33;;;;;;2704:44;;2780:12;:4;:10;:12::i;:::-;2766:27;;2590:935;;;2832:20;2855:11;:4;:9;:11::i;:::-;2832:34;;2900:4;:12;;;2888:24;;:8;:24;;;;:49;;;-1:-1:-1::0;2917:20:70::1;:4:::0;2929:7;2917:11:::1;:20::i;:::-;2916:21;2888:49;2884:627;;;2961:311;2998:4;3028;3058:8;3092:4;;2961:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;3154:11:70::1;::::0;::::1;::::0;3122:6;;-1:-1:-1;3154:20:70::1;::::0;3122:6;;3154:20:::1;:::i;:::-;3200:12:::0;;:17;3243:7;2961:11:::1;:311::i;:::-;3305:4;:12;;;3294:23;;3348:4;:11;;;3339:20;;3388:7;3381:14;;3438:4;3428:15;;;;;;3417:26;;3479:12;:4;:10;:12::i;:::-;3465:27;;2884:627;2814:711;2590:935;2554:11;:4;:9;:11::i;:::-;2445:1090;;;-1:-1:-1::0;3548:11:70;;:15;3544:285:::1;;3579:239;3608:4;3630;3652:8;3678:4;;3579:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3700:6:70;;-1:-1:-1;3724:20:70::1;::::0;-1:-1:-1;3700:6:70;;-1:-1:-1;3724:4:70;:20:::1;:::i;:::-;3762:12:::0;;:17;3797:7;3579:11:::1;:239::i;:::-;2189:1646;;;;;;2069:1766:::0;;;;:::o;549:263:86:-;758:4:63;1108:6:2;682:4:86;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;698:39:86::1;716:20:::0;;;:14:::1;:20;::::0;;;;;;;;::::1;;698:39:::0;;:17:::1;:39:::0;;;;;:45;;;;;;;;;;:50;;751:5;;;;698:50:::1;::::0;744:3;;;;698:50:::1;:::i;:::-;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;789:3;;771:34;;;;;;;:::i;:::-;;;;;;;;783:4;771:34;794:3;;799:5;;771:34;;;;;;;;;:::i;:::-;;;;;;;;549:263:::0;;;;;;:::o;1704:1150:83:-;1848:7;1916:20;;;:14;:20;;;;;;;;;;;1893:44;;:22;:44;;;;;:50;;;;;;;;:63;;;;;;;;;;;;;1970:25;;1966:74;;2018:11;-1:-1:-1;2011:18:83;;1966:74;2050:9;2062:10;2067:4;2062;:10::i;:::-;2050:22;-1:-1:-1;2086:15:83;;;2082:63;;2132:1;2117:17;;;;;;2082:63;2223:125;;2309:25;2223:125;;;14004:98:111;2156:12:83;;;;2197;;;;13977:18:111;;2223:125:83;;;-1:-1:-1;;2223:125:83;;;;;;;;;;;;;;;;;;;;2197:161;;;2223:125;2197:161;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2155:203;;;;2373:7;2372:8;:34;;;;2404:2;2384:10;:17;:22;2372:34;:57;;;;2410:10;2421:2;2410:14;;;;;;;;:::i;:::-;;;;;;;:19;2372:57;2368:152;;;2507:1;2492:17;;;;;;;;2368:152;2580:65;;14034:66:111;14022:79;;2580:65:83;;;14004:98:111;2554:12:83;;;;13977:18:111;;2580:65:83;;;-1:-1:-1;;2580:65:83;;;;;;;;;;;;;;;;;;;;2554:101;;;2580:65;2554:101;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2530:125:83;;-1:-1:-1;2530:125:83;-1:-1:-1;2669:8:83;;;:34;;;2701:2;2681:10;:17;:22;2669:34;:57;;;;2707:10;2718:2;2707:14;;;;;;;;:::i;:::-;;;;;;;:19;2669:57;2665:164;;;2816:1;2801:17;;;;;;;;2665:164;-1:-1:-1;2846:1:83;;1704:1150;-1:-1:-1;;;;;1704:1150:83:o;1253:665:67:-;1382:7;1492:20;;;:14;:20;;;;;;;;;;;1462:60;;:16;:60;;;;;:66;;;;;;;;1391:12;;1539:341;1609:12;1594:11;:27;1539:341;;1699:26;;;1698:33;;;;:83;;-1:-1:-1;1780:1:67;1751:19;;;;;;;;;;:26;;;;;:::i;:::-;;;:30;1698:83;1677:193;;;1822:11;1835:6;:19;1842:11;1835:19;;;;;;;;;;;1814:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:193;1651:1;1635:17;1539:341;;;;1898:1;1901:9;;;;;;;;;;;;1890:21;;;;;1253:665;;;;;;:::o;603:241:85:-;758:4:63;1108:6:2;716:4:85;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;782:15:85::1;::::0;;;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;752:20:85;;;:14:::1;:20:::0;;;;;;;::::1;;732:41:::0;;:19:::1;:41:::0;;;;;:47;;;;;;;;;:65;;;;;;::::1;::::0;812:25;767:4;;812:25:::1;::::0;::::1;::::0;792:1;;795;;8250:25:111;;;8306:2;8291:18;;8284:34;8238:2;8223:18;;8076:248;812:25:85::1;;;;;;;;603:241:::0;;;;:::o;505:236:69:-;758:4:63;1108:6:2;616:4:69;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;636:40:69::1;655:20:::0;;;:14:::1;:20;::::0;;;;;;;;::::1;;636:40:::0;;:18:::1;:40:::0;;;;;:46;;;;;;;;:53:::1;685:4:::0;;636:46;:53:::1;:::i;:::-;;723:4;704:30;729:4;;704:30;;;;;;;:::i;662:164:66:-:0;758:4:63;1108:6:2;724:4:66;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;740:20:::1;::::0;;;:14:::1;:20;::::0;;;;:22;;::::1;;::::0;::::1;::::0;::::1;:::i;:::-;::::0;;::::1;::::0;;;::::1;;::::0;;::::1;;::::0;;::::1;::::0;;::::1;;;::::0;;;-1:-1:-1;798:20:66;;;-1:-1:-1;798:20:66::1;::::0;;;;;;;;;777:42;;798:20;;;::::1;8933:50:111::0;;798:20:66;;-1:-1:-1;777:42:66::1;::::0;8906:18:111;777:42:66::1;;;;;;;662:164:::0;;:::o;937:290:68:-;1043:15;1074:14;1091:25;1096:4;291:2;1091:4;:25::i;:::-;1074:42;;1130:1;:8;1142:1;1130:13;1126:61;;-1:-1:-1;1174:1:68;;937:290;-1:-1:-1;;937:290:68:o;1126:61::-;1203:17;1218:1;1203:14;:17::i;:::-;1196:24;937:290;-1:-1:-1;;;937:290:68:o;1029:222:86:-;1194:39;1212:20;;;:14;:20;;;;;;;;;;;1194:39;;:17;:39;;;;;:45;;;;;;;;;;:50;;1158:13;;1194:45;:50;;1240:3;;;;1194:50;:::i;:::-;;;;;;;;;;;;;1187:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1029:222;;;;;:::o;5706:204:70:-;5853:44;5876:20;;;:14;:20;;;;;;;;;;;5853:44;;:22;:44;;;;;:50;;;;;;;;5846:57;;5818:12;;5853:50;5846:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5706:204;;;:::o;568:364:67:-;758:4:63;1108:6:2;698:4:67;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;788:11:67;769:15:::1;783:1;788:11:::0;769:15:::1;:::i;:::-;768:31;767:38:::0;759:47:::1;;;::::0;::::1;;817:38;834:20:::0;;;:14:::1;:20;::::0;;;;;;;;::::1;;817:38:::0;;:16:::1;:38:::0;;;;;:44;;;;;;;;:57;;;;;;;;:64:::1;877:4:::0;;817:57;:64:::1;:::i;:::-;-1:-1:-1::0;896:29:67::1;::::0;913:11;;907:4;;896:29:::1;::::0;;;::::1;568:364:::0;;;;;:::o;887:196:84:-;1031:39;1049:20;;;:14;:20;;;;;;;;;;;1031:39;;:17;:39;;;;;:45;;;;;;;;1024:52;;995:13;;1031:45;1024:52;;;:::i;1668:101:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;16296:2:111;1240:68:2;;;16278:21:111;;;16315:18;;;16308:30;16374:34;16354:18;;;16347:62;16426:18;;1240:68:2;;;;;;;;;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;456:231:84:-;758:4:63;1108:6:2;564:4:84;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;584:39:84::1;602:20:::0;;;:14:::1;:20;::::0;;;;;;;;::::1;;584:39:::0;;:17:::1;:39:::0;;;;;:45;;;;;;;;:55:::1;632:7:::0;;584:45;:55:::1;:::i;:::-;;666:4;654:26;672:7;;654:26;;;;;;;:::i;1233:361:68:-:0;758:4:63;1108:6:2;1354:4:68;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;1390:4:68::1;1375:33;1396:8;1406:1;1375:33;;;;;;;:::i;:::-;;;;;;;;291:2;1422:8;:25:::0;1418:97:::1;;1480:4;1468:36;1486:17;1501:1;1486:14;:17::i;:::-;1468:36;::::0;2678:42:111;2666:55;;;2648:74;;2636:2;2621:18;1468:36:68::1;;;;;;;1418:97;1524:43;1546:20:::0;;;:14:::1;:20;::::0;;;;;;;;::::1;;1524:43:::0;;:21:::1;:43:::0;;;;;:49;;;;;;;;:59;;;;;;;;:63:::1;1586:1:::0;1524:59;:63:::1;:::i;:::-;;1233:361:::0;;;;:::o;4237:233:70:-;4400:41;4420:20;;;:14;:20;;;;;;;;;;;4400:41;;:19;:41;;;;;:47;;;;;;;;:53;;;;;;;;:63;;;;;;;;;;4393:70;;4369:12;;4400:63;4393:70;;;:::i;908:203:69:-;1058:40;1077:20;;;:14;:20;;;;;;;;;;;1058:40;;:18;:40;;;;;:46;;;;;;;;1051:53;;1023:12;;1058:46;1051:53;;;:::i;5141:411:70:-;758:4:63;1108:6:2;5249:4:70;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;5269::70::1;5299:20:::0;;;:14:::1;:20;::::0;;;;;;;;::::1;;5352:44:::0;;;:22:::1;:44:::0;;;;;:72;;;;;;;;5329:95;;5299:20;;5269:27;5329:95:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;5434:44:70::1;::::0;::::1;;::::0;;;:22:::1;:44;::::0;;;;;;;:50;;;;;;;;5329:95;;-1:-1:-1;5434:57:70::1;::::0;-1:-1:-1;5487:4:70;;5434:50;:57:::1;:::i;:::-;;5525:4;5506:39;5531:7;5540:4;;5506:39;;;;;;;;:::i;:::-;;;;;;;;5259:293;;5141:411:::0;;;;:::o;610:168:68:-;758:4:63;1108:6:2;704:4:68;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;724:47:68::1;732:4;291:2;753:17;768:1;753:14;:17::i;724:47::-;610:168:::0;;;:::o;769:298:83:-;758:4:63;1108:6:2;904:4:83;;1108:6:2;;781:10:63;:21;417:27:66;;;;;;920:44:83::1;943:20:::0;;;:14:::1;:20;::::0;;;;;;;;::::1;;920:44:::0;;:22:::1;:44:::0;;;;;:50;;;;;;;;:63;;::::1;::::0;;;;;;;;;;:77;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1012:48;;2648:74:111;;;943:20:83;;1012:48:::1;::::0;2621:18:111;1012:48:83::1;;;;;;;769:298:::0;;;;:::o;1600:225:68:-;1759:43;1781:20;;;:14;:20;;;;;;;;;;;1759:43;;:21;:43;;;;;:49;;;;;;;;:59;;;;;;;;1752:66;;1724:12;;1759:59;1752:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1600:225;;;;:::o;1918:198:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;16296:2:111;1240:68:2;;;16278:21:111;;;16315:18;;;16308:30;16374:34;16354:18;;;16347:62;16426:18;;1240:68:2;16094:356:111;1240:68:2;2006:22:::1;::::0;::::1;1998:73;;;::::0;::::1;::::0;;19032:2:111;1998:73:2::1;::::0;::::1;19014:21:111::0;19071:2;19051:18;;;19044:30;19110:34;19090:18;;;19083:62;19181:8;19161:18;;;19154:36;19207:19;;1998:73:2::1;18830:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;1257:269:86:-;1382:4;1421:46;;;1436:31;1421:46;;:98;;;1483:36;1507:11;1483:23;:36::i;4097:213:29:-;4199:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:21:29;4236:15;;;4261:14;;;:23;;;4294:9;4236:3;4294:4;:9::i;5601:225::-;5742:11;;;;5782:9;;5662:12;;5705:114;;5771:34;;5742:11;5771:10;:34::i;:::-;5705:9;;;:114;:19;:114::i;6003:259::-;6173:16;;;;6207:15;;;;6089:12;;6136:119;;6207:34;;6173:16;;6207:34;:::i;5274:229:25:-;5376:4;5430:5;:12;5415:4;:11;:27;:81;;;;;5458:38;5465:4;5471:1;5474:5;5481:1;5484:4;:11;5458:6;:38::i;6261:1113:70:-;6523:15;;;;;;6504:16;6570:28;:4;6585:6;6593:4;6570:14;:28::i;:::-;6548:50;;6612:12;6608:760;;;6661:28;;;;;;;:19;:28;;;;;;;;:34;;;;;;;;:44;;;;;;;;:54;;;;;;;;;;:61;;;;;:::i;:::-;:82;;-1:-1:-1;6640:206:70;;6776:37;;;;;;;:28;:37;;;;;;;;:43;;;;;;;;:53;;;;;;;;:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6640:206;6867:28;;;;;;;:19;:28;;;;;;;;:34;;;;;;;;:44;;;;;;;;:54;;;;;;;;;;6859:63;;;:::i;:::-;6958:4;6941:38;6964:4;6970:8;6941:38;;;;;;;:::i;:::-;;;;;;;;6608:760;;;7031:28;;;;;;;:19;:28;;;;;;;;:34;;;;;;;;:44;;;;;;;;:54;;;;;;;;;;:61;;;;;:::i;:::-;;;7112:1;7031:82;7010:206;;7146:37;;;;;;;:28;:37;;;;;;;;:43;;;;;;;;:53;;;;;;;;:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;7010:206;7229:28;;;;;;;:19;:28;;;;;;;;:34;;;;;;;;:44;;;;;;;;:54;;;;;;;;;;:63;7286:6;7229:54;:63;:::i;:::-;;7328:4;7311:46;7334:4;7340:8;7350:6;7311:46;;;;;;;;:::i;:::-;;;;;;;;6494:880;;6261:1113;;;;;;;;:::o;4733:688:29:-;4809:15;;;;4795:11;;;:29;;;4853:9;;:16;-1:-1:-1;4834:68:29;;4733:688;:::o;4834:68::-;4937:11;4965:34;4976:4;:9;;;4987:4;:11;;;4965:10;:34::i;:::-;4951:4;:11;;;:48;;;;:::i;:::-;5062:9;;4937:62;;-1:-1:-1;5062:25:29;;4937:62;5062:20;:25::i;:::-;5047:40;;:12;;;:40;5097:8;5104:1;5097:8;;:::i;:::-;5128:9;;5097:8;;-1:-1:-1;5128:25:29;;5097:8;5128:20;:25::i;:::-;5115:38;;:10;;;:38;5163:8;5170:1;5163:8;;:::i;:::-;5192:9;;5163:8;;-1:-1:-1;5192:25:29;;5163:8;5192:20;:25::i;:::-;5181:36;;:8;;;:36;5227:8;5234:1;5227:8;;:::i;:::-;5294:9;;5227:8;;-1:-1:-1;5272:19:29;;5294:25;;5227:8;5294:20;:25::i;:::-;5272:47;;;-1:-1:-1;5329:8:29;5336:1;5329:8;;:::i;:::-;5347:16;;;:22;;;5329:8;-1:-1:-1;5397:17:29;5403:11;5329:8;5397:17;:::i;:::-;5379:15;;;;:35;;;;-1:-1:-1;;4733:688:29:o;2171:233:68:-;2258:17;2299:1;:8;2311:2;2299:14;2291:23;;;;;;-1:-1:-1;2369:2:68;2362:10;2356:17;2375:12;2352:36;;;2171:233::o;2270:187:2:-;2343:16;2362:6;;;2378:17;;;;;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;2410:190:68:-;2498:13;;;2508:2;2498:13;;;;;;;;;2468:14;;2498:13;;;;;;;;-1:-1:-1;;;2570:12:68;2563:20;;;;2558:2;2551:10;;2544:40;-1:-1:-1;2563:20:68;2410:190::o;1511:271:85:-;1636:4;1675:48;;;1690:33;1675:48;;:100;;;1739:36;1763:11;1739:23;:36::i;541:408:29:-;643:7;680:6;696:218;736:4;:11;730:3;:17;723:25;;;;:::i;:::-;762:16;781:19;:4;796:3;781:14;:19::i;:::-;762:38;;;-1:-1:-1;821:12:29;762:38;832:1;821:12;:::i;:::-;814:19;;;;:::i;:::-;;;851:8;863:1;851:13;847:57;;884:5;;;847:57;709:205;696:218;;;930:12;936:6;930:3;:12;:::i;:::-;923:19;541:408;-1:-1:-1;;;;541:408:29:o;9465:436:25:-;9633:11;;9585:12;;9617;9626:3;9617:6;:12;:::i;:::-;:27;;9609:36;;;;;;9656:16;9685:3;9675:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:14:25;-1:-1:-1;9656:33:25;-1:-1:-1;9783:2:25;9774:12;;;;9806:26;;;;9851:22;9774:12;9806:26;9869:3;9851:6;:22::i;3439:264::-;3613:4;3665:31;3672:5;3679:11;3692:3;3665:6;:31::i;:::-;3636:25;3643:4;3649:6;3657:3;3636:6;:25::i;:::-;:60;;3439:264;-1:-1:-1;;;;;;3439:264:25:o;6152:254::-;6296:11;;6251:10;;6285:7;:3;6291:1;6285:7;:::i;:::-;:22;;6277:31;;;;;;-1:-1:-1;6358:22:25;6372:1;6358:22;6352:29;6383:6;6348:42;;6152:254::o;6655:258::-;6799:11;;6754:10;;6788:7;:3;6794:1;6788:7;:::i;:::-;:22;;6780:31;;;;;;-1:-1:-1;6861:22:25;6875:1;6861:22;6855:29;6886:10;6851:46;;6655:258::o;1089:269:84:-;1214:4;1253:46;;;1268:31;1253:46;;:98;;;1315:36;1339:11;1315:23;:36::i;5750:153:25:-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;:::o;8595:645::-;8768:2;8761:3;:9;8754:165;;8837:10;;8824:24;;8875:10;8883:2;8831:4;8875:10;:::i;:::-;;-1:-1:-1;8899:9:25;8906:2;8899:9;;:::i;:::-;;-1:-1:-1;8772:9:25;8779:2;8772:9;;:::i;:::-;;;8754:165;;;9081:10;;9140:11;;9007:2;:8;;;;9001:3;:15;-1:-1:-1;;9000:21:25;9093:9;;9077:26;;;9136:22;;9188:21;9175:35;;8595:645::o;311:274::-;475:11;;428;;459:12;468:3;459:6;:12;:::i;:::-;:27;;451:36;;;;;;-1:-1:-1;537:26:25;;551:2;537:26;527:42;;311:274::o;2860::83:-;2985:4;3024:51;;;3039:36;3024:51;;:103;;;3091:36;3115:11;6041:4:70;6080:51;;;6095:36;6080:51;;:116;;-1:-1:-1;6147:49:70;;;6162:34;6147:49;6080:116;:168;;;;6212:36;6236:11;1242:4:69;1281:53;;;1296:38;1281:53;;:105;;;1350:36;1374:11;1956:4:68;1995:46;;;2010:31;1995:46;;:111;;-1:-1:-1;2057:49:68;;;2072:34;2057:49;1995:111;:163;;;;2122:36;2146:11;2049:4:67;2088:45;;;2103:30;2088:45;;:97;;;2149:36;2173:11;957:4:66;996:53;;;1011:38;996:53;;:105;;-1:-1:-1;952:25:16;937:40;;;;1065:36:66;829:155:16;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:219:111:-;81:20;;141:66;130:78;;120:89;;110:117;;223:1;220;213:12;110:117;14:219;;;:::o;238:184::-;296:6;349:2;337:9;328:7;324:23;320:32;317:52;;;365:1;362;355:12;317:52;388:28;406:9;388:28;:::i;619:347::-;670:8;680:6;734:3;727:4;719:6;715:17;711:27;701:55;;752:1;749;742:12;701:55;-1:-1:-1;775:20:111;;818:18;807:30;;804:50;;;850:1;847;840:12;804:50;887:4;879:6;875:17;863:29;;939:3;932:4;923:6;915;911:19;907:30;904:39;901:59;;;956:1;953;946:12;971:477;1050:6;1058;1066;1119:2;1107:9;1098:7;1094:23;1090:32;1087:52;;;1135:1;1132;1125:12;1087:52;1171:9;1158:23;1148:33;;1232:2;1221:9;1217:18;1204:32;1259:18;1251:6;1248:30;1245:50;;;1291:1;1288;1281:12;1245:50;1330:58;1380:7;1371:6;1360:9;1356:22;1330:58;:::i;:::-;971:477;;1407:8;;-1:-1:-1;1304:84:111;;-1:-1:-1;;;;971:477:111:o;1453:787::-;1554:6;1562;1570;1578;1586;1639:2;1627:9;1618:7;1614:23;1610:32;1607:52;;;1655:1;1652;1645:12;1607:52;1691:9;1678:23;1668:33;;1752:2;1741:9;1737:18;1724:32;1775:18;1816:2;1808:6;1805:14;1802:34;;;1832:1;1829;1822:12;1802:34;1871:58;1921:7;1912:6;1901:9;1897:22;1871:58;:::i;:::-;1948:8;;-1:-1:-1;1845:84:111;-1:-1:-1;2036:2:111;2021:18;;2008:32;;-1:-1:-1;2052:16:111;;;2049:36;;;2081:1;2078;2071:12;2049:36;;2120:60;2172:7;2161:8;2150:9;2146:24;2120:60;:::i;:::-;1453:787;;;;-1:-1:-1;1453:787:111;;-1:-1:-1;2199:8:111;;2094:86;1453:787;-1:-1:-1;;;1453:787:111:o;2245:252::-;2312:6;2320;2373:2;2361:9;2352:7;2348:23;2344:32;2341:52;;;2389:1;2386;2379:12;2341:52;2425:9;2412:23;2402:33;;2454:37;2487:2;2476:9;2472:18;2454:37;:::i;:::-;2444:47;;2245:252;;;;;:::o;2733:248::-;2801:6;2809;2862:2;2850:9;2841:7;2837:23;2833:32;2830:52;;;2878:1;2875;2868:12;2830:52;-1:-1:-1;;2901:23:111;;;2971:2;2956:18;;;2943:32;;-1:-1:-1;2733:248:111:o;2986:250::-;3071:1;3081:113;3095:6;3092:1;3089:13;3081:113;;;3171:11;;;3165:18;3152:11;;;3145:39;3117:2;3110:10;3081:113;;;-1:-1:-1;;3228:1:111;3210:16;;3203:27;2986:250::o;3241:329::-;3282:3;3320:5;3314:12;3347:6;3342:3;3335:19;3363:76;3432:6;3425:4;3420:3;3416:14;3409:4;3402:5;3398:16;3363:76;:::i;:::-;3484:2;3472:15;-1:-1:-1;;3468:88:111;3459:98;;;;3559:4;3455:109;;3241:329;-1:-1:-1;;3241:329:111:o;3575:288::-;3750:6;3739:9;3732:25;3793:2;3788;3777:9;3773:18;3766:30;3713:4;3813:44;3853:2;3842:9;3838:18;3830:6;3813:44;:::i;3868:316::-;3945:6;3953;3961;4014:2;4002:9;3993:7;3989:23;3985:32;3982:52;;;4030:1;4027;4020:12;3982:52;-1:-1:-1;;4053:23:111;;;4123:2;4108:18;;4095:32;;-1:-1:-1;4174:2:111;4159:18;;;4146:32;;3868:316;-1:-1:-1;3868:316:111:o;4189:180::-;4248:6;4301:2;4289:9;4280:7;4276:23;4272:32;4269:52;;;4317:1;4314;4307:12;4269:52;-1:-1:-1;4340:23:111;;4189:180;-1:-1:-1;4189:180:111:o;5357:219::-;5506:2;5495:9;5488:21;5469:4;5526:44;5566:2;5555:9;5551:18;5543:6;5526:44;:::i;5803:545::-;5891:6;5899;5907;5915;5968:2;5956:9;5947:7;5943:23;5939:32;5936:52;;;5984:1;5981;5974:12;5936:52;6020:9;6007:23;5997:33;;6077:2;6066:9;6062:18;6049:32;6039:42;;6132:2;6121:9;6117:18;6104:32;6159:18;6151:6;6148:30;6145:50;;;6191:1;6188;6181:12;6145:50;6230:58;6280:7;6271:6;6260:9;6256:22;6230:58;:::i;:::-;5803:545;;;;-1:-1:-1;6307:8:111;-1:-1:-1;;;;5803:545:111:o;6353:184::-;6405:77;6402:1;6395:88;6502:4;6499:1;6492:15;6526:4;6523:1;6516:15;6542:1116;6628:6;6636;6644;6697:2;6685:9;6676:7;6672:23;6668:32;6665:52;;;6713:1;6710;6703:12;6665:52;6749:9;6736:23;6726:33;;6806:2;6795:9;6791:18;6778:32;6768:42;;6861:2;6850:9;6846:18;6833:32;6884:18;6925:2;6917:6;6914:14;6911:34;;;6941:1;6938;6931:12;6911:34;6979:6;6968:9;6964:22;6954:32;;7024:7;7017:4;7013:2;7009:13;7005:27;6995:55;;7046:1;7043;7036:12;6995:55;7082:2;7069:16;7104:2;7100;7097:10;7094:36;;;7110:18;;:::i;:::-;7244:2;7238:9;7306:4;7298:13;;-1:-1:-1;;7294:22:111;;;7318:2;7290:31;7286:40;7274:53;;;7342:18;;;7362:22;;;7339:46;7336:72;;;7388:18;;:::i;:::-;7428:10;7424:2;7417:22;7463:2;7455:6;7448:18;7503:7;7498:2;7493;7489;7485:11;7481:20;7478:33;7475:53;;;7524:1;7521;7514:12;7475:53;7580:2;7575;7571;7567:11;7562:2;7554:6;7550:15;7537:46;7625:1;7620:2;7615;7607:6;7603:15;7599:24;7592:35;7646:6;7636:16;;;;;;;6542:1116;;;;;:::o;7663:408::-;7739:6;7747;7755;7808:2;7796:9;7787:7;7783:23;7779:32;7776:52;;;7824:1;7821;7814:12;7776:52;7860:9;7847:23;7837:33;;7917:2;7906:9;7902:18;7889:32;7879:42;;7971:2;7960:9;7956:18;7943:32;8015:6;8008:5;8004:18;7997:5;7994:29;7984:57;;8037:1;8034;8027:12;7984:57;8060:5;8050:15;;;7663:408;;;;;:::o;8329:196::-;8397:20;;8457:42;8446:54;;8436:65;;8426:93;;8515:1;8512;8505:12;8530:254;8598:6;8606;8659:2;8647:9;8638:7;8634:23;8630:32;8627:52;;;8675:1;8672;8665:12;8627:52;8711:9;8698:23;8688:33;;8740:38;8774:2;8763:9;8759:18;8740:38;:::i;8994:326::-;9070:6;9078;9086;9139:2;9127:9;9118:7;9114:23;9110:32;9107:52;;;9155:1;9152;9145:12;9107:52;9191:9;9178:23;9168:33;;9220:37;9253:2;9242:9;9238:18;9220:37;:::i;:::-;9210:47;;9276:38;9310:2;9299:9;9295:18;9276:38;:::i;:::-;9266:48;;8994:326;;;;;:::o;9325:186::-;9384:6;9437:2;9425:9;9416:7;9412:23;9408:32;9405:52;;;9453:1;9450;9443:12;9405:52;9476:29;9495:9;9476:29;:::i;9516:287::-;9645:3;9683:6;9677:13;9699:66;9758:6;9753:3;9746:4;9738:6;9734:17;9699:66;:::i;:::-;9781:16;;;;;9516:287;-1:-1:-1;;9516:287:111:o;9808:184::-;9860:77;9857:1;9850:88;9957:4;9954:1;9947:15;9981:4;9978:1;9971:15;9997:128;10064:9;;;10085:11;;;10082:37;;;10099:18;;:::i;10130:273::-;10315:6;10307;10302:3;10289:33;10271:3;10341:16;;10366:13;;;10341:16;10130:273;-1:-1:-1;10130:273:111:o;10408:437::-;10487:1;10483:12;;;;10530;;;10551:61;;10605:4;10597:6;10593:17;10583:27;;10551:61;10658:2;10650:6;10647:14;10627:18;10624:38;10621:218;;10695:77;10692:1;10685:88;10796:4;10793:1;10786:15;10824:4;10821:1;10814:15;10621:218;;10408:437;;;:::o;10976:545::-;11078:2;11073:3;11070:11;11067:448;;;11114:1;11139:5;11135:2;11128:17;11184:4;11180:2;11170:19;11254:2;11242:10;11238:19;11235:1;11231:27;11225:4;11221:38;11290:4;11278:10;11275:20;11272:47;;;-1:-1:-1;11313:4:111;11272:47;11368:2;11363:3;11359:12;11356:1;11352:20;11346:4;11342:31;11332:41;;11423:82;11441:2;11434:5;11431:13;11423:82;;;11486:17;;;11467:1;11456:13;11423:82;;;11427:3;;;10976:545;;;:::o;11757:1325::-;11881:18;11876:3;11873:27;11870:53;;;11903:18;;:::i;:::-;11932:94;12022:3;11982:38;12014:4;12008:11;11982:38;:::i;:::-;11976:4;11932:94;:::i;:::-;12052:1;12077:2;12072:3;12069:11;12094:1;12089:735;;;;12868:1;12885:3;12882:93;;;-1:-1:-1;12941:19:111;;;12928:33;12882:93;-1:-1:-1;;11654:1:111;11650:11;;;11646:84;11642:89;11632:100;11738:1;11734:11;;;11629:117;12988:78;;12062:1014;;12089:735;10923:1;10916:14;;;10960:4;10947:18;;-1:-1:-1;;12125:76:111;;;12285:9;12307:229;12321:7;12318:1;12315:14;12307:229;;;12410:19;;;12397:33;12382:49;;12517:4;12502:20;;;;12470:1;12458:14;;;;12337:12;12307:229;;;12311:3;12564;12555:7;12552:16;12549:219;;;-1:-1:-1;;12678:3:111;12672;12669:1;12665:11;12661:21;12657:94;12653:99;12640:9;12635:3;12631:19;12618:33;12614:139;12606:6;12599:155;12549:219;;;12811:1;12805:3;12802:1;12798:11;12794:19;12788:4;12781:33;12062:1014;;11757:1325;;;:::o;13087:326::-;13176:6;13171:3;13164:19;13228:6;13221:5;13214:4;13209:3;13205:14;13192:43;;13280:1;13273:4;13264:6;13259:3;13255:16;13251:27;13244:38;13146:3;13402:4;-1:-1:-1;;13327:2:111;13319:6;13315:15;13311:88;13306:3;13302:98;13298:109;13291:116;;13087:326;;;;:::o;13418:437::-;13635:2;13624:9;13617:21;13598:4;13661:62;13719:2;13708:9;13704:18;13696:6;13688;13661:62;:::i;:::-;13771:9;13763:6;13759:22;13754:2;13743:9;13739:18;13732:50;13799;13842:6;13834;13826;13799:50;:::i;:::-;13791:58;13418:437;-1:-1:-1;;;;;;;13418:437:111:o;14113:184::-;14165:77;14162:1;14155:88;14262:4;14259:1;14252:15;14286:4;14283:1;14276:15;15630:245;15787:2;15776:9;15769:21;15750:4;15807:62;15865:2;15854:9;15850:18;15842:6;15834;15807:62;:::i;15880:209::-;15918:3;15946:18;15999:2;15992:5;15988:14;16026:2;16017:7;16014:15;16011:41;;16032:18;;:::i;:::-;16081:1;16068:15;;15880:209;-1:-1:-1;;;15880:209:111:o;16946:1469::-;17070:3;17064:10;17097:18;17089:6;17086:30;17083:56;;;17119:18;;:::i;:::-;17148:97;17238:6;17198:38;17230:4;17224:11;17198:38;:::i;:::-;17192:4;17148:97;:::i;:::-;17300:4;;17364:2;17353:14;;17381:1;17376:782;;;;18202:1;18219:6;18216:89;;;-1:-1:-1;18271:19:111;;;18265:26;18216:89;-1:-1:-1;;11654:1:111;11650:11;;;11646:84;11642:89;11632:100;11738:1;11734:11;;;11629:117;18318:81;;17346:1063;;17376:782;10923:1;10916:14;;;10960:4;10947:18;;-1:-1:-1;;17412:79:111;;;17589:236;17603:7;17600:1;17597:14;17589:236;;;17692:19;;;17686:26;17671:42;;17784:27;;;;17752:1;17740:14;;;;17619:19;;17589:236;;;17593:3;17853:6;17844:7;17841:19;17838:261;;;17914:19;;;17908:26;-1:-1:-1;;17997:1:111;17993:14;;;18009:3;17989:24;17985:97;17981:102;17966:118;17951:134;;17838:261;-1:-1:-1;;;;;18145:1:111;18129:14;;;18125:22;18112:36;;-1:-1:-1;16946:1469:111:o;18420:405::-;18623:2;18612:9;18605:21;18586:4;18649:44;18689:2;18678:9;18674:18;18666:6;18649:44;:::i;:::-;18741:9;18733:6;18729:22;18724:2;18713:9;18709:18;18702:50;18769;18812:6;18804;18796;18769:50;:::i;:::-;18761:58;18420:405;-1:-1:-1;;;;;;18420:405:111:o;19237:241::-;19275:3;19319:6;19312:5;19308:18;19345:7;19335:41;;19356:18;;:::i;:::-;-1:-1:-1;;19392:80:111;;19237:241;-1:-1:-1;;19237:241:111:o;19483:299::-;19656:2;19645:9;19638:21;19619:4;19676:44;19716:2;19705:9;19701:18;19693:6;19676:44;:::i;:::-;19668:52;;19768:6;19760;19756:19;19751:2;19740:9;19736:18;19729:47;19483:299;;;;;:::o;19787:197::-;19825:3;19853:6;19894:2;19887:5;19883:14;19921:2;19912:7;19909:15;19906:41;;19927:18;;:::i;19989:459::-;20208:2;20197:9;20190:21;20171:4;20234:44;20274:2;20263:9;20259:18;20251:6;20234:44;:::i;:::-;20326:6;20318;20314:19;20309:2;20298:9;20294:18;20287:47;20382:9;20374:6;20370:22;20365:2;20354:9;20350:18;20343:50;20410:32;20435:6;20427;20410:32;:::i;20453:125::-;20518:9;;;20539:10;;;20536:36;;;20552:18;;:::i;20583:184::-;20635:77;20632:1;20625:88;20732:4;20729:1;20722:15;20756:4;20753:1;20746:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2272000",
                "executionCost": "28268",
                "totalCost": "2300268"
              },
              "external": {
                "ABI(bytes32,uint256)": "infinite",
                "addr(bytes32)": "infinite",
                "addr(bytes32,uint256)": "infinite",
                "clearRecords(bytes32)": "32592",
                "contenthash(bytes32)": "infinite",
                "dnsRecord(bytes32,bytes32,uint16)": "infinite",
                "hasDNSRecords(bytes32,bytes32)": "4820",
                "interfaceImplementer(bytes32,bytes4)": "infinite",
                "name(bytes32)": "infinite",
                "owner()": "2374",
                "pubkey(bytes32)": "6863",
                "recordVersions(bytes32)": "2497",
                "renounceOwnership()": "28143",
                "setABI(bytes32,uint256,bytes)": "infinite",
                "setAddr(bytes32,address)": "infinite",
                "setAddr(bytes32,uint256,bytes)": "infinite",
                "setContenthash(bytes32,bytes)": "infinite",
                "setDNSRecords(bytes32,bytes)": "infinite",
                "setInterface(bytes32,bytes4,address)": "infinite",
                "setName(bytes32,string)": "infinite",
                "setPubkey(bytes32,bytes32,bytes32)": "50820",
                "setText(bytes32,string,string)": "infinite",
                "setZonehash(bytes32,bytes)": "infinite",
                "supportsInterface(bytes4)": "infinite",
                "text(bytes32,string)": "infinite",
                "transferOwnership(address)": "28356",
                "zonehash(bytes32)": "infinite"
              },
              "internal": {
                "isAuthorised(bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {
              "ABI(bytes32,uint256)": "2203ab56",
              "addr(bytes32)": "3b3b57de",
              "addr(bytes32,uint256)": "f1cb7e06",
              "clearRecords(bytes32)": "3603d758",
              "contenthash(bytes32)": "bc1c58d1",
              "dnsRecord(bytes32,bytes32,uint16)": "a8fa5682",
              "hasDNSRecords(bytes32,bytes32)": "4cbf6ba4",
              "interfaceImplementer(bytes32,bytes4)": "124a319c",
              "name(bytes32)": "691f3431",
              "owner()": "8da5cb5b",
              "pubkey(bytes32)": "c8690233",
              "recordVersions(bytes32)": "d700ff33",
              "renounceOwnership()": "715018a6",
              "setABI(bytes32,uint256,bytes)": "623195b0",
              "setAddr(bytes32,address)": "d5fa2b00",
              "setAddr(bytes32,uint256,bytes)": "8b95dd71",
              "setContenthash(bytes32,bytes)": "304e6ade",
              "setDNSRecords(bytes32,bytes)": "0af179d7",
              "setInterface(bytes32,bytes4,address)": "e59d895d",
              "setName(bytes32,string)": "77372213",
              "setPubkey(bytes32,bytes32,bytes32)": "29cd62ea",
              "setText(bytes32,string,string)": "10f13a8c",
              "setZonehash(bytes32,bytes)": "ce3decdc",
              "supportsInterface(bytes4)": "01ffc9a7",
              "text(bytes32,string)": "59d1d43c",
              "transferOwnership(address)": "f2fde38b",
              "zonehash(bytes32)": "5c98042b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lastzonehash\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zonehash\",\"type\":\"bytes\"}],\"name\":\"DNSZonehashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"hasDNSRecords\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"interfaceImplementer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDNSRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"setInterface\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setZonehash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"zonehash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"ABI(bytes32,uint256)\":{\"params\":{\"contentTypes\":\"A bitwise OR of the ABI formats accepted by the caller.\",\"node\":\"The ENS node to query\"},\"returns\":{\"_0\":\"contentType The content type of the return value\",\"_1\":\"data The ABI data\"}},\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated address.\"}},\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"contenthash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}},\"dnsRecord(bytes32,bytes32,uint16)\":{\"params\":{\"name\":\"the keccak-256 hash of the fully-qualified name for which to fetch the record\",\"node\":\"the namehash of the node for which to fetch the record\",\"resource\":\"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\"},\"returns\":{\"_0\":\"the DNS record in wire format if present, otherwise empty\"}},\"hasDNSRecords(bytes32,bytes32)\":{\"params\":{\"name\":\"the namehash of the node for which to check the records\",\"node\":\"the namehash of the node for which to check the records\"}},\"interfaceImplementer(bytes32,bytes4)\":{\"params\":{\"interfaceID\":\"The EIP 165 interface ID to check for.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The address that implements this interface, or 0 if the interface is unsupported.\"}},\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated name.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pubkey(bytes32)\":{\"params\":{\"node\":\"The ENS node to query\"},\"returns\":{\"x\":\"The X coordinate of the curve point for the public key.\",\"y\":\"The Y coordinate of the curve point for the public key.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setABI(bytes32,uint256,bytes)\":{\"params\":{\"contentType\":\"The content type of the ABI\",\"data\":\"The ABI data.\",\"node\":\"The node to update.\"}},\"setAddr(bytes32,address)\":{\"params\":{\"a\":\"The address to set.\",\"node\":\"The node to update.\"}},\"setContenthash(bytes32,bytes)\":{\"params\":{\"hash\":\"The contenthash to set\",\"node\":\"The node to update.\"}},\"setDNSRecords(bytes32,bytes)\":{\"params\":{\"data\":\"the DNS wire format records to set\",\"node\":\"the namehash of the node for which to set the records\"}},\"setInterface(bytes32,bytes4,address)\":{\"params\":{\"implementer\":\"The address of a contract that implements this interface for this node.\",\"interfaceID\":\"The EIP 165 interface ID.\",\"node\":\"The node to update.\"}},\"setName(bytes32,string)\":{\"params\":{\"node\":\"The node to update.\"}},\"setPubkey(bytes32,bytes32,bytes32)\":{\"params\":{\"node\":\"The ENS node to query\",\"x\":\"the X coordinate of the curve point for the public key.\",\"y\":\"the Y coordinate of the curve point for the public key.\"}},\"setText(bytes32,string,string)\":{\"params\":{\"key\":\"The key to set.\",\"node\":\"The node to update.\",\"value\":\"The text data value to set.\"}},\"setZonehash(bytes32,bytes)\":{\"params\":{\"hash\":\"The zonehash to set\",\"node\":\"The node to update.\"}},\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated text data.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"zonehash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"ABI(bytes32,uint256)\":{\"notice\":\"Returns the ABI associated with an ENS node. Defined in EIP205.\"},\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"contenthash(bytes32)\":{\"notice\":\"Returns the contenthash associated with an ENS node.\"},\"dnsRecord(bytes32,bytes32,uint16)\":{\"notice\":\"Obtain a DNS record.\"},\"hasDNSRecords(bytes32,bytes32)\":{\"notice\":\"Check if a given node has records.\"},\"interfaceImplementer(bytes32,bytes4)\":{\"notice\":\"Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned.\"},\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"},\"pubkey(bytes32)\":{\"notice\":\"Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619.\"},\"setABI(bytes32,uint256,bytes)\":{\"notice\":\"Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setContenthash(bytes32,bytes)\":{\"notice\":\"Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setDNSRecords(bytes32,bytes)\":{\"notice\":\"Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:     a.example.com IN A 1.2.3.4     a.example.com IN A 5.6.7.8     www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:     a.example.com IN A 1.2.3.4     www.example.com IN CNAME a.example.com.     a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first.\"},\"setInterface(bytes32,bytes4,address)\":{\"notice\":\"Sets an interface associated with a name. Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\"},\"setName(bytes32,string)\":{\"notice\":\"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry.\"},\"setPubkey(bytes32,bytes32,bytes32)\":{\"notice\":\"Sets the SECP256k1 public key associated with an ENS node.\"},\"setText(bytes32,string,string)\":{\"notice\":\"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry.\"},\"setZonehash(bytes32,bytes)\":{\"notice\":\"setZonehash sets the hash for the zone. May only be called by the owner of that node in the ENS registry.\"},\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"},\"zonehash(bytes32)\":{\"notice\":\"zonehash obtains the hash for the zone.\"}},\"notice\":\"A simple resolver anyone can use; only allows the owner of a node to set its address.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/OwnedResolver.sol\":\"OwnedResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"},\"contracts/resolvers/OwnedResolver.sol\":{\"content\":\"pragma solidity >=0.8.4;\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"./profiles/ABIResolver.sol\\\";\\nimport \\\"./profiles/AddrResolver.sol\\\";\\nimport \\\"./profiles/ContentHashResolver.sol\\\";\\nimport \\\"./profiles/DNSResolver.sol\\\";\\nimport \\\"./profiles/InterfaceResolver.sol\\\";\\nimport \\\"./profiles/NameResolver.sol\\\";\\nimport \\\"./profiles/PubkeyResolver.sol\\\";\\nimport \\\"./profiles/TextResolver.sol\\\";\\n\\n/**\\n * A simple resolver anyone can use; only allows the owner of a node to set its\\n * address.\\n */\\ncontract OwnedResolver is\\n    Ownable,\\n    ABIResolver,\\n    AddrResolver,\\n    ContentHashResolver,\\n    DNSResolver,\\n    InterfaceResolver,\\n    NameResolver,\\n    PubkeyResolver,\\n    TextResolver\\n{\\n    function isAuthorised(bytes32) internal view override returns (bool) {\\n        return msg.sender == owner();\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override(\\n            ABIResolver,\\n            AddrResolver,\\n            ContentHashResolver,\\n            DNSResolver,\\n            InterfaceResolver,\\n            NameResolver,\\n            PubkeyResolver,\\n            TextResolver\\n        )\\n        returns (bool)\\n    {\\n        return super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0xe5be50c93a1d77e92b78e09b7936872522dd1e0218585774c2644ee3e0bcd9db\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\nabstract contract ABIResolver is IABIResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_abis;\\n\\n    /**\\n     * Sets the ABI associated with an ENS node.\\n     * Nodes may have one ABI of each content type. To remove an ABI, set it to\\n     * the empty string.\\n     * @param node The node to update.\\n     * @param contentType The content type of the ABI\\n     * @param data The ABI data.\\n     */\\n    function setABI(\\n        bytes32 node,\\n        uint256 contentType,\\n        bytes calldata data\\n    ) external virtual authorised(node) {\\n        // Content types must be powers of 2\\n        require(((contentType - 1) & contentType) == 0);\\n\\n        versionable_abis[recordVersions[node]][node][contentType] = data;\\n        emit ABIChanged(node, contentType);\\n    }\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (uint256, bytes memory)\\n    {\\n        mapping(uint256 => bytes) storage abiset = versionable_abis[\\n            recordVersions[node]\\n        ][node];\\n\\n        for (\\n            uint256 contentType = 1;\\n            contentType <= contentTypes;\\n            contentType <<= 1\\n        ) {\\n            if (\\n                (contentType & contentTypes) != 0 &&\\n                abiset[contentType].length > 0\\n            ) {\\n                return (contentType, abiset[contentType]);\\n            }\\n        }\\n\\n        return (0, bytes(\\\"\\\"));\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IABIResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x8f6fc2c3aeb2eee665ae4b2db8efe137869509a2fba4ec3dfd381257e64c82c4\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/AddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IAddrResolver.sol\\\";\\nimport \\\"./IAddressResolver.sol\\\";\\n\\nabstract contract AddrResolver is\\n    IAddrResolver,\\n    IAddressResolver,\\n    ResolverBase\\n{\\n    uint256 private constant COIN_TYPE_ETH = 60;\\n\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_addresses;\\n\\n    /**\\n     * Sets the address associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param a The address to set.\\n     */\\n    function setAddr(bytes32 node, address a)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        setAddr(node, COIN_TYPE_ETH, addressToBytes(a));\\n    }\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address payable)\\n    {\\n        bytes memory a = addr(node, COIN_TYPE_ETH);\\n        if (a.length == 0) {\\n            return payable(0);\\n        }\\n        return bytesToAddress(a);\\n    }\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes memory a\\n    ) public virtual authorised(node) {\\n        emit AddressChanged(node, coinType, a);\\n        if (coinType == COIN_TYPE_ETH) {\\n            emit AddrChanged(node, bytesToAddress(a));\\n        }\\n        versionable_addresses[recordVersions[node]][node][coinType] = a;\\n    }\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_addresses[recordVersions[node]][node][coinType];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IAddrResolver).interfaceId ||\\n            interfaceID == type(IAddressResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function bytesToAddress(bytes memory b)\\n        internal\\n        pure\\n        returns (address payable a)\\n    {\\n        require(b.length == 20);\\n        assembly {\\n            a := div(mload(add(b, 32)), exp(256, 12))\\n        }\\n    }\\n\\n    function addressToBytes(address a) internal pure returns (bytes memory b) {\\n        b = new bytes(20);\\n        assembly {\\n            mstore(add(b, 32), mul(a, exp(256, 12)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd646c5d83209db92099b84effe8ab19bb9fccb95c25b2984e2d217c70eeccbf3\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IContentHashResolver.sol\\\";\\n\\nabstract contract ContentHashResolver is IContentHashResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => bytes)) versionable_hashes;\\n\\n    /**\\n     * Sets the contenthash associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param hash The contenthash to set\\n     */\\n    function setContenthash(bytes32 node, bytes calldata hash)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        versionable_hashes[recordVersions[node]][node] = hash;\\n        emit ContenthashChanged(node, hash);\\n    }\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_hashes[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IContentHashResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x51997248aa9b178ce3fcc708ede901f02f1613091743bc91adeb0b3c42600f14\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/DNSResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"../../dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"./IDNSRecordResolver.sol\\\";\\nimport \\\"./IDNSZoneResolver.sol\\\";\\n\\nabstract contract DNSResolver is\\n    IDNSRecordResolver,\\n    IDNSZoneResolver,\\n    ResolverBase\\n{\\n    using RRUtils for *;\\n    using BytesUtils for bytes;\\n\\n    // Zone hashes for the domains.\\n    // A zone hash is an EIP-1577 content hash in binary format that should point to a\\n    // resource containing a single zonefile.\\n    // node => contenthash\\n    mapping(uint64 => mapping(bytes32 => bytes)) private versionable_zonehashes;\\n\\n    // The records themselves.  Stored as binary RRSETs\\n    // node => version => name => resource => data\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))\\n        private versionable_records;\\n\\n    // Count of number of entries for a given name.  Required for DNS resolvers\\n    // when resolving wildcards.\\n    // node => version => name => number of records\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))\\n        private versionable_nameEntriesCount;\\n\\n    /**\\n     * Set one or more DNS records.  Records are supplied in wire-format.\\n     * Records with the same node/name/resource must be supplied one after the\\n     * other to ensure the data is updated correctly. For example, if the data\\n     * was supplied:\\n     *     a.example.com IN A 1.2.3.4\\n     *     a.example.com IN A 5.6.7.8\\n     *     www.example.com IN CNAME a.example.com.\\n     * then this would store the two A records for a.example.com correctly as a\\n     * single RRSET, however if the data was supplied:\\n     *     a.example.com IN A 1.2.3.4\\n     *     www.example.com IN CNAME a.example.com.\\n     *     a.example.com IN A 5.6.7.8\\n     * then this would store the first A record, the CNAME, then the second A\\n     * record which would overwrite the first.\\n     *\\n     * @param node the namehash of the node for which to set the records\\n     * @param data the DNS wire format records to set\\n     */\\n    function setDNSRecords(bytes32 node, bytes calldata data)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        uint16 resource = 0;\\n        uint256 offset = 0;\\n        bytes memory name;\\n        bytes memory value;\\n        bytes32 nameHash;\\n        uint64 version = recordVersions[node];\\n        // Iterate over the data to add the resource records\\n        for (\\n            RRUtils.RRIterator memory iter = data.iterateRRs(0);\\n            !iter.done();\\n            iter.next()\\n        ) {\\n            if (resource == 0) {\\n                resource = iter.dnstype;\\n                name = iter.name();\\n                nameHash = keccak256(abi.encodePacked(name));\\n                value = bytes(iter.rdata());\\n            } else {\\n                bytes memory newName = iter.name();\\n                if (resource != iter.dnstype || !name.equals(newName)) {\\n                    setDNSRRSet(\\n                        node,\\n                        name,\\n                        resource,\\n                        data,\\n                        offset,\\n                        iter.offset - offset,\\n                        value.length == 0,\\n                        version\\n                    );\\n                    resource = iter.dnstype;\\n                    offset = iter.offset;\\n                    name = newName;\\n                    nameHash = keccak256(name);\\n                    value = bytes(iter.rdata());\\n                }\\n            }\\n        }\\n        if (name.length > 0) {\\n            setDNSRRSet(\\n                node,\\n                name,\\n                resource,\\n                data,\\n                offset,\\n                data.length - offset,\\n                value.length == 0,\\n                version\\n            );\\n        }\\n    }\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) public view virtual override returns (bytes memory) {\\n        return versionable_records[recordVersions[node]][node][name][resource];\\n    }\\n\\n    /**\\n     * Check if a given node has records.\\n     * @param node the namehash of the node for which to check the records\\n     * @param name the namehash of the node for which to check the records\\n     */\\n    function hasDNSRecords(bytes32 node, bytes32 name)\\n        public\\n        view\\n        virtual\\n        returns (bool)\\n    {\\n        return (versionable_nameEntriesCount[recordVersions[node]][node][\\n            name\\n        ] != 0);\\n    }\\n\\n    /**\\n     * setZonehash sets the hash for the zone.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param hash The zonehash to set\\n     */\\n    function setZonehash(bytes32 node, bytes calldata hash)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        uint64 currentRecordVersion = recordVersions[node];\\n        bytes memory oldhash = versionable_zonehashes[currentRecordVersion][\\n            node\\n        ];\\n        versionable_zonehashes[currentRecordVersion][node] = hash;\\n        emit DNSZonehashChanged(node, oldhash, hash);\\n    }\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_zonehashes[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IDNSRecordResolver).interfaceId ||\\n            interfaceID == type(IDNSZoneResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function setDNSRRSet(\\n        bytes32 node,\\n        bytes memory name,\\n        uint16 resource,\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 size,\\n        bool deleteRecord,\\n        uint64 version\\n    ) private {\\n        bytes32 nameHash = keccak256(name);\\n        bytes memory rrData = data.substring(offset, size);\\n        if (deleteRecord) {\\n            if (\\n                versionable_records[version][node][nameHash][resource].length !=\\n                0\\n            ) {\\n                versionable_nameEntriesCount[version][node][nameHash]--;\\n            }\\n            delete (versionable_records[version][node][nameHash][resource]);\\n            emit DNSRecordDeleted(node, name, resource);\\n        } else {\\n            if (\\n                versionable_records[version][node][nameHash][resource].length ==\\n                0\\n            ) {\\n                versionable_nameEntriesCount[version][node][nameHash]++;\\n            }\\n            versionable_records[version][node][nameHash][resource] = rrData;\\n            emit DNSRecordChanged(node, name, resource, rrData);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x018591569fae9070357135a943958592f9e3bde5092e81ed234e47db9ee54d16\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/InterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./AddrResolver.sol\\\";\\nimport \\\"./IInterfaceResolver.sol\\\";\\n\\nabstract contract InterfaceResolver is IInterfaceResolver, AddrResolver {\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address))) versionable_interfaces;\\n\\n    /**\\n     * Sets an interface associated with a name.\\n     * Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\\n     * @param node The node to update.\\n     * @param interfaceID The EIP 165 interface ID.\\n     * @param implementer The address of a contract that implements this interface for this node.\\n     */\\n    function setInterface(\\n        bytes32 node,\\n        bytes4 interfaceID,\\n        address implementer\\n    ) external virtual authorised(node) {\\n        versionable_interfaces[recordVersions[node]][node][interfaceID] = implementer;\\n        emit InterfaceChanged(node, interfaceID, implementer);\\n    }\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        address implementer = versionable_interfaces[recordVersions[node]][node][interfaceID];\\n        if (implementer != address(0)) {\\n            return implementer;\\n        }\\n\\n        address a = addr(node);\\n        if (a == address(0)) {\\n            return address(0);\\n        }\\n\\n        (bool success, bytes memory returnData) = a.staticcall(\\n            abi.encodeWithSignature(\\n                \\\"supportsInterface(bytes4)\\\",\\n                type(IERC165).interfaceId\\n            )\\n        );\\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\\n            // EIP 165 not supported by target\\n            return address(0);\\n        }\\n\\n        (success, returnData) = a.staticcall(\\n            abi.encodeWithSignature(\\\"supportsInterface(bytes4)\\\", interfaceID)\\n        );\\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\\n            // Specified interface not supported by target\\n            return address(0);\\n        }\\n\\n        return a;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IInterfaceResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3daeadb9196264d907ef62b4d615fb1aae8ec3552293ae0004c3e39b5533e70f\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/NameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./INameResolver.sol\\\";\\n\\nabstract contract NameResolver is INameResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => string)) versionable_names;\\n\\n    /**\\n     * Sets the name associated with an ENS node, for reverse records.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function setName(bytes32 node, string calldata newName)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        versionable_names[recordVersions[node]][node] = newName;\\n        emit NameChanged(node, newName);\\n    }\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (string memory)\\n    {\\n        return versionable_names[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(INameResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0xaa9acf9a857d791d8e3ecb3b962addc7c6a54a9bf4cdd429bb77f075d384486f\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/PubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IPubkeyResolver.sol\\\";\\n\\nabstract contract PubkeyResolver is IPubkeyResolver, ResolverBase {\\n    struct PublicKey {\\n        bytes32 x;\\n        bytes32 y;\\n    }\\n\\n    mapping(uint64 => mapping(bytes32 => PublicKey)) versionable_pubkeys;\\n\\n    /**\\n     * Sets the SECP256k1 public key associated with an ENS node.\\n     * @param node The ENS node to query\\n     * @param x the X coordinate of the curve point for the public key.\\n     * @param y the Y coordinate of the curve point for the public key.\\n     */\\n    function setPubkey(\\n        bytes32 node,\\n        bytes32 x,\\n        bytes32 y\\n    ) external virtual authorised(node) {\\n        versionable_pubkeys[recordVersions[node]][node] = PublicKey(x, y);\\n        emit PubkeyChanged(node, x, y);\\n    }\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes32 x, bytes32 y)\\n    {\\n        uint64 currentRecordVersion = recordVersions[node];\\n        return (\\n            versionable_pubkeys[currentRecordVersion][node].x,\\n            versionable_pubkeys[currentRecordVersion][node].y\\n        );\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IPubkeyResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3b7b2e3b59874bacd585928af1b15978f900df4c87fd265510db184623e35546\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/TextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./ITextResolver.sol\\\";\\n\\nabstract contract TextResolver is ITextResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => mapping(string => string))) versionable_texts;\\n\\n    /**\\n     * Sets the text data associated with an ENS node and key.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param key The key to set.\\n     * @param value The text data value to set.\\n     */\\n    function setText(\\n        bytes32 node,\\n        string calldata key,\\n        string calldata value\\n    ) external virtual authorised(node) {\\n        versionable_texts[recordVersions[node]][node][key] = value;\\n        emit TextChanged(node, key, key, value);\\n    }\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (string memory)\\n    {\\n        return versionable_texts[recordVersions[node]][node][key];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(ITextResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3a52fa55967f964206fdefe61461f505bcdfa23264ef28da648c34a9c98081c1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 13932,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 14011,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_abis",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))"
              },
              {
                "astId": 14165,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_addresses",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))"
              },
              {
                "astId": 14356,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_hashes",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))"
              },
              {
                "astId": 14446,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_zonehashes",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))"
              },
              {
                "astId": 14456,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_records",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))))"
              },
              {
                "astId": 14464,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_nameEntriesCount",
                "offset": 0,
                "slot": "7",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16)))"
              },
              {
                "astId": 15160,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_interfaces",
                "offset": 0,
                "slot": "8",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes4,t_address)))"
              },
              {
                "astId": 15352,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_names",
                "offset": 0,
                "slot": "9",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_string_storage))"
              },
              {
                "astId": 15439,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_pubkeys",
                "offset": 0,
                "slot": "10",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_struct(PublicKey)15432_storage))"
              },
              {
                "astId": 15542,
                "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                "label": "versionable_texts",
                "offset": 0,
                "slot": "11",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage)))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_bytes4": {
                "encoding": "inplace",
                "label": "bytes4",
                "numberOfBytes": "4"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage)))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes32 => uint16))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_uint16)"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes4,t_address))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes4 => address))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes4,t_address)"
              },
              "t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(string => string))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_string_memory_ptr,t_string_storage)"
              },
              "t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(uint16 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint16,t_bytes_storage)"
              },
              "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(uint256 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_bytes_storage)"
              },
              "t_mapping(t_bytes32,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_mapping(t_bytes32,t_struct(PublicKey)15432_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => struct PubkeyResolver.PublicKey)",
                "numberOfBytes": "32",
                "value": "t_struct(PublicKey)15432_storage"
              },
              "t_mapping(t_bytes32,t_uint16)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint16)",
                "numberOfBytes": "32",
                "value": "t_uint16"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_bytes4,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes4",
                "label": "mapping(bytes4 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_string_memory_ptr,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_string_memory_ptr",
                "label": "mapping(string => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_mapping(t_uint16,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_uint16",
                "label": "mapping(uint16 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint256,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_bytes_storage)"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage)))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes4,t_address)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes4,t_address))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(string => string)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_string_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => string))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_string_storage)"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_struct(PublicKey)15432_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => struct PubkeyResolver.PublicKey))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_struct(PublicKey)15432_storage)"
              },
              "t_string_memory_ptr": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(PublicKey)15432_storage": {
                "encoding": "inplace",
                "label": "struct PubkeyResolver.PublicKey",
                "members": [
                  {
                    "astId": 15429,
                    "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                    "label": "x",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_bytes32"
                  },
                  {
                    "astId": 15431,
                    "contract": "contracts/resolvers/OwnedResolver.sol:OwnedResolver",
                    "label": "y",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_bytes32"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint16": {
                "encoding": "inplace",
                "label": "uint16",
                "numberOfBytes": "2"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "ABI(bytes32,uint256)": {
                "notice": "Returns the ABI associated with an ENS node. Defined in EIP205."
              },
              "addr(bytes32)": {
                "notice": "Returns the address associated with an ENS node."
              },
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "contenthash(bytes32)": {
                "notice": "Returns the contenthash associated with an ENS node."
              },
              "dnsRecord(bytes32,bytes32,uint16)": {
                "notice": "Obtain a DNS record."
              },
              "hasDNSRecords(bytes32,bytes32)": {
                "notice": "Check if a given node has records."
              },
              "interfaceImplementer(bytes32,bytes4)": {
                "notice": "Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned."
              },
              "name(bytes32)": {
                "notice": "Returns the name associated with an ENS node, for reverse records. Defined in EIP181."
              },
              "pubkey(bytes32)": {
                "notice": "Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619."
              },
              "setABI(bytes32,uint256,bytes)": {
                "notice": "Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string."
              },
              "setAddr(bytes32,address)": {
                "notice": "Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "setContenthash(bytes32,bytes)": {
                "notice": "Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "setDNSRecords(bytes32,bytes)": {
                "notice": "Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:     a.example.com IN A 1.2.3.4     a.example.com IN A 5.6.7.8     www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:     a.example.com IN A 1.2.3.4     www.example.com IN CNAME a.example.com.     a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first."
              },
              "setInterface(bytes32,bytes4,address)": {
                "notice": "Sets an interface associated with a name. Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support."
              },
              "setName(bytes32,string)": {
                "notice": "Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry."
              },
              "setPubkey(bytes32,bytes32,bytes32)": {
                "notice": "Sets the SECP256k1 public key associated with an ENS node."
              },
              "setText(bytes32,string,string)": {
                "notice": "Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry."
              },
              "setZonehash(bytes32,bytes)": {
                "notice": "setZonehash sets the hash for the zone. May only be called by the owner of that node in the ENS registry."
              },
              "text(bytes32,string)": {
                "notice": "Returns the text data associated with an ENS node and key."
              },
              "zonehash(bytes32)": {
                "notice": "zonehash obtains the hash for the zone."
              }
            },
            "notice": "A simple resolver anyone can use; only allows the owner of a node to set its address.",
            "version": 1
          }
        }
      },
      "contracts/resolvers/PublicResolver.sol": {
        "INameWrapper": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "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": {
              "ownerOf(uint256)": "6352211e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/PublicResolver.sol\":\"INameWrapper\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/resolvers/IMulticallable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IMulticallable {\\n    function multicall(bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    function multicallWithNodeCheck(bytes32, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n}\\n\",\"keccak256\":\"0x78b9070106d539e070dde613caaa03522143ab55c206a2efd5664c9da783741a\",\"license\":\"MIT\"},\"contracts/resolvers/Multicallable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\nimport \\\"./IMulticallable.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nabstract contract Multicallable is IMulticallable, ERC165 {\\n    function _multicall(bytes32 nodehash, bytes[] calldata data)\\n        internal\\n        returns (bytes[] memory results)\\n    {\\n        results = new bytes[](data.length);\\n        for (uint256 i = 0; i < data.length; i++) {\\n            if (nodehash != bytes32(0)) {\\n                bytes32 txNamehash = bytes32(data[i][4:36]);\\n                require(\\n                    txNamehash == nodehash,\\n                    \\\"multicall: All records must have a matching namehash\\\"\\n                );\\n            }\\n            (bool success, bytes memory result) = address(this).delegatecall(\\n                data[i]\\n            );\\n            require(success);\\n            results[i] = result;\\n        }\\n        return results;\\n    }\\n\\n    // This function provides an extra security check when called\\n    // from priviledged contracts (such as EthRegistrarController)\\n    // that can set records on behalf of the node owners\\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results)\\n    {\\n        return _multicall(nodehash, data);\\n    }\\n\\n    function multicall(bytes[] calldata data)\\n        public\\n        override\\n        returns (bytes[] memory results)\\n    {\\n        return _multicall(bytes32(0), data);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IMulticallable).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x0232b14c50b5c8bef0777fa8c130228a6a2c10b27f9be08760d40a44fd8823e9\",\"license\":\"MIT\"},\"contracts/resolvers/PublicResolver.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"./profiles/ABIResolver.sol\\\";\\nimport \\\"./profiles/AddrResolver.sol\\\";\\nimport \\\"./profiles/ContentHashResolver.sol\\\";\\nimport \\\"./profiles/DNSResolver.sol\\\";\\nimport \\\"./profiles/InterfaceResolver.sol\\\";\\nimport \\\"./profiles/NameResolver.sol\\\";\\nimport \\\"./profiles/PubkeyResolver.sol\\\";\\nimport \\\"./profiles/TextResolver.sol\\\";\\nimport \\\"./Multicallable.sol\\\";\\n\\ninterface INameWrapper {\\n    function ownerOf(uint256 id) external view returns (address);\\n}\\n\\n/**\\n * A simple resolver anyone can use; only allows the owner of a node to set its\\n * address.\\n */\\ncontract PublicResolver is\\n    Multicallable,\\n    ABIResolver,\\n    AddrResolver,\\n    ContentHashResolver,\\n    DNSResolver,\\n    InterfaceResolver,\\n    NameResolver,\\n    PubkeyResolver,\\n    TextResolver\\n{\\n    ENS immutable ens;\\n    INameWrapper immutable nameWrapper;\\n    address immutable trustedETHController;\\n    address immutable trustedReverseRegistrar;\\n\\n    /**\\n     * A mapping of operators. An address that is authorised for an address\\n     * may make any changes to the name that the owner could, but may not update\\n     * the set of authorisations.\\n     * (owner, operator) => approved\\n     */\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    constructor(\\n        ENS _ens,\\n        INameWrapper wrapperAddress,\\n        address _trustedETHController,\\n        address _trustedReverseRegistrar\\n    ) {\\n        ens = _ens;\\n        nameWrapper = wrapperAddress;\\n        trustedETHController = _trustedETHController;\\n        trustedReverseRegistrar = _trustedReverseRegistrar;\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external {\\n        require(\\n            msg.sender != operator,\\n            \\\"ERC1155: setting approval status for self\\\"\\n        );\\n\\n        _operatorApprovals[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator)\\n        public\\n        view\\n        returns (bool)\\n    {\\n        return _operatorApprovals[account][operator];\\n    }\\n\\n    function isAuthorised(bytes32 node) internal view override returns (bool) {\\n        if (\\n            msg.sender == trustedETHController ||\\n            msg.sender == trustedReverseRegistrar\\n        ) {\\n            return true;\\n        }\\n        address owner = ens.owner(node);\\n        if (owner == address(nameWrapper)) {\\n            owner = nameWrapper.ownerOf(uint256(node));\\n        }\\n        return owner == msg.sender || isApprovedForAll(owner, msg.sender);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        override(\\n            Multicallable,\\n            ABIResolver,\\n            AddrResolver,\\n            ContentHashResolver,\\n            DNSResolver,\\n            InterfaceResolver,\\n            NameResolver,\\n            PubkeyResolver,\\n            TextResolver\\n        )\\n        returns (bool)\\n    {\\n        return super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x95e776158dbaaaa58c3918787aa4e6bb22df44c6873b57129ab7e2ddcc2b6927\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\nabstract contract ABIResolver is IABIResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_abis;\\n\\n    /**\\n     * Sets the ABI associated with an ENS node.\\n     * Nodes may have one ABI of each content type. To remove an ABI, set it to\\n     * the empty string.\\n     * @param node The node to update.\\n     * @param contentType The content type of the ABI\\n     * @param data The ABI data.\\n     */\\n    function setABI(\\n        bytes32 node,\\n        uint256 contentType,\\n        bytes calldata data\\n    ) external virtual authorised(node) {\\n        // Content types must be powers of 2\\n        require(((contentType - 1) & contentType) == 0);\\n\\n        versionable_abis[recordVersions[node]][node][contentType] = data;\\n        emit ABIChanged(node, contentType);\\n    }\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (uint256, bytes memory)\\n    {\\n        mapping(uint256 => bytes) storage abiset = versionable_abis[\\n            recordVersions[node]\\n        ][node];\\n\\n        for (\\n            uint256 contentType = 1;\\n            contentType <= contentTypes;\\n            contentType <<= 1\\n        ) {\\n            if (\\n                (contentType & contentTypes) != 0 &&\\n                abiset[contentType].length > 0\\n            ) {\\n                return (contentType, abiset[contentType]);\\n            }\\n        }\\n\\n        return (0, bytes(\\\"\\\"));\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IABIResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x8f6fc2c3aeb2eee665ae4b2db8efe137869509a2fba4ec3dfd381257e64c82c4\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/AddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IAddrResolver.sol\\\";\\nimport \\\"./IAddressResolver.sol\\\";\\n\\nabstract contract AddrResolver is\\n    IAddrResolver,\\n    IAddressResolver,\\n    ResolverBase\\n{\\n    uint256 private constant COIN_TYPE_ETH = 60;\\n\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_addresses;\\n\\n    /**\\n     * Sets the address associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param a The address to set.\\n     */\\n    function setAddr(bytes32 node, address a)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        setAddr(node, COIN_TYPE_ETH, addressToBytes(a));\\n    }\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address payable)\\n    {\\n        bytes memory a = addr(node, COIN_TYPE_ETH);\\n        if (a.length == 0) {\\n            return payable(0);\\n        }\\n        return bytesToAddress(a);\\n    }\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes memory a\\n    ) public virtual authorised(node) {\\n        emit AddressChanged(node, coinType, a);\\n        if (coinType == COIN_TYPE_ETH) {\\n            emit AddrChanged(node, bytesToAddress(a));\\n        }\\n        versionable_addresses[recordVersions[node]][node][coinType] = a;\\n    }\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_addresses[recordVersions[node]][node][coinType];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IAddrResolver).interfaceId ||\\n            interfaceID == type(IAddressResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function bytesToAddress(bytes memory b)\\n        internal\\n        pure\\n        returns (address payable a)\\n    {\\n        require(b.length == 20);\\n        assembly {\\n            a := div(mload(add(b, 32)), exp(256, 12))\\n        }\\n    }\\n\\n    function addressToBytes(address a) internal pure returns (bytes memory b) {\\n        b = new bytes(20);\\n        assembly {\\n            mstore(add(b, 32), mul(a, exp(256, 12)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd646c5d83209db92099b84effe8ab19bb9fccb95c25b2984e2d217c70eeccbf3\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IContentHashResolver.sol\\\";\\n\\nabstract contract ContentHashResolver is IContentHashResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => bytes)) versionable_hashes;\\n\\n    /**\\n     * Sets the contenthash associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param hash The contenthash to set\\n     */\\n    function setContenthash(bytes32 node, bytes calldata hash)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        versionable_hashes[recordVersions[node]][node] = hash;\\n        emit ContenthashChanged(node, hash);\\n    }\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_hashes[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IContentHashResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x51997248aa9b178ce3fcc708ede901f02f1613091743bc91adeb0b3c42600f14\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/DNSResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"../../dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"./IDNSRecordResolver.sol\\\";\\nimport \\\"./IDNSZoneResolver.sol\\\";\\n\\nabstract contract DNSResolver is\\n    IDNSRecordResolver,\\n    IDNSZoneResolver,\\n    ResolverBase\\n{\\n    using RRUtils for *;\\n    using BytesUtils for bytes;\\n\\n    // Zone hashes for the domains.\\n    // A zone hash is an EIP-1577 content hash in binary format that should point to a\\n    // resource containing a single zonefile.\\n    // node => contenthash\\n    mapping(uint64 => mapping(bytes32 => bytes)) private versionable_zonehashes;\\n\\n    // The records themselves.  Stored as binary RRSETs\\n    // node => version => name => resource => data\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))\\n        private versionable_records;\\n\\n    // Count of number of entries for a given name.  Required for DNS resolvers\\n    // when resolving wildcards.\\n    // node => version => name => number of records\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))\\n        private versionable_nameEntriesCount;\\n\\n    /**\\n     * Set one or more DNS records.  Records are supplied in wire-format.\\n     * Records with the same node/name/resource must be supplied one after the\\n     * other to ensure the data is updated correctly. For example, if the data\\n     * was supplied:\\n     *     a.example.com IN A 1.2.3.4\\n     *     a.example.com IN A 5.6.7.8\\n     *     www.example.com IN CNAME a.example.com.\\n     * then this would store the two A records for a.example.com correctly as a\\n     * single RRSET, however if the data was supplied:\\n     *     a.example.com IN A 1.2.3.4\\n     *     www.example.com IN CNAME a.example.com.\\n     *     a.example.com IN A 5.6.7.8\\n     * then this would store the first A record, the CNAME, then the second A\\n     * record which would overwrite the first.\\n     *\\n     * @param node the namehash of the node for which to set the records\\n     * @param data the DNS wire format records to set\\n     */\\n    function setDNSRecords(bytes32 node, bytes calldata data)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        uint16 resource = 0;\\n        uint256 offset = 0;\\n        bytes memory name;\\n        bytes memory value;\\n        bytes32 nameHash;\\n        uint64 version = recordVersions[node];\\n        // Iterate over the data to add the resource records\\n        for (\\n            RRUtils.RRIterator memory iter = data.iterateRRs(0);\\n            !iter.done();\\n            iter.next()\\n        ) {\\n            if (resource == 0) {\\n                resource = iter.dnstype;\\n                name = iter.name();\\n                nameHash = keccak256(abi.encodePacked(name));\\n                value = bytes(iter.rdata());\\n            } else {\\n                bytes memory newName = iter.name();\\n                if (resource != iter.dnstype || !name.equals(newName)) {\\n                    setDNSRRSet(\\n                        node,\\n                        name,\\n                        resource,\\n                        data,\\n                        offset,\\n                        iter.offset - offset,\\n                        value.length == 0,\\n                        version\\n                    );\\n                    resource = iter.dnstype;\\n                    offset = iter.offset;\\n                    name = newName;\\n                    nameHash = keccak256(name);\\n                    value = bytes(iter.rdata());\\n                }\\n            }\\n        }\\n        if (name.length > 0) {\\n            setDNSRRSet(\\n                node,\\n                name,\\n                resource,\\n                data,\\n                offset,\\n                data.length - offset,\\n                value.length == 0,\\n                version\\n            );\\n        }\\n    }\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) public view virtual override returns (bytes memory) {\\n        return versionable_records[recordVersions[node]][node][name][resource];\\n    }\\n\\n    /**\\n     * Check if a given node has records.\\n     * @param node the namehash of the node for which to check the records\\n     * @param name the namehash of the node for which to check the records\\n     */\\n    function hasDNSRecords(bytes32 node, bytes32 name)\\n        public\\n        view\\n        virtual\\n        returns (bool)\\n    {\\n        return (versionable_nameEntriesCount[recordVersions[node]][node][\\n            name\\n        ] != 0);\\n    }\\n\\n    /**\\n     * setZonehash sets the hash for the zone.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param hash The zonehash to set\\n     */\\n    function setZonehash(bytes32 node, bytes calldata hash)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        uint64 currentRecordVersion = recordVersions[node];\\n        bytes memory oldhash = versionable_zonehashes[currentRecordVersion][\\n            node\\n        ];\\n        versionable_zonehashes[currentRecordVersion][node] = hash;\\n        emit DNSZonehashChanged(node, oldhash, hash);\\n    }\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_zonehashes[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IDNSRecordResolver).interfaceId ||\\n            interfaceID == type(IDNSZoneResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function setDNSRRSet(\\n        bytes32 node,\\n        bytes memory name,\\n        uint16 resource,\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 size,\\n        bool deleteRecord,\\n        uint64 version\\n    ) private {\\n        bytes32 nameHash = keccak256(name);\\n        bytes memory rrData = data.substring(offset, size);\\n        if (deleteRecord) {\\n            if (\\n                versionable_records[version][node][nameHash][resource].length !=\\n                0\\n            ) {\\n                versionable_nameEntriesCount[version][node][nameHash]--;\\n            }\\n            delete (versionable_records[version][node][nameHash][resource]);\\n            emit DNSRecordDeleted(node, name, resource);\\n        } else {\\n            if (\\n                versionable_records[version][node][nameHash][resource].length ==\\n                0\\n            ) {\\n                versionable_nameEntriesCount[version][node][nameHash]++;\\n            }\\n            versionable_records[version][node][nameHash][resource] = rrData;\\n            emit DNSRecordChanged(node, name, resource, rrData);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x018591569fae9070357135a943958592f9e3bde5092e81ed234e47db9ee54d16\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/InterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./AddrResolver.sol\\\";\\nimport \\\"./IInterfaceResolver.sol\\\";\\n\\nabstract contract InterfaceResolver is IInterfaceResolver, AddrResolver {\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address))) versionable_interfaces;\\n\\n    /**\\n     * Sets an interface associated with a name.\\n     * Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\\n     * @param node The node to update.\\n     * @param interfaceID The EIP 165 interface ID.\\n     * @param implementer The address of a contract that implements this interface for this node.\\n     */\\n    function setInterface(\\n        bytes32 node,\\n        bytes4 interfaceID,\\n        address implementer\\n    ) external virtual authorised(node) {\\n        versionable_interfaces[recordVersions[node]][node][interfaceID] = implementer;\\n        emit InterfaceChanged(node, interfaceID, implementer);\\n    }\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        address implementer = versionable_interfaces[recordVersions[node]][node][interfaceID];\\n        if (implementer != address(0)) {\\n            return implementer;\\n        }\\n\\n        address a = addr(node);\\n        if (a == address(0)) {\\n            return address(0);\\n        }\\n\\n        (bool success, bytes memory returnData) = a.staticcall(\\n            abi.encodeWithSignature(\\n                \\\"supportsInterface(bytes4)\\\",\\n                type(IERC165).interfaceId\\n            )\\n        );\\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\\n            // EIP 165 not supported by target\\n            return address(0);\\n        }\\n\\n        (success, returnData) = a.staticcall(\\n            abi.encodeWithSignature(\\\"supportsInterface(bytes4)\\\", interfaceID)\\n        );\\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\\n            // Specified interface not supported by target\\n            return address(0);\\n        }\\n\\n        return a;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IInterfaceResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3daeadb9196264d907ef62b4d615fb1aae8ec3552293ae0004c3e39b5533e70f\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/NameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./INameResolver.sol\\\";\\n\\nabstract contract NameResolver is INameResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => string)) versionable_names;\\n\\n    /**\\n     * Sets the name associated with an ENS node, for reverse records.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function setName(bytes32 node, string calldata newName)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        versionable_names[recordVersions[node]][node] = newName;\\n        emit NameChanged(node, newName);\\n    }\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (string memory)\\n    {\\n        return versionable_names[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(INameResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0xaa9acf9a857d791d8e3ecb3b962addc7c6a54a9bf4cdd429bb77f075d384486f\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/PubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IPubkeyResolver.sol\\\";\\n\\nabstract contract PubkeyResolver is IPubkeyResolver, ResolverBase {\\n    struct PublicKey {\\n        bytes32 x;\\n        bytes32 y;\\n    }\\n\\n    mapping(uint64 => mapping(bytes32 => PublicKey)) versionable_pubkeys;\\n\\n    /**\\n     * Sets the SECP256k1 public key associated with an ENS node.\\n     * @param node The ENS node to query\\n     * @param x the X coordinate of the curve point for the public key.\\n     * @param y the Y coordinate of the curve point for the public key.\\n     */\\n    function setPubkey(\\n        bytes32 node,\\n        bytes32 x,\\n        bytes32 y\\n    ) external virtual authorised(node) {\\n        versionable_pubkeys[recordVersions[node]][node] = PublicKey(x, y);\\n        emit PubkeyChanged(node, x, y);\\n    }\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes32 x, bytes32 y)\\n    {\\n        uint64 currentRecordVersion = recordVersions[node];\\n        return (\\n            versionable_pubkeys[currentRecordVersion][node].x,\\n            versionable_pubkeys[currentRecordVersion][node].y\\n        );\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IPubkeyResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3b7b2e3b59874bacd585928af1b15978f900df4c87fd265510db184623e35546\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/TextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./ITextResolver.sol\\\";\\n\\nabstract contract TextResolver is ITextResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => mapping(string => string))) versionable_texts;\\n\\n    /**\\n     * Sets the text data associated with an ENS node and key.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param key The key to set.\\n     * @param value The text data value to set.\\n     */\\n    function setText(\\n        bytes32 node,\\n        string calldata key,\\n        string calldata value\\n    ) external virtual authorised(node) {\\n        versionable_texts[recordVersions[node]][node][key] = value;\\n        emit TextChanged(node, key, key, value);\\n    }\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (string memory)\\n    {\\n        return versionable_texts[recordVersions[node]][node][key];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(ITextResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3a52fa55967f964206fdefe61461f505bcdfa23264ef28da648c34a9c98081c1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "PublicResolver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "_ens",
                  "type": "address"
                },
                {
                  "internalType": "contract INameWrapper",
                  "name": "wrapperAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_trustedETHController",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_trustedReverseRegistrar",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                }
              ],
              "name": "ABIChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "AddrChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "newAddress",
                  "type": "bytes"
                }
              ],
              "name": "AddressChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "ContenthashChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "record",
                  "type": "bytes"
                }
              ],
              "name": "DNSRecordChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "DNSRecordDeleted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "lastzonehash",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "zonehash",
                  "type": "bytes"
                }
              ],
              "name": "DNSZonehashChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "InterfaceChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "NameChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "PubkeyChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "string",
                  "name": "indexedKey",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "TextChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentTypes",
                  "type": "uint256"
                }
              ],
              "name": "ABI",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "contenthash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "name",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "dnsRecord",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "name",
                  "type": "bytes32"
                }
              ],
              "name": "hasDNSRecords",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "interfaceImplementer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "multicall",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "nodehash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "multicallWithNodeCheck",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "pubkey",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "setABI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "a",
                  "type": "bytes"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "setContenthash",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "setDNSRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "setInterface",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "newName",
                  "type": "string"
                }
              ],
              "name": "setName",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "setPubkey",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "setText",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "setZonehash",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                }
              ],
              "name": "text",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "zonehash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "ABI(bytes32,uint256)": {
                "params": {
                  "contentTypes": "A bitwise OR of the ABI formats accepted by the caller.",
                  "node": "The ENS node to query"
                },
                "returns": {
                  "_0": "contentType The content type of the return value",
                  "_1": "data The ABI data"
                }
              },
              "addr(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated address."
                }
              },
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "contenthash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              },
              "dnsRecord(bytes32,bytes32,uint16)": {
                "params": {
                  "name": "the keccak-256 hash of the fully-qualified name for which to fetch the record",
                  "node": "the namehash of the node for which to fetch the record",
                  "resource": "the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types"
                },
                "returns": {
                  "_0": "the DNS record in wire format if present, otherwise empty"
                }
              },
              "hasDNSRecords(bytes32,bytes32)": {
                "params": {
                  "name": "the namehash of the node for which to check the records",
                  "node": "the namehash of the node for which to check the records"
                }
              },
              "interfaceImplementer(bytes32,bytes4)": {
                "params": {
                  "interfaceID": "The EIP 165 interface ID to check for.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The address that implements this interface, or 0 if the interface is unsupported."
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC1155-isApprovedForAll}."
              },
              "name(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated name."
                }
              },
              "pubkey(bytes32)": {
                "params": {
                  "node": "The ENS node to query"
                },
                "returns": {
                  "x": "The X coordinate of the curve point for the public key.",
                  "y": "The Y coordinate of the curve point for the public key."
                }
              },
              "setABI(bytes32,uint256,bytes)": {
                "params": {
                  "contentType": "The content type of the ABI",
                  "data": "The ABI data.",
                  "node": "The node to update."
                }
              },
              "setAddr(bytes32,address)": {
                "params": {
                  "a": "The address to set.",
                  "node": "The node to update."
                }
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC1155-setApprovalForAll}."
              },
              "setContenthash(bytes32,bytes)": {
                "params": {
                  "hash": "The contenthash to set",
                  "node": "The node to update."
                }
              },
              "setDNSRecords(bytes32,bytes)": {
                "params": {
                  "data": "the DNS wire format records to set",
                  "node": "the namehash of the node for which to set the records"
                }
              },
              "setInterface(bytes32,bytes4,address)": {
                "params": {
                  "implementer": "The address of a contract that implements this interface for this node.",
                  "interfaceID": "The EIP 165 interface ID.",
                  "node": "The node to update."
                }
              },
              "setName(bytes32,string)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "setPubkey(bytes32,bytes32,bytes32)": {
                "params": {
                  "node": "The ENS node to query",
                  "x": "the X coordinate of the curve point for the public key.",
                  "y": "the Y coordinate of the curve point for the public key."
                }
              },
              "setText(bytes32,string,string)": {
                "params": {
                  "key": "The key to set.",
                  "node": "The node to update.",
                  "value": "The text data value to set."
                }
              },
              "setZonehash(bytes32,bytes)": {
                "params": {
                  "hash": "The zonehash to set",
                  "node": "The node to update."
                }
              },
              "text(bytes32,string)": {
                "params": {
                  "key": "The text data key to query.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated text data."
                }
              },
              "zonehash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_13621": {
                  "entryPoint": null,
                  "id": 13621,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157t_contract$_INameWrapper_$13547t_addresst_address_fromMemory": {
                  "entryPoint": 113,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "validator_revert_contract_ENS": {
                  "entryPoint": 88,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:866:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "64:86:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "128:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "137:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "140:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "130:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "130:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "130:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "87:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "98:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "113:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "118:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "109:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "109:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "122:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "105:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "105:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "94:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "94:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "84:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "84:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "77:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "77:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "74:70:111"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_ENS",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:136:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "322:542:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "369:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "378:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "381:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "371:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "371:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "371:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "343:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "352:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "339:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "339:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "364:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "332:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "394:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "413:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "407:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "407:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "398:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "462:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "432:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "432:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "432:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "477:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "487:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "477:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "501:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "526:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "537:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "522:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "522:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "516:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "516:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "505:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "580:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "550:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "550:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "550:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "597:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "607:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "597:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "623:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "648:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "659:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "644:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "644:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "638:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "638:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "627:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "702:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "672:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "672:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "672:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "719:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "729:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "719:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "745:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "770:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "781:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "766:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "766:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "760:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "760:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "749:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "824:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "794:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "794:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "794:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "841:17:111",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "851:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "841:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157t_contract$_INameWrapper_$13547t_addresst_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "264:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "275:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "287:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "295:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "303:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "311:6:111",
                            "type": ""
                          }
                        ],
                        "src": "155:709:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_contract_ENS(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_ENS_$12157t_contract$_INameWrapper_$13547t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_ENS(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_ENS(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_contract_ENS(value_2)\n        value2 := value_2\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_contract_ENS(value_3)\n        value3 := value_3\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101006040523480156200001257600080fd5b506040516200335d3803806200335d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e0516132436200011a600039600061181c015260006117dd01526000818161190101526119810152600061187d01526132436000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806377372213116100f9578063ce3decdc11610097578063e32954eb11610071578063e32954eb146104a4578063e59d895d146104b7578063e985e9c5146104ca578063f1cb7e061461051357600080fd5b8063ce3decdc1461043b578063d5fa2b001461044e578063d700ff331461046157600080fd5b8063a8fa5682116100d3578063a8fa56821461039c578063ac9650d8146103af578063bc1c58d1146103cf578063c8690233146103e257600080fd5b806377372213146103635780638b95dd7114610376578063a22cb4651461038957600080fd5b80633603d7581161016657806359d1d43c1161014057806359d1d43c1461030a5780635c98042b1461032a578063623195b01461033d578063691f34311461035057600080fd5b80633603d758146102985780633b3b57de146102ab5780634cbf6ba4146102be57600080fd5b8063124a319c116101a2578063124a319c146102195780632203ab561461025157806329cd62ea14610272578063304e6ade1461028557600080fd5b806301ffc9a7146101c95780630af179d7146101f157806310f13a8c14610206575b600080fd5b6101dc6101d73660046126f1565b610526565b60405190151581526020015b60405180910390f35b6102046101ff36600461274e565b610537565b005b61020461021436600461279a565b610741565b61022c610227366004612814565b61080e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b61026461025f366004612840565b610b69565b6040516101e89291906128b2565b6102046102803660046128cb565b610ca0565b61020461029336600461274e565b610d3b565b6102046102a63660046128f7565b610db7565b61022c6102b93660046128f7565b610e5a565b6101dc6102cc366004612840565b6000828152602081815260408083205467ffffffffffffffff1683526006825280832094835293815283822092825291909152205461ffff16151590565b61031d61031836600461274e565b610e8c565b6040516101e89190612910565b61031d6103383660046128f7565b610f6c565b61020461034b366004612923565b61102b565b61031d61035e3660046128f7565b6110c8565b61020461037136600461274e565b611102565b6102046103843660046129a5565b61117e565b610204610397366004612a8b565b61126b565b61031d6103aa366004612ac9565b6113ac565b6103c26103bd366004612b4e565b6113fa565b6040516101e89190612b90565b61031d6103dd3660046128f7565b611408565b6104266103f03660046128f7565b6000818152602081815260408083205467ffffffffffffffff168352600982528083209383529290522080546001909101549091565b604080519283526020830191909152016101e8565b61020461044936600461274e565b611442565b61020461045c366004612c10565b611585565b61048b61046f3660046128f7565b60006020819052908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101e8565b6103c26104b2366004612c35565b6115ac565b6102046104c5366004612c74565b6115c1565b6101dc6104d8366004612ca9565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600b6020908152604080832093909416825291909152205460ff1690565b61031d610521366004612840565b6116a5565b60006105318261176d565b92915050565b82610541816117c3565b61054a57600080fd5b600084815260208181526040808320548151601f870184900484028101840190925285825283926060928392859267ffffffffffffffff9091169183916105b09183918d908d90819084018382808284376000920191909152509293925050611a5c9050565b90505b805151602082015110156106da578661ffff1660000361061857806040015196506105dd81611abd565b9450846040516020016105f09190612cd7565b60405160208183030381529060405280519060200120925061061181611ade565b93506106cc565b600061062382611abd565b9050816040015161ffff168861ffff1614158061064757506106458682611afa565b155b156106ca576106a38c878a8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518d915061069a908290612d22565b8b51158a611b18565b8160400151975081602001519650809550858051906020012093506106c782611ade565b94505b505b6106d581611d85565b6105b3565b50835115610735576107358a85888c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061072c91508290508f612d22565b89511588611b18565b50505050505050505050565b8461074b816117c3565b61075457600080fd5b6000868152602081815260408083205467ffffffffffffffff168352600a8252808320898452909152908190209051849184916107949089908990612d35565b908152602001604051809103902091826107af929190612de6565b5084846040516107c0929190612d35565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516107fe9493929190612ed1565b60405180910390a3505050505050565b6000828152602081815260408083205467ffffffffffffffff1683526007825280832085845282528083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff168015610887579050610531565b600061089285610e5a565b905073ffffffffffffffffffffffffffffffffffffffff81166108ba57600092505050610531565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000179052516109669190612cd7565b600060405180830381855afa9150503d80600081146109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b50915091508115806109b9575060208151105b806109fb575080601f815181106109d2576109d2612f03565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610a0d576000945050505050610531565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610ab69190612cd7565b600060405180830381855afa9150503d8060008114610af1576040519150601f19603f3d011682016040523d82523d6000602084013e610af6565b606091505b509092509050811580610b0a575060208151105b80610b4c575080601f81518110610b2357610b23612f03565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610b5e576000945050505050610531565b509095945050505050565b6000828152602081815260408083205467ffffffffffffffff168352600180835281842086855290925282206060915b848111610c805780851615801590610bc9575060008181526020839052604081208054610bc590612d45565b9050115b15610c785780826000838152602001908152602001600020808054610bed90612d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1990612d45565b8015610c665780601f10610c3b57610100808354040283529160200191610c66565b820191906000526020600020905b815481529060010190602001808311610c4957829003601f168201915b50505050509050935093505050610c99565b60011b610b99565b5060006040518060200160405280600081525092509250505b9250929050565b82610caa816117c3565b610cb357600080fd5b604080518082018252848152602080820185815260008881528083528481205467ffffffffffffffff1681526009835284812089825283528490209251835551600190920191909155815185815290810184905285917f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4691015b60405180910390a250505050565b82610d45816117c3565b610d4e57600080fd5b6000848152602081815260408083205467ffffffffffffffff168352600382528083208784529091529020610d84838583612de6565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610d2d929190612f32565b80610dc1816117c3565b610dca57600080fd5b6000828152602081905260408120805467ffffffffffffffff1691610dee83612f46565b82546101009290920a67ffffffffffffffff818102199093169183160217909155600084815260208181526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b600080610e6883603c6116a5565b90508051600003610e7c5750600092915050565b610e8581611e6d565b9392505050565b6000838152602081815260408083205467ffffffffffffffff168352600a825280832086845290915290819020905160609190610ecc9085908590612d35565b90815260200160405180910390208054610ee590612d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1190612d45565b8015610f5e5780601f10610f3357610100808354040283529160200191610f5e565b820191906000526020600020905b815481529060010190602001808311610f4157829003601f168201915b505050505090509392505050565b6000818152602081815260408083205467ffffffffffffffff168352600482528083208484529091529020805460609190610fa690612d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd290612d45565b801561101f5780601f10610ff45761010080835404028352916020019161101f565b820191906000526020600020905b81548152906001019060200180831161100257829003601f168201915b50505050509050919050565b83611035816117c3565b61103e57600080fd5b8361104a600182612d22565b161561105557600080fd5b6000858152602081815260408083205467ffffffffffffffff1683526001825280832088845282528083208784529091529020611093838583612de6565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b6000818152602081815260408083205467ffffffffffffffff168352600882528083208484529091529020805460609190610fa690612d45565b8261110c816117c3565b61111557600080fd5b6000848152602081815260408083205467ffffffffffffffff16835260088252808320878452909152902061114b838583612de6565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610d2d929190612f32565b82611188816117c3565b61119157600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040516111c39291906128b2565b60405180910390a2603c830361122757837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd26111fe84611e6d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25b6000848152602081815260408083205467ffffffffffffffff16835260028252808320878452825280832086845290915290206112648382612f6d565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff82163303611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000838152602081815260408083205467ffffffffffffffff168352600582528083208684528252808320858452825280832061ffff851684529091529020805460609190610ee590612d45565b6060610e8560008484611e95565b6000818152602081815260408083205467ffffffffffffffff168352600382528083208484529091529020805460609190610fa690612d45565b8261144c816117c3565b61145557600080fd5b6000848152602081815260408083205467ffffffffffffffff16808452600483528184208885529092528220805491929161148f90612d45565b80601f01602080910402602001604051908101604052809291908181526020018280546114bb90612d45565b80156115085780601f106114dd57610100808354040283529160200191611508565b820191906000526020600020905b8154815290600101906020018083116114eb57829003601f168201915b5050505067ffffffffffffffff841660009081526004602090815260408083208b845290915290209192506115409050858783612de6565b50857f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858287876040516115759392919061302d565b60405180910390a2505050505050565b8161158f816117c3565b61159857600080fd5b6115a783603c61038485612088565b505050565b60606115b9848484611e95565b949350505050565b826115cb816117c3565b6115d457600080fd5b6000848152602081815260408083205467ffffffffffffffff1683526007825280832087845282528083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b6000828152602081815260408083205467ffffffffffffffff16835260028252808320858452825280832084845290915290208054606091906116e790612d45565b80601f016020809104026020016040519081016040528092919081815260200182805461171390612d45565b80156117605780601f1061173557610100808354040283529160200191611760565b820191906000526020600020905b81548152906001019060200180831161174357829003601f168201915b5050505050905092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c0000000000000000000000000000000000000000000000000000000014806105315750610531826120c1565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148061183e57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b1561184b57506001919050565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa1580156118d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fd919061305d565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a04576040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa1580156119dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a01919061305d565b90505b73ffffffffffffffffffffffffffffffffffffffff8116331480610e85575073ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020908152604080832033845290915290205460ff16610e85565b611aaa6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c0810182905261053181611d85565b6020810151815160609161053191611ad59082612117565b84519190612171565b60a081015160c082015160609161053191611ad5908290612d22565b600081518351148015610e855750610e8583600084600087516121e8565b865160208801206000611b2c878787612171565b90508315611c565767ffffffffffffffff831660009081526005602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611b7790612d45565b159050611bd65767ffffffffffffffff831660009081526006602090815260408083208d845282528083208584529091528120805461ffff1691611bba8361307a565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526005602090815260408083208d84528252808320858452825280832061ffff8c1684529091528120611c1791612666565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611c49929190613098565b60405180910390a2610735565b67ffffffffffffffff831660009081526005602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611c9990612d45565b9050600003611cfa5767ffffffffffffffff831660009081526006602090815260408083208d845282528083208584529091528120805461ffff1691611cde836130be565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526005602090815260408083208d84528252808320858452825280832061ffff8c1684529091529020611d3c8282612f6d565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611d71939291906130d5565b60405180910390a250505050505050505050565b60c08101516020820181905281515111611d9c5750565b6000611db082600001518360200151612117565b8260200151611dbf9190613104565b8251909150611dce908261220b565b61ffff166040830152611de2600282613104565b8251909150611df1908261220b565b61ffff166060830152611e05600282613104565b8251909150611e149082612233565b63ffffffff166080830152611e2a600482613104565b8251909150600090611e3c908361220b565b61ffff169050611e4d600283613104565b60a084018190529150611e608183613104565b60c0909301929092525050565b60008151601414611e7d57600080fd5b50602001516c01000000000000000000000000900490565b60608167ffffffffffffffff811115611eb057611eb0612976565b604051908082528060200260200182016040528015611ee357816020015b6060815260200190600190039081611ece5790505b50905060005b82811015612080578415611fc8576000848483818110611f0b57611f0b612f03565b9050602002810190611f1d9190613117565b611f2c9160249160049161317c565b611f35916131a6565b9050858114611fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f6d756c746963616c6c3a20416c6c207265636f726473206d757374206861766560448201527f2061206d61746368696e67206e616d6568617368000000000000000000000000606482015260840161130c565b505b60008030868685818110611fde57611fde612f03565b9050602002810190611ff09190613117565b604051611ffe929190612d35565b600060405180830381855af49150503d8060008114612039576040519150601f19603f3d011682016040523d82523d6000602084013e61203e565b606091505b50915091508161204d57600080fd5b8084848151811061206057612060612f03565b602002602001018190525050508080612078906131c4565b915050611ee9565b509392505050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000148061053157506105318261225d565b6000815b8351811061212b5761212b6131de565b600061213785836122b3565b60ff169050612147816001613104565b6121519083613104565b9150806000036121615750612167565b5061211b565b6115b98382612d22565b82516060906121808385613104565b111561218b57600080fd5b60008267ffffffffffffffff8111156121a6576121a6612976565b6040519080825280601f01601f1916602001820160405280156121d0576020820181803683370190505b50905060208082019086860101610b5e8282876122d7565b60006121f584848461232d565b61220087878561232d565b149695505050505050565b815160009061221b836002613104565b111561222657600080fd5b50016002015161ffff1690565b8151600090612243836004613104565b111561224e57600080fd5b50016004015163ffffffff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f3431000000000000000000000000000000000000000000000000000000001480610531575061053182612351565b60008282815181106122c7576122c7612f03565b016020015160f81c905092915050565b6020811061230f57815183526122ee602084613104565b92506122fb602083613104565b9150612308602082612d22565b90506122d7565b905182516020929092036101000a6000190180199091169116179052565b825160009061233c8385613104565b111561234757600080fd5b5091016020012090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c00000000000000000000000000000000000000000000000000000000148061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa568200000000000000000000000000000000000000000000000000000000148061243557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b8061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d100000000000000000000000000000000000000000000000000000000148061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061252357507fffffffff0000000000000000000000000000000000000000000000000000000082167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b8061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000148061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167fd700ff3300000000000000000000000000000000000000000000000000000000148061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167f4fbf043300000000000000000000000000000000000000000000000000000000148061053157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610531565b50805461267290612d45565b6000825580601f10612682575050565b601f0160209004906000526020600020908101906126a091906126a3565b50565b5b808211156126b857600081556001016126a4565b5090565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146126ec57600080fd5b919050565b60006020828403121561270357600080fd5b610e85826126bc565b60008083601f84011261271e57600080fd5b50813567ffffffffffffffff81111561273657600080fd5b602083019150836020828501011115610c9957600080fd5b60008060006040848603121561276357600080fd5b83359250602084013567ffffffffffffffff81111561278157600080fd5b61278d8682870161270c565b9497909650939450505050565b6000806000806000606086880312156127b257600080fd5b85359450602086013567ffffffffffffffff808211156127d157600080fd5b6127dd89838a0161270c565b909650945060408801359150808211156127f657600080fd5b506128038882890161270c565b969995985093965092949392505050565b6000806040838503121561282757600080fd5b82359150612837602084016126bc565b90509250929050565b6000806040838503121561285357600080fd5b50508035926020909101359150565b60005b8381101561287d578181015183820152602001612865565b50506000910152565b6000815180845261289e816020860160208601612862565b601f01601f19169290920160200192915050565b8281526040602082015260006115b96040830184612886565b6000806000606084860312156128e057600080fd5b505081359360208301359350604090920135919050565b60006020828403121561290957600080fd5b5035919050565b602081526000610e856020830184612886565b6000806000806060858703121561293957600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561295e57600080fd5b61296a8782880161270c565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156129ba57600080fd5b8335925060208401359150604084013567ffffffffffffffff808211156129e057600080fd5b818601915086601f8301126129f457600080fd5b813581811115612a0657612a06612976565b604051601f8201601f19908116603f01168101908382118183101715612a2e57612a2e612976565b81604052828152896020848701011115612a4757600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff811681146126a057600080fd5b60008060408385031215612a9e57600080fd5b8235612aa981612a69565b915060208301358015158114612abe57600080fd5b809150509250929050565b600080600060608486031215612ade57600080fd5b8335925060208401359150604084013561ffff81168114612afe57600080fd5b809150509250925092565b60008083601f840112612b1b57600080fd5b50813567ffffffffffffffff811115612b3357600080fd5b6020830191508360208260051b8501011115610c9957600080fd5b60008060208385031215612b6157600080fd5b823567ffffffffffffffff811115612b7857600080fd5b612b8485828601612b09565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612c03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612bf1858351612886565b94509285019290850190600101612bb7565b5092979650505050505050565b60008060408385031215612c2357600080fd5b823591506020830135612abe81612a69565b600080600060408486031215612c4a57600080fd5b83359250602084013567ffffffffffffffff811115612c6857600080fd5b61278d86828701612b09565b600080600060608486031215612c8957600080fd5b83359250612c99602085016126bc565b91506040840135612afe81612a69565b60008060408385031215612cbc57600080fd5b8235612cc781612a69565b91506020830135612abe81612a69565b60008251612ce9818460208701612862565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561053157610531612cf3565b8183823760009101908152919050565b600181811c90821680612d5957607f821691505b602082108103612d92577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156115a757600081815260208120601f850160051c81016020861015612dbf5750805b601f850160051c820191505b81811015612dde57828155600101612dcb565b505050505050565b67ffffffffffffffff831115612dfe57612dfe612976565b612e1283612e0c8354612d45565b83612d98565b6000601f841160018114612e465760008515612e2e5750838201355b600019600387901b1c1916600186901b178355611264565b600083815260209020601f19861690835b82811015612e775786850135825560209485019460019092019101612e57565b5086821015612e945760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b604081526000612ee5604083018688612ea6565b8281036020840152612ef8818587612ea6565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020815260006115b9602083018486612ea6565b600067ffffffffffffffff808316818103612f6357612f63612cf3565b6001019392505050565b815167ffffffffffffffff811115612f8757612f87612976565b612f9b81612f958454612d45565b84612d98565b602080601f831160018114612fd05760008415612fb85750858301515b600019600386901b1c1916600185901b178555612dde565b600085815260208120601f198616915b82811015612fff57888601518255948401946001909101908401612fe0565b508582101561301d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006130406040830186612886565b8281036020840152613053818587612ea6565b9695505050505050565b60006020828403121561306f57600080fd5b8151610e8581612a69565b600061ffff82168061308e5761308e612cf3565b6000190192915050565b6040815260006130ab6040830185612886565b905061ffff831660208301529392505050565b600061ffff808316818103612f6357612f63612cf3565b6060815260006130e86060830186612886565b61ffff8516602084015282810360408401526130538185612886565b8082018082111561053157610531612cf3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261314c57600080fd5b83018035915067ffffffffffffffff82111561316757600080fd5b602001915036819003821315610c9957600080fd5b6000808585111561318c57600080fd5b8386111561319957600080fd5b5050820193919092039150565b8035602083101561053157600019602084900360031b1b1692915050565b600060001982036131d7576131d7612cf3565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea26469706673582212202673f63d364d138759b82a66e0266a4d87a91b389a1d1a45dcec5e0fbce1a7f764736f6c63430008110033",
              "opcodes": "PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x335D CODESIZE SUB DUP1 PUSH3 0x335D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x71 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x80 MSTORE SWAP2 DUP4 AND PUSH1 0xA0 MSTORE DUP3 AND PUSH1 0xC0 MSTORE AND PUSH1 0xE0 MSTORE PUSH3 0xD9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x95 DUP2 PUSH3 0x58 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0xA8 DUP2 PUSH3 0x58 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0xBB DUP2 PUSH3 0x58 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0xCE DUP2 PUSH3 0x58 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x3243 PUSH3 0x11A PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x181C ADD MSTORE PUSH1 0x0 PUSH2 0x17DD ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x1901 ADD MSTORE PUSH2 0x1981 ADD MSTORE PUSH1 0x0 PUSH2 0x187D ADD MSTORE PUSH2 0x3243 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77372213 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xCE3DECDC GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xE32954EB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE32954EB EQ PUSH2 0x4A4 JUMPI DUP1 PUSH4 0xE59D895D EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0xF1CB7E06 EQ PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCE3DECDC EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0xD5FA2B00 EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0xD700FF33 EQ PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA8FA5682 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA8FA5682 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0xBC1C58D1 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0xC8690233 EQ PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x77372213 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x8B95DD71 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x389 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3603D758 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x59D1D43C GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x59D1D43C EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x5C98042B EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x623195B0 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x691F3431 EQ PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3603D758 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x3B3B57DE EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x4CBF6BA4 EQ PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x124A319C GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x124A319C EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x2203AB56 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x29CD62EA EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x304E6ADE EQ PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0xAF179D7 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x10F13A8C EQ PUSH2 0x206 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x204 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0x537 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x204 PUSH2 0x214 CALLDATASIZE PUSH1 0x4 PUSH2 0x279A JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH2 0x22C PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0x2814 JUMP JUMPDEST PUSH2 0x80E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E8 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x2840 JUMP JUMPDEST PUSH2 0xB69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E8 SWAP3 SWAP2 SWAP1 PUSH2 0x28B2 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x28CB JUMP JUMPDEST PUSH2 0xCA0 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0xD3B JUMP JUMPDEST PUSH2 0x204 PUSH2 0x2A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x22C PUSH2 0x2B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0xE5A JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x2CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2840 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x6 DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 SWAP3 DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0xFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x31D PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0xE8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E8 SWAP2 SWAP1 PUSH2 0x2910 JUMP JUMPDEST PUSH2 0x31D PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0xF6C JUMP JUMPDEST PUSH2 0x204 PUSH2 0x34B CALLDATASIZE PUSH1 0x4 PUSH2 0x2923 JUMP JUMPDEST PUSH2 0x102B JUMP JUMPDEST PUSH2 0x31D PUSH2 0x35E CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0x10C8 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x371 CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0x1102 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A5 JUMP JUMPDEST PUSH2 0x117E JUMP JUMPDEST PUSH2 0x204 PUSH2 0x397 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A8B JUMP JUMPDEST PUSH2 0x126B JUMP JUMPDEST PUSH2 0x31D PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x2AC9 JUMP JUMPDEST PUSH2 0x13AC JUMP JUMPDEST PUSH2 0x3C2 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2B4E JUMP JUMPDEST PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E8 SWAP2 SWAP1 PUSH2 0x2B90 JUMP JUMPDEST PUSH2 0x31D PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0x1408 JUMP JUMPDEST PUSH2 0x426 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x9 DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1E8 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x449 CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x45C CALLDATASIZE PUSH1 0x4 PUSH2 0x2C10 JUMP JUMPDEST PUSH2 0x1585 JUMP JUMPDEST PUSH2 0x48B PUSH2 0x46F CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E8 JUMP JUMPDEST PUSH2 0x3C2 PUSH2 0x4B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C35 JUMP JUMPDEST PUSH2 0x15AC JUMP JUMPDEST PUSH2 0x204 PUSH2 0x4C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C74 JUMP JUMPDEST PUSH2 0x15C1 JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x4D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x31D PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x2840 JUMP JUMPDEST PUSH2 0x16A5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x531 DUP3 PUSH2 0x176D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH2 0x541 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x1F DUP8 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP6 DUP3 MSTORE DUP4 SWAP3 PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP6 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 SWAP2 PUSH2 0x5B0 SWAP2 DUP4 SWAP2 DUP14 SWAP1 DUP14 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x1A5C SWAP1 POP JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x6DA JUMPI DUP7 PUSH2 0xFFFF AND PUSH1 0x0 SUB PUSH2 0x618 JUMPI DUP1 PUSH1 0x40 ADD MLOAD SWAP7 POP PUSH2 0x5DD DUP2 PUSH2 0x1ABD JUMP JUMPDEST SWAP5 POP DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5F0 SWAP2 SWAP1 PUSH2 0x2CD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP PUSH2 0x611 DUP2 PUSH2 0x1ADE JUMP JUMPDEST SWAP4 POP PUSH2 0x6CC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x623 DUP3 PUSH2 0x1ABD JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND DUP9 PUSH2 0xFFFF AND EQ ISZERO DUP1 PUSH2 0x647 JUMPI POP PUSH2 0x645 DUP7 DUP3 PUSH2 0x1AFA JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x6CA JUMPI PUSH2 0x6A3 DUP13 DUP8 DUP11 DUP15 DUP15 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP PUSH1 0x20 DUP9 ADD MLOAD DUP14 SWAP2 POP PUSH2 0x69A SWAP1 DUP3 SWAP1 PUSH2 0x2D22 JUMP JUMPDEST DUP12 MLOAD ISZERO DUP11 PUSH2 0x1B18 JUMP JUMPDEST DUP2 PUSH1 0x40 ADD MLOAD SWAP8 POP DUP2 PUSH1 0x20 ADD MLOAD SWAP7 POP DUP1 SWAP6 POP DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP PUSH2 0x6C7 DUP3 PUSH2 0x1ADE JUMP JUMPDEST SWAP5 POP JUMPDEST POP JUMPDEST PUSH2 0x6D5 DUP2 PUSH2 0x1D85 JUMP JUMPDEST PUSH2 0x5B3 JUMP JUMPDEST POP DUP4 MLOAD ISZERO PUSH2 0x735 JUMPI PUSH2 0x735 DUP11 DUP6 DUP9 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP PUSH2 0x72C SWAP2 POP DUP3 SWAP1 POP DUP16 PUSH2 0x2D22 JUMP JUMPDEST DUP10 MLOAD ISZERO DUP9 PUSH2 0x1B18 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP5 PUSH2 0x74B DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD DUP5 SWAP2 DUP5 SWAP2 PUSH2 0x794 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP2 DUP3 PUSH2 0x7AF SWAP3 SWAP2 SWAP1 PUSH2 0x2DE6 JUMP JUMPDEST POP DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x7C0 SWAP3 SWAP2 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP7 PUSH32 0x448BC014F1536726CF8D54FF3D6481ED3CBC683C2591CA204274009AFA09B1A1 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7FE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2ED1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x7 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x887 JUMPI SWAP1 POP PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x892 DUP6 PUSH2 0xE5A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x8BA JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH2 0x966 SWAP2 SWAP1 PUSH2 0x2CD7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x9A1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x9A6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x9B9 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT JUMPDEST DUP1 PUSH2 0x9FB JUMPI POP DUP1 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0x9D2 JUMPI PUSH2 0x9D2 PUSH2 0x2F03 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND ISZERO JUMPDEST ISZERO PUSH2 0xA0D JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH2 0xAB6 SWAP2 SWAP1 PUSH2 0x2CD7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAF1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 PUSH2 0xB0A JUMPI POP PUSH1 0x20 DUP2 MLOAD LT JUMPDEST DUP1 PUSH2 0xB4C JUMPI POP DUP1 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0xB23 JUMPI PUSH2 0xB23 PUSH2 0x2F03 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND ISZERO JUMPDEST ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x531 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x1 DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 PUSH1 0x60 SWAP2 JUMPDEST DUP5 DUP2 GT PUSH2 0xC80 JUMPI DUP1 DUP6 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC9 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xBC5 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST SWAP1 POP GT JUMPDEST ISZERO PUSH2 0xC78 JUMPI DUP1 DUP3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 DUP1 SLOAD PUSH2 0xBED SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xC19 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC66 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC3B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC66 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC49 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP4 POP SWAP4 POP POP POP PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x1 SHL PUSH2 0xB99 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP3 PUSH2 0xCAA DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0xCB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP6 DUP2 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE DUP1 DUP4 MSTORE DUP5 DUP2 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x9 DUP4 MSTORE DUP5 DUP2 KECCAK256 DUP10 DUP3 MSTORE DUP4 MSTORE DUP5 SWAP1 KECCAK256 SWAP3 MLOAD DUP4 SSTORE MLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE DUP6 SWAP2 PUSH32 0x1D6F5E03D3F63EB58751986629A5439BAEE5079FF04F345BECB66E23EB154E46 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST DUP3 PUSH2 0xD45 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0xD4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0xD84 DUP4 DUP6 DUP4 PUSH2 0x2DE6 JUMP JUMPDEST POP DUP4 PUSH32 0xE379C1624ED7E714CC0937528A32359D69D5281337765313DBA4E081B72D7578 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD2D SWAP3 SWAP2 SWAP1 PUSH2 0x2F32 JUMP JUMPDEST DUP1 PUSH2 0xDC1 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0xDCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0xDEE DUP4 PUSH2 0x2F46 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND DUP2 MSTORE DUP5 SWAP3 POP PUSH32 0xC6621CCB8F3F5A04BB6502154B2CAF6ADF5983FE76DFEF1CFC9C42E3579DB444 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE68 DUP4 PUSH1 0x3C PUSH2 0x16A5 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xE7C JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE85 DUP2 PUSH2 0x1E6D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xECC SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xEE5 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF11 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF5E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF33 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF5E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF41 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFA6 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xFD2 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x101F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFF4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x101F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1002 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP4 PUSH2 0x1035 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x104A PUSH1 0x1 DUP3 PUSH2 0x2D22 JUMP JUMPDEST AND ISZERO PUSH2 0x1055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x1 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1093 DUP4 DUP6 DUP4 PUSH2 0x2DE6 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 SWAP1 DUP7 SWAP1 PUSH32 0xAA121BBEEF5F32F5961A2A28966E769023910FC9479059EE3495D4C1A696EFE3 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFA6 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP3 PUSH2 0x110C DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x1115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x114B DUP4 DUP6 DUP4 PUSH2 0x2DE6 JUMP JUMPDEST POP DUP4 PUSH32 0xB7D29E911041E8D9B843369E890BCB72C9388692BA48B65AC54E7214C4C348F7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD2D SWAP3 SWAP2 SWAP1 PUSH2 0x2F32 JUMP JUMPDEST DUP3 PUSH2 0x1188 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH32 0x65412581168E88A1E60C6459D7F44AE83AD0832E670826C05A4E2476B57AF752 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x11C3 SWAP3 SWAP2 SWAP1 PUSH2 0x28B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x3C DUP4 SUB PUSH2 0x1227 JUMPI DUP4 PUSH32 0x52D7D861F09AB3D26239D492E8968629F95E9E318CF0B73BFDDC441522A15FD2 PUSH2 0x11FE DUP5 PUSH2 0x1E6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1264 DUP4 DUP3 PUSH2 0x2F6D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND CALLER SUB PUSH2 0x1315 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x5 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xEE5 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE85 PUSH1 0x0 DUP5 DUP5 PUSH2 0x1E95 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFA6 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP3 PUSH2 0x144C DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x1455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP1 DUP5 MSTORE PUSH1 0x4 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP9 DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH2 0x148F SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x14BB SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1508 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x14DD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1508 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x14EB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SWAP2 SWAP3 POP PUSH2 0x1540 SWAP1 POP DUP6 DUP8 DUP4 PUSH2 0x2DE6 JUMP JUMPDEST POP DUP6 PUSH32 0x8F15ED4B723EF428F250961DA8315675B507046737E19319FC1A4D81BFE87F85 DUP3 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1575 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x302D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x158F DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x1598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A7 DUP4 PUSH1 0x3C PUSH2 0x384 DUP6 PUSH2 0x2088 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x15B9 DUP5 DUP5 DUP5 PUSH2 0x1E95 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x15CB DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x15D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x7 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE DUP7 SWAP2 PUSH32 0x7C69F06BEA0BDEF565B709E93A147836B0063BA2DD89F02D0B7E8D931E6A6DAA SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0x16E7 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1713 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1760 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1735 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1760 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1743 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x59D1D43C00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH2 0x20C1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ DUP1 PUSH2 0x183E JUMPI POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ JUMPDEST ISZERO PUSH2 0x184B JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18FD SWAP2 SWAP1 PUSH2 0x305D JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1A04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A01 SWAP2 SWAP1 PUSH2 0x305D JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ DUP1 PUSH2 0xE85 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x1AAA PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x531 DUP2 PUSH2 0x1D85 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 PUSH2 0x531 SWAP2 PUSH2 0x1AD5 SWAP1 DUP3 PUSH2 0x2117 JUMP JUMPDEST DUP5 MLOAD SWAP2 SWAP1 PUSH2 0x2171 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 SWAP2 PUSH2 0x531 SWAP2 PUSH2 0x1AD5 SWAP1 DUP3 SWAP1 PUSH2 0x2D22 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0xE85 JUMPI POP PUSH2 0xE85 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0x21E8 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x20 DUP9 ADD KECCAK256 PUSH1 0x0 PUSH2 0x1B2C DUP8 DUP8 DUP8 PUSH2 0x2171 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1C56 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1B77 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST ISZERO SWAP1 POP PUSH2 0x1BD6 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF AND SWAP2 PUSH2 0x1BBA DUP4 PUSH2 0x307A JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 PUSH2 0x1C17 SWAP2 PUSH2 0x2666 JUMP JUMPDEST DUP10 PUSH32 0x3528ED0C2A3EBC993B12CE3C16BB382F9C7D88EF7D8A1BF290EAF35955A1207 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1C49 SWAP3 SWAP2 SWAP1 PUSH2 0x3098 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x735 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1C99 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SUB PUSH2 0x1CFA JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF AND SWAP2 PUSH2 0x1CDE DUP4 PUSH2 0x30BE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1D3C DUP3 DUP3 PUSH2 0x2F6D JUMP JUMPDEST POP DUP10 PUSH32 0x52A608B3303A48862D07A73D82FA221318C0027FBBCFB1B2329BFACE3F19FF2B DUP11 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1D71 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x30D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0x1D9C JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DB0 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2117 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1DBF SWAP2 SWAP1 PUSH2 0x3104 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1DCE SWAP1 DUP3 PUSH2 0x220B JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1DE2 PUSH1 0x2 DUP3 PUSH2 0x3104 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1DF1 SWAP1 DUP3 PUSH2 0x220B JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1E05 PUSH1 0x2 DUP3 PUSH2 0x3104 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1E14 SWAP1 DUP3 PUSH2 0x2233 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1E2A PUSH1 0x4 DUP3 PUSH2 0x3104 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1E3C SWAP1 DUP4 PUSH2 0x220B JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0x1E4D PUSH1 0x2 DUP4 PUSH2 0x3104 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0x1E60 DUP2 DUP4 PUSH2 0x3104 JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x14 EQ PUSH2 0x1E7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1EB0 JUMPI PUSH2 0x1EB0 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1EE3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1ECE JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2080 JUMPI DUP5 ISZERO PUSH2 0x1FC8 JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1F0B JUMPI PUSH2 0x1F0B PUSH2 0x2F03 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1F1D SWAP2 SWAP1 PUSH2 0x3117 JUMP JUMPDEST PUSH2 0x1F2C SWAP2 PUSH1 0x24 SWAP2 PUSH1 0x4 SWAP2 PUSH2 0x317C JUMP JUMPDEST PUSH2 0x1F35 SWAP2 PUSH2 0x31A6 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ PUSH2 0x1FC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D756C746963616C6C3A20416C6C207265636F726473206D7573742068617665 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061206D61746368696E67206E616D6568617368000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x130C JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x1FDE JUMPI PUSH2 0x1FDE PUSH2 0x2F03 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1FF0 SWAP2 SWAP1 PUSH2 0x3117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FFE SWAP3 SWAP2 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2039 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x203E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x204D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2060 JUMPI PUSH2 0x2060 PUSH2 0x2F03 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x2078 SWAP1 PUSH2 0x31C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1EE9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x14 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP PUSH13 0x1000000000000000000000000 SWAP3 SWAP1 SWAP3 MUL PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xC869023300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH2 0x225D JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0x212B JUMPI PUSH2 0x212B PUSH2 0x31DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2137 DUP6 DUP4 PUSH2 0x22B3 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x2147 DUP2 PUSH1 0x1 PUSH2 0x3104 JUMP JUMPDEST PUSH2 0x2151 SWAP1 DUP4 PUSH2 0x3104 JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0x2161 JUMPI POP PUSH2 0x2167 JUMP JUMPDEST POP PUSH2 0x211B JUMP JUMPDEST PUSH2 0x15B9 DUP4 DUP3 PUSH2 0x2D22 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x2180 DUP4 DUP6 PUSH2 0x3104 JUMP JUMPDEST GT ISZERO PUSH2 0x218B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x21A6 JUMPI PUSH2 0x21A6 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x21D0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0xB5E DUP3 DUP3 DUP8 PUSH2 0x22D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21F5 DUP5 DUP5 DUP5 PUSH2 0x232D JUMP JUMPDEST PUSH2 0x2200 DUP8 DUP8 DUP6 PUSH2 0x232D JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x221B DUP4 PUSH1 0x2 PUSH2 0x3104 JUMP JUMPDEST GT ISZERO PUSH2 0x2226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2243 DUP4 PUSH1 0x4 PUSH2 0x3104 JUMP JUMPDEST GT ISZERO PUSH2 0x224E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x691F343100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH2 0x2351 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x22C7 JUMPI PUSH2 0x22C7 PUSH2 0x2F03 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x230F JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x22EE PUSH1 0x20 DUP5 PUSH2 0x3104 JUMP JUMPDEST SWAP3 POP PUSH2 0x22FB PUSH1 0x20 DUP4 PUSH2 0x3104 JUMP JUMPDEST SWAP2 POP PUSH2 0x2308 PUSH1 0x20 DUP3 PUSH2 0x2D22 JUMP JUMPDEST SWAP1 POP PUSH2 0x22D7 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x233C DUP4 DUP6 PUSH2 0x3104 JUMP JUMPDEST GT ISZERO PUSH2 0x2347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x124A319C00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xA8FA568200000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2435 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5C98042B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xBC1C58D100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x3B3B57DE00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2523 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xF1CB7E0600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x2203AB5600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD700FF3300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4FBF043300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x531 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x2672 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x2682 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26A0 SWAP2 SWAP1 PUSH2 0x26A3 JUMP JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x26B8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x26A4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x26EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE85 DUP3 PUSH2 0x26BC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x271E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2736 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x278D DUP7 DUP3 DUP8 ADD PUSH2 0x270C JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x27B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x27D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27DD DUP10 DUP4 DUP11 ADD PUSH2 0x270C JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x27F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2803 DUP9 DUP3 DUP10 ADD PUSH2 0x270C JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2837 PUSH1 0x20 DUP5 ADD PUSH2 0x26BC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2853 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x287D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2865 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x289E DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2862 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x15B9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2886 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x28E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE85 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2886 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x295E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x296A DUP8 DUP3 DUP9 ADD PUSH2 0x270C JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x29E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2A06 JUMPI PUSH2 0x2A06 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2A2E JUMPI PUSH2 0x2A2E PUSH2 0x2976 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP10 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2A47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x26A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2AA9 DUP2 PUSH2 0x2A69 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2ADE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x2AFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B84 DUP6 DUP3 DUP7 ADD PUSH2 0x2B09 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2C03 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2BF1 DUP6 DUP4 MLOAD PUSH2 0x2886 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2BB7 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2ABE DUP2 PUSH2 0x2A69 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x278D DUP7 DUP3 DUP8 ADD PUSH2 0x2B09 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x2C99 PUSH1 0x20 DUP6 ADD PUSH2 0x26BC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2AFE DUP2 PUSH2 0x2A69 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2CC7 DUP2 PUSH2 0x2A69 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2ABE DUP2 PUSH2 0x2A69 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2CE9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2862 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x531 JUMPI PUSH2 0x531 PUSH2 0x2CF3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2D59 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2D92 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x15A7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x2DBF JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DDE JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2DCB JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x2DFE JUMPI PUSH2 0x2DFE PUSH2 0x2976 JUMP JUMPDEST PUSH2 0x2E12 DUP4 PUSH2 0x2E0C DUP4 SLOAD PUSH2 0x2D45 JUMP JUMPDEST DUP4 PUSH2 0x2D98 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2E46 JUMPI PUSH1 0x0 DUP6 ISZERO PUSH2 0x2E2E JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x1264 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP1 DUP4 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E77 JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2E57 JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x2E94 JUMPI PUSH1 0x0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2EE5 PUSH1 0x40 DUP4 ADD DUP7 DUP9 PUSH2 0x2EA6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2EF8 DUP2 DUP6 DUP8 PUSH2 0x2EA6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x15B9 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x2EA6 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2F63 JUMPI PUSH2 0x2F63 PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F87 JUMPI PUSH2 0x2F87 PUSH2 0x2976 JUMP JUMPDEST PUSH2 0x2F9B DUP2 PUSH2 0x2F95 DUP5 SLOAD PUSH2 0x2D45 JUMP JUMPDEST DUP5 PUSH2 0x2D98 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2FD0 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x2FB8 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x2DDE JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2FFF JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x2FE0 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x301D JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3040 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2886 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x3053 DUP2 DUP6 DUP8 PUSH2 0x2EA6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x306F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE85 DUP2 PUSH2 0x2A69 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND DUP1 PUSH2 0x308E JUMPI PUSH2 0x308E PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x30AB PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2886 JUMP JUMPDEST SWAP1 POP PUSH2 0xFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2F63 JUMPI PUSH2 0x2F63 PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x30E8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2886 JUMP JUMPDEST PUSH2 0xFFFF DUP6 AND PUSH1 0x20 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x3053 DUP2 DUP6 PUSH2 0x2886 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x531 JUMPI PUSH2 0x531 PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x314C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x318C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x3199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 DUP4 LT ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 NOT PUSH1 0x20 DUP5 SWAP1 SUB PUSH1 0x3 SHL SHL AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 SUB PUSH2 0x31D7 JUMPI PUSH2 0x31D7 PUSH2 0x2CF3 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 PUSH20 0xF63D364D138759B82A66E0266A4D87A91B389A1D BYTE GASLIMIT 0xDC 0xEC 0x5E 0xF 0xBC 0xE1 0xA7 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "636:2739:64:-:0;;;1493:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1657:10:64;;;;;1677:28;;;;;1715:44;;;;1769:50;;;636:2739;;14:136:111;-1:-1:-1;;;;;94:31:111;;84:42;;74:70;;140:1;137;130:12;74:70;14:136;:::o;155:709::-;287:6;295;303;311;364:3;352:9;343:7;339:23;335:33;332:53;;;381:1;378;371:12;332:53;413:9;407:16;432:36;462:5;432:36;:::i;:::-;537:2;522:18;;516:25;487:5;;-1:-1:-1;550:38:111;516:25;550:38;:::i;:::-;659:2;644:18;;638:25;607:7;;-1:-1:-1;672:38:111;638:25;672:38;:::i;:::-;781:2;766:18;;760:25;729:7;;-1:-1:-1;794:38:111;760:25;794:38;:::i;:::-;155:709;;;;-1:-1:-1;155:709:111;;-1:-1:-1;;155:709:111:o;:::-;636:2739:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ABI_14121": {
                  "entryPoint": 2921,
                  "id": 14121,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@_multicall_13401": {
                  "entryPoint": 7829,
                  "id": 13401,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@addr_14217": {
                  "entryPoint": 3674,
                  "id": 14217,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@addr_14281": {
                  "entryPoint": 5797,
                  "id": 14281,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@addressToBytes_14341": {
                  "entryPoint": 8328,
                  "id": 14341,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@bytesToAddress_14325": {
                  "entryPoint": 7789,
                  "id": 14325,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@clearRecords_13973": {
                  "entryPoint": 3511,
                  "id": 13973,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@contenthash_14401": {
                  "entryPoint": 5128,
                  "id": 14401,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@dnsRecord_14667": {
                  "entryPoint": 5036,
                  "id": 14667,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@done_6366": {
                  "entryPoint": null,
                  "id": 6366,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@equals_4449": {
                  "entryPoint": 8680,
                  "id": 4449,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@equals_4535": {
                  "entryPoint": 6906,
                  "id": 4535,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@hasDNSRecords_14691": {
                  "entryPoint": null,
                  "id": 14691,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@interfaceImplementer_15316": {
                  "entryPoint": 2062,
                  "id": 15316,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isApprovedForAll_13671": {
                  "entryPoint": null,
                  "id": 13671,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isAuthorised_13729": {
                  "entryPoint": 6083,
                  "id": 13729,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@iterateRRs_6349": {
                  "entryPoint": 6748,
                  "id": 6349,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@keccak_4263": {
                  "entryPoint": 9005,
                  "id": 4263,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@memcpy_4702": {
                  "entryPoint": 8919,
                  "id": 4702,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@multicallWithNodeCheck_13418": {
                  "entryPoint": 5548,
                  "id": 13418,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@multicall_13437": {
                  "entryPoint": 5114,
                  "id": 13437,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@nameLength_6069": {
                  "entryPoint": 8471,
                  "id": 6069,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_15397": {
                  "entryPoint": 4296,
                  "id": 15397,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_6493": {
                  "entryPoint": 6845,
                  "id": 6493,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@next_6470": {
                  "entryPoint": 7557,
                  "id": 6470,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@pubkey_15504": {
                  "entryPoint": null,
                  "id": 15504,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@rdata_6515": {
                  "entryPoint": 6878,
                  "id": 6515,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@readUint16_4572": {
                  "entryPoint": 8715,
                  "id": 4572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint32_4592": {
                  "entryPoint": 8755,
                  "id": 4592,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 8883,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@recordVersions_13932": {
                  "entryPoint": null,
                  "id": 13932,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setABI_14054": {
                  "entryPoint": 4139,
                  "id": 14054,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setAddr_14185": {
                  "entryPoint": 5509,
                  "id": 14185,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setAddr_14260": {
                  "entryPoint": 4478,
                  "id": 14260,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setApprovalForAll_13654": {
                  "entryPoint": 4715,
                  "id": 13654,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setContenthash_14383": {
                  "entryPoint": 3387,
                  "id": 14383,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setDNSRRSet_14898": {
                  "entryPoint": 6936,
                  "id": 14898,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@setDNSRecords_14641": {
                  "entryPoint": 1335,
                  "id": 14641,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setInterface_15192": {
                  "entryPoint": 5569,
                  "id": 15192,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setName_15379": {
                  "entryPoint": 4354,
                  "id": 15379,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setPubkey_15472": {
                  "entryPoint": 3232,
                  "id": 15472,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setText_15575": {
                  "entryPoint": 1857,
                  "id": 15575,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@setZonehash_14731": {
                  "entryPoint": 5186,
                  "id": 14731,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@substring_4745": {
                  "entryPoint": 8561,
                  "id": 4745,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@supportsInterface_13458": {
                  "entryPoint": null,
                  "id": 13458,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_13752": {
                  "entryPoint": 1318,
                  "id": 13752,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_13994": {
                  "entryPoint": null,
                  "id": 13994,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_14142": {
                  "entryPoint": null,
                  "id": 14142,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_14309": {
                  "entryPoint": null,
                  "id": 14309,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_14422": {
                  "entryPoint": null,
                  "id": 14422,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_14777": {
                  "entryPoint": null,
                  "id": 14777,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_15337": {
                  "entryPoint": 9041,
                  "id": 15337,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_15418": {
                  "entryPoint": 8797,
                  "id": 15418,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_15525": {
                  "entryPoint": 8385,
                  "id": 15525,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_15618": {
                  "entryPoint": 5997,
                  "id": 15618,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_3081": {
                  "entryPoint": null,
                  "id": 3081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@text_15597": {
                  "entryPoint": 3724,
                  "id": 15597,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@zonehash_14749": {
                  "entryPoint": 3948,
                  "id": 14749,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_bytes_calldata_dyn_calldata": {
                  "entryPoint": 11017,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_bytes4": {
                  "entryPoint": 9916,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 9996,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 12381,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 11433,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 10891,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 11086,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 10487,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 11280,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 11317,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes32": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_bytes32": {
                  "entryPoint": 10443,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_uint16": {
                  "entryPoint": 10953,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes4": {
                  "entryPoint": 10260,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_bytes4t_address": {
                  "entryPoint": 11380,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr": {
                  "entryPoint": 10062,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_string_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_string_calldata_ptrt_string_calldata_ptr": {
                  "entryPoint": 10138,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bytes32t_uint256": {
                  "entryPoint": 10304,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 10531,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptr": {
                  "entryPoint": 10661,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 9969,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 10374,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_calldata": {
                  "entryPoint": 11942,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 11479,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 11573,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11152,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12082,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_calldata_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12333,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_uint16__to_t_bytes_memory_ptr_t_uint16__fromStack_reversed": {
                  "entryPoint": 12440,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12501,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11985,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10512,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e0f8a6e7bdab31ebf5fea1195446f6f12fddc8619df8ea22a3ed3edf179dde30__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10418,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_bytes_calldata_ptr": {
                  "entryPoint": 12567,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "calldata_array_index_range_access_t_bytes_calldata_ptr": {
                  "entryPoint": 12668,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "checked_add_t_uint256": {
                  "entryPoint": 12548,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 11554,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_string_storage": {
                  "entryPoint": 11672,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32": {
                  "entryPoint": 12710,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage": {
                  "entryPoint": 12141,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage": {
                  "entryPoint": 11750,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 10338,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "decrement_t_uint16": {
                  "entryPoint": 12410,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 11589,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint16": {
                  "entryPoint": 12478,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 12740,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint64": {
                  "entryPoint": 12102,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x01": {
                  "entryPoint": 12766,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x11": {
                  "entryPoint": 11507,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 12035,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 10614,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 10857,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:26103:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "62:171:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "72:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "94:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "81:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "81:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "72:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "211:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "220:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "223:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "213:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "213:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "213:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "123:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "134:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "141:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "130:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "130:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "120:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "120:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "113:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "113:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "110:117:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "41:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "52:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:219:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "307:115:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "353:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "362:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "365:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "355:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "355:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "355:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "328:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "337:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "324:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "324:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "349:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "320:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "320:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "317:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "378:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "406:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "388:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "388:28:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "378:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "273:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "284:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "296:6:111",
                            "type": ""
                          }
                        ],
                        "src": "238:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "522:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "532:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "544:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "555:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "532:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "574:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "599:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "592:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "592:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "585:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "585:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "567:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "567:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "567:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "491:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "502:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "513:4:111",
                            "type": ""
                          }
                        ],
                        "src": "427:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "691:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "740:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "749:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "752:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "742:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "742:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "742:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "719:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "727:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "715:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "715:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "734:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "711:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "711:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "704:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "704:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "701:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "765:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "788:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "775:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "775:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "765:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "838:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "847:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "850:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "840:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "840:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "840:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "810:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "818:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "807:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "807:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "804:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "863:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "879:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "887:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "875:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "875:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "863:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "944:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "953:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "956:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "946:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "946:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "946:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "915:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "923:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "911:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "911:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "932:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "907:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "907:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "939:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "904:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "904:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "901:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "654:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "662:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "670:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "680:6:111",
                            "type": ""
                          }
                        ],
                        "src": "619:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1077:371:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1123:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1132:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1135:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1125:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1125:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1125:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1098:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1107:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1094:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1094:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1119:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1090:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1090:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1087:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1148:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1171:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1158:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1158:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1148:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1190:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1221:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1232:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1217:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1217:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1204:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1204:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1194:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1279:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1288:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1291:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1281:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1281:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1251:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1259:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1248:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1248:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1245:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1304:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1360:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1371:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1356:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1356:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1380:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1330:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1330:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1308:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1318:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1397:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1407:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1424:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1434:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1424:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1027:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1038:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1050:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1058:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1066:6:111",
                            "type": ""
                          }
                        ],
                        "src": "971:477:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1597:643:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1643:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1652:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1655:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1645:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1645:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1645:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1618:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1627:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1614:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1614:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1639:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1610:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1610:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1607:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1668:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1691:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1678:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1678:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1668:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1710:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1752:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1724:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1724:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1714:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1765:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1775:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1769:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1820:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1829:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1832:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1822:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1822:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1822:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1808:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1816:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1805:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1805:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1802:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1845:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1901:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1912:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1897:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1897:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1921:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1871:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1871:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1849:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1859:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1938:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1948:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1938:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1965:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1975:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1965:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1992:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2025:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2036:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2021:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2021:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2008:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2008:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1996:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2069:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2078:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2081:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2071:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2071:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2071:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2055:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2065:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2052:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2052:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2049:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2094:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2150:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2161:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2146:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2146:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2172:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2120:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2120:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2098:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2108:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2189:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "2199:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2189:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2216:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "2226:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2216:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_calldata_ptrt_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1531:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1542:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1554:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1562:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1570:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1578:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1586:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1453:787:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2331:166:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2377:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2386:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2389:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2379:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2379:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2379:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2352:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2348:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2348:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2373:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2344:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2344:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2341:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2402:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2425:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2412:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2412:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2402:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2444:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2476:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2487:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2472:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2472:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2454:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2454:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2444:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2289:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2300:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2312:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2320:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2245:252:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2603:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2613:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2625:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2636:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2621:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2621:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2613:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2655:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2670:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2678:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2666:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2666:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2648:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2648:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2648:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2572:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2583:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2594:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2502:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2820:161:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2866:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2875:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2878:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2868:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2868:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2868:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2841:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2850:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2837:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2837:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2862:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2833:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2833:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2830:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2891:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2914:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2901:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2901:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2891:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2933:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2960:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2971:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2956:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2956:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2943:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2943:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2933:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2778:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2789:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2801:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2809:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2733:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3052:184:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3062:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3071:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3066:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3131:63:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "3156:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "3161:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3152:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3152:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3175:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3180:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3171:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3171:11:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3165:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3165:18:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3145:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3145:39:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3145:39:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3092:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3095:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3089:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3089:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3103:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3105:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "3114:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3117:2:111",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3110:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3110:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3105:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3085:3:111",
                                "statements": []
                              },
                              "src": "3081:113:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "3214:3:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3219:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3210:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3210:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3228:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3203:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3203:27:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3203:27:111"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "3030:3:111",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "3035:3:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3040:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2986:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3290:280:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3300:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3320:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3314:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3314:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3304:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3342:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3347:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3335:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3335:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3335:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3402:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3409:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3398:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3398:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3420:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3425:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3416:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3416:14:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3432:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "3363:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3363:76:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3363:76:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3448:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3463:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3476:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3484:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3472:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3472:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3489:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3468:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3468:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3459:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3459:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3559:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3455:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3455:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3448:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3267:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3274:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3282:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3241:329:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3722:141:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3739:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3750:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3732:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3732:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3732:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3777:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3788:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3773:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3773:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3793:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3766:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3766:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3766:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3805:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3830:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3842:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3853:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3838:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3838:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3813:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3813:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3805:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3683:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3694:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3702:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3713:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3575:288:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3972:212:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4018:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4027:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4030:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4020:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4020:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4020:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3993:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4002:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3989:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4014:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3985:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3985:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3982:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4043:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4066:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4053:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4053:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4043:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4085:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4112:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4123:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4108:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4108:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4095:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4095:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4085:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4136:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4163:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4174:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4159:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4159:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4146:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4146:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4136:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3922:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3933:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3945:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3953:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3961:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3868:316:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4259:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4305:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4314:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4317:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4307:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4307:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4307:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4280:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4289:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4276:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4276:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4301:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4272:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4272:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4269:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4330:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4353:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4340:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4340:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4330:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4225:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4236:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4248:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4189:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4491:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4501:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4513:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4524:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4509:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4509:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4501:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4543:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4558:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4566:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4554:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4554:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4536:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4536:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4536:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4460:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4471:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4482:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4374:242:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4708:161:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4754:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4763:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4766:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4756:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4756:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4756:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4729:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4738:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4725:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4725:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4750:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4721:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4721:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4718:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4779:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4802:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4789:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4789:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4779:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4821:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4848:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4859:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4844:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4844:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4831:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4831:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4821:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4666:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4677:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4689:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4697:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4621:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4981:371:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5027:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5036:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5039:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5029:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5029:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5029:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5002:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5011:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4998:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4998:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5023:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4994:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4991:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5052:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5075:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5062:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5062:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5052:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5094:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5125:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5136:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5121:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5121:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5108:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5108:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5098:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5183:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5192:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5195:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5185:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5185:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5185:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5155:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5163:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5152:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5152:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5149:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5208:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5264:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5275:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5260:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5260:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5284:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "5234:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5234:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5212:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5222:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5301:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "5311:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5301:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5328:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "5338:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5328:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4931:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4942:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4954:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4962:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4970:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4874:478:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5478:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5495:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5506:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5488:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5488:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5488:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5518:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5543:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5555:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5566:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5551:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5551:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5526:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5526:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5518:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5447:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5458:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5469:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5357:219:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5700:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5717:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5728:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5710:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5710:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5710:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5740:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5765:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5777:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5788:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5773:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5773:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5748:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5748:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5740:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5669:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5680:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5691:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5581:217:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5926:422:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5972:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5981:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5984:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5974:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5974:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5974:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5947:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5956:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5943:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5943:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5968:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5939:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5939:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5936:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5997:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6020:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6007:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6007:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5997:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6039:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6066:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6077:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6062:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6062:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6049:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6049:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6039:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6090:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6121:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6132:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6117:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6117:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6104:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6104:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6094:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6179:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6188:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6191:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6181:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6181:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6181:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6151:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6159:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6148:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6148:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6145:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6204:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6260:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6271:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6256:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6256:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6280:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "6230:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6230:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6208:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6218:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6297:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "6307:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6324:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "6334:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5868:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5879:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5891:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5899:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5907:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5915:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5803:545:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6385:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6402:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6405:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6395:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6395:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6499:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6492:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6492:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6492:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6523:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6526:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6516:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6516:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6516:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6353:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6655:1003:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6701:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6710:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6713:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6703:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6703:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6703:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6676:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6685:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6672:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6672:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6697:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6668:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6668:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6665:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6726:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6749:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6736:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6736:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6726:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6768:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6795:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6806:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6791:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6791:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6778:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6778:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6768:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6819:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6850:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6861:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6846:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6846:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6833:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6833:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6823:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6874:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6884:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6878:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6929:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6938:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6941:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6931:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6931:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6931:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6917:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6925:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6914:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6914:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6911:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6954:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6968:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6979:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6964:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6964:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6958:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7034:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7043:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7046:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7036:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7036:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7036:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7013:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7017:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7009:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7009:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7024:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7005:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7005:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6998:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6998:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6995:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7059:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7082:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7069:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7069:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7063:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7108:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7110:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7110:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7110:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7100:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7104:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7097:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7097:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7094:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7139:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7149:66:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "7143:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7224:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7244:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7238:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7238:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7228:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7256:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7278:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7302:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "7306:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7298:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7298:13:111"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "7313:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "7294:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7294:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7318:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7290:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7290:31:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7323:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7286:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7286:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7274:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7274:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7260:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7386:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7388:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7388:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7388:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7345:10:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7357:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7342:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7342:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7365:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7377:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7362:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7362:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7339:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7339:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7336:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7424:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7428:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7417:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7417:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7417:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7455:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7463:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7448:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7448:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7448:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7512:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7521:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7524:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7514:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7514:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7514:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7489:2:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "7493:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7485:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7485:11:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7498:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7481:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7481:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7503:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7478:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7478:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7475:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7554:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7562:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7550:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7550:15:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7571:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7575:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7567:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7567:11:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7580:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "7537:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7537:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7537:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "7607:6:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "7615:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7603:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7603:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7620:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7599:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7599:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7625:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7592:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7592:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7592:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7636:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "7646:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7636:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6605:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6616:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6628:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6636:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6644:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6542:1116:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7708:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7795:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7804:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7807:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7797:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7797:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7797:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7731:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7742:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7749:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7738:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7738:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7728:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7728:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7721:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7721:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7718:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7697:5:111",
                            "type": ""
                          }
                        ],
                        "src": "7663:154:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7906:332:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7952:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7961:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7964:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7954:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7954:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7954:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7927:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7936:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7923:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7923:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7948:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7919:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7919:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7916:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7977:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8003:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7990:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7990:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7981:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8047:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8022:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8022:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8022:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8062:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8072:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8062:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8086:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8118:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8129:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8114:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8114:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8101:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8101:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8090:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8190:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8199:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8202:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8192:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8192:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8192:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8155:7:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "8178:7:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "8171:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8171:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "8164:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8164:23:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "8152:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8152:36:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8145:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8145:44:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8142:64:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8215:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "8225:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8215:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7864:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7875:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7887:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7895:6:111",
                            "type": ""
                          }
                        ],
                        "src": "7822:416:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8346:305:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8392:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8401:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8404:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8394:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8394:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8394:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8367:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8376:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8363:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8363:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8388:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8359:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8359:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8356:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8417:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8440:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8427:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8427:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8417:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8459:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8486:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8497:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8482:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8482:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8469:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8469:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8459:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8510:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8540:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8551:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8536:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8536:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8523:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8523:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8514:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8605:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8614:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8617:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8607:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8607:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8607:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8577:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "8588:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8595:6:111",
                                            "type": "",
                                            "value": "0xffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8584:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8584:18:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "8574:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8574:29:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8567:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8567:37:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8564:57:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8630:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8640:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8630:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8296:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8307:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8319:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8327:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8335:6:111",
                            "type": ""
                          }
                        ],
                        "src": "8243:408:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8747:283:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8796:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8805:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8808:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8798:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8798:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8798:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8775:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8783:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8771:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8771:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8790:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8767:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8767:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8760:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8760:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8757:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8821:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8844:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8831:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8831:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "8821:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8894:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8903:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8906:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8896:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8896:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8896:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8866:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8874:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8863:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8863:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8860:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8919:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8935:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8943:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8931:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8931:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "8919:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9008:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9017:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9020:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9010:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9010:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9010:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8971:6:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8983:1:111",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "8986:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "8979:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8979:14:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8967:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8967:27:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8996:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8963:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8963:38:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9003:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8960:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8960:47:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8957:67:111"
                            }
                          ]
                        },
                        "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "8710:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8718:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "8726:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8736:6:111",
                            "type": ""
                          }
                        ],
                        "src": "8656:374:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9151:339:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9197:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9206:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9209:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9199:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9199:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9199:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9172:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9181:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9168:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9168:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9193:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9164:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9164:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9161:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9222:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9249:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9236:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9236:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9226:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9302:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9311:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9314:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9304:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9304:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9304:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9274:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9282:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9271:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9271:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9268:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9327:103:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9402:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9413:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9398:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9398:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9422:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "9353:44:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9353:77:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9331:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9341:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9439:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "9449:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9439:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9466:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "9476:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9466:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9109:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9120:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9132:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9140:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9035:455:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9664:690:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9674:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9684:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9678:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9695:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9713:9:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9724:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9709:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9709:18:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9699:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9743:9:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9754:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9736:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9736:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9736:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9766:17:111",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "9777:6:111"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "9770:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9792:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9812:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9806:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9806:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9796:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9835:6:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9843:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9828:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9828:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9828:22:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9859:25:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9870:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9881:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9866:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9866:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "9859:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9893:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9915:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9930:1:111",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "9933:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "9926:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9926:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9911:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9911:30:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9943:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9907:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9907:39:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9897:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9955:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9973:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9981:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9969:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9969:15:111"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9959:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9993:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10002:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9997:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10061:264:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10082:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10095:6:111"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10103:9:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "10091:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10091:22:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10115:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10087:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10087:95:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10075:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10075:108:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10075:108:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10196:49:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "10229:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10223:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10223:13:111"
                                        },
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10238:6:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "10206:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10206:39:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10196:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10258:25:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10272:6:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10280:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10268:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10268:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10258:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10296:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10307:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10312:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10303:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10303:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10296:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10023:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10026:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10020:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10020:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10034:18:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10036:14:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10045:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10048:1:111",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10041:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10041:9:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10036:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10016:3:111",
                                "statements": []
                              },
                              "src": "10012:313:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10334:14:111",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "10342:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10334:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9633:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9644:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9655:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9495:859:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10488:119:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10498:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10510:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10521:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10506:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10506:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10498:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10540:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10551:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10533:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10533:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10533:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10578:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10589:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10574:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10574:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10594:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10567:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10567:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10567:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10449:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10460:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10468:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10479:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10359:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10699:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10745:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10754:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10757:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10747:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10747:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10747:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10720:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10729:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10716:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10716:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10741:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10712:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10712:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10709:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10770:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10793:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10780:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10780:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10770:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10812:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10842:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10853:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10838:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10838:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10825:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10825:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10816:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10891:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10866:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10866:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10866:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10906:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10916:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10906:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10657:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10668:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10680:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10688:6:111",
                            "type": ""
                          }
                        ],
                        "src": "10612:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11031:101:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11041:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11053:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11064:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11049:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11049:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11041:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11083:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "11098:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11106:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11094:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11094:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11076:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11076:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11076:50:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11000:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11011:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11022:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10932:200:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11270:390:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11316:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11325:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11328:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11318:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11318:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11318:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11291:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11300:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11287:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11287:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11312:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11283:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11283:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11280:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11341:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11364:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11351:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11351:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11341:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11383:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11414:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11425:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11410:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11410:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11397:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11397:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11387:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11472:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11481:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11484:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11474:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11474:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11474:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11444:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11452:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11441:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11441:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11438:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11497:103:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11572:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11583:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11568:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11568:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11592:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11523:44:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11523:77:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11501:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11511:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11609:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "11619:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11609:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11636:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "11646:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11636:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11220:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11231:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11243:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11251:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11259:6:111",
                            "type": ""
                          }
                        ],
                        "src": "11137:523:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11768:284:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11814:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11823:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11826:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11816:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11816:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11816:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11789:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11798:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11785:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11785:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11810:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11781:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11781:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11778:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11839:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11862:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11849:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11849:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11839:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11881:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11913:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11924:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11909:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11909:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11891:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11891:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11881:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11937:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11967:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11978:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11963:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11963:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11950:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11950:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11941:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12016:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11991:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11991:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11991:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12031:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12041:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "12031:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes4t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11718:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11729:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11741:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11749:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11757:6:111",
                            "type": ""
                          }
                        ],
                        "src": "11665:387:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12144:301:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12190:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12199:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12202:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12192:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12192:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12192:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12165:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12174:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12161:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12161:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12186:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12157:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12157:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12154:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12215:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12241:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12228:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12228:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12219:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12285:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12260:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12260:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12260:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12300:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12310:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12300:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12324:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12356:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12367:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12352:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12352:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12339:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12339:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12328:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12405:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12380:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12380:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12380:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12422:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12432:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12422:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12102:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12113:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12125:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12133:6:111",
                            "type": ""
                          }
                        ],
                        "src": "12057:388:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12587:150:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12597:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12617:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12611:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12611:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12601:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12672:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12680:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12668:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12668:17:111"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12687:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12692:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "12633:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12633:66:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12633:66:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12708:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12719:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12724:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12715:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12715:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12708:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12563:3:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12568:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12579:3:111",
                            "type": ""
                          }
                        ],
                        "src": "12450:287:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12774:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12791:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12794:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12784:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12784:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12784:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12888:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12891:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12881:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12881:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12881:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12912:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12915:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12905:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12905:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12905:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12742:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12980:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12990:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13002:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13005:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "12998:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12998:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "12990:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13031:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13033:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13033:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13033:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "13022:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13028:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13019:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13019:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13016:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12962:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12965:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "12971:4:111",
                            "type": ""
                          }
                        ],
                        "src": "12931:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13213:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13236:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13241:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13249:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "13223:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13223:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13223:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13265:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13279:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13284:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13275:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13275:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13269:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13307:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13311:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13300:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13300:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13300:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13322:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "13329:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "13322:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "13181:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13186:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13194:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "13205:3:111",
                            "type": ""
                          }
                        ],
                        "src": "13064:273:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13397:382:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13407:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13421:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "13424:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "13417:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13417:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "13407:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13438:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "13468:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13474:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "13464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13464:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "13442:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13515:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13517:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "13531:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13539:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "13527:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13527:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "13517:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "13495:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13488:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13488:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13485:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13605:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13626:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13629:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13619:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13619:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13619:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13727:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13730:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13720:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13720:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13720:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13755:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13758:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13748:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13748:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13748:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "13561:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "13584:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13592:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13581:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13581:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "13558:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13558:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13555:218:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "13377:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "13386:6:111",
                            "type": ""
                          }
                        ],
                        "src": "13342:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13840:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13857:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "13860:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13850:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13850:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13850:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13873:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13891:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13894:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "13881:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13881:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "13873:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "13823:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "13831:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13784:121:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13991:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14024:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "14038:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "14048:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "14042:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14069:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "14073:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14062:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14062:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14062:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "14092:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14114:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14118:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "14104:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14104:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "14096:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "14136:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "14159:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14169:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14176:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "14188:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "14172:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14172:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "14165:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14165:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14155:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14155:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "14140:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "14230:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "14232:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "14247:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "14232:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "14212:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14224:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "14209:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14209:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "14206:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "14266:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "14280:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14290:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14297:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "14302:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "14293:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14293:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "14286:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14286:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14276:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14276:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "14270:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "14320:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "14333:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "14324:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "14418:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "14427:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "14434:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "14420:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14420:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "14420:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "14368:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "14375:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "14365:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14365:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "14379:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "14381:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "14394:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14401:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "14390:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14390:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "14381:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "14361:3:111",
                                      "statements": []
                                    },
                                    "src": "14357:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "14007:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14012:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14004:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14004:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14001:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "13963:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "13970:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "13975:10:111",
                            "type": ""
                          }
                        ],
                        "src": "13910:545:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14545:141:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14555:125:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "14570:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "14588:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14591:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14584:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14584:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14597:66:111",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "14580:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14580:84:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "14576:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14576:89:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14566:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14566:100:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14672:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "14675:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14668:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14668:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "14563:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14563:117:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "14555:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "14522:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "14528:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "14536:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14460:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14794:1222:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14835:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "14837:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14837:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14837:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "14810:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14815:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14807:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14807:27:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14804:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "14910:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "14948:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "14942:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14942:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "14916:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14916:38:111"
                                  },
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "14956:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "14866:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14866:94:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14866:94:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14969:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14986:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "14973:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "15030:728:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "15044:91:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "15063:3:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15068:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "15059:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15059:76:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "15048:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "15148:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "15192:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "15162:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15162:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "15152:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "15210:18:111",
                                        "value": {
                                          "name": "srcOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "15219:9:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "15214:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "15298:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15323:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "15348:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "15353:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "15344:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "15344:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "calldataload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15331:12:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "15331:33:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15316:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15316:49:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "15316:49:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "15382:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15396:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "15404:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15392:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15392:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15382:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "15423:33:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15440:9:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "15451:4:111",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15436:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15436:20:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15423:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "15252:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "15255:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "15249:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15249:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "15264:21:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "15266:17:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15275:1:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "15278:4:111",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15271:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15271:12:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15266:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "15245:3:111",
                                          "statements": []
                                        },
                                        "src": "15241:229:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "15515:187:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15540:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "src",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "15569:3:111"
                                                              },
                                                              {
                                                                "name": "srcOffset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "15574:9:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "add",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "15565:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "15565:19:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "calldataload",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "15552:12:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "15552:33:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15603:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "len",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15606:3:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "15599:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "15599:11:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "15612:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "15595:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15595:21:111"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "15618:66:111",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "15591:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "15591:94:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "15587:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "15587:99:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15548:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "15548:139:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15533:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15533:155:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "15533:155:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "15489:7:111"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "15498:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "15486:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15486:16:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "15483:219:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "15722:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "15736:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15739:3:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15732:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "15732:11:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "15745:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "15728:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "15728:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15715:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15715:33:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "15715:33:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "15023:735:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15028:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "15775:235:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "15789:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15802:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "15793:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "15835:74:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "15853:42:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15879:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15884:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15875:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "15875:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "calldataload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15862:12:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15862:33:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15853:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "len",
                                          "nodeType": "YulIdentifier",
                                          "src": "15819:3:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "15816:93:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "15929:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15988:5:111"
                                                },
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15995:3:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "15935:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "15935:64:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15922:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15922:78:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "15922:78:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "15767:243:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "15006:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15011:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15003:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15003:11:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "14996:1014:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "14774:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "14780:3:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "14785:3:111",
                            "type": ""
                          }
                        ],
                        "src": "14691:1325:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16088:259:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16105:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16110:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16098:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16098:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16098:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16143:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16148:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16139:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16139:14:111"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "16155:5:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16162:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "16126:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16126:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16126:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "16193:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "16198:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "16189:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16189:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16207:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16185:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16185:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16214:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16178:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16178:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16178:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16225:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16240:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "16253:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "16261:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "16249:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "16249:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "16266:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "16245:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16245:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16236:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16236:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16336:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16232:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16232:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "16225:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "16057:5:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "16064:6:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "16072:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "16080:3:111",
                            "type": ""
                          }
                        ],
                        "src": "16021:326:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16541:248:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16558:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16569:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16551:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16551:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16551:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16581:76:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16622:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16630:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16642:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16653:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16638:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16638:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "16595:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16595:62:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16585:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16677:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16688:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16673:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16673:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16697:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16705:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16693:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16693:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16666:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16666:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16666:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16725:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "16760:6:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16768:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16776:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "16733:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16733:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16725:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16486:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16497:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16505:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16513:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16521:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16532:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16352:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16893:149:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16903:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16915:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16926:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16911:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16911:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16903:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16945:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16960:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16968:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16956:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16956:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16938:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16938:98:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16938:98:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16862:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16873:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16884:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16794:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17079:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17096:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17099:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17089:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17089:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17089:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17193:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17196:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17186:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17186:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17186:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17217:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17220:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "17210:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17210:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17210:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "17047:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17337:1222:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17378:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "17380:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17380:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17380:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "17353:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17358:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17350:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17350:27:111"
                              },
                              "nodeType": "YulIf",
                              "src": "17347:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "17453:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "17491:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "17485:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17485:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "17459:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17459:38:111"
                                  },
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "17499:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "17409:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17409:94:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17409:94:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17512:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17529:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "17516:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "17573:728:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "17587:91:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "17606:3:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "17611:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "17602:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17602:76:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "17591:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "17691:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "17735:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "17705:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17705:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "17695:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "17753:18:111",
                                        "value": {
                                          "name": "srcOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "17762:9:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "17757:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "17841:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17866:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "17891:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "17896:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "17887:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "17887:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "calldataload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "17874:12:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "17874:33:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17859:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17859:49:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "17859:49:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "17925:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17939:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "17947:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17935:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17935:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17925:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "17966:33:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17983:9:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "17994:4:111",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17979:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17979:20:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17966:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "17795:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "17798:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "17792:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17792:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "17807:21:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "17809:17:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17818:1:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "17821:4:111",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17814:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17814:12:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17809:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "17788:3:111",
                                          "statements": []
                                        },
                                        "src": "17784:229:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "18058:187:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18083:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "src",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "18112:3:111"
                                                              },
                                                              {
                                                                "name": "srcOffset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "18117:9:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "add",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "18108:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "18108:19:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "calldataload",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "18095:12:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "18095:33:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18146:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "len",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18149:3:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "18142:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "18142:11:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "18155:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "18138:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18138:21:111"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "18161:66:111",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "18134:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "18134:94:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "18130:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "18130:99:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18091:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "18091:139:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18076:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "18076:155:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "18076:155:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "18032:7:111"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "18041:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "18029:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18029:16:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "18026:219:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "18265:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "18279:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18282:3:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18275:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "18275:11:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "18288:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "18271:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18271:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "18258:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18258:33:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "18258:33:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "17566:735:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17571:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "18318:235:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "18332:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18345:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "18336:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "18378:74:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "18396:42:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18422:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18427:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18418:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "18418:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "calldataload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18405:12:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "18405:33:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18396:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "len",
                                          "nodeType": "YulIdentifier",
                                          "src": "18362:3:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "18359:93:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "18472:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18531:5:111"
                                                },
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18538:3:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "18478:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18478:64:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "18465:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18465:78:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "18465:78:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "18310:243:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "17549:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17554:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17546:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17546:11:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "17539:1014:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "17317:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "17323:3:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "17328:3:111",
                            "type": ""
                          }
                        ],
                        "src": "17236:1323:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18693:116:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18710:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18721:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18703:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18703:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18703:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18733:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18768:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18776:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18788:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18799:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18784:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18784:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "18741:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18741:62:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18733:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18654:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18665:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18673:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18684:4:111",
                            "type": ""
                          }
                        ],
                        "src": "18564:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18860:163:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18870:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18880:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18874:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18907:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "18926:5:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18933:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18922:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18922:14:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18911:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18964:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18966:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18966:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18966:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18951:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18960:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "18948:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18948:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "18945:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18995:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19006:7:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19015:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19002:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19002:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "18995:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "18842:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "18852:3:111",
                            "type": ""
                          }
                        ],
                        "src": "18814:209:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19159:116:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19176:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19187:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19169:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19169:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19169:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19199:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19234:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19242:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19254:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19265:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19250:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19250:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "19207:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19207:62:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19199:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19120:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19131:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19139:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19150:4:111",
                            "type": ""
                          }
                        ],
                        "src": "19028:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19389:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19399:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19411:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19422:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19407:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19407:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19399:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19441:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19456:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19464:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19452:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19452:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19434:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19434:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19434:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19358:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19369:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19380:4:111",
                            "type": ""
                          }
                        ],
                        "src": "19280:234:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19613:1375:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19623:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "19643:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19637:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19637:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "19627:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19690:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "19692:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19692:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19692:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "19662:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19670:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19659:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19659:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19656:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "19765:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "19803:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "19797:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19797:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "19771:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19771:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "19811:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "19721:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19721:97:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19721:97:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19827:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19844:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "19831:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19854:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19873:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19858:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19886:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "19899:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "19886:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "19956:775:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "19970:94:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "19989:6:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "19997:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "19985:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19985:79:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "19974:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "20077:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "20121:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "20091:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20091:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "20081:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "20139:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20148:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "20143:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "20226:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20251:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "20269:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "20274:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "20265:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "20265:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "20259:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "20259:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20244:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20244:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "20244:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "20303:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20317:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "20325:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20313:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20313:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20303:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "20344:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20361:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20372:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20357:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20357:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20344:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "20173:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "20176:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "20170:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20170:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "20185:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "20187:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20196:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20199:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20192:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20192:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20187:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "20166:3:111",
                                          "statements": []
                                        },
                                        "src": "20162:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "20446:226:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "20464:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20491:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20496:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "20487:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "20487:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20481:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20481:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "20468:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20531:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20543:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20570:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20573:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "20566:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "20566:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "20582:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "20562:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20562:24:111"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "20588:66:111",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "20558:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "20558:97:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "20554:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "20554:102:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "20539:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "20539:118:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20524:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20524:134:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "20524:134:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "20417:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "20426:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "20414:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20414:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "20411:261:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "20692:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "20706:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "20709:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20702:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "20702:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "20718:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "20698:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "20698:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "20685:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20685:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "20685:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "19949:782:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19954:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "20748:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "20762:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20775:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "20766:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "20811:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "20829:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20848:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20853:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "20844:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "20844:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20838:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20838:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20829:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "20792:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "20789:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "20898:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20957:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20964:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "20904:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "20904:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "20891:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20891:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "20891:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "20740:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "19929:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19937:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19926:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19926:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "19919:1063:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "19598:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "19604:3:111",
                            "type": ""
                          }
                        ],
                        "src": "19519:1469:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21167:231:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21184:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21195:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21177:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21177:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21177:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21218:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21229:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21214:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21214:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21234:2:111",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21207:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21207:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21207:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21257:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21268:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21253:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21253:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a2073657474696e6720617070726f76616c20737461747573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21273:34:111",
                                    "type": "",
                                    "value": "ERC1155: setting approval status"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21246:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21246:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21246:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21328:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21339:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21324:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21324:18:111"
                                  },
                                  {
                                    "hexValue": "20666f722073656c66",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21344:11:111",
                                    "type": "",
                                    "value": " for self"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21317:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21317:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21317:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21365:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21377:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21388:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21373:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21373:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21365:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21144:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21158:4:111",
                            "type": ""
                          }
                        ],
                        "src": "20993:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21578:230:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21595:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21606:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21588:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21588:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21588:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21618:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21649:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21661:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21672:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21657:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21657:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "21632:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21632:44:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21622:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21696:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21707:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21692:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21692:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21716:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21724:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "21712:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21712:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21685:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21685:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21685:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21744:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21779:6:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21787:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21795:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21752:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21752:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21744:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_calldata_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21531:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21542:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21550:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21558:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21569:4:111",
                            "type": ""
                          }
                        ],
                        "src": "21403:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21914:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21924:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21936:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21947:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21932:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21932:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21924:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21966:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21977:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21959:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21959:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21959:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21883:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21894:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21905:4:111",
                            "type": ""
                          }
                        ],
                        "src": "21813:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22076:170:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22122:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22131:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22134:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22124:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22124:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22124:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "22097:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22106:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "22093:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22093:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22118:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22089:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22089:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "22086:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22147:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22166:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22160:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22160:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "22151:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22210:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "22185:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22185:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22185:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22225:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "22235:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "22225:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22042:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "22053:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22065:6:111",
                            "type": ""
                          }
                        ],
                        "src": "21995:251:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22352:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "22362:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22374:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22385:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22370:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22370:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22362:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22404:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22415:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22397:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22397:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22397:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22321:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22332:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22343:4:111",
                            "type": ""
                          }
                        ],
                        "src": "22251:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22479:195:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22489:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22508:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22515:6:111",
                                    "type": "",
                                    "value": "0xffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "22504:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22504:18:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22493:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22550:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "22552:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22552:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22552:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22541:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22534:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22534:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "22531:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22581:87:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22592:7:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22601:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22588:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22588:80:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "22581:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22461:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "22471:3:111",
                            "type": ""
                          }
                        ],
                        "src": "22433:241:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22824:154:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22841:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22852:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22834:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22834:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22834:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22864:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22889:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22901:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22912:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22897:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22897:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "22872:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22872:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22864:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22936:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22947:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22932:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22932:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22956:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22964:6:111",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22952:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22952:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22925:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22925:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22925:47:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_uint16__to_t_bytes_memory_ptr_t_uint16__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22785:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22796:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22804:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22815:4:111",
                            "type": ""
                          }
                        ],
                        "src": "22679:299:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23029:151:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23039:16:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23049:6:111",
                                "type": "",
                                "value": "0xffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23043:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23064:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "23083:5:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23090:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "23079:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23079:14:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23068:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23121:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "23123:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23123:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23123:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23108:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23117:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "23105:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23105:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "23102:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23152:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23163:7:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23172:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23159:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23159:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "23152:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "23011:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "23021:3:111",
                            "type": ""
                          }
                        ],
                        "src": "22983:197:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23376:268:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23393:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23404:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23386:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23386:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23386:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23416:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23447:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23459:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23470:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23455:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23455:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "23430:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23430:44:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23420:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23494:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23505:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23490:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23490:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23514:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23522:6:111",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23510:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23510:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23483:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23483:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23483:47:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23550:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23561:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23546:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23546:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23570:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23578:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "23566:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23566:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23539:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23539:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23539:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23598:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "23623:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23631:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "23606:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23606:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23598:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23329:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "23340:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23348:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23356:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23367:4:111",
                            "type": ""
                          }
                        ],
                        "src": "23185:459:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23697:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23707:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "23718:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "23721:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23714:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23714:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "23707:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23746:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "23748:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23748:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23748:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "23738:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "23741:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23735:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23735:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "23732:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "23680:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "23683:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "23689:3:111",
                            "type": ""
                          }
                        ],
                        "src": "23649:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23873:486:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23883:51:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "23922:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23909:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23909:25:111"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "23887:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24082:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24091:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24094:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24084:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24084:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24084:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "23957:18:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23985:12:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "23985:14:111"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "24001:8:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "23981:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "23981:29:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24012:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "23977:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23977:102:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "23953:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23953:127:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "23946:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23946:135:111"
                              },
                              "nodeType": "YulIf",
                              "src": "23943:155:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24107:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "24125:8:111"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "24135:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24121:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24121:33:111"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "24111:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24163:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24186:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24173:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24173:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "24163:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24236:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24245:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24248:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24238:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24238:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24238:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "24208:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24216:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24205:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24205:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "24202:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24261:25:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24273:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24281:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24269:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24269:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "24261:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24337:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24346:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24349:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24339:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24339:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24339:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "24302:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "24312:12:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24312:14:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "24328:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "24308:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24308:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24298:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24298:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "24295:58:111"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "23830:8:111",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "23840:11:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "23856:4:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "23862:6:111",
                            "type": ""
                          }
                        ],
                        "src": "23779:580:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24494:201:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24532:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24541:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24544:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24534:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24534:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24534:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "24510:10:111"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "24522:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24507:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24507:24:111"
                              },
                              "nodeType": "YulIf",
                              "src": "24504:44:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24581:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24590:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24593:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24583:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24583:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24583:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "24563:8:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "24573:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24560:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24560:20:111"
                              },
                              "nodeType": "YulIf",
                              "src": "24557:40:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24606:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "24623:6:111"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "24631:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24619:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24619:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "24606:9:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24651:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "24668:8:111"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "24678:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "24664:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24664:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "24651:9:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "24428:6:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "24436:6:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "24444:10:111",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "24456:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "24469:9:111",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "24480:9:111",
                            "type": ""
                          }
                        ],
                        "src": "24364:331:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24801:214:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "24811:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "24833:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24820:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24820:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "24811:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24871:138:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "24885:114:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "24898:5:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "24913:1:111",
                                                  "type": "",
                                                  "value": "3"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "24920:2:111",
                                                      "type": "",
                                                      "value": "32"
                                                    },
                                                    {
                                                      "name": "len",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "24924:3:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24916:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "24916:12:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "shl",
                                                "nodeType": "YulIdentifier",
                                                "src": "24909:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24909:20:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24931:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "24905:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24905:93:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "24894:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24894:105:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "24885:5:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "24854:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24859:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24851:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24851:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "24848:161:111"
                            }
                          ]
                        },
                        "name": "convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "24776:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "24783:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "24791:5:111",
                            "type": ""
                          }
                        ],
                        "src": "24700:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25194:242:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25211:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25222:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25204:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25204:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25204:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25245:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25256:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25241:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25241:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25261:2:111",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25234:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25234:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25234:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25284:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25295:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25280:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25280:18:111"
                                  },
                                  {
                                    "hexValue": "6d756c746963616c6c3a20416c6c207265636f726473206d7573742068617665",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25300:34:111",
                                    "type": "",
                                    "value": "multicall: All records must have"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25273:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25273:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25273:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25355:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25366:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25351:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25351:18:111"
                                  },
                                  {
                                    "hexValue": "2061206d61746368696e67206e616d6568617368",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25371:22:111",
                                    "type": "",
                                    "value": " a matching namehash"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25344:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25344:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25344:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25403:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25415:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25426:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25411:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25411:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25403:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e0f8a6e7bdab31ebf5fea1195446f6f12fddc8619df8ea22a3ed3edf179dde30__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25171:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25185:4:111",
                            "type": ""
                          }
                        ],
                        "src": "25020:416:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25588:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25611:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25616:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25624:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "25598:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25598:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25598:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25640:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25654:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25659:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25650:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25650:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25644:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25682:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25686:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25675:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25675:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25675:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25697:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "25704:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25697:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25556:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25561:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25569:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25580:3:111",
                            "type": ""
                          }
                        ],
                        "src": "25441:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25764:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25855:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "25857:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25857:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25857:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "25780:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25787:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "25777:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25777:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "25774:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25886:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "25897:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25904:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25893:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25893:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "25886:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "25746:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "25756:3:111",
                            "type": ""
                          }
                        ],
                        "src": "25717:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25949:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25966:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25969:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25959:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25959:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25959:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26063:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26066:4:111",
                                    "type": "",
                                    "value": "0x01"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26056:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26056:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26056:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26087:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26090:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "26080:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26080:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26080:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x01",
                        "nodeType": "YulFunctionDefinition",
                        "src": "25917:184:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes4(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_bytes4(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_bytes32t_string_calldata_ptrt_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_bytes32t_bytes4(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_bytes4(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_bytes32(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_address_payable__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value2 := memPtr\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_uint16(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n        value2 := value\n    }\n    function abi_decode_array_bytes_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_bytes32t_bytes4t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_bytes4(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := srcOffset\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function abi_encode_string_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_string_calldata(value0, value1, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_string_calldata(value2, value3, tail_1)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := srcOffset\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 32))\n    }\n    function increment_t_uint64(value) -> ret\n    {\n        let _1 := 0xffffffffffffffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n        mstore(add(headStart, 96), \" for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes_calldata_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_string_calldata(value1, value2, tail_1)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function decrement_t_uint16(value) -> ret\n    {\n        let value_1 := and(value, 0xffff)\n        if iszero(value_1) { panic_error_0x11() }\n        ret := add(value_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_uint16__to_t_bytes_memory_ptr_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xffff))\n    }\n    function increment_t_uint16(value) -> ret\n    {\n        let _1 := 0xffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint16_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_bytes(value0, add(headStart, 96))\n        mstore(add(headStart, 32), and(value1, 0xffff))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_bytes(value2, tail_1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32(array, len) -> value\n    {\n        value := calldataload(array)\n        if lt(len, 32)\n        {\n            value := and(value, shl(shl(3, sub(32, len)), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_e0f8a6e7bdab31ebf5fea1195446f6f12fddc8619df8ea22a3ed3edf179dde30__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"multicall: All records must have\")\n        mstore(add(headStart, 96), \" a matching namehash\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "13569": [
                  {
                    "length": 32,
                    "start": 6269
                  }
                ],
                "13572": [
                  {
                    "length": 32,
                    "start": 6401
                  },
                  {
                    "length": 32,
                    "start": 6529
                  }
                ],
                "13574": [
                  {
                    "length": 32,
                    "start": 6109
                  }
                ],
                "13576": [
                  {
                    "length": 32,
                    "start": 6172
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101c45760003560e01c806377372213116100f9578063ce3decdc11610097578063e32954eb11610071578063e32954eb146104a4578063e59d895d146104b7578063e985e9c5146104ca578063f1cb7e061461051357600080fd5b8063ce3decdc1461043b578063d5fa2b001461044e578063d700ff331461046157600080fd5b8063a8fa5682116100d3578063a8fa56821461039c578063ac9650d8146103af578063bc1c58d1146103cf578063c8690233146103e257600080fd5b806377372213146103635780638b95dd7114610376578063a22cb4651461038957600080fd5b80633603d7581161016657806359d1d43c1161014057806359d1d43c1461030a5780635c98042b1461032a578063623195b01461033d578063691f34311461035057600080fd5b80633603d758146102985780633b3b57de146102ab5780634cbf6ba4146102be57600080fd5b8063124a319c116101a2578063124a319c146102195780632203ab561461025157806329cd62ea14610272578063304e6ade1461028557600080fd5b806301ffc9a7146101c95780630af179d7146101f157806310f13a8c14610206575b600080fd5b6101dc6101d73660046126f1565b610526565b60405190151581526020015b60405180910390f35b6102046101ff36600461274e565b610537565b005b61020461021436600461279a565b610741565b61022c610227366004612814565b61080e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b61026461025f366004612840565b610b69565b6040516101e89291906128b2565b6102046102803660046128cb565b610ca0565b61020461029336600461274e565b610d3b565b6102046102a63660046128f7565b610db7565b61022c6102b93660046128f7565b610e5a565b6101dc6102cc366004612840565b6000828152602081815260408083205467ffffffffffffffff1683526006825280832094835293815283822092825291909152205461ffff16151590565b61031d61031836600461274e565b610e8c565b6040516101e89190612910565b61031d6103383660046128f7565b610f6c565b61020461034b366004612923565b61102b565b61031d61035e3660046128f7565b6110c8565b61020461037136600461274e565b611102565b6102046103843660046129a5565b61117e565b610204610397366004612a8b565b61126b565b61031d6103aa366004612ac9565b6113ac565b6103c26103bd366004612b4e565b6113fa565b6040516101e89190612b90565b61031d6103dd3660046128f7565b611408565b6104266103f03660046128f7565b6000818152602081815260408083205467ffffffffffffffff168352600982528083209383529290522080546001909101549091565b604080519283526020830191909152016101e8565b61020461044936600461274e565b611442565b61020461045c366004612c10565b611585565b61048b61046f3660046128f7565b60006020819052908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101e8565b6103c26104b2366004612c35565b6115ac565b6102046104c5366004612c74565b6115c1565b6101dc6104d8366004612ca9565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600b6020908152604080832093909416825291909152205460ff1690565b61031d610521366004612840565b6116a5565b60006105318261176d565b92915050565b82610541816117c3565b61054a57600080fd5b600084815260208181526040808320548151601f870184900484028101840190925285825283926060928392859267ffffffffffffffff9091169183916105b09183918d908d90819084018382808284376000920191909152509293925050611a5c9050565b90505b805151602082015110156106da578661ffff1660000361061857806040015196506105dd81611abd565b9450846040516020016105f09190612cd7565b60405160208183030381529060405280519060200120925061061181611ade565b93506106cc565b600061062382611abd565b9050816040015161ffff168861ffff1614158061064757506106458682611afa565b155b156106ca576106a38c878a8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518d915061069a908290612d22565b8b51158a611b18565b8160400151975081602001519650809550858051906020012093506106c782611ade565b94505b505b6106d581611d85565b6105b3565b50835115610735576107358a85888c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061072c91508290508f612d22565b89511588611b18565b50505050505050505050565b8461074b816117c3565b61075457600080fd5b6000868152602081815260408083205467ffffffffffffffff168352600a8252808320898452909152908190209051849184916107949089908990612d35565b908152602001604051809103902091826107af929190612de6565b5084846040516107c0929190612d35565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516107fe9493929190612ed1565b60405180910390a3505050505050565b6000828152602081815260408083205467ffffffffffffffff1683526007825280832085845282528083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff168015610887579050610531565b600061089285610e5a565b905073ffffffffffffffffffffffffffffffffffffffff81166108ba57600092505050610531565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000179052516109669190612cd7565b600060405180830381855afa9150503d80600081146109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b50915091508115806109b9575060208151105b806109fb575080601f815181106109d2576109d2612f03565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610a0d576000945050505050610531565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610ab69190612cd7565b600060405180830381855afa9150503d8060008114610af1576040519150601f19603f3d011682016040523d82523d6000602084013e610af6565b606091505b509092509050811580610b0a575060208151105b80610b4c575080601f81518110610b2357610b23612f03565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610b5e576000945050505050610531565b509095945050505050565b6000828152602081815260408083205467ffffffffffffffff168352600180835281842086855290925282206060915b848111610c805780851615801590610bc9575060008181526020839052604081208054610bc590612d45565b9050115b15610c785780826000838152602001908152602001600020808054610bed90612d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1990612d45565b8015610c665780601f10610c3b57610100808354040283529160200191610c66565b820191906000526020600020905b815481529060010190602001808311610c4957829003601f168201915b50505050509050935093505050610c99565b60011b610b99565b5060006040518060200160405280600081525092509250505b9250929050565b82610caa816117c3565b610cb357600080fd5b604080518082018252848152602080820185815260008881528083528481205467ffffffffffffffff1681526009835284812089825283528490209251835551600190920191909155815185815290810184905285917f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4691015b60405180910390a250505050565b82610d45816117c3565b610d4e57600080fd5b6000848152602081815260408083205467ffffffffffffffff168352600382528083208784529091529020610d84838583612de6565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610d2d929190612f32565b80610dc1816117c3565b610dca57600080fd5b6000828152602081905260408120805467ffffffffffffffff1691610dee83612f46565b82546101009290920a67ffffffffffffffff818102199093169183160217909155600084815260208181526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b600080610e6883603c6116a5565b90508051600003610e7c5750600092915050565b610e8581611e6d565b9392505050565b6000838152602081815260408083205467ffffffffffffffff168352600a825280832086845290915290819020905160609190610ecc9085908590612d35565b90815260200160405180910390208054610ee590612d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1190612d45565b8015610f5e5780601f10610f3357610100808354040283529160200191610f5e565b820191906000526020600020905b815481529060010190602001808311610f4157829003601f168201915b505050505090509392505050565b6000818152602081815260408083205467ffffffffffffffff168352600482528083208484529091529020805460609190610fa690612d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd290612d45565b801561101f5780601f10610ff45761010080835404028352916020019161101f565b820191906000526020600020905b81548152906001019060200180831161100257829003601f168201915b50505050509050919050565b83611035816117c3565b61103e57600080fd5b8361104a600182612d22565b161561105557600080fd5b6000858152602081815260408083205467ffffffffffffffff1683526001825280832088845282528083208784529091529020611093838583612de6565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b6000818152602081815260408083205467ffffffffffffffff168352600882528083208484529091529020805460609190610fa690612d45565b8261110c816117c3565b61111557600080fd5b6000848152602081815260408083205467ffffffffffffffff16835260088252808320878452909152902061114b838583612de6565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610d2d929190612f32565b82611188816117c3565b61119157600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040516111c39291906128b2565b60405180910390a2603c830361122757837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd26111fe84611e6d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25b6000848152602081815260408083205467ffffffffffffffff16835260028252808320878452825280832086845290915290206112648382612f6d565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff82163303611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000838152602081815260408083205467ffffffffffffffff168352600582528083208684528252808320858452825280832061ffff851684529091529020805460609190610ee590612d45565b6060610e8560008484611e95565b6000818152602081815260408083205467ffffffffffffffff168352600382528083208484529091529020805460609190610fa690612d45565b8261144c816117c3565b61145557600080fd5b6000848152602081815260408083205467ffffffffffffffff16808452600483528184208885529092528220805491929161148f90612d45565b80601f01602080910402602001604051908101604052809291908181526020018280546114bb90612d45565b80156115085780601f106114dd57610100808354040283529160200191611508565b820191906000526020600020905b8154815290600101906020018083116114eb57829003601f168201915b5050505067ffffffffffffffff841660009081526004602090815260408083208b845290915290209192506115409050858783612de6565b50857f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858287876040516115759392919061302d565b60405180910390a2505050505050565b8161158f816117c3565b61159857600080fd5b6115a783603c61038485612088565b505050565b60606115b9848484611e95565b949350505050565b826115cb816117c3565b6115d457600080fd5b6000848152602081815260408083205467ffffffffffffffff1683526007825280832087845282528083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b6000828152602081815260408083205467ffffffffffffffff16835260028252808320858452825280832084845290915290208054606091906116e790612d45565b80601f016020809104026020016040519081016040528092919081815260200182805461171390612d45565b80156117605780601f1061173557610100808354040283529160200191611760565b820191906000526020600020905b81548152906001019060200180831161174357829003601f168201915b5050505050905092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c0000000000000000000000000000000000000000000000000000000014806105315750610531826120c1565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148061183e57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b1561184b57506001919050565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa1580156118d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fd919061305d565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a04576040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa1580156119dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a01919061305d565b90505b73ffffffffffffffffffffffffffffffffffffffff8116331480610e85575073ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020908152604080832033845290915290205460ff16610e85565b611aaa6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c0810182905261053181611d85565b6020810151815160609161053191611ad59082612117565b84519190612171565b60a081015160c082015160609161053191611ad5908290612d22565b600081518351148015610e855750610e8583600084600087516121e8565b865160208801206000611b2c878787612171565b90508315611c565767ffffffffffffffff831660009081526005602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611b7790612d45565b159050611bd65767ffffffffffffffff831660009081526006602090815260408083208d845282528083208584529091528120805461ffff1691611bba8361307a565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526005602090815260408083208d84528252808320858452825280832061ffff8c1684529091528120611c1791612666565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611c49929190613098565b60405180910390a2610735565b67ffffffffffffffff831660009081526005602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611c9990612d45565b9050600003611cfa5767ffffffffffffffff831660009081526006602090815260408083208d845282528083208584529091528120805461ffff1691611cde836130be565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526005602090815260408083208d84528252808320858452825280832061ffff8c1684529091529020611d3c8282612f6d565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611d71939291906130d5565b60405180910390a250505050505050505050565b60c08101516020820181905281515111611d9c5750565b6000611db082600001518360200151612117565b8260200151611dbf9190613104565b8251909150611dce908261220b565b61ffff166040830152611de2600282613104565b8251909150611df1908261220b565b61ffff166060830152611e05600282613104565b8251909150611e149082612233565b63ffffffff166080830152611e2a600482613104565b8251909150600090611e3c908361220b565b61ffff169050611e4d600283613104565b60a084018190529150611e608183613104565b60c0909301929092525050565b60008151601414611e7d57600080fd5b50602001516c01000000000000000000000000900490565b60608167ffffffffffffffff811115611eb057611eb0612976565b604051908082528060200260200182016040528015611ee357816020015b6060815260200190600190039081611ece5790505b50905060005b82811015612080578415611fc8576000848483818110611f0b57611f0b612f03565b9050602002810190611f1d9190613117565b611f2c9160249160049161317c565b611f35916131a6565b9050858114611fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f6d756c746963616c6c3a20416c6c207265636f726473206d757374206861766560448201527f2061206d61746368696e67206e616d6568617368000000000000000000000000606482015260840161130c565b505b60008030868685818110611fde57611fde612f03565b9050602002810190611ff09190613117565b604051611ffe929190612d35565b600060405180830381855af49150503d8060008114612039576040519150601f19603f3d011682016040523d82523d6000602084013e61203e565b606091505b50915091508161204d57600080fd5b8084848151811061206057612060612f03565b602002602001018190525050508080612078906131c4565b915050611ee9565b509392505050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000148061053157506105318261225d565b6000815b8351811061212b5761212b6131de565b600061213785836122b3565b60ff169050612147816001613104565b6121519083613104565b9150806000036121615750612167565b5061211b565b6115b98382612d22565b82516060906121808385613104565b111561218b57600080fd5b60008267ffffffffffffffff8111156121a6576121a6612976565b6040519080825280601f01601f1916602001820160405280156121d0576020820181803683370190505b50905060208082019086860101610b5e8282876122d7565b60006121f584848461232d565b61220087878561232d565b149695505050505050565b815160009061221b836002613104565b111561222657600080fd5b50016002015161ffff1690565b8151600090612243836004613104565b111561224e57600080fd5b50016004015163ffffffff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f3431000000000000000000000000000000000000000000000000000000001480610531575061053182612351565b60008282815181106122c7576122c7612f03565b016020015160f81c905092915050565b6020811061230f57815183526122ee602084613104565b92506122fb602083613104565b9150612308602082612d22565b90506122d7565b905182516020929092036101000a6000190180199091169116179052565b825160009061233c8385613104565b111561234757600080fd5b5091016020012090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c00000000000000000000000000000000000000000000000000000000148061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa568200000000000000000000000000000000000000000000000000000000148061243557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b8061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d100000000000000000000000000000000000000000000000000000000148061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061252357507fffffffff0000000000000000000000000000000000000000000000000000000082167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b8061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000148061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167fd700ff3300000000000000000000000000000000000000000000000000000000148061053157506105318260007fffffffff0000000000000000000000000000000000000000000000000000000082167f4fbf043300000000000000000000000000000000000000000000000000000000148061053157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610531565b50805461267290612d45565b6000825580601f10612682575050565b601f0160209004906000526020600020908101906126a091906126a3565b50565b5b808211156126b857600081556001016126a4565b5090565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146126ec57600080fd5b919050565b60006020828403121561270357600080fd5b610e85826126bc565b60008083601f84011261271e57600080fd5b50813567ffffffffffffffff81111561273657600080fd5b602083019150836020828501011115610c9957600080fd5b60008060006040848603121561276357600080fd5b83359250602084013567ffffffffffffffff81111561278157600080fd5b61278d8682870161270c565b9497909650939450505050565b6000806000806000606086880312156127b257600080fd5b85359450602086013567ffffffffffffffff808211156127d157600080fd5b6127dd89838a0161270c565b909650945060408801359150808211156127f657600080fd5b506128038882890161270c565b969995985093965092949392505050565b6000806040838503121561282757600080fd5b82359150612837602084016126bc565b90509250929050565b6000806040838503121561285357600080fd5b50508035926020909101359150565b60005b8381101561287d578181015183820152602001612865565b50506000910152565b6000815180845261289e816020860160208601612862565b601f01601f19169290920160200192915050565b8281526040602082015260006115b96040830184612886565b6000806000606084860312156128e057600080fd5b505081359360208301359350604090920135919050565b60006020828403121561290957600080fd5b5035919050565b602081526000610e856020830184612886565b6000806000806060858703121561293957600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561295e57600080fd5b61296a8782880161270c565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156129ba57600080fd5b8335925060208401359150604084013567ffffffffffffffff808211156129e057600080fd5b818601915086601f8301126129f457600080fd5b813581811115612a0657612a06612976565b604051601f8201601f19908116603f01168101908382118183101715612a2e57612a2e612976565b81604052828152896020848701011115612a4757600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff811681146126a057600080fd5b60008060408385031215612a9e57600080fd5b8235612aa981612a69565b915060208301358015158114612abe57600080fd5b809150509250929050565b600080600060608486031215612ade57600080fd5b8335925060208401359150604084013561ffff81168114612afe57600080fd5b809150509250925092565b60008083601f840112612b1b57600080fd5b50813567ffffffffffffffff811115612b3357600080fd5b6020830191508360208260051b8501011115610c9957600080fd5b60008060208385031215612b6157600080fd5b823567ffffffffffffffff811115612b7857600080fd5b612b8485828601612b09565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612c03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612bf1858351612886565b94509285019290850190600101612bb7565b5092979650505050505050565b60008060408385031215612c2357600080fd5b823591506020830135612abe81612a69565b600080600060408486031215612c4a57600080fd5b83359250602084013567ffffffffffffffff811115612c6857600080fd5b61278d86828701612b09565b600080600060608486031215612c8957600080fd5b83359250612c99602085016126bc565b91506040840135612afe81612a69565b60008060408385031215612cbc57600080fd5b8235612cc781612a69565b91506020830135612abe81612a69565b60008251612ce9818460208701612862565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561053157610531612cf3565b8183823760009101908152919050565b600181811c90821680612d5957607f821691505b602082108103612d92577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156115a757600081815260208120601f850160051c81016020861015612dbf5750805b601f850160051c820191505b81811015612dde57828155600101612dcb565b505050505050565b67ffffffffffffffff831115612dfe57612dfe612976565b612e1283612e0c8354612d45565b83612d98565b6000601f841160018114612e465760008515612e2e5750838201355b600019600387901b1c1916600186901b178355611264565b600083815260209020601f19861690835b82811015612e775786850135825560209485019460019092019101612e57565b5086821015612e945760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b604081526000612ee5604083018688612ea6565b8281036020840152612ef8818587612ea6565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020815260006115b9602083018486612ea6565b600067ffffffffffffffff808316818103612f6357612f63612cf3565b6001019392505050565b815167ffffffffffffffff811115612f8757612f87612976565b612f9b81612f958454612d45565b84612d98565b602080601f831160018114612fd05760008415612fb85750858301515b600019600386901b1c1916600185901b178555612dde565b600085815260208120601f198616915b82811015612fff57888601518255948401946001909101908401612fe0565b508582101561301d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006130406040830186612886565b8281036020840152613053818587612ea6565b9695505050505050565b60006020828403121561306f57600080fd5b8151610e8581612a69565b600061ffff82168061308e5761308e612cf3565b6000190192915050565b6040815260006130ab6040830185612886565b905061ffff831660208301529392505050565b600061ffff808316818103612f6357612f63612cf3565b6060815260006130e86060830186612886565b61ffff8516602084015282810360408401526130538185612886565b8082018082111561053157610531612cf3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261314c57600080fd5b83018035915067ffffffffffffffff82111561316757600080fd5b602001915036819003821315610c9957600080fd5b6000808585111561318c57600080fd5b8386111561319957600080fd5b5050820193919092039150565b8035602083101561053157600019602084900360031b1b1692915050565b600060001982036131d7576131d7612cf3565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea26469706673582212202673f63d364d138759b82a66e0266a4d87a91b389a1d1a45dcec5e0fbce1a7f764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77372213 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xCE3DECDC GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xE32954EB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE32954EB EQ PUSH2 0x4A4 JUMPI DUP1 PUSH4 0xE59D895D EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0xF1CB7E06 EQ PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCE3DECDC EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0xD5FA2B00 EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0xD700FF33 EQ PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA8FA5682 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA8FA5682 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0xBC1C58D1 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0xC8690233 EQ PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x77372213 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x8B95DD71 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x389 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3603D758 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x59D1D43C GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x59D1D43C EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x5C98042B EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x623195B0 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x691F3431 EQ PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3603D758 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x3B3B57DE EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x4CBF6BA4 EQ PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x124A319C GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x124A319C EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x2203AB56 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x29CD62EA EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x304E6ADE EQ PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0xAF179D7 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x10F13A8C EQ PUSH2 0x206 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x204 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0x537 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x204 PUSH2 0x214 CALLDATASIZE PUSH1 0x4 PUSH2 0x279A JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH2 0x22C PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0x2814 JUMP JUMPDEST PUSH2 0x80E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E8 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x2840 JUMP JUMPDEST PUSH2 0xB69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E8 SWAP3 SWAP2 SWAP1 PUSH2 0x28B2 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x28CB JUMP JUMPDEST PUSH2 0xCA0 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0xD3B JUMP JUMPDEST PUSH2 0x204 PUSH2 0x2A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x22C PUSH2 0x2B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0xE5A JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x2CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2840 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x6 DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 SWAP3 DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0xFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x31D PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0xE8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E8 SWAP2 SWAP1 PUSH2 0x2910 JUMP JUMPDEST PUSH2 0x31D PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0xF6C JUMP JUMPDEST PUSH2 0x204 PUSH2 0x34B CALLDATASIZE PUSH1 0x4 PUSH2 0x2923 JUMP JUMPDEST PUSH2 0x102B JUMP JUMPDEST PUSH2 0x31D PUSH2 0x35E CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0x10C8 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x371 CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0x1102 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A5 JUMP JUMPDEST PUSH2 0x117E JUMP JUMPDEST PUSH2 0x204 PUSH2 0x397 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A8B JUMP JUMPDEST PUSH2 0x126B JUMP JUMPDEST PUSH2 0x31D PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x2AC9 JUMP JUMPDEST PUSH2 0x13AC JUMP JUMPDEST PUSH2 0x3C2 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2B4E JUMP JUMPDEST PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E8 SWAP2 SWAP1 PUSH2 0x2B90 JUMP JUMPDEST PUSH2 0x31D PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH2 0x1408 JUMP JUMPDEST PUSH2 0x426 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x9 DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1E8 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x449 CALLDATASIZE PUSH1 0x4 PUSH2 0x274E JUMP JUMPDEST PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x45C CALLDATASIZE PUSH1 0x4 PUSH2 0x2C10 JUMP JUMPDEST PUSH2 0x1585 JUMP JUMPDEST PUSH2 0x48B PUSH2 0x46F CALLDATASIZE PUSH1 0x4 PUSH2 0x28F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E8 JUMP JUMPDEST PUSH2 0x3C2 PUSH2 0x4B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C35 JUMP JUMPDEST PUSH2 0x15AC JUMP JUMPDEST PUSH2 0x204 PUSH2 0x4C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C74 JUMP JUMPDEST PUSH2 0x15C1 JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x4D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x31D PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x2840 JUMP JUMPDEST PUSH2 0x16A5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x531 DUP3 PUSH2 0x176D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH2 0x541 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x1F DUP8 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP6 DUP3 MSTORE DUP4 SWAP3 PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP6 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 SWAP2 PUSH2 0x5B0 SWAP2 DUP4 SWAP2 DUP14 SWAP1 DUP14 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x1A5C SWAP1 POP JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x6DA JUMPI DUP7 PUSH2 0xFFFF AND PUSH1 0x0 SUB PUSH2 0x618 JUMPI DUP1 PUSH1 0x40 ADD MLOAD SWAP7 POP PUSH2 0x5DD DUP2 PUSH2 0x1ABD JUMP JUMPDEST SWAP5 POP DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5F0 SWAP2 SWAP1 PUSH2 0x2CD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP PUSH2 0x611 DUP2 PUSH2 0x1ADE JUMP JUMPDEST SWAP4 POP PUSH2 0x6CC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x623 DUP3 PUSH2 0x1ABD JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND DUP9 PUSH2 0xFFFF AND EQ ISZERO DUP1 PUSH2 0x647 JUMPI POP PUSH2 0x645 DUP7 DUP3 PUSH2 0x1AFA JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x6CA JUMPI PUSH2 0x6A3 DUP13 DUP8 DUP11 DUP15 DUP15 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP PUSH1 0x20 DUP9 ADD MLOAD DUP14 SWAP2 POP PUSH2 0x69A SWAP1 DUP3 SWAP1 PUSH2 0x2D22 JUMP JUMPDEST DUP12 MLOAD ISZERO DUP11 PUSH2 0x1B18 JUMP JUMPDEST DUP2 PUSH1 0x40 ADD MLOAD SWAP8 POP DUP2 PUSH1 0x20 ADD MLOAD SWAP7 POP DUP1 SWAP6 POP DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP PUSH2 0x6C7 DUP3 PUSH2 0x1ADE JUMP JUMPDEST SWAP5 POP JUMPDEST POP JUMPDEST PUSH2 0x6D5 DUP2 PUSH2 0x1D85 JUMP JUMPDEST PUSH2 0x5B3 JUMP JUMPDEST POP DUP4 MLOAD ISZERO PUSH2 0x735 JUMPI PUSH2 0x735 DUP11 DUP6 DUP9 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP13 SWAP3 POP PUSH2 0x72C SWAP2 POP DUP3 SWAP1 POP DUP16 PUSH2 0x2D22 JUMP JUMPDEST DUP10 MLOAD ISZERO DUP9 PUSH2 0x1B18 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP5 PUSH2 0x74B DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD DUP5 SWAP2 DUP5 SWAP2 PUSH2 0x794 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP2 DUP3 PUSH2 0x7AF SWAP3 SWAP2 SWAP1 PUSH2 0x2DE6 JUMP JUMPDEST POP DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x7C0 SWAP3 SWAP2 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP7 PUSH32 0x448BC014F1536726CF8D54FF3D6481ED3CBC683C2591CA204274009AFA09B1A1 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7FE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2ED1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x7 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x887 JUMPI SWAP1 POP PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x892 DUP6 PUSH2 0xE5A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x8BA JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH2 0x966 SWAP2 SWAP1 PUSH2 0x2CD7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x9A1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x9A6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x9B9 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT JUMPDEST DUP1 PUSH2 0x9FB JUMPI POP DUP1 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0x9D2 JUMPI PUSH2 0x9D2 PUSH2 0x2F03 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND ISZERO JUMPDEST ISZERO PUSH2 0xA0D JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH2 0xAB6 SWAP2 SWAP1 PUSH2 0x2CD7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAF1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 PUSH2 0xB0A JUMPI POP PUSH1 0x20 DUP2 MLOAD LT JUMPDEST DUP1 PUSH2 0xB4C JUMPI POP DUP1 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0xB23 JUMPI PUSH2 0xB23 PUSH2 0x2F03 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND ISZERO JUMPDEST ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x531 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x1 DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 PUSH1 0x60 SWAP2 JUMPDEST DUP5 DUP2 GT PUSH2 0xC80 JUMPI DUP1 DUP6 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC9 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xBC5 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST SWAP1 POP GT JUMPDEST ISZERO PUSH2 0xC78 JUMPI DUP1 DUP3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 DUP1 SLOAD PUSH2 0xBED SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xC19 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC66 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC3B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC66 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC49 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP4 POP SWAP4 POP POP POP PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x1 SHL PUSH2 0xB99 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP3 PUSH2 0xCAA DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0xCB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP6 DUP2 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE DUP1 DUP4 MSTORE DUP5 DUP2 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x9 DUP4 MSTORE DUP5 DUP2 KECCAK256 DUP10 DUP3 MSTORE DUP4 MSTORE DUP5 SWAP1 KECCAK256 SWAP3 MLOAD DUP4 SSTORE MLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE DUP6 SWAP2 PUSH32 0x1D6F5E03D3F63EB58751986629A5439BAEE5079FF04F345BECB66E23EB154E46 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST DUP3 PUSH2 0xD45 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0xD4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0xD84 DUP4 DUP6 DUP4 PUSH2 0x2DE6 JUMP JUMPDEST POP DUP4 PUSH32 0xE379C1624ED7E714CC0937528A32359D69D5281337765313DBA4E081B72D7578 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD2D SWAP3 SWAP2 SWAP1 PUSH2 0x2F32 JUMP JUMPDEST DUP1 PUSH2 0xDC1 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0xDCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 PUSH2 0xDEE DUP4 PUSH2 0x2F46 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND DUP2 MSTORE DUP5 SWAP3 POP PUSH32 0xC6621CCB8F3F5A04BB6502154B2CAF6ADF5983FE76DFEF1CFC9C42E3579DB444 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE68 DUP4 PUSH1 0x3C PUSH2 0x16A5 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xE7C JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE85 DUP2 PUSH2 0x1E6D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xECC SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xEE5 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF11 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF5E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF33 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF5E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF41 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFA6 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xFD2 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x101F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFF4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x101F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1002 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP4 PUSH2 0x1035 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x104A PUSH1 0x1 DUP3 PUSH2 0x2D22 JUMP JUMPDEST AND ISZERO PUSH2 0x1055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x1 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1093 DUP4 DUP6 DUP4 PUSH2 0x2DE6 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 SWAP1 DUP7 SWAP1 PUSH32 0xAA121BBEEF5F32F5961A2A28966E769023910FC9479059EE3495D4C1A696EFE3 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFA6 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP3 PUSH2 0x110C DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x1115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x114B DUP4 DUP6 DUP4 PUSH2 0x2DE6 JUMP JUMPDEST POP DUP4 PUSH32 0xB7D29E911041E8D9B843369E890BCB72C9388692BA48B65AC54E7214C4C348F7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xD2D SWAP3 SWAP2 SWAP1 PUSH2 0x2F32 JUMP JUMPDEST DUP3 PUSH2 0x1188 DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH32 0x65412581168E88A1E60C6459D7F44AE83AD0832E670826C05A4E2476B57AF752 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x11C3 SWAP3 SWAP2 SWAP1 PUSH2 0x28B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x3C DUP4 SUB PUSH2 0x1227 JUMPI DUP4 PUSH32 0x52D7D861F09AB3D26239D492E8968629F95E9E318CF0B73BFDDC441522A15FD2 PUSH2 0x11FE DUP5 PUSH2 0x1E6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1264 DUP4 DUP3 PUSH2 0x2F6D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND CALLER SUB PUSH2 0x1315 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x5 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xEE5 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE85 PUSH1 0x0 DUP5 DUP5 PUSH2 0x1E95 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0xFA6 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP3 PUSH2 0x144C DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x1455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP1 DUP5 MSTORE PUSH1 0x4 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP9 DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH2 0x148F SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x14BB SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1508 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x14DD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1508 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x14EB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SWAP2 SWAP3 POP PUSH2 0x1540 SWAP1 POP DUP6 DUP8 DUP4 PUSH2 0x2DE6 JUMP JUMPDEST POP DUP6 PUSH32 0x8F15ED4B723EF428F250961DA8315675B507046737E19319FC1A4D81BFE87F85 DUP3 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1575 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x302D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x158F DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x1598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A7 DUP4 PUSH1 0x3C PUSH2 0x384 DUP6 PUSH2 0x2088 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x15B9 DUP5 DUP5 DUP5 PUSH2 0x1E95 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x15CB DUP2 PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x15D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x7 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE DUP7 SWAP2 PUSH32 0x7C69F06BEA0BDEF565B709E93A147836B0063BA2DD89F02D0B7E8D931E6A6DAA SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0x16E7 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1713 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1760 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1735 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1760 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1743 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x59D1D43C00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH2 0x20C1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ DUP1 PUSH2 0x183E JUMPI POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ JUMPDEST ISZERO PUSH2 0x184B JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18FD SWAP2 SWAP1 PUSH2 0x305D JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1A04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A01 SWAP2 SWAP1 PUSH2 0x305D JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ DUP1 PUSH2 0xE85 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x1AAA PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x531 DUP2 PUSH2 0x1D85 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 PUSH2 0x531 SWAP2 PUSH2 0x1AD5 SWAP1 DUP3 PUSH2 0x2117 JUMP JUMPDEST DUP5 MLOAD SWAP2 SWAP1 PUSH2 0x2171 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 SWAP2 PUSH2 0x531 SWAP2 PUSH2 0x1AD5 SWAP1 DUP3 SWAP1 PUSH2 0x2D22 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0xE85 JUMPI POP PUSH2 0xE85 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0x21E8 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x20 DUP9 ADD KECCAK256 PUSH1 0x0 PUSH2 0x1B2C DUP8 DUP8 DUP8 PUSH2 0x2171 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1C56 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1B77 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST ISZERO SWAP1 POP PUSH2 0x1BD6 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF AND SWAP2 PUSH2 0x1BBA DUP4 PUSH2 0x307A JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 PUSH2 0x1C17 SWAP2 PUSH2 0x2666 JUMP JUMPDEST DUP10 PUSH32 0x3528ED0C2A3EBC993B12CE3C16BB382F9C7D88EF7D8A1BF290EAF35955A1207 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1C49 SWAP3 SWAP2 SWAP1 PUSH2 0x3098 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x735 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1C99 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SUB PUSH2 0x1CFA JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF AND SWAP2 PUSH2 0x1CDE DUP4 PUSH2 0x30BE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1D3C DUP3 DUP3 PUSH2 0x2F6D JUMP JUMPDEST POP DUP10 PUSH32 0x52A608B3303A48862D07A73D82FA221318C0027FBBCFB1B2329BFACE3F19FF2B DUP11 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1D71 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x30D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0x1D9C JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DB0 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2117 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1DBF SWAP2 SWAP1 PUSH2 0x3104 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1DCE SWAP1 DUP3 PUSH2 0x220B JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1DE2 PUSH1 0x2 DUP3 PUSH2 0x3104 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1DF1 SWAP1 DUP3 PUSH2 0x220B JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1E05 PUSH1 0x2 DUP3 PUSH2 0x3104 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1E14 SWAP1 DUP3 PUSH2 0x2233 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1E2A PUSH1 0x4 DUP3 PUSH2 0x3104 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1E3C SWAP1 DUP4 PUSH2 0x220B JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0x1E4D PUSH1 0x2 DUP4 PUSH2 0x3104 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0x1E60 DUP2 DUP4 PUSH2 0x3104 JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x14 EQ PUSH2 0x1E7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1EB0 JUMPI PUSH2 0x1EB0 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1EE3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1ECE JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2080 JUMPI DUP5 ISZERO PUSH2 0x1FC8 JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1F0B JUMPI PUSH2 0x1F0B PUSH2 0x2F03 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1F1D SWAP2 SWAP1 PUSH2 0x3117 JUMP JUMPDEST PUSH2 0x1F2C SWAP2 PUSH1 0x24 SWAP2 PUSH1 0x4 SWAP2 PUSH2 0x317C JUMP JUMPDEST PUSH2 0x1F35 SWAP2 PUSH2 0x31A6 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ PUSH2 0x1FC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D756C746963616C6C3A20416C6C207265636F726473206D7573742068617665 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061206D61746368696E67206E616D6568617368000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x130C JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x1FDE JUMPI PUSH2 0x1FDE PUSH2 0x2F03 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1FF0 SWAP2 SWAP1 PUSH2 0x3117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FFE SWAP3 SWAP2 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2039 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x203E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x204D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2060 JUMPI PUSH2 0x2060 PUSH2 0x2F03 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x2078 SWAP1 PUSH2 0x31C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1EE9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x14 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP PUSH13 0x1000000000000000000000000 SWAP3 SWAP1 SWAP3 MUL PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xC869023300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH2 0x225D JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0x212B JUMPI PUSH2 0x212B PUSH2 0x31DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2137 DUP6 DUP4 PUSH2 0x22B3 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x2147 DUP2 PUSH1 0x1 PUSH2 0x3104 JUMP JUMPDEST PUSH2 0x2151 SWAP1 DUP4 PUSH2 0x3104 JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0x2161 JUMPI POP PUSH2 0x2167 JUMP JUMPDEST POP PUSH2 0x211B JUMP JUMPDEST PUSH2 0x15B9 DUP4 DUP3 PUSH2 0x2D22 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x2180 DUP4 DUP6 PUSH2 0x3104 JUMP JUMPDEST GT ISZERO PUSH2 0x218B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x21A6 JUMPI PUSH2 0x21A6 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x21D0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0xB5E DUP3 DUP3 DUP8 PUSH2 0x22D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21F5 DUP5 DUP5 DUP5 PUSH2 0x232D JUMP JUMPDEST PUSH2 0x2200 DUP8 DUP8 DUP6 PUSH2 0x232D JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x221B DUP4 PUSH1 0x2 PUSH2 0x3104 JUMP JUMPDEST GT ISZERO PUSH2 0x2226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2243 DUP4 PUSH1 0x4 PUSH2 0x3104 JUMP JUMPDEST GT ISZERO PUSH2 0x224E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x691F343100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH2 0x2351 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x22C7 JUMPI PUSH2 0x22C7 PUSH2 0x2F03 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x230F JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x22EE PUSH1 0x20 DUP5 PUSH2 0x3104 JUMP JUMPDEST SWAP3 POP PUSH2 0x22FB PUSH1 0x20 DUP4 PUSH2 0x3104 JUMP JUMPDEST SWAP2 POP PUSH2 0x2308 PUSH1 0x20 DUP3 PUSH2 0x2D22 JUMP JUMPDEST SWAP1 POP PUSH2 0x22D7 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x233C DUP4 DUP6 PUSH2 0x3104 JUMP JUMPDEST GT ISZERO PUSH2 0x2347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x124A319C00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xA8FA568200000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2435 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5C98042B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xBC1C58D100000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x3B3B57DE00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2523 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xF1CB7E0600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x2203AB5600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD700FF3300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH2 0x531 DUP3 PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4FBF043300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x531 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x531 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x2672 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x2682 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26A0 SWAP2 SWAP1 PUSH2 0x26A3 JUMP JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x26B8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x26A4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x26EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE85 DUP3 PUSH2 0x26BC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x271E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2736 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x278D DUP7 DUP3 DUP8 ADD PUSH2 0x270C JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x27B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x27D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27DD DUP10 DUP4 DUP11 ADD PUSH2 0x270C JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x27F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2803 DUP9 DUP3 DUP10 ADD PUSH2 0x270C JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2837 PUSH1 0x20 DUP5 ADD PUSH2 0x26BC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2853 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x287D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2865 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x289E DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2862 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x15B9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2886 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x28E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE85 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2886 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x295E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x296A DUP8 DUP3 DUP9 ADD PUSH2 0x270C JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x29E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2A06 JUMPI PUSH2 0x2A06 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2A2E JUMPI PUSH2 0x2A2E PUSH2 0x2976 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP10 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2A47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x26A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2AA9 DUP2 PUSH2 0x2A69 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2ADE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x2AFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B84 DUP6 DUP3 DUP7 ADD PUSH2 0x2B09 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2C03 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2BF1 DUP6 DUP4 MLOAD PUSH2 0x2886 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2BB7 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2ABE DUP2 PUSH2 0x2A69 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x278D DUP7 DUP3 DUP8 ADD PUSH2 0x2B09 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x2C99 PUSH1 0x20 DUP6 ADD PUSH2 0x26BC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2AFE DUP2 PUSH2 0x2A69 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2CC7 DUP2 PUSH2 0x2A69 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2ABE DUP2 PUSH2 0x2A69 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2CE9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2862 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x531 JUMPI PUSH2 0x531 PUSH2 0x2CF3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2D59 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2D92 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x15A7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x2DBF JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DDE JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2DCB JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x2DFE JUMPI PUSH2 0x2DFE PUSH2 0x2976 JUMP JUMPDEST PUSH2 0x2E12 DUP4 PUSH2 0x2E0C DUP4 SLOAD PUSH2 0x2D45 JUMP JUMPDEST DUP4 PUSH2 0x2D98 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2E46 JUMPI PUSH1 0x0 DUP6 ISZERO PUSH2 0x2E2E JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x1264 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP1 DUP4 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E77 JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2E57 JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x2E94 JUMPI PUSH1 0x0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2EE5 PUSH1 0x40 DUP4 ADD DUP7 DUP9 PUSH2 0x2EA6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2EF8 DUP2 DUP6 DUP8 PUSH2 0x2EA6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x15B9 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x2EA6 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2F63 JUMPI PUSH2 0x2F63 PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F87 JUMPI PUSH2 0x2F87 PUSH2 0x2976 JUMP JUMPDEST PUSH2 0x2F9B DUP2 PUSH2 0x2F95 DUP5 SLOAD PUSH2 0x2D45 JUMP JUMPDEST DUP5 PUSH2 0x2D98 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2FD0 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x2FB8 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x2DDE JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2FFF JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x2FE0 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x301D JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3040 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2886 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x3053 DUP2 DUP6 DUP8 PUSH2 0x2EA6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x306F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE85 DUP2 PUSH2 0x2A69 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND DUP1 PUSH2 0x308E JUMPI PUSH2 0x308E PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x30AB PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2886 JUMP JUMPDEST SWAP1 POP PUSH2 0xFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2F63 JUMPI PUSH2 0x2F63 PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x30E8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2886 JUMP JUMPDEST PUSH2 0xFFFF DUP6 AND PUSH1 0x20 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x3053 DUP2 DUP6 PUSH2 0x2886 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x531 JUMPI PUSH2 0x531 PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x314C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x318C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x3199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 DUP4 LT ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 NOT PUSH1 0x20 DUP5 SWAP1 SUB PUSH1 0x3 SHL SHL AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 SUB PUSH2 0x31D7 JUMPI PUSH2 0x31D7 PUSH2 0x2CF3 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 PUSH20 0xF63D364D138759B82A66E0266A4D87A91B389A1D BYTE GASLIMIT 0xDC 0xEC 0x5E 0xF 0xBC 0xE1 0xA7 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "636:2739:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:436;;;;;;:::i;:::-;;:::i;:::-;;;592:14:111;;585:22;567:41;;555:2;540:18;2937:436:64;;;;;;;;2069:1766:70;;;;;;:::i;:::-;;:::i;:::-;;549:263:86;;;;;;:::i;:::-;;:::i;1704:1150:83:-;;;;;;:::i;:::-;;:::i;:::-;;;2678:42:111;2666:55;;;2648:74;;2636:2;2621:18;1704:1150:83;2502:226:111;1253:665:67;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;603:241:85:-;;;;;;:::i;:::-;;:::i;505:236:69:-;;;;;;:::i;:::-;;:::i;662:164:66:-;;;;;;:::i;:::-;;:::i;937:290:68:-;;;;;;:::i;:::-;;:::i;4684:237:70:-;;;;;;:::i;:::-;4796:4;4853:20;;;;;;;;;;;;;;4824:50;;:28;:50;;;;;:56;;;;;;;;;:84;;;;;;;;;;;:89;;;4684:237;1029:222:86;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5706:204:70:-;;;;;;:::i;:::-;;:::i;568:364:67:-;;;;;;:::i;:::-;;:::i;887:196:84:-;;;;;;:::i;:::-;;:::i;456:231::-;;;;;;:::i;:::-;;:::i;1233:361:68:-;;;;;;:::i;:::-;;:::i;1894:319:64:-;;;;;;:::i;:::-;;:::i;4237:233:70:-;;;;;;:::i;:::-;;:::i;1325:171:62:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;908:203:69:-;;;;;;:::i;:::-;;:::i;1149:356:85:-;;;;;;:::i;:::-;1259:9;1325:20;;;;;;;;;;;;;;1376:41;;:19;:41;;;;;:47;;;;;;;:49;;1325:20;1439:49;;;;1376;;1149:356;;;;;10533:25:111;;;10589:2;10574:18;;10567:34;;;;10506:18;1149:356:85;10359:248:111;5141:411:70;;;;;;:::i;:::-;;:::i;610:168:68:-;;;;;;:::i;:::-;;:::i;239:48:66:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;11106:18:111;11094:31;;;11076:50;;11064:2;11049:18;239:48:66;10932:200:111;1134:185:62;;;;;;:::i;:::-;;:::i;769:298:83:-;;;;;;:::i;:::-;;:::i;2280:177:64:-;;;;;;:::i;:::-;2413:27;;;;2386:4;2413:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;2280:177;1600:225:68;;;;;;:::i;:::-;;:::i;2937:436:64:-;3303:4;3330:36;3354:11;3330:23;:36::i;:::-;3323:43;2937:436;-1:-1:-1;;2937:436:64:o;2069:1766:70:-;2179:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;2199:15:70::1;2354:20:::0;;;::::1;::::0;;;;;;;;2496:15;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;2199;;2256:17:::1;::::0;;;2199:15;;2354:20:::1;::::0;;::::1;::::0;2199:15;;2496:18:::1;::::0;2199:15;;2496:4;;;;;;:15;::::1;:4:::0;;;;:15;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;2496:15:70;;:18;-1:-1:-1;;2496:15:70::1;:18:::0;-1:-1:-1;2496:18:70:i:1;:::-;2463:51;;2445:1090;4584:9:29::0;;:16;4569:11;;;;:31;;2445:1090:70::1;;2594:8;:13;;2606:1;2594:13:::0;2590:935:::1;;2638:4;:12;;;2627:23;;2675:11;:4;:9;:11::i;:::-;2668:18;;2742:4;2725:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;2715:33;;;;;;2704:44;;2780:12;:4;:10;:12::i;:::-;2766:27;;2590:935;;;2832:20;2855:11;:4;:9;:11::i;:::-;2832:34;;2900:4;:12;;;2888:24;;:8;:24;;;;:49;;;-1:-1:-1::0;2917:20:70::1;:4:::0;2929:7;2917:11:::1;:20::i;:::-;2916:21;2888:49;2884:627;;;2961:311;2998:4;3028;3058:8;3092:4;;2961:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;3154:11:70::1;::::0;::::1;::::0;3122:6;;-1:-1:-1;3154:20:70::1;::::0;3122:6;;3154:20:::1;:::i;:::-;3200:12:::0;;:17;3243:7;2961:11:::1;:311::i;:::-;3305:4;:12;;;3294:23;;3348:4;:11;;;3339:20;;3388:7;3381:14;;3438:4;3428:15;;;;;;3417:26;;3479:12;:4;:10;:12::i;:::-;3465:27;;2884:627;2814:711;2590:935;2554:11;:4;:9;:11::i;:::-;2445:1090;;;-1:-1:-1::0;3548:11:70;;:15;3544:285:::1;;3579:239;3608:4;3630;3652:8;3678:4;;3579:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3700:6:70;;-1:-1:-1;3724:20:70::1;::::0;-1:-1:-1;3700:6:70;;-1:-1:-1;3724:4:70;:20:::1;:::i;:::-;3762:12:::0;;:17;3797:7;3579:11:::1;:239::i;:::-;2189:1646;;;;;;2069:1766:::0;;;;:::o;549:263:86:-;682:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;698:39:86::1;716:20:::0;;;::::1;::::0;;;;;;;;::::1;;698:39:::0;;:17:::1;:39:::0;;;;;:45;;;;;;;;;;:50;;751:5;;;;698:50:::1;::::0;744:3;;;;698:50:::1;:::i;:::-;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;789:3;;771:34;;;;;;;:::i;:::-;;;;;;;;783:4;771:34;794:3;;799:5;;771:34;;;;;;;;;:::i;:::-;;;;;;;;549:263:::0;;;;;;:::o;1704:1150:83:-;1848:7;1916:20;;;;;;;;;;;;;;1893:44;;:22;:44;;;;;:50;;;;;;;;:63;;;;;;;;;;;;;1970:25;;1966:74;;2018:11;-1:-1:-1;2011:18:83;;1966:74;2050:9;2062:10;2067:4;2062;:10::i;:::-;2050:22;-1:-1:-1;2086:15:83;;;2082:63;;2132:1;2117:17;;;;;;2082:63;2223:125;;2309:25;2223:125;;;16938:98:111;2156:12:83;;;;2197;;;;16911:18:111;;2223:125:83;;;-1:-1:-1;;2223:125:83;;;;;;;;;;;;;;;;;;;;2197:161;;;2223:125;2197:161;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2155:203;;;;2373:7;2372:8;:34;;;;2404:2;2384:10;:17;:22;2372:34;:57;;;;2410:10;2421:2;2410:14;;;;;;;;:::i;:::-;;;;;;;:19;2372:57;2368:152;;;2507:1;2492:17;;;;;;;;2368:152;2580:65;;16968:66:111;16956:79;;2580:65:83;;;16938:98:111;2554:12:83;;;;16911:18:111;;2580:65:83;;;-1:-1:-1;;2580:65:83;;;;;;;;;;;;;;;;;;;;2554:101;;;2580:65;2554:101;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2530:125:83;;-1:-1:-1;2530:125:83;-1:-1:-1;2669:8:83;;;:34;;;2701:2;2681:10;:17;:22;2669:34;:57;;;;2707:10;2718:2;2707:14;;;;;;;;:::i;:::-;;;;;;;:19;2669:57;2665:164;;;2816:1;2801:17;;;;;;;;2665:164;-1:-1:-1;2846:1:83;;1704:1150;-1:-1:-1;;;;;1704:1150:83:o;1253:665:67:-;1382:7;1492:20;;;;;;;;;;;;;;1462:60;;:16;:60;;;;;;:66;;;;;;;;1391:12;;1539:341;1609:12;1594:11;:27;1539:341;;1699:26;;;1698:33;;;;:83;;-1:-1:-1;1780:1:67;1751:19;;;;;;;;;;:26;;;;;:::i;:::-;;;:30;1698:83;1677:193;;;1822:11;1835:6;:19;1842:11;1835:19;;;;;;;;;;;1814:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:193;1651:1;1635:17;1539:341;;;;1898:1;1901:9;;;;;;;;;;;;1890:21;;;;;1253:665;;;;;;:::o;603:241:85:-;716:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;782:15:85::1;::::0;;;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;752:20:85;;;;;;;;;;::::1;;732:41:::0;;:19:::1;:41:::0;;;;;:47;;;;;;;;:65;;;;;752:20;732:65;;::::1;::::0;;;;812:25;;10533::111;;;10574:18;;;10567:34;;;752:20:85;;812:25:::1;::::0;10506:18:111;812:25:85::1;;;;;;;;603:241:::0;;;;:::o;505:236:69:-;616:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;636:40:69::1;655:20:::0;;;::::1;::::0;;;;;;;;::::1;;636:40:::0;;:18:::1;:40:::0;;;;;:46;;;;;;;;:53:::1;685:4:::0;;636:46;:53:::1;:::i;:::-;;723:4;704:30;729:4;;704:30;;;;;;;:::i;662:164:66:-:0;724:4;425:18;438:4;425:12;:18::i;:::-;417:27;;;;;;740:14:::1;:20:::0;;;::::1;::::0;;;;;;:22;;::::1;;::::0;::::1;::::0;::::1;:::i;:::-;::::0;;::::1;::::0;;;::::1;;::::0;;::::1;;::::0;;::::1;::::0;;::::1;;;::::0;;;-1:-1:-1;798:20:66;;;::::1;::::0;;;;;;;;;777:42;;798:20;;;::::1;11076:50:111::0;;798:20:66;;-1:-1:-1;777:42:66::1;::::0;11049:18:111;777:42:66::1;;;;;;;662:164:::0;;:::o;937:290:68:-;1043:15;1074:14;1091:25;1096:4;291:2;1091:4;:25::i;:::-;1074:42;;1130:1;:8;1142:1;1130:13;1126:61;;-1:-1:-1;1174:1:68;;937:290;-1:-1:-1;;937:290:68:o;1126:61::-;1203:17;1218:1;1203:14;:17::i;:::-;1196:24;937:290;-1:-1:-1;;;937:290:68:o;1029:222:86:-;1194:39;1212:20;;;;;;;;;;;;;;1194:39;;:17;:39;;;;;:45;;;;;;;;;;:50;;1158:13;;1194:45;:50;;1240:3;;;;1194:50;:::i;:::-;;;;;;;;;;;;;1187:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1029:222;;;;;:::o;5706:204:70:-;5853:44;5876:20;;;;;;;;;;;;;;5853:44;;:22;:44;;;;;:50;;;;;;;;5846:57;;5818:12;;5853:50;5846:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5706:204;;;:::o;568:364:67:-;698:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;788:11:67;769:15:::1;783:1;788:11:::0;769:15:::1;:::i;:::-;768:31;767:38:::0;759:47:::1;;;::::0;::::1;;817:38;834:20:::0;;;::::1;::::0;;;;;;;;::::1;;817:38:::0;;:16:::1;:38:::0;;;;;:44;;;;;;;;:57;;;;;;;;:64:::1;877:4:::0;;817:57;:64:::1;:::i;:::-;-1:-1:-1::0;896:29:67::1;::::0;913:11;;907:4;;896:29:::1;::::0;;;::::1;568:364:::0;;;;;:::o;887:196:84:-;1031:39;1049:20;;;;;;;;;;;;;;1031:39;;:17;:39;;;;;:45;;;;;;;;1024:52;;995:13;;1031:45;1024:52;;;:::i;456:231::-;564:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;584:39:84::1;602:20:::0;;;::::1;::::0;;;;;;;;::::1;;584:39:::0;;:17:::1;:39:::0;;;;;:45;;;;;;;;:55:::1;632:7:::0;;584:45;:55:::1;:::i;:::-;;666:4;654:26;672:7;;654:26;;;;;;;:::i;1233:361:68:-:0;1354:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;1390:4:68::1;1375:33;1396:8;1406:1;1375:33;;;;;;;:::i;:::-;;;;;;;;291:2;1422:8;:25:::0;1418:97:::1;;1480:4;1468:36;1486:17;1501:1;1486:14;:17::i;:::-;1468:36;::::0;2678:42:111;2666:55;;;2648:74;;2636:2;2621:18;1468:36:68::1;;;;;;;1418:97;1524:43;1546:20:::0;;;::::1;::::0;;;;;;;;::::1;;1524:43:::0;;:21:::1;:43:::0;;;;;:49;;;;;;;;:59;;;;;;;;:63:::1;1586:1:::0;1524:59;:63:::1;:::i;:::-;;1233:361:::0;;;;:::o;1894:319:64:-;1994:22;;;:10;:22;1973:110;;;;;;;21195:2:111;1973:110:64;;;21177:21:111;21234:2;21214:18;;;21207:30;21273:34;21253:18;;;21246:62;21344:11;21324:18;;;21317:39;21373:19;;1973:110:64;;;;;;;;;2113:10;2094:30;;;;:18;:30;;;;;;;;;:40;;;;;;;;;;;;:51;;;;;;;;;;;;;2160:46;;567:41:111;;;2094:40:64;;2113:10;2160:46;;540:18:111;2160:46:64;;;;;;;1894:319;;:::o;4237:233:70:-;4400:41;4420:20;;;;;;;;;;;;;;4400:41;;:19;:41;;;;;:47;;;;;;;;:53;;;;;;;;:63;;;;;;;;;;4393:70;;4369:12;;4400:63;4393:70;;;:::i;1325:171:62:-;1416:22;1461:28;1480:1;1484:4;;1461:10;:28::i;908:203:69:-;1058:40;1077:20;;;;;;;;;;;;;;1058:40;;:18;:40;;;;;:46;;;;;;;;1051:53;;1023:12;;1058:46;1051:53;;;:::i;5141:411:70:-;5249:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;5269::70::1;5299:20:::0;;;::::1;::::0;;;;;;;;::::1;;5352:44:::0;;;:22:::1;:44:::0;;;;;:72;;;;;;;;5329:95;;5299:20;;5269:27;5329:95:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;5434:44:70::1;::::0;::::1;;::::0;;;:22:::1;:44;::::0;;;;;;;:50;;;;;;;;5329:95;;-1:-1:-1;5434:57:70::1;::::0;-1:-1:-1;5487:4:70;;5434:50;:57:::1;:::i;:::-;;5525:4;5506:39;5531:7;5540:4;;5506:39;;;;;;;;:::i;:::-;;;;;;;;5259:293;;5141:411:::0;;;;:::o;610:168:68:-;704:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;724:47:68::1;732:4;291:2;753:17;768:1;753:14;:17::i;724:47::-;610:168:::0;;;:::o;1134:185:62:-;1241:22;1286:26;1297:8;1307:4;;1286:10;:26::i;:::-;1279:33;1134:185;-1:-1:-1;;;;1134:185:62:o;769:298:83:-;904:4;425:18:66;438:4;425:12;:18::i;:::-;417:27;;;;;;920:44:83::1;943:20:::0;;;::::1;::::0;;;;;;;;::::1;;920:44:::0;;:22:::1;:44:::0;;;;;:50;;;;;;;;:63;;::::1;::::0;;;;;;;;;;:77;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1012:48;;2648:74:111;;;943:20:83;;1012:48:::1;::::0;2621:18:111;1012:48:83::1;;;;;;;769:298:::0;;;;:::o;1600:225:68:-;1759:43;1781:20;;;;;;;;;;;;;;1759:43;;:21;:43;;;;;:49;;;;;;;;:59;;;;;;;;1752:66;;1724:12;;1759:59;1752:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1600:225;;;;:::o;1257:269:86:-;1382:4;1421:46;;;1436:31;1421:46;;:98;;;1483:36;1507:11;1483:23;:36::i;2463:468:64:-;2531:4;2564:10;:34;2578:20;2564:34;;;:87;;-1:-1:-1;2614:10:64;:37;2628:23;2614:37;;2564:87;2547:151;;;-1:-1:-1;2683:4:64;;2463:468;-1:-1:-1;2463:468:64:o;2547:151::-;2723:15;;;;;;;;21959:25:111;;;2707:13:64;;2723:3;:9;;;;;21932:18:111;;2723:15:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2707:31;;2769:11;2752:29;;:5;:29;;;2748:102;;2805:34;;;;;;;;21959:25:111;;;2805:11:64;:19;;;;;21932:18:111;;2805:34:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2797:42;;2748:102;2866:19;;;2875:10;2866:19;;:58;;-1:-1:-1;2413:27:64;;;2386:4;2413:27;;;:18;:27;;;;;;;;2913:10;2413:37;;;;;;;;;;2889:35;2280:177;4097:213:29;4199:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:21:29;4236:15;;;4261:14;;;:23;;;4294:9;4236:3;4294:4;:9::i;5601:225::-;5742:11;;;;5782:9;;5662:12;;5705:114;;5771:34;;5742:11;5771:10;:34::i;:::-;5705:9;;;:114;:19;:114::i;6003:259::-;6173:16;;;;6207:15;;;;6089:12;;6136:119;;6207:34;;6173:16;;6207:34;:::i;5274:229:25:-;5376:4;5430:5;:12;5415:4;:11;:27;:81;;;;;5458:38;5465:4;5471:1;5474:5;5481:1;5484:4;:11;5458:6;:38::i;6261:1113:70:-;6523:15;;;;;;6504:16;6570:28;:4;6585:6;6593:4;6570:14;:28::i;:::-;6548:50;;6612:12;6608:760;;;6661:28;;;;;;;:19;:28;;;;;;;;:34;;;;;;;;:44;;;;;;;;:54;;;;;;;;;;:61;;;;;:::i;:::-;:82;;-1:-1:-1;6640:206:70;;6776:37;;;;;;;:28;:37;;;;;;;;:43;;;;;;;;:53;;;;;;;;:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6640:206;6867:28;;;;;;;:19;:28;;;;;;;;:34;;;;;;;;:44;;;;;;;;:54;;;;;;;;;;6859:63;;;:::i;:::-;6958:4;6941:38;6964:4;6970:8;6941:38;;;;;;;:::i;:::-;;;;;;;;6608:760;;;7031:28;;;;;;;:19;:28;;;;;;;;:34;;;;;;;;:44;;;;;;;;:54;;;;;;;;;;:61;;;;;:::i;:::-;;;7112:1;7031:82;7010:206;;7146:37;;;;;;;:28;:37;;;;;;;;:43;;;;;;;;:53;;;;;;;;:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;7010:206;7229:28;;;;;;;:19;:28;;;;;;;;:34;;;;;;;;:44;;;;;;;;:54;;;;;;;;;;:63;7286:6;7229:54;:63;:::i;:::-;;7328:4;7311:46;7334:4;7340:8;7350:6;7311:46;;;;;;;;:::i;:::-;;;;;;;;6494:880;;6261:1113;;;;;;;;:::o;4733:688:29:-;4809:15;;;;4795:11;;;:29;;;4853:9;;:16;-1:-1:-1;4834:68:29;;4733:688;:::o;4834:68::-;4937:11;4965:34;4976:4;:9;;;4987:4;:11;;;4965:10;:34::i;:::-;4951:4;:11;;;:48;;;;:::i;:::-;5062:9;;4937:62;;-1:-1:-1;5062:25:29;;4937:62;5062:20;:25::i;:::-;5047:40;;:12;;;:40;5097:8;5104:1;5097:8;;:::i;:::-;5128:9;;5097:8;;-1:-1:-1;5128:25:29;;5097:8;5128:20;:25::i;:::-;5115:38;;:10;;;:38;5163:8;5170:1;5163:8;;:::i;:::-;5192:9;;5163:8;;-1:-1:-1;5192:25:29;;5163:8;5192:20;:25::i;:::-;5181:36;;:8;;;:36;5227:8;5234:1;5227:8;;:::i;:::-;5294:9;;5227:8;;-1:-1:-1;5272:19:29;;5294:25;;5227:8;5294:20;:25::i;:::-;5272:47;;;-1:-1:-1;5329:8:29;5336:1;5329:8;;:::i;:::-;5347:16;;;:22;;;5329:8;-1:-1:-1;5397:17:29;5403:11;5329:8;5397:17;:::i;:::-;5379:15;;;;:35;;;;-1:-1:-1;;4733:688:29:o;2171:233:68:-;2258:17;2299:1;:8;2311:2;2299:14;2291:23;;;;;;-1:-1:-1;2369:2:68;2362:10;2356:17;2375:12;2352:36;;;2171:233::o;218:720:62:-;313:22;373:4;361:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:34;;400:9;395:513;415:15;;;395:513;;;455:22;;451:267;;497:18;526:4;;531:1;526:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:13;;536:2;;534:1;;526:13;:::i;:::-;518:22;;;:::i;:::-;497:43;;601:8;587:10;:22;558:145;;;;;;;25222:2:111;558:145:62;;;25204:21:111;25261:2;25241:18;;;25234:30;25300:34;25280:18;;;25273:62;25371:22;25351:18;;;25344:50;25411:19;;558:145:62;25020:416:111;558:145:62;479:239;451:267;732:12;;777:4;813;;818:1;813:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;769:65;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;731:103;;;;856:7;848:16;;;;;;891:6;878:7;886:1;878:10;;;;;;;;:::i;:::-;;;;;;:19;;;;437:471;;432:3;;;;;:::i;:::-;;;;395:513;;;;218:720;;;;;:::o;2410:190:68:-;2498:13;;;2508:2;2498:13;;;;;;;;;2468:14;;2498:13;;;;;;;;-1:-1:-1;;;2570:12:68;2563:20;;;;2558:2;2551:10;;2544:40;-1:-1:-1;2563:20:68;2410:190::o;1511:271:85:-;1636:4;1675:48;;;1690:33;1675:48;;:100;;;1739:36;1763:11;1739:23;:36::i;541:408:29:-;643:7;680:6;696:218;736:4;:11;730:3;:17;723:25;;;;:::i;:::-;762:16;781:19;:4;796:3;781:14;:19::i;:::-;762:38;;;-1:-1:-1;821:12:29;762:38;832:1;821:12;:::i;:::-;814:19;;;;:::i;:::-;;;851:8;863:1;851:13;847:57;;884:5;;;847:57;709:205;696:218;;;930:12;936:6;930:3;:12;:::i;9465:436:25:-;9633:11;;9585:12;;9617;9626:3;9617:6;:12;:::i;:::-;:27;;9609:36;;;;;;9656:16;9685:3;9675:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:14:25;-1:-1:-1;9656:33:25;-1:-1:-1;9783:2:25;9774:12;;;;9806:26;;;;9851:22;9774:12;9806:26;9869:3;9851:6;:22::i;3439:264::-;3613:4;3665:31;3672:5;3679:11;3692:3;3665:6;:31::i;:::-;3636:25;3643:4;3649:6;3657:3;3636:6;:25::i;:::-;:60;;3439:264;-1:-1:-1;;;;;;3439:264:25:o;6152:254::-;6296:11;;6251:10;;6285:7;:3;6291:1;6285:7;:::i;:::-;:22;;6277:31;;;;;;-1:-1:-1;6358:22:25;6372:1;6358:22;6352:29;6383:6;6348:42;;6152:254::o;6655:258::-;6799:11;;6754:10;;6788:7;:3;6794:1;6788:7;:::i;:::-;:22;;6780:31;;;;;;-1:-1:-1;6861:22:25;6875:1;6861:22;6855:29;6886:10;6851:46;;6655:258::o;1089:269:84:-;1214:4;1253:46;;;1268:31;1253:46;;:98;;;1315:36;1339:11;1315:23;:36::i;5750:153:25:-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;:::o;8595:645::-;8768:2;8761:3;:9;8754:165;;8837:10;;8824:24;;8875:10;8883:2;8831:4;8875:10;:::i;:::-;;-1:-1:-1;8899:9:25;8906:2;8899:9;;:::i;:::-;;-1:-1:-1;8772:9:25;8779:2;8772:9;;:::i;:::-;;;8754:165;;;9081:10;;9140:11;;9007:2;:8;;;;9001:3;:15;-1:-1:-1;;9000:21:25;9093:9;;9077:26;;;9136:22;;9188:21;9175:35;;8595:645::o;311:274::-;475:11;;428;;459:12;468:3;459:6;:12;:::i;:::-;:27;;451:36;;;;;;-1:-1:-1;537:26:25;;551:2;537:26;527:42;;311:274::o;2860::83:-;2985:4;3024:51;;;3039:36;3024:51;;:103;;;3091:36;3115:11;6041:4:70;6080:51;;;6095:36;6080:51;;:116;;-1:-1:-1;6147:49:70;;;6162:34;6147:49;6080:116;:168;;;;6212:36;6236:11;1242:4:69;1281:53;;;1296:38;1281:53;;:105;;;1350:36;1374:11;1956:4:68;1995:46;;;2010:31;1995:46;;:111;;-1:-1:-1;2057:49:68;;;2072:34;2057:49;1995:111;:163;;;;2122:36;2146:11;2049:4:67;2088:45;;;2103:30;2088:45;;:97;;;2149:36;2173:11;957:4:66;996:53;;;1011:38;996:53;;:105;;;1065:36;1089:11;1627:4:62;1666:47;;;1681:32;1666:47;;:99;;-1:-1:-1;952:25:16;937:40;;;;1729:36:62;829:155:16;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:219:111:-;81:20;;141:66;130:78;;120:89;;110:117;;223:1;220;213:12;110:117;14:219;;;:::o;238:184::-;296:6;349:2;337:9;328:7;324:23;320:32;317:52;;;365:1;362;355:12;317:52;388:28;406:9;388:28;:::i;619:347::-;670:8;680:6;734:3;727:4;719:6;715:17;711:27;701:55;;752:1;749;742:12;701:55;-1:-1:-1;775:20:111;;818:18;807:30;;804:50;;;850:1;847;840:12;804:50;887:4;879:6;875:17;863:29;;939:3;932:4;923:6;915;911:19;907:30;904:39;901:59;;;956:1;953;946:12;971:477;1050:6;1058;1066;1119:2;1107:9;1098:7;1094:23;1090:32;1087:52;;;1135:1;1132;1125:12;1087:52;1171:9;1158:23;1148:33;;1232:2;1221:9;1217:18;1204:32;1259:18;1251:6;1248:30;1245:50;;;1291:1;1288;1281:12;1245:50;1330:58;1380:7;1371:6;1360:9;1356:22;1330:58;:::i;:::-;971:477;;1407:8;;-1:-1:-1;1304:84:111;;-1:-1:-1;;;;971:477:111:o;1453:787::-;1554:6;1562;1570;1578;1586;1639:2;1627:9;1618:7;1614:23;1610:32;1607:52;;;1655:1;1652;1645:12;1607:52;1691:9;1678:23;1668:33;;1752:2;1741:9;1737:18;1724:32;1775:18;1816:2;1808:6;1805:14;1802:34;;;1832:1;1829;1822:12;1802:34;1871:58;1921:7;1912:6;1901:9;1897:22;1871:58;:::i;:::-;1948:8;;-1:-1:-1;1845:84:111;-1:-1:-1;2036:2:111;2021:18;;2008:32;;-1:-1:-1;2052:16:111;;;2049:36;;;2081:1;2078;2071:12;2049:36;;2120:60;2172:7;2161:8;2150:9;2146:24;2120:60;:::i;:::-;1453:787;;;;-1:-1:-1;1453:787:111;;-1:-1:-1;2199:8:111;;2094:86;1453:787;-1:-1:-1;;;1453:787:111:o;2245:252::-;2312:6;2320;2373:2;2361:9;2352:7;2348:23;2344:32;2341:52;;;2389:1;2386;2379:12;2341:52;2425:9;2412:23;2402:33;;2454:37;2487:2;2476:9;2472:18;2454:37;:::i;:::-;2444:47;;2245:252;;;;;:::o;2733:248::-;2801:6;2809;2862:2;2850:9;2841:7;2837:23;2833:32;2830:52;;;2878:1;2875;2868:12;2830:52;-1:-1:-1;;2901:23:111;;;2971:2;2956:18;;;2943:32;;-1:-1:-1;2733:248:111:o;2986:250::-;3071:1;3081:113;3095:6;3092:1;3089:13;3081:113;;;3171:11;;;3165:18;3152:11;;;3145:39;3117:2;3110:10;3081:113;;;-1:-1:-1;;3228:1:111;3210:16;;3203:27;2986:250::o;3241:329::-;3282:3;3320:5;3314:12;3347:6;3342:3;3335:19;3363:76;3432:6;3425:4;3420:3;3416:14;3409:4;3402:5;3398:16;3363:76;:::i;:::-;3484:2;3472:15;-1:-1:-1;;3468:88:111;3459:98;;;;3559:4;3455:109;;3241:329;-1:-1:-1;;3241:329:111:o;3575:288::-;3750:6;3739:9;3732:25;3793:2;3788;3777:9;3773:18;3766:30;3713:4;3813:44;3853:2;3842:9;3838:18;3830:6;3813:44;:::i;3868:316::-;3945:6;3953;3961;4014:2;4002:9;3993:7;3989:23;3985:32;3982:52;;;4030:1;4027;4020:12;3982:52;-1:-1:-1;;4053:23:111;;;4123:2;4108:18;;4095:32;;-1:-1:-1;4174:2:111;4159:18;;;4146:32;;3868:316;-1:-1:-1;3868:316:111:o;4189:180::-;4248:6;4301:2;4289:9;4280:7;4276:23;4272:32;4269:52;;;4317:1;4314;4307:12;4269:52;-1:-1:-1;4340:23:111;;4189:180;-1:-1:-1;4189:180:111:o;5357:219::-;5506:2;5495:9;5488:21;5469:4;5526:44;5566:2;5555:9;5551:18;5543:6;5526:44;:::i;5803:545::-;5891:6;5899;5907;5915;5968:2;5956:9;5947:7;5943:23;5939:32;5936:52;;;5984:1;5981;5974:12;5936:52;6020:9;6007:23;5997:33;;6077:2;6066:9;6062:18;6049:32;6039:42;;6132:2;6121:9;6117:18;6104:32;6159:18;6151:6;6148:30;6145:50;;;6191:1;6188;6181:12;6145:50;6230:58;6280:7;6271:6;6260:9;6256:22;6230:58;:::i;:::-;5803:545;;;;-1:-1:-1;6307:8:111;-1:-1:-1;;;;5803:545:111:o;6353:184::-;6405:77;6402:1;6395:88;6502:4;6499:1;6492:15;6526:4;6523:1;6516:15;6542:1116;6628:6;6636;6644;6697:2;6685:9;6676:7;6672:23;6668:32;6665:52;;;6713:1;6710;6703:12;6665:52;6749:9;6736:23;6726:33;;6806:2;6795:9;6791:18;6778:32;6768:42;;6861:2;6850:9;6846:18;6833:32;6884:18;6925:2;6917:6;6914:14;6911:34;;;6941:1;6938;6931:12;6911:34;6979:6;6968:9;6964:22;6954:32;;7024:7;7017:4;7013:2;7009:13;7005:27;6995:55;;7046:1;7043;7036:12;6995:55;7082:2;7069:16;7104:2;7100;7097:10;7094:36;;;7110:18;;:::i;:::-;7244:2;7238:9;7306:4;7298:13;;-1:-1:-1;;7294:22:111;;;7318:2;7290:31;7286:40;7274:53;;;7342:18;;;7362:22;;;7339:46;7336:72;;;7388:18;;:::i;:::-;7428:10;7424:2;7417:22;7463:2;7455:6;7448:18;7503:7;7498:2;7493;7489;7485:11;7481:20;7478:33;7475:53;;;7524:1;7521;7514:12;7475:53;7580:2;7575;7571;7567:11;7562:2;7554:6;7550:15;7537:46;7625:1;7620:2;7615;7607:6;7603:15;7599:24;7592:35;7646:6;7636:16;;;;;;;6542:1116;;;;;:::o;7663:154::-;7749:42;7742:5;7738:54;7731:5;7728:65;7718:93;;7807:1;7804;7797:12;7822:416;7887:6;7895;7948:2;7936:9;7927:7;7923:23;7919:32;7916:52;;;7964:1;7961;7954:12;7916:52;8003:9;7990:23;8022:31;8047:5;8022:31;:::i;:::-;8072:5;-1:-1:-1;8129:2:111;8114:18;;8101:32;8171:15;;8164:23;8152:36;;8142:64;;8202:1;8199;8192:12;8142:64;8225:7;8215:17;;;7822:416;;;;;:::o;8243:408::-;8319:6;8327;8335;8388:2;8376:9;8367:7;8363:23;8359:32;8356:52;;;8404:1;8401;8394:12;8356:52;8440:9;8427:23;8417:33;;8497:2;8486:9;8482:18;8469:32;8459:42;;8551:2;8540:9;8536:18;8523:32;8595:6;8588:5;8584:18;8577:5;8574:29;8564:57;;8617:1;8614;8607:12;8564:57;8640:5;8630:15;;;8243:408;;;;;:::o;8656:374::-;8726:8;8736:6;8790:3;8783:4;8775:6;8771:17;8767:27;8757:55;;8808:1;8805;8798:12;8757:55;-1:-1:-1;8831:20:111;;8874:18;8863:30;;8860:50;;;8906:1;8903;8896:12;8860:50;8943:4;8935:6;8931:17;8919:29;;9003:3;8996:4;8986:6;8983:1;8979:14;8971:6;8967:27;8963:38;8960:47;8957:67;;;9020:1;9017;9010:12;9035:455;9132:6;9140;9193:2;9181:9;9172:7;9168:23;9164:32;9161:52;;;9209:1;9206;9199:12;9161:52;9249:9;9236:23;9282:18;9274:6;9271:30;9268:50;;;9314:1;9311;9304:12;9268:50;9353:77;9422:7;9413:6;9402:9;9398:22;9353:77;:::i;:::-;9449:8;;9327:103;;-1:-1:-1;9035:455:111;-1:-1:-1;;;;9035:455:111:o;9495:859::-;9655:4;9684:2;9724;9713:9;9709:18;9754:2;9743:9;9736:21;9777:6;9812;9806:13;9843:6;9835;9828:22;9881:2;9870:9;9866:18;9859:25;;9943:2;9933:6;9930:1;9926:14;9915:9;9911:30;9907:39;9893:53;;9981:2;9973:6;9969:15;10002:1;10012:313;10026:6;10023:1;10020:13;10012:313;;;10115:66;10103:9;10095:6;10091:22;10087:95;10082:3;10075:108;10206:39;10238:6;10229;10223:13;10206:39;:::i;:::-;10196:49;-1:-1:-1;10303:12:111;;;;10268:15;;;;10048:1;10041:9;10012:313;;;-1:-1:-1;10342:6:111;;9495:859;-1:-1:-1;;;;;;;9495:859:111:o;10612:315::-;10680:6;10688;10741:2;10729:9;10720:7;10716:23;10712:32;10709:52;;;10757:1;10754;10747:12;10709:52;10793:9;10780:23;10770:33;;10853:2;10842:9;10838:18;10825:32;10866:31;10891:5;10866:31;:::i;11137:523::-;11243:6;11251;11259;11312:2;11300:9;11291:7;11287:23;11283:32;11280:52;;;11328:1;11325;11318:12;11280:52;11364:9;11351:23;11341:33;;11425:2;11414:9;11410:18;11397:32;11452:18;11444:6;11441:30;11438:50;;;11484:1;11481;11474:12;11438:50;11523:77;11592:7;11583:6;11572:9;11568:22;11523:77;:::i;11665:387::-;11741:6;11749;11757;11810:2;11798:9;11789:7;11785:23;11781:32;11778:52;;;11826:1;11823;11816:12;11778:52;11862:9;11849:23;11839:33;;11891:37;11924:2;11913:9;11909:18;11891:37;:::i;:::-;11881:47;;11978:2;11967:9;11963:18;11950:32;11991:31;12016:5;11991:31;:::i;12057:388::-;12125:6;12133;12186:2;12174:9;12165:7;12161:23;12157:32;12154:52;;;12202:1;12199;12192:12;12154:52;12241:9;12228:23;12260:31;12285:5;12260:31;:::i;:::-;12310:5;-1:-1:-1;12367:2:111;12352:18;;12339:32;12380:33;12339:32;12380:33;:::i;12450:287::-;12579:3;12617:6;12611:13;12633:66;12692:6;12687:3;12680:4;12672:6;12668:17;12633:66;:::i;:::-;12715:16;;;;;12450:287;-1:-1:-1;;12450:287:111:o;12742:184::-;12794:77;12791:1;12784:88;12891:4;12888:1;12881:15;12915:4;12912:1;12905:15;12931:128;12998:9;;;13019:11;;;13016:37;;;13033:18;;:::i;13064:273::-;13249:6;13241;13236:3;13223:33;13205:3;13275:16;;13300:13;;;13275:16;13064:273;-1:-1:-1;13064:273:111:o;13342:437::-;13421:1;13417:12;;;;13464;;;13485:61;;13539:4;13531:6;13527:17;13517:27;;13485:61;13592:2;13584:6;13581:14;13561:18;13558:38;13555:218;;13629:77;13626:1;13619:88;13730:4;13727:1;13720:15;13758:4;13755:1;13748:15;13555:218;;13342:437;;;:::o;13910:545::-;14012:2;14007:3;14004:11;14001:448;;;14048:1;14073:5;14069:2;14062:17;14118:4;14114:2;14104:19;14188:2;14176:10;14172:19;14169:1;14165:27;14159:4;14155:38;14224:4;14212:10;14209:20;14206:47;;;-1:-1:-1;14247:4:111;14206:47;14302:2;14297:3;14293:12;14290:1;14286:20;14280:4;14276:31;14266:41;;14357:82;14375:2;14368:5;14365:13;14357:82;;;14420:17;;;14401:1;14390:13;14357:82;;;14361:3;;;13910:545;;;:::o;14691:1325::-;14815:18;14810:3;14807:27;14804:53;;;14837:18;;:::i;:::-;14866:94;14956:3;14916:38;14948:4;14942:11;14916:38;:::i;:::-;14910:4;14866:94;:::i;:::-;14986:1;15011:2;15006:3;15003:11;15028:1;15023:735;;;;15802:1;15819:3;15816:93;;;-1:-1:-1;15875:19:111;;;15862:33;15816:93;-1:-1:-1;;14588:1:111;14584:11;;;14580:84;14576:89;14566:100;14672:1;14668:11;;;14563:117;15922:78;;14996:1014;;15023:735;13857:1;13850:14;;;13894:4;13881:18;;-1:-1:-1;;15059:76:111;;;15219:9;15241:229;15255:7;15252:1;15249:14;15241:229;;;15344:19;;;15331:33;15316:49;;15451:4;15436:20;;;;15404:1;15392:14;;;;15271:12;15241:229;;;15245:3;15498;15489:7;15486:16;15483:219;;;-1:-1:-1;;15612:3:111;15606;15603:1;15599:11;15595:21;15591:94;15587:99;15574:9;15569:3;15565:19;15552:33;15548:139;15540:6;15533:155;15483:219;;;15745:1;15739:3;15736:1;15732:11;15728:19;15722:4;15715:33;14996:1014;;14691:1325;;;:::o;16021:326::-;16110:6;16105:3;16098:19;16162:6;16155:5;16148:4;16143:3;16139:14;16126:43;;16214:1;16207:4;16198:6;16193:3;16189:16;16185:27;16178:38;16080:3;16336:4;-1:-1:-1;;16261:2:111;16253:6;16249:15;16245:88;16240:3;16236:98;16232:109;16225:116;;16021:326;;;;:::o;16352:437::-;16569:2;16558:9;16551:21;16532:4;16595:62;16653:2;16642:9;16638:18;16630:6;16622;16595:62;:::i;:::-;16705:9;16697:6;16693:22;16688:2;16677:9;16673:18;16666:50;16733;16776:6;16768;16760;16733:50;:::i;:::-;16725:58;16352:437;-1:-1:-1;;;;;;;16352:437:111:o;17047:184::-;17099:77;17096:1;17089:88;17196:4;17193:1;17186:15;17220:4;17217:1;17210:15;18564:245;18721:2;18710:9;18703:21;18684:4;18741:62;18799:2;18788:9;18784:18;18776:6;18768;18741:62;:::i;18814:209::-;18852:3;18880:18;18933:2;18926:5;18922:14;18960:2;18951:7;18948:15;18945:41;;18966:18;;:::i;:::-;19015:1;19002:15;;18814:209;-1:-1:-1;;;18814:209:111:o;19519:1469::-;19643:3;19637:10;19670:18;19662:6;19659:30;19656:56;;;19692:18;;:::i;:::-;19721:97;19811:6;19771:38;19803:4;19797:11;19771:38;:::i;:::-;19765:4;19721:97;:::i;:::-;19873:4;;19937:2;19926:14;;19954:1;19949:782;;;;20775:1;20792:6;20789:89;;;-1:-1:-1;20844:19:111;;;20838:26;20789:89;-1:-1:-1;;14588:1:111;14584:11;;;14580:84;14576:89;14566:100;14672:1;14668:11;;;14563:117;20891:81;;19919:1063;;19949:782;13857:1;13850:14;;;13894:4;13881:18;;-1:-1:-1;;19985:79:111;;;20162:236;20176:7;20173:1;20170:14;20162:236;;;20265:19;;;20259:26;20244:42;;20357:27;;;;20325:1;20313:14;;;;20192:19;;20162:236;;;20166:3;20426:6;20417:7;20414:19;20411:261;;;20487:19;;;20481:26;-1:-1:-1;;20570:1:111;20566:14;;;20582:3;20562:24;20558:97;20554:102;20539:118;20524:134;;20411:261;-1:-1:-1;;;;;20718:1:111;20702:14;;;20698:22;20685:36;;-1:-1:-1;19519:1469:111:o;21403:405::-;21606:2;21595:9;21588:21;21569:4;21632:44;21672:2;21661:9;21657:18;21649:6;21632:44;:::i;:::-;21724:9;21716:6;21712:22;21707:2;21696:9;21692:18;21685:50;21752;21795:6;21787;21779;21752:50;:::i;:::-;21744:58;21403:405;-1:-1:-1;;;;;;21403:405:111:o;21995:251::-;22065:6;22118:2;22106:9;22097:7;22093:23;22089:32;22086:52;;;22134:1;22131;22124:12;22086:52;22166:9;22160:16;22185:31;22210:5;22185:31;:::i;22433:241::-;22471:3;22515:6;22508:5;22504:18;22541:7;22531:41;;22552:18;;:::i;:::-;-1:-1:-1;;22588:80:111;;22433:241;-1:-1:-1;;22433:241:111:o;22679:299::-;22852:2;22841:9;22834:21;22815:4;22872:44;22912:2;22901:9;22897:18;22889:6;22872:44;:::i;:::-;22864:52;;22964:6;22956;22952:19;22947:2;22936:9;22932:18;22925:47;22679:299;;;;;:::o;22983:197::-;23021:3;23049:6;23090:2;23083:5;23079:14;23117:2;23108:7;23105:15;23102:41;;23123:18;;:::i;23185:459::-;23404:2;23393:9;23386:21;23367:4;23430:44;23470:2;23459:9;23455:18;23447:6;23430:44;:::i;:::-;23522:6;23514;23510:19;23505:2;23494:9;23490:18;23483:47;23578:9;23570:6;23566:22;23561:2;23550:9;23546:18;23539:50;23606:32;23631:6;23623;23606:32;:::i;23649:125::-;23714:9;;;23735:10;;;23732:36;;;23748:18;;:::i;23779:580::-;23856:4;23862:6;23922:11;23909:25;24012:66;24001:8;23985:14;23981:29;23977:102;23957:18;23953:127;23943:155;;24094:1;24091;24084:12;23943:155;24121:33;;24173:20;;;-1:-1:-1;24216:18:111;24205:30;;24202:50;;;24248:1;24245;24238:12;24202:50;24281:4;24269:17;;-1:-1:-1;24312:14:111;24308:27;;;24298:38;;24295:58;;;24349:1;24346;24339:12;24364:331;24469:9;24480;24522:8;24510:10;24507:24;24504:44;;;24544:1;24541;24534:12;24504:44;24573:6;24563:8;24560:20;24557:40;;;24593:1;24590;24583:12;24557:40;-1:-1:-1;;24619:23:111;;;24664:25;;;;;-1:-1:-1;24364:331:111:o;24700:315::-;24820:19;;24859:2;24851:11;;24848:161;;;-1:-1:-1;;24920:2:111;24916:12;;;24913:1;24909:20;24905:93;24894:105;24700:315;;;;:::o;25717:195::-;25756:3;-1:-1:-1;;25780:5:111;25777:77;25774:103;;25857:18;;:::i;:::-;-1:-1:-1;25904:1:111;25893:13;;25717:195::o;25917:184::-;25969:77;25966:1;25959:88;26066:4;26063:1;26056:15;26090:4;26087:1;26080:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2573400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "ABI(bytes32,uint256)": "infinite",
                "addr(bytes32)": "infinite",
                "addr(bytes32,uint256)": "infinite",
                "clearRecords(bytes32)": "infinite",
                "contenthash(bytes32)": "infinite",
                "dnsRecord(bytes32,bytes32,uint16)": "infinite",
                "hasDNSRecords(bytes32,bytes32)": "4862",
                "interfaceImplementer(bytes32,bytes4)": "infinite",
                "isApprovedForAll(address,address)": "infinite",
                "multicall(bytes[])": "infinite",
                "multicallWithNodeCheck(bytes32,bytes[])": "infinite",
                "name(bytes32)": "infinite",
                "pubkey(bytes32)": "6926",
                "recordVersions(bytes32)": "2545",
                "setABI(bytes32,uint256,bytes)": "infinite",
                "setAddr(bytes32,address)": "infinite",
                "setAddr(bytes32,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26670",
                "setContenthash(bytes32,bytes)": "infinite",
                "setDNSRecords(bytes32,bytes)": "infinite",
                "setInterface(bytes32,bytes4,address)": "infinite",
                "setName(bytes32,string)": "infinite",
                "setPubkey(bytes32,bytes32,bytes32)": "infinite",
                "setText(bytes32,string,string)": "infinite",
                "setZonehash(bytes32,bytes)": "infinite",
                "supportsInterface(bytes4)": "infinite",
                "text(bytes32,string)": "infinite",
                "zonehash(bytes32)": "infinite"
              },
              "internal": {
                "isAuthorised(bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {
              "ABI(bytes32,uint256)": "2203ab56",
              "addr(bytes32)": "3b3b57de",
              "addr(bytes32,uint256)": "f1cb7e06",
              "clearRecords(bytes32)": "3603d758",
              "contenthash(bytes32)": "bc1c58d1",
              "dnsRecord(bytes32,bytes32,uint16)": "a8fa5682",
              "hasDNSRecords(bytes32,bytes32)": "4cbf6ba4",
              "interfaceImplementer(bytes32,bytes4)": "124a319c",
              "isApprovedForAll(address,address)": "e985e9c5",
              "multicall(bytes[])": "ac9650d8",
              "multicallWithNodeCheck(bytes32,bytes[])": "e32954eb",
              "name(bytes32)": "691f3431",
              "pubkey(bytes32)": "c8690233",
              "recordVersions(bytes32)": "d700ff33",
              "setABI(bytes32,uint256,bytes)": "623195b0",
              "setAddr(bytes32,address)": "d5fa2b00",
              "setAddr(bytes32,uint256,bytes)": "8b95dd71",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setContenthash(bytes32,bytes)": "304e6ade",
              "setDNSRecords(bytes32,bytes)": "0af179d7",
              "setInterface(bytes32,bytes4,address)": "e59d895d",
              "setName(bytes32,string)": "77372213",
              "setPubkey(bytes32,bytes32,bytes32)": "29cd62ea",
              "setText(bytes32,string,string)": "10f13a8c",
              "setZonehash(bytes32,bytes)": "ce3decdc",
              "supportsInterface(bytes4)": "01ffc9a7",
              "text(bytes32,string)": "59d1d43c",
              "zonehash(bytes32)": "5c98042b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"_ens\",\"type\":\"address\"},{\"internalType\":\"contract INameWrapper\",\"name\":\"wrapperAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trustedETHController\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trustedReverseRegistrar\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lastzonehash\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zonehash\",\"type\":\"bytes\"}],\"name\":\"DNSZonehashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"hasDNSRecords\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"interfaceImplementer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodehash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicallWithNodeCheck\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDNSRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"setInterface\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setZonehash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"zonehash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"ABI(bytes32,uint256)\":{\"params\":{\"contentTypes\":\"A bitwise OR of the ABI formats accepted by the caller.\",\"node\":\"The ENS node to query\"},\"returns\":{\"_0\":\"contentType The content type of the return value\",\"_1\":\"data The ABI data\"}},\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated address.\"}},\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"contenthash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}},\"dnsRecord(bytes32,bytes32,uint16)\":{\"params\":{\"name\":\"the keccak-256 hash of the fully-qualified name for which to fetch the record\",\"node\":\"the namehash of the node for which to fetch the record\",\"resource\":\"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\"},\"returns\":{\"_0\":\"the DNS record in wire format if present, otherwise empty\"}},\"hasDNSRecords(bytes32,bytes32)\":{\"params\":{\"name\":\"the namehash of the node for which to check the records\",\"node\":\"the namehash of the node for which to check the records\"}},\"interfaceImplementer(bytes32,bytes4)\":{\"params\":{\"interfaceID\":\"The EIP 165 interface ID to check for.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The address that implements this interface, or 0 if the interface is unsupported.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated name.\"}},\"pubkey(bytes32)\":{\"params\":{\"node\":\"The ENS node to query\"},\"returns\":{\"x\":\"The X coordinate of the curve point for the public key.\",\"y\":\"The Y coordinate of the curve point for the public key.\"}},\"setABI(bytes32,uint256,bytes)\":{\"params\":{\"contentType\":\"The content type of the ABI\",\"data\":\"The ABI data.\",\"node\":\"The node to update.\"}},\"setAddr(bytes32,address)\":{\"params\":{\"a\":\"The address to set.\",\"node\":\"The node to update.\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setContenthash(bytes32,bytes)\":{\"params\":{\"hash\":\"The contenthash to set\",\"node\":\"The node to update.\"}},\"setDNSRecords(bytes32,bytes)\":{\"params\":{\"data\":\"the DNS wire format records to set\",\"node\":\"the namehash of the node for which to set the records\"}},\"setInterface(bytes32,bytes4,address)\":{\"params\":{\"implementer\":\"The address of a contract that implements this interface for this node.\",\"interfaceID\":\"The EIP 165 interface ID.\",\"node\":\"The node to update.\"}},\"setName(bytes32,string)\":{\"params\":{\"node\":\"The node to update.\"}},\"setPubkey(bytes32,bytes32,bytes32)\":{\"params\":{\"node\":\"The ENS node to query\",\"x\":\"the X coordinate of the curve point for the public key.\",\"y\":\"the Y coordinate of the curve point for the public key.\"}},\"setText(bytes32,string,string)\":{\"params\":{\"key\":\"The key to set.\",\"node\":\"The node to update.\",\"value\":\"The text data value to set.\"}},\"setZonehash(bytes32,bytes)\":{\"params\":{\"hash\":\"The zonehash to set\",\"node\":\"The node to update.\"}},\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated text data.\"}},\"zonehash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"ABI(bytes32,uint256)\":{\"notice\":\"Returns the ABI associated with an ENS node. Defined in EIP205.\"},\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"contenthash(bytes32)\":{\"notice\":\"Returns the contenthash associated with an ENS node.\"},\"dnsRecord(bytes32,bytes32,uint16)\":{\"notice\":\"Obtain a DNS record.\"},\"hasDNSRecords(bytes32,bytes32)\":{\"notice\":\"Check if a given node has records.\"},\"interfaceImplementer(bytes32,bytes4)\":{\"notice\":\"Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned.\"},\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"},\"pubkey(bytes32)\":{\"notice\":\"Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619.\"},\"setABI(bytes32,uint256,bytes)\":{\"notice\":\"Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setContenthash(bytes32,bytes)\":{\"notice\":\"Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setDNSRecords(bytes32,bytes)\":{\"notice\":\"Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:     a.example.com IN A 1.2.3.4     a.example.com IN A 5.6.7.8     www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:     a.example.com IN A 1.2.3.4     www.example.com IN CNAME a.example.com.     a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first.\"},\"setInterface(bytes32,bytes4,address)\":{\"notice\":\"Sets an interface associated with a name. Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\"},\"setName(bytes32,string)\":{\"notice\":\"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry.\"},\"setPubkey(bytes32,bytes32,bytes32)\":{\"notice\":\"Sets the SECP256k1 public key associated with an ENS node.\"},\"setText(bytes32,string,string)\":{\"notice\":\"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry.\"},\"setZonehash(bytes32,bytes)\":{\"notice\":\"setZonehash sets the hash for the zone. May only be called by the owner of that node in the ENS registry.\"},\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"},\"zonehash(bytes32)\":{\"notice\":\"zonehash obtains the hash for the zone.\"}},\"notice\":\"A simple resolver anyone can use; only allows the owner of a node to set its address.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/PublicResolver.sol\":\"PublicResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/resolvers/IMulticallable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IMulticallable {\\n    function multicall(bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    function multicallWithNodeCheck(bytes32, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n}\\n\",\"keccak256\":\"0x78b9070106d539e070dde613caaa03522143ab55c206a2efd5664c9da783741a\",\"license\":\"MIT\"},\"contracts/resolvers/Multicallable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\nimport \\\"./IMulticallable.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nabstract contract Multicallable is IMulticallable, ERC165 {\\n    function _multicall(bytes32 nodehash, bytes[] calldata data)\\n        internal\\n        returns (bytes[] memory results)\\n    {\\n        results = new bytes[](data.length);\\n        for (uint256 i = 0; i < data.length; i++) {\\n            if (nodehash != bytes32(0)) {\\n                bytes32 txNamehash = bytes32(data[i][4:36]);\\n                require(\\n                    txNamehash == nodehash,\\n                    \\\"multicall: All records must have a matching namehash\\\"\\n                );\\n            }\\n            (bool success, bytes memory result) = address(this).delegatecall(\\n                data[i]\\n            );\\n            require(success);\\n            results[i] = result;\\n        }\\n        return results;\\n    }\\n\\n    // This function provides an extra security check when called\\n    // from priviledged contracts (such as EthRegistrarController)\\n    // that can set records on behalf of the node owners\\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results)\\n    {\\n        return _multicall(nodehash, data);\\n    }\\n\\n    function multicall(bytes[] calldata data)\\n        public\\n        override\\n        returns (bytes[] memory results)\\n    {\\n        return _multicall(bytes32(0), data);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IMulticallable).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x0232b14c50b5c8bef0777fa8c130228a6a2c10b27f9be08760d40a44fd8823e9\",\"license\":\"MIT\"},\"contracts/resolvers/PublicResolver.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"./profiles/ABIResolver.sol\\\";\\nimport \\\"./profiles/AddrResolver.sol\\\";\\nimport \\\"./profiles/ContentHashResolver.sol\\\";\\nimport \\\"./profiles/DNSResolver.sol\\\";\\nimport \\\"./profiles/InterfaceResolver.sol\\\";\\nimport \\\"./profiles/NameResolver.sol\\\";\\nimport \\\"./profiles/PubkeyResolver.sol\\\";\\nimport \\\"./profiles/TextResolver.sol\\\";\\nimport \\\"./Multicallable.sol\\\";\\n\\ninterface INameWrapper {\\n    function ownerOf(uint256 id) external view returns (address);\\n}\\n\\n/**\\n * A simple resolver anyone can use; only allows the owner of a node to set its\\n * address.\\n */\\ncontract PublicResolver is\\n    Multicallable,\\n    ABIResolver,\\n    AddrResolver,\\n    ContentHashResolver,\\n    DNSResolver,\\n    InterfaceResolver,\\n    NameResolver,\\n    PubkeyResolver,\\n    TextResolver\\n{\\n    ENS immutable ens;\\n    INameWrapper immutable nameWrapper;\\n    address immutable trustedETHController;\\n    address immutable trustedReverseRegistrar;\\n\\n    /**\\n     * A mapping of operators. An address that is authorised for an address\\n     * may make any changes to the name that the owner could, but may not update\\n     * the set of authorisations.\\n     * (owner, operator) => approved\\n     */\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    constructor(\\n        ENS _ens,\\n        INameWrapper wrapperAddress,\\n        address _trustedETHController,\\n        address _trustedReverseRegistrar\\n    ) {\\n        ens = _ens;\\n        nameWrapper = wrapperAddress;\\n        trustedETHController = _trustedETHController;\\n        trustedReverseRegistrar = _trustedReverseRegistrar;\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external {\\n        require(\\n            msg.sender != operator,\\n            \\\"ERC1155: setting approval status for self\\\"\\n        );\\n\\n        _operatorApprovals[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator)\\n        public\\n        view\\n        returns (bool)\\n    {\\n        return _operatorApprovals[account][operator];\\n    }\\n\\n    function isAuthorised(bytes32 node) internal view override returns (bool) {\\n        if (\\n            msg.sender == trustedETHController ||\\n            msg.sender == trustedReverseRegistrar\\n        ) {\\n            return true;\\n        }\\n        address owner = ens.owner(node);\\n        if (owner == address(nameWrapper)) {\\n            owner = nameWrapper.ownerOf(uint256(node));\\n        }\\n        return owner == msg.sender || isApprovedForAll(owner, msg.sender);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        override(\\n            Multicallable,\\n            ABIResolver,\\n            AddrResolver,\\n            ContentHashResolver,\\n            DNSResolver,\\n            InterfaceResolver,\\n            NameResolver,\\n            PubkeyResolver,\\n            TextResolver\\n        )\\n        returns (bool)\\n    {\\n        return super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x95e776158dbaaaa58c3918787aa4e6bb22df44c6873b57129ab7e2ddcc2b6927\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\nabstract contract ABIResolver is IABIResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_abis;\\n\\n    /**\\n     * Sets the ABI associated with an ENS node.\\n     * Nodes may have one ABI of each content type. To remove an ABI, set it to\\n     * the empty string.\\n     * @param node The node to update.\\n     * @param contentType The content type of the ABI\\n     * @param data The ABI data.\\n     */\\n    function setABI(\\n        bytes32 node,\\n        uint256 contentType,\\n        bytes calldata data\\n    ) external virtual authorised(node) {\\n        // Content types must be powers of 2\\n        require(((contentType - 1) & contentType) == 0);\\n\\n        versionable_abis[recordVersions[node]][node][contentType] = data;\\n        emit ABIChanged(node, contentType);\\n    }\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (uint256, bytes memory)\\n    {\\n        mapping(uint256 => bytes) storage abiset = versionable_abis[\\n            recordVersions[node]\\n        ][node];\\n\\n        for (\\n            uint256 contentType = 1;\\n            contentType <= contentTypes;\\n            contentType <<= 1\\n        ) {\\n            if (\\n                (contentType & contentTypes) != 0 &&\\n                abiset[contentType].length > 0\\n            ) {\\n                return (contentType, abiset[contentType]);\\n            }\\n        }\\n\\n        return (0, bytes(\\\"\\\"));\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IABIResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x8f6fc2c3aeb2eee665ae4b2db8efe137869509a2fba4ec3dfd381257e64c82c4\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/AddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IAddrResolver.sol\\\";\\nimport \\\"./IAddressResolver.sol\\\";\\n\\nabstract contract AddrResolver is\\n    IAddrResolver,\\n    IAddressResolver,\\n    ResolverBase\\n{\\n    uint256 private constant COIN_TYPE_ETH = 60;\\n\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_addresses;\\n\\n    /**\\n     * Sets the address associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param a The address to set.\\n     */\\n    function setAddr(bytes32 node, address a)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        setAddr(node, COIN_TYPE_ETH, addressToBytes(a));\\n    }\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address payable)\\n    {\\n        bytes memory a = addr(node, COIN_TYPE_ETH);\\n        if (a.length == 0) {\\n            return payable(0);\\n        }\\n        return bytesToAddress(a);\\n    }\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes memory a\\n    ) public virtual authorised(node) {\\n        emit AddressChanged(node, coinType, a);\\n        if (coinType == COIN_TYPE_ETH) {\\n            emit AddrChanged(node, bytesToAddress(a));\\n        }\\n        versionable_addresses[recordVersions[node]][node][coinType] = a;\\n    }\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_addresses[recordVersions[node]][node][coinType];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IAddrResolver).interfaceId ||\\n            interfaceID == type(IAddressResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function bytesToAddress(bytes memory b)\\n        internal\\n        pure\\n        returns (address payable a)\\n    {\\n        require(b.length == 20);\\n        assembly {\\n            a := div(mload(add(b, 32)), exp(256, 12))\\n        }\\n    }\\n\\n    function addressToBytes(address a) internal pure returns (bytes memory b) {\\n        b = new bytes(20);\\n        assembly {\\n            mstore(add(b, 32), mul(a, exp(256, 12)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd646c5d83209db92099b84effe8ab19bb9fccb95c25b2984e2d217c70eeccbf3\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IContentHashResolver.sol\\\";\\n\\nabstract contract ContentHashResolver is IContentHashResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => bytes)) versionable_hashes;\\n\\n    /**\\n     * Sets the contenthash associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param hash The contenthash to set\\n     */\\n    function setContenthash(bytes32 node, bytes calldata hash)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        versionable_hashes[recordVersions[node]][node] = hash;\\n        emit ContenthashChanged(node, hash);\\n    }\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_hashes[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IContentHashResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x51997248aa9b178ce3fcc708ede901f02f1613091743bc91adeb0b3c42600f14\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/DNSResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"../../dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"./IDNSRecordResolver.sol\\\";\\nimport \\\"./IDNSZoneResolver.sol\\\";\\n\\nabstract contract DNSResolver is\\n    IDNSRecordResolver,\\n    IDNSZoneResolver,\\n    ResolverBase\\n{\\n    using RRUtils for *;\\n    using BytesUtils for bytes;\\n\\n    // Zone hashes for the domains.\\n    // A zone hash is an EIP-1577 content hash in binary format that should point to a\\n    // resource containing a single zonefile.\\n    // node => contenthash\\n    mapping(uint64 => mapping(bytes32 => bytes)) private versionable_zonehashes;\\n\\n    // The records themselves.  Stored as binary RRSETs\\n    // node => version => name => resource => data\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))\\n        private versionable_records;\\n\\n    // Count of number of entries for a given name.  Required for DNS resolvers\\n    // when resolving wildcards.\\n    // node => version => name => number of records\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))\\n        private versionable_nameEntriesCount;\\n\\n    /**\\n     * Set one or more DNS records.  Records are supplied in wire-format.\\n     * Records with the same node/name/resource must be supplied one after the\\n     * other to ensure the data is updated correctly. For example, if the data\\n     * was supplied:\\n     *     a.example.com IN A 1.2.3.4\\n     *     a.example.com IN A 5.6.7.8\\n     *     www.example.com IN CNAME a.example.com.\\n     * then this would store the two A records for a.example.com correctly as a\\n     * single RRSET, however if the data was supplied:\\n     *     a.example.com IN A 1.2.3.4\\n     *     www.example.com IN CNAME a.example.com.\\n     *     a.example.com IN A 5.6.7.8\\n     * then this would store the first A record, the CNAME, then the second A\\n     * record which would overwrite the first.\\n     *\\n     * @param node the namehash of the node for which to set the records\\n     * @param data the DNS wire format records to set\\n     */\\n    function setDNSRecords(bytes32 node, bytes calldata data)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        uint16 resource = 0;\\n        uint256 offset = 0;\\n        bytes memory name;\\n        bytes memory value;\\n        bytes32 nameHash;\\n        uint64 version = recordVersions[node];\\n        // Iterate over the data to add the resource records\\n        for (\\n            RRUtils.RRIterator memory iter = data.iterateRRs(0);\\n            !iter.done();\\n            iter.next()\\n        ) {\\n            if (resource == 0) {\\n                resource = iter.dnstype;\\n                name = iter.name();\\n                nameHash = keccak256(abi.encodePacked(name));\\n                value = bytes(iter.rdata());\\n            } else {\\n                bytes memory newName = iter.name();\\n                if (resource != iter.dnstype || !name.equals(newName)) {\\n                    setDNSRRSet(\\n                        node,\\n                        name,\\n                        resource,\\n                        data,\\n                        offset,\\n                        iter.offset - offset,\\n                        value.length == 0,\\n                        version\\n                    );\\n                    resource = iter.dnstype;\\n                    offset = iter.offset;\\n                    name = newName;\\n                    nameHash = keccak256(name);\\n                    value = bytes(iter.rdata());\\n                }\\n            }\\n        }\\n        if (name.length > 0) {\\n            setDNSRRSet(\\n                node,\\n                name,\\n                resource,\\n                data,\\n                offset,\\n                data.length - offset,\\n                value.length == 0,\\n                version\\n            );\\n        }\\n    }\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) public view virtual override returns (bytes memory) {\\n        return versionable_records[recordVersions[node]][node][name][resource];\\n    }\\n\\n    /**\\n     * Check if a given node has records.\\n     * @param node the namehash of the node for which to check the records\\n     * @param name the namehash of the node for which to check the records\\n     */\\n    function hasDNSRecords(bytes32 node, bytes32 name)\\n        public\\n        view\\n        virtual\\n        returns (bool)\\n    {\\n        return (versionable_nameEntriesCount[recordVersions[node]][node][\\n            name\\n        ] != 0);\\n    }\\n\\n    /**\\n     * setZonehash sets the hash for the zone.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param hash The zonehash to set\\n     */\\n    function setZonehash(bytes32 node, bytes calldata hash)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        uint64 currentRecordVersion = recordVersions[node];\\n        bytes memory oldhash = versionable_zonehashes[currentRecordVersion][\\n            node\\n        ];\\n        versionable_zonehashes[currentRecordVersion][node] = hash;\\n        emit DNSZonehashChanged(node, oldhash, hash);\\n    }\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_zonehashes[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IDNSRecordResolver).interfaceId ||\\n            interfaceID == type(IDNSZoneResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function setDNSRRSet(\\n        bytes32 node,\\n        bytes memory name,\\n        uint16 resource,\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 size,\\n        bool deleteRecord,\\n        uint64 version\\n    ) private {\\n        bytes32 nameHash = keccak256(name);\\n        bytes memory rrData = data.substring(offset, size);\\n        if (deleteRecord) {\\n            if (\\n                versionable_records[version][node][nameHash][resource].length !=\\n                0\\n            ) {\\n                versionable_nameEntriesCount[version][node][nameHash]--;\\n            }\\n            delete (versionable_records[version][node][nameHash][resource]);\\n            emit DNSRecordDeleted(node, name, resource);\\n        } else {\\n            if (\\n                versionable_records[version][node][nameHash][resource].length ==\\n                0\\n            ) {\\n                versionable_nameEntriesCount[version][node][nameHash]++;\\n            }\\n            versionable_records[version][node][nameHash][resource] = rrData;\\n            emit DNSRecordChanged(node, name, resource, rrData);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x018591569fae9070357135a943958592f9e3bde5092e81ed234e47db9ee54d16\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/InterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./AddrResolver.sol\\\";\\nimport \\\"./IInterfaceResolver.sol\\\";\\n\\nabstract contract InterfaceResolver is IInterfaceResolver, AddrResolver {\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address))) versionable_interfaces;\\n\\n    /**\\n     * Sets an interface associated with a name.\\n     * Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\\n     * @param node The node to update.\\n     * @param interfaceID The EIP 165 interface ID.\\n     * @param implementer The address of a contract that implements this interface for this node.\\n     */\\n    function setInterface(\\n        bytes32 node,\\n        bytes4 interfaceID,\\n        address implementer\\n    ) external virtual authorised(node) {\\n        versionable_interfaces[recordVersions[node]][node][interfaceID] = implementer;\\n        emit InterfaceChanged(node, interfaceID, implementer);\\n    }\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        address implementer = versionable_interfaces[recordVersions[node]][node][interfaceID];\\n        if (implementer != address(0)) {\\n            return implementer;\\n        }\\n\\n        address a = addr(node);\\n        if (a == address(0)) {\\n            return address(0);\\n        }\\n\\n        (bool success, bytes memory returnData) = a.staticcall(\\n            abi.encodeWithSignature(\\n                \\\"supportsInterface(bytes4)\\\",\\n                type(IERC165).interfaceId\\n            )\\n        );\\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\\n            // EIP 165 not supported by target\\n            return address(0);\\n        }\\n\\n        (success, returnData) = a.staticcall(\\n            abi.encodeWithSignature(\\\"supportsInterface(bytes4)\\\", interfaceID)\\n        );\\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\\n            // Specified interface not supported by target\\n            return address(0);\\n        }\\n\\n        return a;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IInterfaceResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3daeadb9196264d907ef62b4d615fb1aae8ec3552293ae0004c3e39b5533e70f\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/NameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./INameResolver.sol\\\";\\n\\nabstract contract NameResolver is INameResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => string)) versionable_names;\\n\\n    /**\\n     * Sets the name associated with an ENS node, for reverse records.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function setName(bytes32 node, string calldata newName)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        versionable_names[recordVersions[node]][node] = newName;\\n        emit NameChanged(node, newName);\\n    }\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (string memory)\\n    {\\n        return versionable_names[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(INameResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0xaa9acf9a857d791d8e3ecb3b962addc7c6a54a9bf4cdd429bb77f075d384486f\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/PubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IPubkeyResolver.sol\\\";\\n\\nabstract contract PubkeyResolver is IPubkeyResolver, ResolverBase {\\n    struct PublicKey {\\n        bytes32 x;\\n        bytes32 y;\\n    }\\n\\n    mapping(uint64 => mapping(bytes32 => PublicKey)) versionable_pubkeys;\\n\\n    /**\\n     * Sets the SECP256k1 public key associated with an ENS node.\\n     * @param node The ENS node to query\\n     * @param x the X coordinate of the curve point for the public key.\\n     * @param y the Y coordinate of the curve point for the public key.\\n     */\\n    function setPubkey(\\n        bytes32 node,\\n        bytes32 x,\\n        bytes32 y\\n    ) external virtual authorised(node) {\\n        versionable_pubkeys[recordVersions[node]][node] = PublicKey(x, y);\\n        emit PubkeyChanged(node, x, y);\\n    }\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes32 x, bytes32 y)\\n    {\\n        uint64 currentRecordVersion = recordVersions[node];\\n        return (\\n            versionable_pubkeys[currentRecordVersion][node].x,\\n            versionable_pubkeys[currentRecordVersion][node].y\\n        );\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IPubkeyResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3b7b2e3b59874bacd585928af1b15978f900df4c87fd265510db184623e35546\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/TextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./ITextResolver.sol\\\";\\n\\nabstract contract TextResolver is ITextResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => mapping(string => string))) versionable_texts;\\n\\n    /**\\n     * Sets the text data associated with an ENS node and key.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param key The key to set.\\n     * @param value The text data value to set.\\n     */\\n    function setText(\\n        bytes32 node,\\n        string calldata key,\\n        string calldata value\\n    ) external virtual authorised(node) {\\n        versionable_texts[recordVersions[node]][node][key] = value;\\n        emit TextChanged(node, key, key, value);\\n    }\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (string memory)\\n    {\\n        return versionable_texts[recordVersions[node]][node][key];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(ITextResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3a52fa55967f964206fdefe61461f505bcdfa23264ef28da648c34a9c98081c1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 14011,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_abis",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))"
              },
              {
                "astId": 14165,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_addresses",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))"
              },
              {
                "astId": 14356,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_hashes",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))"
              },
              {
                "astId": 14446,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_zonehashes",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))"
              },
              {
                "astId": 14456,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_records",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))))"
              },
              {
                "astId": 14464,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_nameEntriesCount",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16)))"
              },
              {
                "astId": 15160,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_interfaces",
                "offset": 0,
                "slot": "7",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes4,t_address)))"
              },
              {
                "astId": 15352,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_names",
                "offset": 0,
                "slot": "8",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_string_storage))"
              },
              {
                "astId": 15439,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_pubkeys",
                "offset": 0,
                "slot": "9",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_struct(PublicKey)15432_storage))"
              },
              {
                "astId": 15542,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "versionable_texts",
                "offset": 0,
                "slot": "10",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage)))"
              },
              {
                "astId": 13583,
                "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "11",
                "type": "t_mapping(t_address,t_mapping(t_address,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_bytes4": {
                "encoding": "inplace",
                "label": "bytes4",
                "numberOfBytes": "4"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_bytes32,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage)))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes32 => uint16))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_uint16)"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes4,t_address))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes4 => address))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes4,t_address)"
              },
              "t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(string => string))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_string_memory_ptr,t_string_storage)"
              },
              "t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(uint16 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint16,t_bytes_storage)"
              },
              "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(uint256 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_bytes_storage)"
              },
              "t_mapping(t_bytes32,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_mapping(t_bytes32,t_struct(PublicKey)15432_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => struct PubkeyResolver.PublicKey)",
                "numberOfBytes": "32",
                "value": "t_struct(PublicKey)15432_storage"
              },
              "t_mapping(t_bytes32,t_uint16)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint16)",
                "numberOfBytes": "32",
                "value": "t_uint16"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_bytes4,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes4",
                "label": "mapping(bytes4 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_string_memory_ptr,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_string_memory_ptr",
                "label": "mapping(string => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_mapping(t_uint16,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_uint16",
                "label": "mapping(uint16 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint256,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_bytes_storage)"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage)))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes4,t_address)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes4,t_address))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(string => string)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_string_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => string))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_string_storage)"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_struct(PublicKey)15432_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => struct PubkeyResolver.PublicKey))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_struct(PublicKey)15432_storage)"
              },
              "t_string_memory_ptr": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(PublicKey)15432_storage": {
                "encoding": "inplace",
                "label": "struct PubkeyResolver.PublicKey",
                "members": [
                  {
                    "astId": 15429,
                    "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                    "label": "x",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_bytes32"
                  },
                  {
                    "astId": 15431,
                    "contract": "contracts/resolvers/PublicResolver.sol:PublicResolver",
                    "label": "y",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_bytes32"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint16": {
                "encoding": "inplace",
                "label": "uint16",
                "numberOfBytes": "2"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "ABI(bytes32,uint256)": {
                "notice": "Returns the ABI associated with an ENS node. Defined in EIP205."
              },
              "addr(bytes32)": {
                "notice": "Returns the address associated with an ENS node."
              },
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "contenthash(bytes32)": {
                "notice": "Returns the contenthash associated with an ENS node."
              },
              "dnsRecord(bytes32,bytes32,uint16)": {
                "notice": "Obtain a DNS record."
              },
              "hasDNSRecords(bytes32,bytes32)": {
                "notice": "Check if a given node has records."
              },
              "interfaceImplementer(bytes32,bytes4)": {
                "notice": "Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned."
              },
              "name(bytes32)": {
                "notice": "Returns the name associated with an ENS node, for reverse records. Defined in EIP181."
              },
              "pubkey(bytes32)": {
                "notice": "Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619."
              },
              "setABI(bytes32,uint256,bytes)": {
                "notice": "Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string."
              },
              "setAddr(bytes32,address)": {
                "notice": "Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "setContenthash(bytes32,bytes)": {
                "notice": "Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "setDNSRecords(bytes32,bytes)": {
                "notice": "Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:     a.example.com IN A 1.2.3.4     a.example.com IN A 5.6.7.8     www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:     a.example.com IN A 1.2.3.4     www.example.com IN CNAME a.example.com.     a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first."
              },
              "setInterface(bytes32,bytes4,address)": {
                "notice": "Sets an interface associated with a name. Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support."
              },
              "setName(bytes32,string)": {
                "notice": "Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry."
              },
              "setPubkey(bytes32,bytes32,bytes32)": {
                "notice": "Sets the SECP256k1 public key associated with an ENS node."
              },
              "setText(bytes32,string,string)": {
                "notice": "Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry."
              },
              "setZonehash(bytes32,bytes)": {
                "notice": "setZonehash sets the hash for the zone. May only be called by the owner of that node in the ENS registry."
              },
              "text(bytes32,string)": {
                "notice": "Returns the text data associated with an ENS node and key."
              },
              "zonehash(bytes32)": {
                "notice": "zonehash obtains the hash for the zone."
              }
            },
            "notice": "A simple resolver anyone can use; only allows the owner of a node to set its address.",
            "version": 1
          }
        }
      },
      "contracts/resolvers/Resolver.sol": {
        "Resolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                }
              ],
              "name": "ABIChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "AddrChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "newAddress",
                  "type": "bytes"
                }
              ],
              "name": "AddressChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContentChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "ContenthashChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "record",
                  "type": "bytes"
                }
              ],
              "name": "DNSRecordChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "DNSRecordDeleted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "lastzonehash",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "zonehash",
                  "type": "bytes"
                }
              ],
              "name": "DNSZonehashChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "InterfaceChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "NameChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "PubkeyChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "string",
                  "name": "indexedKey",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "TextChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentTypes",
                  "type": "uint256"
                }
              ],
              "name": "ABI",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "content",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "contenthash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "name",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "dnsRecord",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "interfaceImplementer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "multicall",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "nodehash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "multicallWithNodeCheck",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "multihash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "pubkey",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "resolve",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "setABI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "a",
                  "type": "bytes"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "setContent",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "setContenthash",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "setDnsrr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "setInterface",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "setMultihash",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                }
              ],
              "name": "setName",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "setPubkey",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "setText",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                }
              ],
              "name": "text",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "zonehash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "ABI(bytes32,uint256)": {
                "params": {
                  "contentTypes": "A bitwise OR of the ABI formats accepted by the caller.",
                  "node": "The ENS node to query"
                },
                "returns": {
                  "_0": "contentType The content type of the return value",
                  "_1": "data The ABI data"
                }
              },
              "addr(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated address."
                }
              },
              "contenthash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              },
              "dnsRecord(bytes32,bytes32,uint16)": {
                "params": {
                  "name": "the keccak-256 hash of the fully-qualified name for which to fetch the record",
                  "node": "the namehash of the node for which to fetch the record",
                  "resource": "the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types"
                },
                "returns": {
                  "_0": "the DNS record in wire format if present, otherwise empty"
                }
              },
              "interfaceImplementer(bytes32,bytes4)": {
                "params": {
                  "interfaceID": "The EIP 165 interface ID to check for.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The address that implements this interface, or 0 if the interface is unsupported."
                }
              },
              "name(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated name."
                }
              },
              "pubkey(bytes32)": {
                "params": {
                  "node": "The ENS node to query"
                },
                "returns": {
                  "x": "The X coordinate of the curve point for the public key.",
                  "y": "The Y coordinate of the curve point for the public key."
                }
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              },
              "text(bytes32,string)": {
                "params": {
                  "key": "The text data key to query.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated text data."
                }
              },
              "zonehash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "ABI(bytes32,uint256)": "2203ab56",
              "addr(bytes32)": "3b3b57de",
              "addr(bytes32,uint256)": "f1cb7e06",
              "content(bytes32)": "2dff6941",
              "contenthash(bytes32)": "bc1c58d1",
              "dnsRecord(bytes32,bytes32,uint16)": "a8fa5682",
              "interfaceImplementer(bytes32,bytes4)": "124a319c",
              "multicall(bytes[])": "ac9650d8",
              "multicallWithNodeCheck(bytes32,bytes[])": "e32954eb",
              "multihash(bytes32)": "e89401a1",
              "name(bytes32)": "691f3431",
              "pubkey(bytes32)": "c8690233",
              "resolve(bytes,bytes)": "9061b923",
              "setABI(bytes32,uint256,bytes)": "623195b0",
              "setAddr(bytes32,address)": "d5fa2b00",
              "setAddr(bytes32,uint256,bytes)": "8b95dd71",
              "setContent(bytes32,bytes32)": "c3d014d6",
              "setContenthash(bytes32,bytes)": "304e6ade",
              "setDnsrr(bytes32,bytes)": "76196c88",
              "setInterface(bytes32,bytes4,address)": "e59d895d",
              "setMultihash(bytes32,bytes)": "aa4cb547",
              "setName(bytes32,string)": "77372213",
              "setPubkey(bytes32,bytes32,bytes32)": "29cd62ea",
              "setText(bytes32,string,string)": "10f13a8c",
              "supportsInterface(bytes4)": "01ffc9a7",
              "text(bytes32,string)": "59d1d43c",
              "zonehash(bytes32)": "5c98042b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"ContentChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lastzonehash\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zonehash\",\"type\":\"bytes\"}],\"name\":\"DNSZonehashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"content\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"interfaceImplementer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodehash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicallWithNodeCheck\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"multihash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"setContent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDnsrr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"setInterface\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setMultihash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"zonehash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"ABI(bytes32,uint256)\":{\"params\":{\"contentTypes\":\"A bitwise OR of the ABI formats accepted by the caller.\",\"node\":\"The ENS node to query\"},\"returns\":{\"_0\":\"contentType The content type of the return value\",\"_1\":\"data The ABI data\"}},\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated address.\"}},\"contenthash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}},\"dnsRecord(bytes32,bytes32,uint16)\":{\"params\":{\"name\":\"the keccak-256 hash of the fully-qualified name for which to fetch the record\",\"node\":\"the namehash of the node for which to fetch the record\",\"resource\":\"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\"},\"returns\":{\"_0\":\"the DNS record in wire format if present, otherwise empty\"}},\"interfaceImplementer(bytes32,bytes4)\":{\"params\":{\"interfaceID\":\"The EIP 165 interface ID to check for.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The address that implements this interface, or 0 if the interface is unsupported.\"}},\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated name.\"}},\"pubkey(bytes32)\":{\"params\":{\"node\":\"The ENS node to query\"},\"returns\":{\"x\":\"The X coordinate of the curve point for the public key.\",\"y\":\"The Y coordinate of the curve point for the public key.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated text data.\"}},\"zonehash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"ABI(bytes32,uint256)\":{\"notice\":\"Returns the ABI associated with an ENS node. Defined in EIP205.\"},\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"contenthash(bytes32)\":{\"notice\":\"Returns the contenthash associated with an ENS node.\"},\"dnsRecord(bytes32,bytes32,uint16)\":{\"notice\":\"Obtain a DNS record.\"},\"interfaceImplementer(bytes32,bytes4)\":{\"notice\":\"Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned.\"},\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"},\"pubkey(bytes32)\":{\"notice\":\"Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619.\"},\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"},\"zonehash(bytes32)\":{\"notice\":\"zonehash obtains the hash for the zone.\"}},\"notice\":\"A generic resolver interface which includes all the functions including the ones deprecated\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/Resolver.sol\":\"Resolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/Resolver.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"./profiles/IABIResolver.sol\\\";\\nimport \\\"./profiles/IAddressResolver.sol\\\";\\nimport \\\"./profiles/IAddrResolver.sol\\\";\\nimport \\\"./profiles/IContentHashResolver.sol\\\";\\nimport \\\"./profiles/IDNSRecordResolver.sol\\\";\\nimport \\\"./profiles/IDNSZoneResolver.sol\\\";\\nimport \\\"./profiles/IInterfaceResolver.sol\\\";\\nimport \\\"./profiles/INameResolver.sol\\\";\\nimport \\\"./profiles/IPubkeyResolver.sol\\\";\\nimport \\\"./profiles/ITextResolver.sol\\\";\\nimport \\\"./profiles/IExtendedResolver.sol\\\";\\n\\n/**\\n * A generic resolver interface which includes all the functions including the ones deprecated\\n */\\ninterface Resolver is\\n    IERC165,\\n    IABIResolver,\\n    IAddressResolver,\\n    IAddrResolver,\\n    IContentHashResolver,\\n    IDNSRecordResolver,\\n    IDNSZoneResolver,\\n    IInterfaceResolver,\\n    INameResolver,\\n    IPubkeyResolver,\\n    ITextResolver,\\n    IExtendedResolver\\n{\\n    /* Deprecated events */\\n    event ContentChanged(bytes32 indexed node, bytes32 hash);\\n\\n    function setABI(\\n        bytes32 node,\\n        uint256 contentType,\\n        bytes calldata data\\n    ) external;\\n\\n    function setAddr(bytes32 node, address addr) external;\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes calldata a\\n    ) external;\\n\\n    function setContenthash(bytes32 node, bytes calldata hash) external;\\n\\n    function setDnsrr(bytes32 node, bytes calldata data) external;\\n\\n    function setName(bytes32 node, string calldata _name) external;\\n\\n    function setPubkey(\\n        bytes32 node,\\n        bytes32 x,\\n        bytes32 y\\n    ) external;\\n\\n    function setText(\\n        bytes32 node,\\n        string calldata key,\\n        string calldata value\\n    ) external;\\n\\n    function setInterface(\\n        bytes32 node,\\n        bytes4 interfaceID,\\n        address implementer\\n    ) external;\\n\\n    function multicall(bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    /* Deprecated functions */\\n    function content(bytes32 node) external view returns (bytes32);\\n\\n    function multihash(bytes32 node) external view returns (bytes memory);\\n\\n    function setContent(bytes32 node, bytes32 hash) external;\\n\\n    function setMultihash(bytes32 node, bytes calldata hash) external;\\n}\\n\",\"keccak256\":\"0x73b6cd44b0ed803083996abd3d2683f2444731b6486045f8274c44fce66bf939\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IExtendedResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IExtendedResolver {\\n    function resolve(bytes memory name, bytes memory data)\\n        external\\n        view\\n        returns (bytes memory, address);\\n}\\n\",\"keccak256\":\"0x0a586a1725cdc5f90f2e302c620a4a033adfc87e49bbcc5a43604ba579bce7a7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "ABI(bytes32,uint256)": {
                "notice": "Returns the ABI associated with an ENS node. Defined in EIP205."
              },
              "addr(bytes32)": {
                "notice": "Returns the address associated with an ENS node."
              },
              "contenthash(bytes32)": {
                "notice": "Returns the contenthash associated with an ENS node."
              },
              "dnsRecord(bytes32,bytes32,uint16)": {
                "notice": "Obtain a DNS record."
              },
              "interfaceImplementer(bytes32,bytes4)": {
                "notice": "Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned."
              },
              "name(bytes32)": {
                "notice": "Returns the name associated with an ENS node, for reverse records. Defined in EIP181."
              },
              "pubkey(bytes32)": {
                "notice": "Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619."
              },
              "text(bytes32,string)": {
                "notice": "Returns the text data associated with an ENS node and key."
              },
              "zonehash(bytes32)": {
                "notice": "zonehash obtains the hash for the zone."
              }
            },
            "notice": "A generic resolver interface which includes all the functions including the ones deprecated",
            "version": 1
          }
        }
      },
      "contracts/resolvers/ResolverBase.sol": {
        "ResolverBase": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "clearRecords(bytes32)": "3603d758",
              "recordVersions(bytes32)": "d700ff33",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/ResolverBase.sol\":\"ResolverBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/ResolverBase.sol:ResolverBase",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/ABIResolver.sol": {
        "ABIResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                }
              ],
              "name": "ABIChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentTypes",
                  "type": "uint256"
                }
              ],
              "name": "ABI",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "setABI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "ABI(bytes32,uint256)": {
                "params": {
                  "contentTypes": "A bitwise OR of the ABI formats accepted by the caller.",
                  "node": "The ENS node to query"
                },
                "returns": {
                  "_0": "contentType The content type of the return value",
                  "_1": "data The ABI data"
                }
              },
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "setABI(bytes32,uint256,bytes)": {
                "params": {
                  "contentType": "The content type of the ABI",
                  "data": "The ABI data.",
                  "node": "The node to update."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "ABI(bytes32,uint256)": "2203ab56",
              "clearRecords(bytes32)": "3603d758",
              "recordVersions(bytes32)": "d700ff33",
              "setABI(bytes32,uint256,bytes)": "623195b0",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"ABI(bytes32,uint256)\":{\"params\":{\"contentTypes\":\"A bitwise OR of the ABI formats accepted by the caller.\",\"node\":\"The ENS node to query\"},\"returns\":{\"_0\":\"contentType The content type of the return value\",\"_1\":\"data The ABI data\"}},\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"setABI(bytes32,uint256,bytes)\":{\"params\":{\"contentType\":\"The content type of the ABI\",\"data\":\"The ABI data.\",\"node\":\"The node to update.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"ABI(bytes32,uint256)\":{\"notice\":\"Returns the ABI associated with an ENS node. Defined in EIP205.\"},\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setABI(bytes32,uint256,bytes)\":{\"notice\":\"Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/ABIResolver.sol\":\"ABIResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\nabstract contract ABIResolver is IABIResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_abis;\\n\\n    /**\\n     * Sets the ABI associated with an ENS node.\\n     * Nodes may have one ABI of each content type. To remove an ABI, set it to\\n     * the empty string.\\n     * @param node The node to update.\\n     * @param contentType The content type of the ABI\\n     * @param data The ABI data.\\n     */\\n    function setABI(\\n        bytes32 node,\\n        uint256 contentType,\\n        bytes calldata data\\n    ) external virtual authorised(node) {\\n        // Content types must be powers of 2\\n        require(((contentType - 1) & contentType) == 0);\\n\\n        versionable_abis[recordVersions[node]][node][contentType] = data;\\n        emit ABIChanged(node, contentType);\\n    }\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (uint256, bytes memory)\\n    {\\n        mapping(uint256 => bytes) storage abiset = versionable_abis[\\n            recordVersions[node]\\n        ][node];\\n\\n        for (\\n            uint256 contentType = 1;\\n            contentType <= contentTypes;\\n            contentType <<= 1\\n        ) {\\n            if (\\n                (contentType & contentTypes) != 0 &&\\n                abiset[contentType].length > 0\\n            ) {\\n                return (contentType, abiset[contentType]);\\n            }\\n        }\\n\\n        return (0, bytes(\\\"\\\"));\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IABIResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x8f6fc2c3aeb2eee665ae4b2db8efe137869509a2fba4ec3dfd381257e64c82c4\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/profiles/ABIResolver.sol:ABIResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 14011,
                "contract": "contracts/resolvers/profiles/ABIResolver.sol:ABIResolver",
                "label": "versionable_abis",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(uint256 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_bytes_storage)"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_uint256,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "ABI(bytes32,uint256)": {
                "notice": "Returns the ABI associated with an ENS node. Defined in EIP205."
              },
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "setABI(bytes32,uint256,bytes)": {
                "notice": "Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/AddrResolver.sol": {
        "AddrResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "AddrChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "newAddress",
                  "type": "bytes"
                }
              ],
              "name": "AddressChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "a",
                  "type": "bytes"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "addr(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated address."
                }
              },
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "setAddr(bytes32,address)": {
                "params": {
                  "a": "The address to set.",
                  "node": "The node to update."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "addr(bytes32)": "3b3b57de",
              "addr(bytes32,uint256)": "f1cb7e06",
              "clearRecords(bytes32)": "3603d758",
              "recordVersions(bytes32)": "d700ff33",
              "setAddr(bytes32,address)": "d5fa2b00",
              "setAddr(bytes32,uint256,bytes)": "8b95dd71",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated address.\"}},\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"setAddr(bytes32,address)\":{\"params\":{\"a\":\"The address to set.\",\"node\":\"The node to update.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/AddrResolver.sol\":\"AddrResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/AddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IAddrResolver.sol\\\";\\nimport \\\"./IAddressResolver.sol\\\";\\n\\nabstract contract AddrResolver is\\n    IAddrResolver,\\n    IAddressResolver,\\n    ResolverBase\\n{\\n    uint256 private constant COIN_TYPE_ETH = 60;\\n\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_addresses;\\n\\n    /**\\n     * Sets the address associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param a The address to set.\\n     */\\n    function setAddr(bytes32 node, address a)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        setAddr(node, COIN_TYPE_ETH, addressToBytes(a));\\n    }\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address payable)\\n    {\\n        bytes memory a = addr(node, COIN_TYPE_ETH);\\n        if (a.length == 0) {\\n            return payable(0);\\n        }\\n        return bytesToAddress(a);\\n    }\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes memory a\\n    ) public virtual authorised(node) {\\n        emit AddressChanged(node, coinType, a);\\n        if (coinType == COIN_TYPE_ETH) {\\n            emit AddrChanged(node, bytesToAddress(a));\\n        }\\n        versionable_addresses[recordVersions[node]][node][coinType] = a;\\n    }\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_addresses[recordVersions[node]][node][coinType];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IAddrResolver).interfaceId ||\\n            interfaceID == type(IAddressResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function bytesToAddress(bytes memory b)\\n        internal\\n        pure\\n        returns (address payable a)\\n    {\\n        require(b.length == 20);\\n        assembly {\\n            a := div(mload(add(b, 32)), exp(256, 12))\\n        }\\n    }\\n\\n    function addressToBytes(address a) internal pure returns (bytes memory b) {\\n        b = new bytes(20);\\n        assembly {\\n            mstore(add(b, 32), mul(a, exp(256, 12)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd646c5d83209db92099b84effe8ab19bb9fccb95c25b2984e2d217c70eeccbf3\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/profiles/AddrResolver.sol:AddrResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 14165,
                "contract": "contracts/resolvers/profiles/AddrResolver.sol:AddrResolver",
                "label": "versionable_addresses",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(uint256 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_bytes_storage)"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_uint256,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "addr(bytes32)": {
                "notice": "Returns the address associated with an ENS node."
              },
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "setAddr(bytes32,address)": {
                "notice": "Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/ContentHashResolver.sol": {
        "ContentHashResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "ContenthashChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "contenthash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "setContenthash",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "contenthash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              },
              "setContenthash(bytes32,bytes)": {
                "params": {
                  "hash": "The contenthash to set",
                  "node": "The node to update."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "clearRecords(bytes32)": "3603d758",
              "contenthash(bytes32)": "bc1c58d1",
              "recordVersions(bytes32)": "d700ff33",
              "setContenthash(bytes32,bytes)": "304e6ade",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"contenthash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}},\"setContenthash(bytes32,bytes)\":{\"params\":{\"hash\":\"The contenthash to set\",\"node\":\"The node to update.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"contenthash(bytes32)\":{\"notice\":\"Returns the contenthash associated with an ENS node.\"},\"setContenthash(bytes32,bytes)\":{\"notice\":\"Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/ContentHashResolver.sol\":\"ContentHashResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IContentHashResolver.sol\\\";\\n\\nabstract contract ContentHashResolver is IContentHashResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => bytes)) versionable_hashes;\\n\\n    /**\\n     * Sets the contenthash associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param hash The contenthash to set\\n     */\\n    function setContenthash(bytes32 node, bytes calldata hash)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        versionable_hashes[recordVersions[node]][node] = hash;\\n        emit ContenthashChanged(node, hash);\\n    }\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_hashes[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IContentHashResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x51997248aa9b178ce3fcc708ede901f02f1613091743bc91adeb0b3c42600f14\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/profiles/ContentHashResolver.sol:ContentHashResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 14356,
                "contract": "contracts/resolvers/profiles/ContentHashResolver.sol:ContentHashResolver",
                "label": "versionable_hashes",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_bytes_storage)"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "contenthash(bytes32)": {
                "notice": "Returns the contenthash associated with an ENS node."
              },
              "setContenthash(bytes32,bytes)": {
                "notice": "Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/DNSResolver.sol": {
        "DNSResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "record",
                  "type": "bytes"
                }
              ],
              "name": "DNSRecordChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "DNSRecordDeleted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "lastzonehash",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "zonehash",
                  "type": "bytes"
                }
              ],
              "name": "DNSZonehashChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "name",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "dnsRecord",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "name",
                  "type": "bytes32"
                }
              ],
              "name": "hasDNSRecords",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "setDNSRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "setZonehash",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "zonehash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "dnsRecord(bytes32,bytes32,uint16)": {
                "params": {
                  "name": "the keccak-256 hash of the fully-qualified name for which to fetch the record",
                  "node": "the namehash of the node for which to fetch the record",
                  "resource": "the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types"
                },
                "returns": {
                  "_0": "the DNS record in wire format if present, otherwise empty"
                }
              },
              "hasDNSRecords(bytes32,bytes32)": {
                "params": {
                  "name": "the namehash of the node for which to check the records",
                  "node": "the namehash of the node for which to check the records"
                }
              },
              "setDNSRecords(bytes32,bytes)": {
                "params": {
                  "data": "the DNS wire format records to set",
                  "node": "the namehash of the node for which to set the records"
                }
              },
              "setZonehash(bytes32,bytes)": {
                "params": {
                  "hash": "The zonehash to set",
                  "node": "The node to update."
                }
              },
              "zonehash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "clearRecords(bytes32)": "3603d758",
              "dnsRecord(bytes32,bytes32,uint16)": "a8fa5682",
              "hasDNSRecords(bytes32,bytes32)": "4cbf6ba4",
              "recordVersions(bytes32)": "d700ff33",
              "setDNSRecords(bytes32,bytes)": "0af179d7",
              "setZonehash(bytes32,bytes)": "ce3decdc",
              "supportsInterface(bytes4)": "01ffc9a7",
              "zonehash(bytes32)": "5c98042b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lastzonehash\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zonehash\",\"type\":\"bytes\"}],\"name\":\"DNSZonehashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"hasDNSRecords\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDNSRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setZonehash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"zonehash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"dnsRecord(bytes32,bytes32,uint16)\":{\"params\":{\"name\":\"the keccak-256 hash of the fully-qualified name for which to fetch the record\",\"node\":\"the namehash of the node for which to fetch the record\",\"resource\":\"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\"},\"returns\":{\"_0\":\"the DNS record in wire format if present, otherwise empty\"}},\"hasDNSRecords(bytes32,bytes32)\":{\"params\":{\"name\":\"the namehash of the node for which to check the records\",\"node\":\"the namehash of the node for which to check the records\"}},\"setDNSRecords(bytes32,bytes)\":{\"params\":{\"data\":\"the DNS wire format records to set\",\"node\":\"the namehash of the node for which to set the records\"}},\"setZonehash(bytes32,bytes)\":{\"params\":{\"hash\":\"The zonehash to set\",\"node\":\"The node to update.\"}},\"zonehash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"dnsRecord(bytes32,bytes32,uint16)\":{\"notice\":\"Obtain a DNS record.\"},\"hasDNSRecords(bytes32,bytes32)\":{\"notice\":\"Check if a given node has records.\"},\"setDNSRecords(bytes32,bytes)\":{\"notice\":\"Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:     a.example.com IN A 1.2.3.4     a.example.com IN A 5.6.7.8     www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:     a.example.com IN A 1.2.3.4     www.example.com IN CNAME a.example.com.     a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first.\"},\"setZonehash(bytes32,bytes)\":{\"notice\":\"setZonehash sets the hash for the zone. May only be called by the owner of that node in the ENS registry.\"},\"zonehash(bytes32)\":{\"notice\":\"zonehash obtains the hash for the zone.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/DNSResolver.sol\":\"DNSResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/DNSResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"../../dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"./IDNSRecordResolver.sol\\\";\\nimport \\\"./IDNSZoneResolver.sol\\\";\\n\\nabstract contract DNSResolver is\\n    IDNSRecordResolver,\\n    IDNSZoneResolver,\\n    ResolverBase\\n{\\n    using RRUtils for *;\\n    using BytesUtils for bytes;\\n\\n    // Zone hashes for the domains.\\n    // A zone hash is an EIP-1577 content hash in binary format that should point to a\\n    // resource containing a single zonefile.\\n    // node => contenthash\\n    mapping(uint64 => mapping(bytes32 => bytes)) private versionable_zonehashes;\\n\\n    // The records themselves.  Stored as binary RRSETs\\n    // node => version => name => resource => data\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))\\n        private versionable_records;\\n\\n    // Count of number of entries for a given name.  Required for DNS resolvers\\n    // when resolving wildcards.\\n    // node => version => name => number of records\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))\\n        private versionable_nameEntriesCount;\\n\\n    /**\\n     * Set one or more DNS records.  Records are supplied in wire-format.\\n     * Records with the same node/name/resource must be supplied one after the\\n     * other to ensure the data is updated correctly. For example, if the data\\n     * was supplied:\\n     *     a.example.com IN A 1.2.3.4\\n     *     a.example.com IN A 5.6.7.8\\n     *     www.example.com IN CNAME a.example.com.\\n     * then this would store the two A records for a.example.com correctly as a\\n     * single RRSET, however if the data was supplied:\\n     *     a.example.com IN A 1.2.3.4\\n     *     www.example.com IN CNAME a.example.com.\\n     *     a.example.com IN A 5.6.7.8\\n     * then this would store the first A record, the CNAME, then the second A\\n     * record which would overwrite the first.\\n     *\\n     * @param node the namehash of the node for which to set the records\\n     * @param data the DNS wire format records to set\\n     */\\n    function setDNSRecords(bytes32 node, bytes calldata data)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        uint16 resource = 0;\\n        uint256 offset = 0;\\n        bytes memory name;\\n        bytes memory value;\\n        bytes32 nameHash;\\n        uint64 version = recordVersions[node];\\n        // Iterate over the data to add the resource records\\n        for (\\n            RRUtils.RRIterator memory iter = data.iterateRRs(0);\\n            !iter.done();\\n            iter.next()\\n        ) {\\n            if (resource == 0) {\\n                resource = iter.dnstype;\\n                name = iter.name();\\n                nameHash = keccak256(abi.encodePacked(name));\\n                value = bytes(iter.rdata());\\n            } else {\\n                bytes memory newName = iter.name();\\n                if (resource != iter.dnstype || !name.equals(newName)) {\\n                    setDNSRRSet(\\n                        node,\\n                        name,\\n                        resource,\\n                        data,\\n                        offset,\\n                        iter.offset - offset,\\n                        value.length == 0,\\n                        version\\n                    );\\n                    resource = iter.dnstype;\\n                    offset = iter.offset;\\n                    name = newName;\\n                    nameHash = keccak256(name);\\n                    value = bytes(iter.rdata());\\n                }\\n            }\\n        }\\n        if (name.length > 0) {\\n            setDNSRRSet(\\n                node,\\n                name,\\n                resource,\\n                data,\\n                offset,\\n                data.length - offset,\\n                value.length == 0,\\n                version\\n            );\\n        }\\n    }\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) public view virtual override returns (bytes memory) {\\n        return versionable_records[recordVersions[node]][node][name][resource];\\n    }\\n\\n    /**\\n     * Check if a given node has records.\\n     * @param node the namehash of the node for which to check the records\\n     * @param name the namehash of the node for which to check the records\\n     */\\n    function hasDNSRecords(bytes32 node, bytes32 name)\\n        public\\n        view\\n        virtual\\n        returns (bool)\\n    {\\n        return (versionable_nameEntriesCount[recordVersions[node]][node][\\n            name\\n        ] != 0);\\n    }\\n\\n    /**\\n     * setZonehash sets the hash for the zone.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param hash The zonehash to set\\n     */\\n    function setZonehash(bytes32 node, bytes calldata hash)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        uint64 currentRecordVersion = recordVersions[node];\\n        bytes memory oldhash = versionable_zonehashes[currentRecordVersion][\\n            node\\n        ];\\n        versionable_zonehashes[currentRecordVersion][node] = hash;\\n        emit DNSZonehashChanged(node, oldhash, hash);\\n    }\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_zonehashes[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IDNSRecordResolver).interfaceId ||\\n            interfaceID == type(IDNSZoneResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function setDNSRRSet(\\n        bytes32 node,\\n        bytes memory name,\\n        uint16 resource,\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 size,\\n        bool deleteRecord,\\n        uint64 version\\n    ) private {\\n        bytes32 nameHash = keccak256(name);\\n        bytes memory rrData = data.substring(offset, size);\\n        if (deleteRecord) {\\n            if (\\n                versionable_records[version][node][nameHash][resource].length !=\\n                0\\n            ) {\\n                versionable_nameEntriesCount[version][node][nameHash]--;\\n            }\\n            delete (versionable_records[version][node][nameHash][resource]);\\n            emit DNSRecordDeleted(node, name, resource);\\n        } else {\\n            if (\\n                versionable_records[version][node][nameHash][resource].length ==\\n                0\\n            ) {\\n                versionable_nameEntriesCount[version][node][nameHash]++;\\n            }\\n            versionable_records[version][node][nameHash][resource] = rrData;\\n            emit DNSRecordChanged(node, name, resource, rrData);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x018591569fae9070357135a943958592f9e3bde5092e81ed234e47db9ee54d16\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/profiles/DNSResolver.sol:DNSResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 14446,
                "contract": "contracts/resolvers/profiles/DNSResolver.sol:DNSResolver",
                "label": "versionable_zonehashes",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))"
              },
              {
                "astId": 14456,
                "contract": "contracts/resolvers/profiles/DNSResolver.sol:DNSResolver",
                "label": "versionable_records",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))))"
              },
              {
                "astId": 14464,
                "contract": "contracts/resolvers/profiles/DNSResolver.sol:DNSResolver",
                "label": "versionable_nameEntriesCount",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16)))"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage)))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes32 => uint16))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_uint16)"
              },
              "t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(uint16 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint16,t_bytes_storage)"
              },
              "t_mapping(t_bytes32,t_uint16)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint16)",
                "numberOfBytes": "32",
                "value": "t_uint16"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_uint16,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_uint16",
                "label": "mapping(uint16 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_bytes_storage)"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage))))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_uint16,t_bytes_storage)))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_uint16))"
              },
              "t_uint16": {
                "encoding": "inplace",
                "label": "uint16",
                "numberOfBytes": "2"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "dnsRecord(bytes32,bytes32,uint16)": {
                "notice": "Obtain a DNS record."
              },
              "hasDNSRecords(bytes32,bytes32)": {
                "notice": "Check if a given node has records."
              },
              "setDNSRecords(bytes32,bytes)": {
                "notice": "Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:     a.example.com IN A 1.2.3.4     a.example.com IN A 5.6.7.8     www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:     a.example.com IN A 1.2.3.4     www.example.com IN CNAME a.example.com.     a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first."
              },
              "setZonehash(bytes32,bytes)": {
                "notice": "setZonehash sets the hash for the zone. May only be called by the owner of that node in the ENS registry."
              },
              "zonehash(bytes32)": {
                "notice": "zonehash obtains the hash for the zone."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IABIResolver.sol": {
        "IABIResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "contentType",
                  "type": "uint256"
                }
              ],
              "name": "ABIChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "contentTypes",
                  "type": "uint256"
                }
              ],
              "name": "ABI",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "ABI(bytes32,uint256)": {
                "params": {
                  "contentTypes": "A bitwise OR of the ABI formats accepted by the caller.",
                  "node": "The ENS node to query"
                },
                "returns": {
                  "_0": "contentType The content type of the return value",
                  "_1": "data The ABI data"
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "ABI(bytes32,uint256)": "2203ab56"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"ABI(bytes32,uint256)\":{\"params\":{\"contentTypes\":\"A bitwise OR of the ABI formats accepted by the caller.\",\"node\":\"The ENS node to query\"},\"returns\":{\"_0\":\"contentType The content type of the return value\",\"_1\":\"data The ABI data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"ABI(bytes32,uint256)\":{\"notice\":\"Returns the ABI associated with an ENS node. Defined in EIP205.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IABIResolver.sol\":\"IABIResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "ABI(bytes32,uint256)": {
                "notice": "Returns the ABI associated with an ENS node. Defined in EIP205."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IAddrResolver.sol": {
        "IAddrResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "AddrChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "addr(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated address."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "addr(bytes32)": "3b3b57de"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated address.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"}},\"notice\":\"Interface for the legacy (ETH-only) addr function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IAddrResolver.sol\":\"IAddrResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "addr(bytes32)": {
                "notice": "Returns the address associated with an ENS node."
              }
            },
            "notice": "Interface for the legacy (ETH-only) addr function.",
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IAddressResolver.sol": {
        "IAddressResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "newAddress",
                  "type": "bytes"
                }
              ],
              "name": "AddressChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "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": {
              "addr(bytes32,uint256)": "f1cb7e06"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface for the new (multicoin) addr function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IAddressResolver.sol\":\"IAddressResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Interface for the new (multicoin) addr function.",
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IContentHashResolver.sol": {
        "IContentHashResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "hash",
                  "type": "bytes"
                }
              ],
              "name": "ContenthashChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "contenthash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "contenthash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "contenthash(bytes32)": "bc1c58d1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"contenthash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"contenthash(bytes32)\":{\"notice\":\"Returns the contenthash associated with an ENS node.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IContentHashResolver.sol\":\"IContentHashResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "contenthash(bytes32)": {
                "notice": "Returns the contenthash associated with an ENS node."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IDNSRecordResolver.sol": {
        "IDNSRecordResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "record",
                  "type": "bytes"
                }
              ],
              "name": "DNSRecordChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "DNSRecordDeleted",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "name",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint16",
                  "name": "resource",
                  "type": "uint16"
                }
              ],
              "name": "dnsRecord",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "dnsRecord(bytes32,bytes32,uint16)": {
                "params": {
                  "name": "the keccak-256 hash of the fully-qualified name for which to fetch the record",
                  "node": "the namehash of the node for which to fetch the record",
                  "resource": "the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types"
                },
                "returns": {
                  "_0": "the DNS record in wire format if present, otherwise empty"
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "dnsRecord(bytes32,bytes32,uint16)": "a8fa5682"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"dnsRecord(bytes32,bytes32,uint16)\":{\"params\":{\"name\":\"the keccak-256 hash of the fully-qualified name for which to fetch the record\",\"node\":\"the namehash of the node for which to fetch the record\",\"resource\":\"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\"},\"returns\":{\"_0\":\"the DNS record in wire format if present, otherwise empty\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dnsRecord(bytes32,bytes32,uint16)\":{\"notice\":\"Obtain a DNS record.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":\"IDNSRecordResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "dnsRecord(bytes32,bytes32,uint16)": {
                "notice": "Obtain a DNS record."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IDNSZoneResolver.sol": {
        "IDNSZoneResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "lastzonehash",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "zonehash",
                  "type": "bytes"
                }
              ],
              "name": "DNSZonehashChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "zonehash",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "zonehash(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated contenthash."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "zonehash(bytes32)": "5c98042b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lastzonehash\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zonehash\",\"type\":\"bytes\"}],\"name\":\"DNSZonehashChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"zonehash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"zonehash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated contenthash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"zonehash(bytes32)\":{\"notice\":\"zonehash obtains the hash for the zone.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":\"IDNSZoneResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "zonehash(bytes32)": {
                "notice": "zonehash obtains the hash for the zone."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IExtendedResolver.sol": {
        "IExtendedResolver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "resolve",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "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": {
              "resolve(bytes,bytes)": "9061b923"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IExtendedResolver.sol\":\"IExtendedResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IExtendedResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IExtendedResolver {\\n    function resolve(bytes memory name, bytes memory data)\\n        external\\n        view\\n        returns (bytes memory, address);\\n}\\n\",\"keccak256\":\"0x0a586a1725cdc5f90f2e302c620a4a033adfc87e49bbcc5a43604ba579bce7a7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IInterfaceResolver.sol": {
        "IInterfaceResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "InterfaceChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "interfaceImplementer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "interfaceImplementer(bytes32,bytes4)": {
                "params": {
                  "interfaceID": "The EIP 165 interface ID to check for.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The address that implements this interface, or 0 if the interface is unsupported."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "interfaceImplementer(bytes32,bytes4)": "124a319c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"interfaceImplementer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"interfaceImplementer(bytes32,bytes4)\":{\"params\":{\"interfaceID\":\"The EIP 165 interface ID to check for.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The address that implements this interface, or 0 if the interface is unsupported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"interfaceImplementer(bytes32,bytes4)\":{\"notice\":\"Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IInterfaceResolver.sol\":\"IInterfaceResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "interfaceImplementer(bytes32,bytes4)": {
                "notice": "Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/INameResolver.sol": {
        "INameResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "NameChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "name(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated name."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "name(bytes32)": "691f3431"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated name.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/INameResolver.sol\":\"INameResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "name(bytes32)": {
                "notice": "Returns the name associated with an ENS node, for reverse records. Defined in EIP181."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IPubkeyResolver.sol": {
        "IPubkeyResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "PubkeyChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "pubkey",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "pubkey(bytes32)": {
                "params": {
                  "node": "The ENS node to query"
                },
                "returns": {
                  "x": "The X coordinate of the curve point for the public key.",
                  "y": "The Y coordinate of the curve point for the public key."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "pubkey(bytes32)": "c8690233"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"pubkey(bytes32)\":{\"params\":{\"node\":\"The ENS node to query\"},\"returns\":{\"x\":\"The X coordinate of the curve point for the public key.\",\"y\":\"The Y coordinate of the curve point for the public key.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"pubkey(bytes32)\":{\"notice\":\"Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IPubkeyResolver.sol\":\"IPubkeyResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "pubkey(bytes32)": {
                "notice": "Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/ITextResolver.sol": {
        "ITextResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "string",
                  "name": "indexedKey",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "TextChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                }
              ],
              "name": "text",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "text(bytes32,string)": {
                "params": {
                  "key": "The text data key to query.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated text data."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "text(bytes32,string)": "59d1d43c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated text data.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/ITextResolver.sol\":\"ITextResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "text(bytes32,string)": {
                "notice": "Returns the text data associated with an ENS node and key."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/IVersionableResolver.sol": {
        "IVersionableResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "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": {
              "recordVersions(bytes32)": "d700ff33"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/IVersionableResolver.sol\":\"IVersionableResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/InterfaceResolver.sol": {
        "InterfaceResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "AddrChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "newAddress",
                  "type": "bytes"
                }
              ],
              "name": "AddressChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "InterfaceChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "interfaceImplementer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "coinType",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "a",
                  "type": "bytes"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                },
                {
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "setInterface",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "addr(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated address."
                }
              },
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "interfaceImplementer(bytes32,bytes4)": {
                "params": {
                  "interfaceID": "The EIP 165 interface ID to check for.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The address that implements this interface, or 0 if the interface is unsupported."
                }
              },
              "setAddr(bytes32,address)": {
                "params": {
                  "a": "The address to set.",
                  "node": "The node to update."
                }
              },
              "setInterface(bytes32,bytes4,address)": {
                "params": {
                  "implementer": "The address of a contract that implements this interface for this node.",
                  "interfaceID": "The EIP 165 interface ID.",
                  "node": "The node to update."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "addr(bytes32)": "3b3b57de",
              "addr(bytes32,uint256)": "f1cb7e06",
              "clearRecords(bytes32)": "3603d758",
              "interfaceImplementer(bytes32,bytes4)": "124a319c",
              "recordVersions(bytes32)": "d700ff33",
              "setAddr(bytes32,address)": "d5fa2b00",
              "setAddr(bytes32,uint256,bytes)": "8b95dd71",
              "setInterface(bytes32,bytes4,address)": "e59d895d",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"interfaceImplementer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"setInterface\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated address.\"}},\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"interfaceImplementer(bytes32,bytes4)\":{\"params\":{\"interfaceID\":\"The EIP 165 interface ID to check for.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The address that implements this interface, or 0 if the interface is unsupported.\"}},\"setAddr(bytes32,address)\":{\"params\":{\"a\":\"The address to set.\",\"node\":\"The node to update.\"}},\"setInterface(bytes32,bytes4,address)\":{\"params\":{\"implementer\":\"The address of a contract that implements this interface for this node.\",\"interfaceID\":\"The EIP 165 interface ID.\",\"node\":\"The node to update.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"interfaceImplementer(bytes32,bytes4)\":{\"notice\":\"Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setInterface(bytes32,bytes4,address)\":{\"notice\":\"Sets an interface associated with a name. Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/InterfaceResolver.sol\":\"InterfaceResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/AddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IAddrResolver.sol\\\";\\nimport \\\"./IAddressResolver.sol\\\";\\n\\nabstract contract AddrResolver is\\n    IAddrResolver,\\n    IAddressResolver,\\n    ResolverBase\\n{\\n    uint256 private constant COIN_TYPE_ETH = 60;\\n\\n    mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes))) versionable_addresses;\\n\\n    /**\\n     * Sets the address associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param a The address to set.\\n     */\\n    function setAddr(bytes32 node, address a)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        setAddr(node, COIN_TYPE_ETH, addressToBytes(a));\\n    }\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (address payable)\\n    {\\n        bytes memory a = addr(node, COIN_TYPE_ETH);\\n        if (a.length == 0) {\\n            return payable(0);\\n        }\\n        return bytesToAddress(a);\\n    }\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes memory a\\n    ) public virtual authorised(node) {\\n        emit AddressChanged(node, coinType, a);\\n        if (coinType == COIN_TYPE_ETH) {\\n            emit AddrChanged(node, bytesToAddress(a));\\n        }\\n        versionable_addresses[recordVersions[node]][node][coinType] = a;\\n    }\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bytes memory)\\n    {\\n        return versionable_addresses[recordVersions[node]][node][coinType];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IAddrResolver).interfaceId ||\\n            interfaceID == type(IAddressResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n\\n    function bytesToAddress(bytes memory b)\\n        internal\\n        pure\\n        returns (address payable a)\\n    {\\n        require(b.length == 20);\\n        assembly {\\n            a := div(mload(add(b, 32)), exp(256, 12))\\n        }\\n    }\\n\\n    function addressToBytes(address a) internal pure returns (bytes memory b) {\\n        b = new bytes(20);\\n        assembly {\\n            mstore(add(b, 32), mul(a, exp(256, 12)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd646c5d83209db92099b84effe8ab19bb9fccb95c25b2984e2d217c70eeccbf3\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/InterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./AddrResolver.sol\\\";\\nimport \\\"./IInterfaceResolver.sol\\\";\\n\\nabstract contract InterfaceResolver is IInterfaceResolver, AddrResolver {\\n    mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address))) versionable_interfaces;\\n\\n    /**\\n     * Sets an interface associated with a name.\\n     * Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\\n     * @param node The node to update.\\n     * @param interfaceID The EIP 165 interface ID.\\n     * @param implementer The address of a contract that implements this interface for this node.\\n     */\\n    function setInterface(\\n        bytes32 node,\\n        bytes4 interfaceID,\\n        address implementer\\n    ) external virtual authorised(node) {\\n        versionable_interfaces[recordVersions[node]][node][interfaceID] = implementer;\\n        emit InterfaceChanged(node, interfaceID, implementer);\\n    }\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (address)\\n    {\\n        address implementer = versionable_interfaces[recordVersions[node]][node][interfaceID];\\n        if (implementer != address(0)) {\\n            return implementer;\\n        }\\n\\n        address a = addr(node);\\n        if (a == address(0)) {\\n            return address(0);\\n        }\\n\\n        (bool success, bytes memory returnData) = a.staticcall(\\n            abi.encodeWithSignature(\\n                \\\"supportsInterface(bytes4)\\\",\\n                type(IERC165).interfaceId\\n            )\\n        );\\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\\n            // EIP 165 not supported by target\\n            return address(0);\\n        }\\n\\n        (success, returnData) = a.staticcall(\\n            abi.encodeWithSignature(\\\"supportsInterface(bytes4)\\\", interfaceID)\\n        );\\n        if (!success || returnData.length < 32 || returnData[31] == 0) {\\n            // Specified interface not supported by target\\n            return address(0);\\n        }\\n\\n        return a;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IInterfaceResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3daeadb9196264d907ef62b4d615fb1aae8ec3552293ae0004c3e39b5533e70f\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/profiles/InterfaceResolver.sol:InterfaceResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 14165,
                "contract": "contracts/resolvers/profiles/InterfaceResolver.sol:InterfaceResolver",
                "label": "versionable_addresses",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))"
              },
              {
                "astId": 15160,
                "contract": "contracts/resolvers/profiles/InterfaceResolver.sol:InterfaceResolver",
                "label": "versionable_interfaces",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes4,t_address)))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_bytes4": {
                "encoding": "inplace",
                "label": "bytes4",
                "numberOfBytes": "4"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_mapping(t_bytes4,t_address))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(bytes4 => address))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes4,t_address)"
              },
              "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(uint256 => bytes))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_bytes_storage)"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_bytes4,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes4",
                "label": "mapping(bytes4 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_bytes4,t_address)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_bytes4,t_address))"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_uint256,t_bytes_storage))"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "addr(bytes32)": {
                "notice": "Returns the address associated with an ENS node."
              },
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "interfaceImplementer(bytes32,bytes4)": {
                "notice": "Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for the specified interfaceID, its address will be returned."
              },
              "setAddr(bytes32,address)": {
                "notice": "Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "setInterface(bytes32,bytes4,address)": {
                "notice": "Sets an interface associated with a name. Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/NameResolver.sol": {
        "NameResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "NameChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "newName",
                  "type": "string"
                }
              ],
              "name": "setName",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "name(bytes32)": {
                "params": {
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated name."
                }
              },
              "setName(bytes32,string)": {
                "params": {
                  "node": "The node to update."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "clearRecords(bytes32)": "3603d758",
              "name(bytes32)": "691f3431",
              "recordVersions(bytes32)": "d700ff33",
              "setName(bytes32,string)": "77372213",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated name.\"}},\"setName(bytes32,string)\":{\"params\":{\"node\":\"The node to update.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"},\"setName(bytes32,string)\":{\"notice\":\"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/NameResolver.sol\":\"NameResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/NameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./INameResolver.sol\\\";\\n\\nabstract contract NameResolver is INameResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => string)) versionable_names;\\n\\n    /**\\n     * Sets the name associated with an ENS node, for reverse records.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function setName(bytes32 node, string calldata newName)\\n        external\\n        virtual\\n        authorised(node)\\n    {\\n        versionable_names[recordVersions[node]][node] = newName;\\n        emit NameChanged(node, newName);\\n    }\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (string memory)\\n    {\\n        return versionable_names[recordVersions[node]][node];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(INameResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0xaa9acf9a857d791d8e3ecb3b962addc7c6a54a9bf4cdd429bb77f075d384486f\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/profiles/NameResolver.sol:NameResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 15352,
                "contract": "contracts/resolvers/profiles/NameResolver.sol:NameResolver",
                "label": "versionable_names",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_string_storage))"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_string_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => string))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_string_storage)"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "name(bytes32)": {
                "notice": "Returns the name associated with an ENS node, for reverse records. Defined in EIP181."
              },
              "setName(bytes32,string)": {
                "notice": "Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/PubkeyResolver.sol": {
        "PubkeyResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "PubkeyChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "pubkey",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "x",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "y",
                  "type": "bytes32"
                }
              ],
              "name": "setPubkey",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "pubkey(bytes32)": {
                "params": {
                  "node": "The ENS node to query"
                },
                "returns": {
                  "x": "The X coordinate of the curve point for the public key.",
                  "y": "The Y coordinate of the curve point for the public key."
                }
              },
              "setPubkey(bytes32,bytes32,bytes32)": {
                "params": {
                  "node": "The ENS node to query",
                  "x": "the X coordinate of the curve point for the public key.",
                  "y": "the Y coordinate of the curve point for the public key."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "clearRecords(bytes32)": "3603d758",
              "pubkey(bytes32)": "c8690233",
              "recordVersions(bytes32)": "d700ff33",
              "setPubkey(bytes32,bytes32,bytes32)": "29cd62ea",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"pubkey(bytes32)\":{\"params\":{\"node\":\"The ENS node to query\"},\"returns\":{\"x\":\"The X coordinate of the curve point for the public key.\",\"y\":\"The Y coordinate of the curve point for the public key.\"}},\"setPubkey(bytes32,bytes32,bytes32)\":{\"params\":{\"node\":\"The ENS node to query\",\"x\":\"the X coordinate of the curve point for the public key.\",\"y\":\"the Y coordinate of the curve point for the public key.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"pubkey(bytes32)\":{\"notice\":\"Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619.\"},\"setPubkey(bytes32,bytes32,bytes32)\":{\"notice\":\"Sets the SECP256k1 public key associated with an ENS node.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/PubkeyResolver.sol\":\"PubkeyResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/PubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./IPubkeyResolver.sol\\\";\\n\\nabstract contract PubkeyResolver is IPubkeyResolver, ResolverBase {\\n    struct PublicKey {\\n        bytes32 x;\\n        bytes32 y;\\n    }\\n\\n    mapping(uint64 => mapping(bytes32 => PublicKey)) versionable_pubkeys;\\n\\n    /**\\n     * Sets the SECP256k1 public key associated with an ENS node.\\n     * @param node The ENS node to query\\n     * @param x the X coordinate of the curve point for the public key.\\n     * @param y the Y coordinate of the curve point for the public key.\\n     */\\n    function setPubkey(\\n        bytes32 node,\\n        bytes32 x,\\n        bytes32 y\\n    ) external virtual authorised(node) {\\n        versionable_pubkeys[recordVersions[node]][node] = PublicKey(x, y);\\n        emit PubkeyChanged(node, x, y);\\n    }\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (bytes32 x, bytes32 y)\\n    {\\n        uint64 currentRecordVersion = recordVersions[node];\\n        return (\\n            versionable_pubkeys[currentRecordVersion][node].x,\\n            versionable_pubkeys[currentRecordVersion][node].y\\n        );\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IPubkeyResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3b7b2e3b59874bacd585928af1b15978f900df4c87fd265510db184623e35546\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/profiles/PubkeyResolver.sol:PubkeyResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 15439,
                "contract": "contracts/resolvers/profiles/PubkeyResolver.sol:PubkeyResolver",
                "label": "versionable_pubkeys",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_struct(PublicKey)15432_storage))"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_struct(PublicKey)15432_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => struct PubkeyResolver.PublicKey)",
                "numberOfBytes": "32",
                "value": "t_struct(PublicKey)15432_storage"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_struct(PublicKey)15432_storage))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => struct PubkeyResolver.PublicKey))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_struct(PublicKey)15432_storage)"
              },
              "t_struct(PublicKey)15432_storage": {
                "encoding": "inplace",
                "label": "struct PubkeyResolver.PublicKey",
                "members": [
                  {
                    "astId": 15429,
                    "contract": "contracts/resolvers/profiles/PubkeyResolver.sol:PubkeyResolver",
                    "label": "x",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_bytes32"
                  },
                  {
                    "astId": 15431,
                    "contract": "contracts/resolvers/profiles/PubkeyResolver.sol:PubkeyResolver",
                    "label": "y",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_bytes32"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "pubkey(bytes32)": {
                "notice": "Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619."
              },
              "setPubkey(bytes32,bytes32,bytes32)": {
                "notice": "Sets the SECP256k1 public key associated with an ENS node."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/resolvers/profiles/TextResolver.sol": {
        "TextResolver": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "string",
                  "name": "indexedKey",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "TextChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "newVersion",
                  "type": "uint64"
                }
              ],
              "name": "VersionChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "clearRecords",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "recordVersions",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                }
              ],
              "name": "setText",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "key",
                  "type": "string"
                }
              ],
              "name": "text",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "clearRecords(bytes32)": {
                "params": {
                  "node": "The node to update."
                }
              },
              "setText(bytes32,string,string)": {
                "params": {
                  "key": "The key to set.",
                  "node": "The node to update.",
                  "value": "The text data value to set."
                }
              },
              "text(bytes32,string)": {
                "params": {
                  "key": "The text data key to query.",
                  "node": "The ENS node to query."
                },
                "returns": {
                  "_0": "The associated text data."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "clearRecords(bytes32)": "3603d758",
              "recordVersions(bytes32)": "d700ff33",
              "setText(bytes32,string,string)": "10f13a8c",
              "supportsInterface(bytes4)": "01ffc9a7",
              "text(bytes32,string)": "59d1d43c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"VersionChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearRecords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"recordVersions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"clearRecords(bytes32)\":{\"params\":{\"node\":\"The node to update.\"}},\"setText(bytes32,string,string)\":{\"params\":{\"key\":\"The key to set.\",\"node\":\"The node to update.\",\"value\":\"The text data value to set.\"}},\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"The associated text data.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearRecords(bytes32)\":{\"notice\":\"Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setText(bytes32,string,string)\":{\"notice\":\"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry.\"},\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/resolvers/profiles/TextResolver.sol\":\"TextResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/TextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"../ResolverBase.sol\\\";\\nimport \\\"./ITextResolver.sol\\\";\\n\\nabstract contract TextResolver is ITextResolver, ResolverBase {\\n    mapping(uint64 => mapping(bytes32 => mapping(string => string))) versionable_texts;\\n\\n    /**\\n     * Sets the text data associated with an ENS node and key.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     * @param key The key to set.\\n     * @param value The text data value to set.\\n     */\\n    function setText(\\n        bytes32 node,\\n        string calldata key,\\n        string calldata value\\n    ) external virtual authorised(node) {\\n        versionable_texts[recordVersions[node]][node][key] = value;\\n        emit TextChanged(node, key, key, value);\\n    }\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        virtual\\n        override\\n        returns (string memory)\\n    {\\n        return versionable_texts[recordVersions[node]][node][key];\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(ITextResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x3a52fa55967f964206fdefe61461f505bcdfa23264ef28da648c34a9c98081c1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 13932,
                "contract": "contracts/resolvers/profiles/TextResolver.sol:TextResolver",
                "label": "recordVersions",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_uint64)"
              },
              {
                "astId": 15542,
                "contract": "contracts/resolvers/profiles/TextResolver.sol:TextResolver",
                "label": "versionable_texts",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage)))"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(string => string))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_string_memory_ptr,t_string_storage)"
              },
              "t_mapping(t_bytes32,t_uint64)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint64)",
                "numberOfBytes": "32",
                "value": "t_uint64"
              },
              "t_mapping(t_string_memory_ptr,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_string_memory_ptr",
                "label": "mapping(string => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_mapping(t_uint64,t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage)))": {
                "encoding": "mapping",
                "key": "t_uint64",
                "label": "mapping(uint64 => mapping(bytes32 => mapping(string => string)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_bytes32,t_mapping(t_string_memory_ptr,t_string_storage))"
              },
              "t_string_memory_ptr": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "clearRecords(bytes32)": {
                "notice": "Increments the record version associated with an ENS node. May only be called by the owner of that node in the ENS registry."
              },
              "setText(bytes32,string,string)": {
                "notice": "Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry."
              },
              "text(bytes32,string)": {
                "notice": "Returns the text data associated with an ENS node and key."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/root/Controllable.sol": {
        "Controllable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "enabled",
                  "type": "bool"
                }
              ],
              "name": "ControllerChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "controllers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "enabled",
                  "type": "bool"
                }
              ],
              "name": "setController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 31,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104fb8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063da8c229e11610050578063da8c229e146100a3578063e0dba60f146100d6578063f2fde38b146100e957600080fd5b8063715018a61461006c5780638da5cb5b14610076575b600080fd5b6100746100fc565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100c66100b1366004610467565b60016020526000908152604090205460ff1681565b604051901515815260200161009a565b6100746100e4366004610489565b61018e565b6100746100f7366004610467565b610299565b60005473ffffffffffffffffffffffffffffffffffffffff163314610182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61018c60006103c9565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610179565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461031a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610179565b73ffffffffffffffffffffffffffffffffffffffff81166103bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610179565b6103c6816103c9565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461046257600080fd5b919050565b60006020828403121561047957600080fd5b6104828261043e565b9392505050565b6000806040838503121561049c57600080fd5b6104a58361043e565b9150602083013580151581146104ba57600080fd5b80915050925092905056fea26469706673582212200b8660016f8ed28a02d1d0e7b406f6f383bdfffb6cf8ad4f42c2830d181eb5da64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x4FB DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDA8C229E GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xFC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC6 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x467 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9A JUMP JUMPDEST PUSH2 0x74 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x489 JUMP JUMPDEST PUSH2 0x18E JUMP JUMPDEST PUSH2 0x74 PUSH2 0xF7 CALLDATASIZE PUSH1 0x4 PUSH2 0x467 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x182 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18C PUSH1 0x0 PUSH2 0x3C9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x179 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x179 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x3BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x179 JUMP JUMPDEST PUSH2 0x3C6 DUP2 PUSH2 0x3C9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482 DUP3 PUSH2 0x43E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A5 DUP4 PUSH2 0x43E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND DUP7 PUSH1 0x1 PUSH16 0x8ED28A02D1D0E7B406F6F383BDFFFB6C 0xF8 0xAD 0x4F TIMESTAMP 0xC2 DUP4 0xD XOR 0x1E 0xB5 0xDA PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "79:510:87:-:0;;;;;;;;;;;;-1:-1:-1;921:32:2;719:10:14;921:18:2;:32::i;:::-;79:510:87;;2270:187:2;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;79:510:87:-;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 969,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@controllers_15628": {
                  "entryPoint": null,
                  "id": 15628,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@renounceOwnership_598": {
                  "entryPoint": 252,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setController_15667": {
                  "entryPoint": 398,
                  "id": 15667,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@transferOwnership_621": {
                  "entryPoint": 665,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 1086,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 1127,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 1161,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1946:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "115:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "125:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "137:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "148:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "133:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "133:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "125:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "182:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "190:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "178:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "178:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "160:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "160:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "84:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "95:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "106:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "294:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "304:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "326:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "313:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "313:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "304:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "419:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "428:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "431:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "421:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "421:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "421:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "355:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "366:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "373:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "362:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "362:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "352:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "352:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "342:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "273:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "284:5:111",
                            "type": ""
                          }
                        ],
                        "src": "245:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "516:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "562:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "571:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "574:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "564:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "564:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "564:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "537:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "546:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "533:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "533:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "558:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "529:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "529:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "526:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "587:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "616:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "597:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "597:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "587:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "482:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "493:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "505:6:111",
                            "type": ""
                          }
                        ],
                        "src": "446:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "732:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "742:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "754:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "765:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "742:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "784:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "809:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "802:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "802:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "795:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "795:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "777:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "777:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "777:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "701:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "712:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "723:4:111",
                            "type": ""
                          }
                        ],
                        "src": "637:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "913:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "959:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "968:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "971:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "961:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "961:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "961:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "934:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "943:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "930:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "930:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "955:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "926:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "926:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "923:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "984:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1013:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "994:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "994:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "984:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1032:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1062:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1073:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1058:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1058:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1045:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1045:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1036:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1130:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1139:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1142:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1132:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1132:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1099:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1120:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "1113:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1113:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1106:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1106:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1096:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1096:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1089:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1089:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1086:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1155:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1165:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1155:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "871:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "882:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "894:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "902:6:111",
                            "type": ""
                          }
                        ],
                        "src": "829:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1355:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1372:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1383:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1365:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1365:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1365:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1406:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1417:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1402:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1402:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1422:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1395:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1395:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1445:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1456:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1441:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1441:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1461:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1434:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1434:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1434:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1505:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1517:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1528:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1513:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1513:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1505:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1332:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1346:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1181:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1716:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1733:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1744:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1726:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1726:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1726:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1767:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1778:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1763:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1763:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1783:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1756:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1756:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1756:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1806:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1817:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1802:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1802:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1822:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1795:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1795:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1877:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1888:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1873:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1873:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1893:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1866:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1866:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1866:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1911:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1923:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1934:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1919:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1919:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1911:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1693:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1707:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1542:402:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c8063da8c229e11610050578063da8c229e146100a3578063e0dba60f146100d6578063f2fde38b146100e957600080fd5b8063715018a61461006c5780638da5cb5b14610076575b600080fd5b6100746100fc565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100c66100b1366004610467565b60016020526000908152604090205460ff1681565b604051901515815260200161009a565b6100746100e4366004610489565b61018e565b6100746100f7366004610467565b610299565b60005473ffffffffffffffffffffffffffffffffffffffff163314610182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61018c60006103c9565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610179565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461031a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610179565b73ffffffffffffffffffffffffffffffffffffffff81166103bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610179565b6103c6816103c9565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461046257600080fd5b919050565b60006020828403121561047957600080fd5b6104828261043e565b9392505050565b6000806040838503121561049c57600080fd5b6104a58361043e565b9150602083013580151581146104ba57600080fd5b80915050925092905056fea26469706673582212200b8660016f8ed28a02d1d0e7b406f6f383bdfffb6cf8ad4f42c2830d181eb5da64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDA8C229E GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xFC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC6 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x467 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9A JUMP JUMPDEST PUSH2 0x74 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x489 JUMP JUMPDEST PUSH2 0x18E JUMP JUMPDEST PUSH2 0x74 PUSH2 0xF7 CALLDATASIZE PUSH1 0x4 PUSH2 0x467 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x182 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18C PUSH1 0x0 PUSH2 0x3C9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x179 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x179 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x3BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x179 JUMP JUMPDEST PUSH2 0x3C6 DUP2 PUSH2 0x3C9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482 DUP3 PUSH2 0x43E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A5 DUP4 PUSH2 0x43E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND DUP7 PUSH1 0x1 PUSH16 0x8ED28A02D1D0E7B406F6F383BDFFFB6C 0xF8 0xAD 0x4F TIMESTAMP 0xC2 DUP4 0xD XOR 0x1E 0xB5 0xDA PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "79:510:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1668:101:2;;;:::i;:::-;;1036:85;1082:7;1108:6;1036:85;;1108:6;;;;160:74:111;;148:2;133:18;1036:85:2;;;;;;;;118:43:87;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;802:14:111;;795:22;777:41;;765:2;750:18;118:43:87;637:187:111;410:177:87;;;;;;:::i;:::-;;:::i;1918:198:2:-;;;;;;:::i;:::-;;:::i;1668:101::-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1383:2:111;1240:68:2;;;1365:21:111;;;1402:18;;;1395:30;1461:34;1441:18;;;1434:62;1513:18;;1240:68:2;;;;;;;;;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;410:177:87:-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1383:2:111;1240:68:2;;;1365:21:111;;;1402:18;;;1395:30;1461:34;1441:18;;;1434:62;1513:18;;1240:68:2;1181:356:111;1240:68:2;494:23:87::1;::::0;::::1;;::::0;;;:11:::1;:23;::::0;;;;;;;;:33;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;542:38;;777:41:111;;;542:38:87::1;::::0;750:18:111;542:38:87::1;;;;;;;410:177:::0;;:::o;1918:198:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1383:2:111;1240:68:2;;;1365:21:111;;;1402:18;;;1395:30;1461:34;1441:18;;;1434:62;1513:18;;1240:68:2;1181:356:111;1240:68:2;2006:22:::1;::::0;::::1;1998:73;;;::::0;::::1;::::0;;1744:2:111;1998:73:2::1;::::0;::::1;1726:21:111::0;1783:2;1763:18;;;1756:30;1822:34;1802:18;;;1795:62;1893:8;1873:18;;;1866:36;1919:19;;1998:73:2::1;1542:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;2270:187::-;2343:16;2362:6;;;2378:17;;;;;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;245:196:111:-;313:20;;373:42;362:54;;352:65;;342:93;;431:1;428;421:12;342:93;245:196;;;:::o;446:186::-;505:6;558:2;546:9;537:7;533:23;529:32;526:52;;;574:1;571;564:12;526:52;597:29;616:9;597:29;:::i;:::-;587:39;446:186;-1:-1:-1;;;446:186:111:o;829:347::-;894:6;902;955:2;943:9;934:7;930:23;926:32;923:52;;;971:1;968;961:12;923:52;994:29;1013:9;994:29;:::i;:::-;984:39;;1073:2;1062:9;1058:18;1045:32;1120:5;1113:13;1106:21;1099:5;1096:32;1086:60;;1142:1;1139;1132:12;1086:60;1165:5;1155:15;;;829:347;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "255000",
                "executionCost": "26135",
                "totalCost": "281135"
              },
              "external": {
                "controllers(address)": "2519",
                "owner()": "2301",
                "renounceOwnership()": "28076",
                "setController(address,bool)": "28256",
                "transferOwnership(address)": "28290"
              }
            },
            "methodIdentifiers": {
              "controllers(address)": "da8c229e",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "setController(address,bool)": "e0dba60f",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"ControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"controllers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/root/Controllable.sol\":\"Controllable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/root/Controllable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool enabled);\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n\\n    function setController(address controller, bool enabled) public onlyOwner {\\n        controllers[controller] = enabled;\\n        emit ControllerChanged(controller, enabled);\\n    }\\n}\\n\",\"keccak256\":\"0xb19b8c0fafe9ca2b4bf8aaafee486fa31437672e1e1977bdf84bfe03464969db\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "contracts/root/Controllable.sol:Controllable",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 15628,
                "contract": "contracts/root/Controllable.sol:Controllable",
                "label": "controllers",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_bool)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/root/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_15698": {
                  "entryPoint": null,
                  "id": 15698,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610208806100326000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632f54bf6e146100465780638da5cb5b1461008a578063f2fde38b146100cf575b600080fd5b610075610054366004610195565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405190151581526020015b60405180910390f35b6000546100aa9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b6100e26100dd366004610195565b6100e4565b005b60005473ffffffffffffffffffffffffffffffffffffffff16331461010857600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156101a757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146101cb57600080fd5b939250505056fea2646970667358221220e1f445375a6ab1b35efcb19569a6cf4c6ec9bf1089e328e68bc2fdaef5a9bdd164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x208 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2F54BF6E EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x75 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x195 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAA SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x81 JUMP JUMPDEST PUSH2 0xE2 PUSH2 0xDD CALLDATASIZE PUSH1 0x4 PUSH2 0x195 JUMP JUMPDEST PUSH2 0xE4 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 DELEGATECALL GASLIMIT CALLDATACOPY GAS PUSH11 0xB1B35EFCB19569A6CF4C6E 0xC9 0xBF LT DUP10 0xE3 0x28 0xE6 DUP12 0xC2 REVERT 0xAE CREATE2 0xA9 0xBD 0xD1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "25:557:88:-:0;;;270:56;;;;;;;;;-1:-1:-1;301:5:88;:18;;-1:-1:-1;;;;;;301:18:88;309:10;301:18;;;25:557;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@isOwner_15727": {
                  "entryPoint": null,
                  "id": 15727,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_15672": {
                  "entryPoint": null,
                  "id": 15672,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferOwnership_15715": {
                  "entryPoint": 228,
                  "id": 15715,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 405,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:748:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:239:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "277:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "286:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "289:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "279:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "279:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "213:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "224:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "231:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "220:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "220:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "210:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "210:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "203:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "203:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "200:93:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "302:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "312:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:309:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "423:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "433:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "445:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "456:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "441:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "441:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "433:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "475:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "500:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "493:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "493:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "486:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "486:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "468:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "468:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "468:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "392:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "403:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "414:4:111",
                            "type": ""
                          }
                        ],
                        "src": "328:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "621:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "631:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "643:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "654:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "639:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "639:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "631:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "673:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "688:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "696:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "684:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "684:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "666:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "666:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "666:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "590:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "601:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "612:4:111",
                            "type": ""
                          }
                        ],
                        "src": "520:226:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c80632f54bf6e146100465780638da5cb5b1461008a578063f2fde38b146100cf575b600080fd5b610075610054366004610195565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161490565b60405190151581526020015b60405180910390f35b6000546100aa9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b6100e26100dd366004610195565b6100e4565b005b60005473ffffffffffffffffffffffffffffffffffffffff16331461010857600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156101a757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146101cb57600080fd5b939250505056fea2646970667358221220e1f445375a6ab1b35efcb19569a6cf4c6ec9bf1089e328e68bc2fdaef5a9bdd164736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2F54BF6E EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x75 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x195 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAA SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x81 JUMP JUMPDEST PUSH2 0xE2 PUSH2 0xDD CALLDATASIZE PUSH1 0x4 PUSH2 0x195 JUMP JUMPDEST PUSH2 0xE4 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 DELEGATECALL GASLIMIT CALLDATACOPY GAS PUSH11 0xB1B35EFCB19569A6CF4C6E 0xC9 0xBF LT DUP10 0xE3 0x28 0xE6 DUP12 0xC2 REVERT 0xAE CREATE2 0xA9 0xBD 0xD1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "25:557:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;485:95;;;;;;:::i;:::-;537:4;560:5;:13;:5;;;:13;;;;485:95;;;;493:14:111;;486:22;468:41;;456:2;441:18;485:95:88;;;;;;;;48:20;;;;;;;;;;;;696:42:111;684:55;;;666:74;;654:2;639:18;48:20:88;520:226:111;332:147:88;;;;;;:::i;:::-;;:::i;:::-;;;537:4;560:5;:13;:5;234:10;560:13;218:28;;;;;;430:5:::1;::::0;;409:37:::1;::::0;::::1;::::0;;::::1;::::0;430:5;::::1;::::0;409:37:::1;::::0;::::1;456:5;:16:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;332:147::o;14:309:111:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;200:93;312:5;14:309;-1:-1:-1;;;14:309:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "104000",
                "executionCost": "24388",
                "totalCost": "128388"
              },
              "external": {
                "isOwner(address)": "2400",
                "owner()": "2313",
                "transferOwnership(address)": "30289"
              }
            },
            "methodIdentifiers": {
              "isOwner(address)": "2f54bf6e",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/root/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/root/Ownable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\ncontract Ownable {\\n    address public owner;\\n\\n    event OwnershipTransferred(\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    modifier onlyOwner() {\\n        require(isOwner(msg.sender));\\n        _;\\n    }\\n\\n    constructor() public {\\n        owner = msg.sender;\\n    }\\n\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        emit OwnershipTransferred(owner, newOwner);\\n        owner = newOwner;\\n    }\\n\\n    function isOwner(address addr) public view returns (bool) {\\n        return owner == addr;\\n    }\\n}\\n\",\"keccak256\":\"0xd06845ede20815e1a6d5b36fec21d7b90ea24390f24a9b31e4220c90b2ff3252\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 15672,
                "contract": "contracts/root/Ownable.sol:Ownable",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/root/Root.sol": {
        "Root": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "_ens",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "enabled",
                  "type": "bool"
                }
              ],
              "name": "ControllerChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                }
              ],
              "name": "TLDLocked",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "controllers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                }
              ],
              "name": "lock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "locked",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "enabled",
                  "type": "bool"
                }
              ],
              "name": "setController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "setSubnodeOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_15773": {
                  "entryPoint": null,
                  "id": 15773,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 93,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory": {
                  "entryPoint": 173,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:319:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "108:209:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "154:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "163:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "166:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "156:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "156:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "156:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "138:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "150:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "121:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "121:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "118:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "179:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "198:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "192:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "192:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "183:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "271:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "280:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "283:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "273:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "273:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "273:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "230:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "241:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "256:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "261:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "252:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "252:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "265:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "248:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "248:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "237:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "237:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "227:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "227:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "220:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "220:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "217:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "296:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "306:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "296:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "74:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "85:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "97:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:303:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_ENS_$12157_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051610b2e380380610b2e83398101604081905261002f916100ad565b6100383361005d565b600280546001600160a01b0319166001600160a01b03929092169190911790556100dd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100bf57600080fd5b81516001600160a01b03811681146100d657600080fd5b9392505050565b610a42806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638cb8ecec11610081578063da8c229e1161005b578063da8c229e14610201578063e0dba60f14610224578063f2fde38b1461023757600080fd5b80638cb8ecec146101ad5780638da5cb5b146101c0578063cbe9e764146101de57600080fd5b80633f15457f116100b25780633f15457f1461014d5780634e543b2614610192578063715018a6146101a557600080fd5b806301670ba9146100ce57806301ffc9a7146100e3575b600080fd5b6100e16100dc3660046108e5565b61024a565b005b6101386100f13660046108fe565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b60025461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610144565b6100e16101a0366004610970565b610334565b6100e1610444565b6100e16101bb36600461098b565b6104d1565b60005473ffffffffffffffffffffffffffffffffffffffff1661016d565b6101386101ec3660046108e5565b60036020526000908152604090205460ff1681565b61013861020f366004610970565b60016020526000908152604090205460ff1681565b6100e16102323660046109b7565b610635565b6100e1610245366004610970565b610740565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60405181907f1764176cfa565853ba1ded547a830a9f9bff95231ef6fd228b3ddd617577756990600090a2600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c7565b6002546040517f1896f70a0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015290911690631896f70a90604401600060405180830381600087803b15801561042957600080fd5b505af115801561043d573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c7565b6104cf6000610870565b565b3360009081526001602052604090205460ff16610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f60448201527f6e74726f6c6c657200000000000000000000000000000000000000000000000060648201526084016102c7565b60008281526003602052604090205460ff161561058c57600080fd5b6002546040517f06ab5923000000000000000000000000000000000000000000000000000000008152600060048201526024810184905273ffffffffffffffffffffffffffffffffffffffff8381166044830152909116906306ab5923906064016020604051808303816000875af115801561060c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063091906109f3565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c7565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c7565b73ffffffffffffffffffffffffffffffffffffffff8116610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102c7565b61086d81610870565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156108f757600080fd5b5035919050565b60006020828403121561091057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461094057600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461096b57600080fd5b919050565b60006020828403121561098257600080fd5b61094082610947565b6000806040838503121561099e57600080fd5b823591506109ae60208401610947565b90509250929050565b600080604083850312156109ca57600080fd5b6109d383610947565b9150602083013580151581146109e857600080fd5b809150509250929050565b600060208284031215610a0557600080fd5b505191905056fea2646970667358221220ad7c94c5c408f40a2b5dab8d76404742873dac48943e2b0479b8a717e78b459a64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB2E CODESIZE SUB DUP1 PUSH2 0xB2E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xAD JUMP JUMPDEST PUSH2 0x38 CALLER PUSH2 0x5D JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xA42 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8CB8ECEC GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDA8C229E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8CB8ECEC EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xCBE9E764 EQ PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F15457F GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x4E543B26 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1670BA9 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x24A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x138 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x8FE JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x16D SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x970 JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x444 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x1BB CALLDATASIZE PUSH1 0x4 PUSH2 0x98B JUMP JUMPDEST PUSH2 0x4D1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16D JUMP JUMPDEST PUSH2 0x138 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x20F CALLDATASIZE PUSH1 0x4 PUSH2 0x970 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0x9B7 JUMP JUMPDEST PUSH2 0x635 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x970 JUMP JUMPDEST PUSH2 0x740 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x1764176CFA565853BA1DED547A830A9F9BFF95231EF6FD228B3DDD6175777569 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x3B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x43D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH2 0x4CF PUSH1 0x0 PUSH2 0x870 JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x570 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C61626C653A2043616C6C6572206973206E6F74206120636F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E74726F6C6C6572000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x60C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x630 SWAP2 SWAP1 PUSH2 0x9F3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x7C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x864 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH2 0x86D DUP2 PUSH2 0x870 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x96B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x940 DUP3 PUSH2 0x947 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x9AE PUSH1 0x20 DUP5 ADD PUSH2 0x947 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9D3 DUP4 PUSH2 0x947 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH29 0x94C5C408F40A2B5DAB8D76404742873DAC48943E2B0479B8A717E78B45 SWAP11 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "138:976:89:-:0;;;452:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;921:32:2;719:10:14;921:18:2;:32::i;:::-;491:3:89;:10;;-1:-1:-1;;;;;;491:10:89;-1:-1:-1;;;;;491:10:89;;;;;;;;;;138:976;;2270:187:2;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:303:111:-;97:6;150:2;138:9;129:7;125:23;121:32;118:52;;;166:1;163;156:12;118:52;192:16;;-1:-1:-1;;;;;237:31:111;;227:42;;217:70;;283:1;280;273:12;217:70;306:5;14:303;-1:-1:-1;;;14:303:111:o;:::-;138:976:89;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 2160,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@controllers_15628": {
                  "entryPoint": null,
                  "id": 15628,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@ens_15758": {
                  "entryPoint": null,
                  "id": 15758,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@lock_15831": {
                  "entryPoint": 586,
                  "id": 15831,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@locked_15762": {
                  "entryPoint": null,
                  "id": 15762,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@renounceOwnership_598": {
                  "entryPoint": 1092,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setController_15667": {
                  "entryPoint": 1589,
                  "id": 15667,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setResolver_15813": {
                  "entryPoint": 820,
                  "id": 15813,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@setSubnodeOwner_15798": {
                  "entryPoint": 1233,
                  "id": 15798,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_15843": {
                  "entryPoint": null,
                  "id": 15843,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferOwnership_621": {
                  "entryPoint": 1856,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 2375,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 2416,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 2487,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 2277,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 2547,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 2443,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 2302,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4244:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "155:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "178:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "165:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "165:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "155:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "268:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "314:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "323:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "326:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "316:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "316:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "316:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "289:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "298:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "285:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "285:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "310:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "281:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "281:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "278:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "339:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "365:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "352:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "352:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "343:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "485:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "494:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "497:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "487:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "487:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "487:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "397:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "408:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "415:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "404:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "404:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "394:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "394:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "387:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "387:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "384:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "510:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "520:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "510:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "234:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "245:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "257:6:111",
                            "type": ""
                          }
                        ],
                        "src": "199:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "631:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "641:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "653:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "664:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "649:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "641:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "683:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "708:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "701:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "701:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "694:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "694:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "676:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "676:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "676:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "600:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "611:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "622:4:111",
                            "type": ""
                          }
                        ],
                        "src": "536:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "842:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "852:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "864:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "875:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "860:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "860:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "852:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "894:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "909:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "917:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "905:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "905:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "887:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "887:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "887:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "811:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "822:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "833:4:111",
                            "type": ""
                          }
                        ],
                        "src": "728:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1021:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1031:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1053:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1040:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1040:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1031:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1146:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1155:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1158:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1148:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1148:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1148:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1082:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1093:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1100:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1089:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1089:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1079:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1079:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1072:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1072:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1069:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1000:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1011:5:111",
                            "type": ""
                          }
                        ],
                        "src": "972:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1243:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1289:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1298:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1301:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1291:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1291:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1291:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1264:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1273:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1260:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1260:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1285:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1256:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1256:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1253:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1314:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1343:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1324:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1324:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1314:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1209:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1220:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1232:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1173:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1451:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1497:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1506:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1509:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1499:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1499:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1499:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1472:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1481:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1468:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1468:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1493:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1464:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1461:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1522:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1545:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1532:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1532:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1522:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1564:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1597:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1608:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1593:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1593:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1574:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1574:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1564:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1409:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1420:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1432:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1440:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1364:254:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1724:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1734:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1746:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1757:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1742:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1742:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1734:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1776:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1799:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1769:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1769:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1769:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1693:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1704:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1715:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1623:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1938:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1984:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1993:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1996:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1986:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1986:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1986:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1959:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1968:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1955:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1955:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1980:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1951:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1951:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1948:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2009:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2038:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2019:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2019:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2009:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2057:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2087:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2098:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2083:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2083:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2070:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2070:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2061:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2155:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2164:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2167:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2157:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2157:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2157:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2124:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2145:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "2138:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2138:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2131:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2131:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2121:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2121:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2114:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2114:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2111:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2180:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2190:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2180:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1896:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1907:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1919:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1927:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1854:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2380:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2397:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2408:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2390:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2390:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2390:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2431:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2442:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2427:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2427:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2447:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2420:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2420:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2420:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2470:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2481:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2466:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2466:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2486:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2459:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2459:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2459:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2530:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2542:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2553:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2538:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2538:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2530:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2357:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2371:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2206:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2696:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2706:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2718:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2729:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2714:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2714:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2706:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2748:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2759:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2741:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2741:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2741:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2786:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2797:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2782:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2782:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2806:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2814:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2802:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2802:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2775:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2775:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2775:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2657:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2668:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2676:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2687:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2567:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3043:230:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3060:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3071:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3053:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3053:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3053:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3094:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3105:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3090:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3090:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3110:2:111",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3083:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3083:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3083:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3133:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3144:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3129:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3129:18:111"
                                  },
                                  {
                                    "hexValue": "436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3149:34:111",
                                    "type": "",
                                    "value": "Controllable: Caller is not a co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3122:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3122:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3122:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3204:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3215:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3200:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3200:18:111"
                                  },
                                  {
                                    "hexValue": "6e74726f6c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3220:10:111",
                                    "type": "",
                                    "value": "ntroller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3193:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3193:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3193:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3240:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3252:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3263:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3248:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3248:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3020:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3034:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2869:404:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3435:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3445:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3457:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3468:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3453:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3453:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3445:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3487:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3498:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3480:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3480:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3480:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3525:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3536:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3521:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3521:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3541:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3514:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3514:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3514:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3568:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3579:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3564:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3564:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3588:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3596:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3584:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3584:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3557:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3557:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3557:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3388:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3399:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3407:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3415:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3426:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3278:368:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3732:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3778:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3787:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3790:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3780:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3780:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3780:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3753:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3762:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3749:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3749:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3774:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3745:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3745:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3742:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3803:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3819:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3813:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3813:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3803:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3698:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3709:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3721:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3651:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4014:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4031:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4042:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4024:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4024:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4024:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4065:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4076:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4061:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4061:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4081:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4054:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4054:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4054:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4104:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4115:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4100:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4120:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4093:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4093:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4093:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4175:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4186:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4171:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4171:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4191:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4164:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4164:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4164:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4209:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4221:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4232:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4217:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4217:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4209:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3991:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4005:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3840:402:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"Controllable: Caller is not a co\")\n        mstore(add(headStart, 96), \"ntroller\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80638cb8ecec11610081578063da8c229e1161005b578063da8c229e14610201578063e0dba60f14610224578063f2fde38b1461023757600080fd5b80638cb8ecec146101ad5780638da5cb5b146101c0578063cbe9e764146101de57600080fd5b80633f15457f116100b25780633f15457f1461014d5780634e543b2614610192578063715018a6146101a557600080fd5b806301670ba9146100ce57806301ffc9a7146100e3575b600080fd5b6100e16100dc3660046108e5565b61024a565b005b6101386100f13660046108fe565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b60025461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610144565b6100e16101a0366004610970565b610334565b6100e1610444565b6100e16101bb36600461098b565b6104d1565b60005473ffffffffffffffffffffffffffffffffffffffff1661016d565b6101386101ec3660046108e5565b60036020526000908152604090205460ff1681565b61013861020f366004610970565b60016020526000908152604090205460ff1681565b6100e16102323660046109b7565b610635565b6100e1610245366004610970565b610740565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60405181907f1764176cfa565853ba1ded547a830a9f9bff95231ef6fd228b3ddd617577756990600090a2600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c7565b6002546040517f1896f70a0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015290911690631896f70a90604401600060405180830381600087803b15801561042957600080fd5b505af115801561043d573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c7565b6104cf6000610870565b565b3360009081526001602052604090205460ff16610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f60448201527f6e74726f6c6c657200000000000000000000000000000000000000000000000060648201526084016102c7565b60008281526003602052604090205460ff161561058c57600080fd5b6002546040517f06ab5923000000000000000000000000000000000000000000000000000000008152600060048201526024810184905273ffffffffffffffffffffffffffffffffffffffff8381166044830152909116906306ab5923906064016020604051808303816000875af115801561060c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063091906109f3565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c7565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c7565b73ffffffffffffffffffffffffffffffffffffffff8116610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102c7565b61086d81610870565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156108f757600080fd5b5035919050565b60006020828403121561091057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461094057600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461096b57600080fd5b919050565b60006020828403121561098257600080fd5b61094082610947565b6000806040838503121561099e57600080fd5b823591506109ae60208401610947565b90509250929050565b600080604083850312156109ca57600080fd5b6109d383610947565b9150602083013580151581146109e857600080fd5b809150509250929050565b600060208284031215610a0557600080fd5b505191905056fea2646970667358221220ad7c94c5c408f40a2b5dab8d76404742873dac48943e2b0479b8a717e78b459a64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8CB8ECEC GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDA8C229E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8CB8ECEC EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xCBE9E764 EQ PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F15457F GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x4E543B26 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1670BA9 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x24A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x138 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x8FE JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x16D SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x970 JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x444 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x1BB CALLDATASIZE PUSH1 0x4 PUSH2 0x98B JUMP JUMPDEST PUSH2 0x4D1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16D JUMP JUMPDEST PUSH2 0x138 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x20F CALLDATASIZE PUSH1 0x4 PUSH2 0x970 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0x9B7 JUMP JUMPDEST PUSH2 0x635 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x970 JUMP JUMPDEST PUSH2 0x740 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x1764176CFA565853BA1DED547A830A9F9BFF95231EF6FD228B3DDD6175777569 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x3B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x43D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH2 0x4CF PUSH1 0x0 PUSH2 0x870 JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x570 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C61626C653A2043616C6C6572206973206E6F74206120636F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E74726F6C6C6572000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x60C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x630 SWAP2 SWAP1 PUSH2 0x9F3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x7C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x864 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2C7 JUMP JUMPDEST PUSH2 0x86D DUP2 PUSH2 0x870 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x96B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x940 DUP3 PUSH2 0x947 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x9AE PUSH1 0x20 DUP5 ADD PUSH2 0x947 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9D3 DUP4 PUSH2 0x947 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH29 0x94C5C408F40A2B5DAB8D76404742873DAC48943E2B0479B8A717E78B45 SWAP11 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "138:976:89:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;830:116;;;;;;:::i;:::-;;:::i;:::-;;952:160;;;;;;:::i;:::-;1073:32;;;;;952:160;;;;701:14:111;;694:22;676:41;;664:2;649:18;952:160:89;;;;;;;;387:14;;;;;;;;;;;;917:42:111;905:55;;;887:74;;875:2;860:18;387:14:89;728:239:111;713:111:89;;;;;;:::i;:::-;;:::i;1668:101:2:-;;;:::i;514:193:89:-;;;;;;:::i;:::-;;:::i;1036:85:2:-;1082:7;1108:6;;;1036:85;;407:38:89;;;;;;:::i;:::-;;;;;;;;;;;;;;;;118:43:87;;;;;;:::i;:::-;;;;;;;;;;;;;;;;410:177;;;;;;:::i;:::-;;:::i;1918:198:2:-;;;;;;:::i;:::-;;:::i;830:116:89:-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;2408:2:111;1240:68:2;;;2390:21:111;;;2427:18;;;2420:30;2486:34;2466:18;;;2459:62;2538:18;;1240:68:2;;;;;;;;;893:16:89::1;::::0;903:5;;893:16:::1;::::0;;;::::1;919:13;::::0;;;:6:::1;:13;::::0;;;;:20;;;::::1;935:4;919:20;::::0;;830:116::o;713:111::-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;2408:2:111;1240:68:2;;;2390:21:111;;;2427:18;;;2420:30;2486:34;2466:18;;;2459:62;2538:18;;1240:68:2;2206:356:111;1240:68:2;781:3:89::1;::::0;:36:::1;::::0;;;;:3:::1;:36;::::0;::::1;2741:25:111::0;781:3:89::1;2802:55:111::0;;;2782:18;;;2775:83;781:3:89;;::::1;::::0;:15:::1;::::0;2714:18:111;;781:36:89::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;713:111:::0;:::o;1668:101:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;2408:2:111;1240:68:2;;;2390:21:111;;;2427:18;;;2420:30;2486:34;2466:18;;;2459:62;2538:18;;1240:68:2;2206:356:111;1240:68:2;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;514:193:89:-;309:10:87;297:23;;;;:11;:23;;;;;;;;276:110;;;;;;;3071:2:111;276:110:87;;;3053:21:111;3110:2;3090:18;;;3083:30;3149:34;3129:18;;;3122:62;3220:10;3200:18;;;3193:38;3248:19;;276:110:87;2869:404:111;276:110:87;632:13:89::1;::::0;;;:6:::1;:13;::::0;;;;;::::1;;631:14;623:23;;;::::0;::::1;;656:3;::::0;:44:::1;::::0;;;;:3:::1;:44;::::0;::::1;3480:25:111::0;3521:18;;;3514:34;;;656:3:89::1;3584:55:111::0;;;3564:18;;;3557:83;656:3:89;;::::1;::::0;:19:::1;::::0;3453:18:111;;656:44:89::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;514:193:::0;;:::o;410:177:87:-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;2408:2:111;1240:68:2;;;2390:21:111;;;2427:18;;;2420:30;2486:34;2466:18;;;2459:62;2538:18;;1240:68:2;2206:356:111;1240:68:2;494:23:87::1;::::0;::::1;;::::0;;;:11:::1;:23;::::0;;;;;;;;:33;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;542:38;;676:41:111;;;542:38:87::1;::::0;649:18:111;542:38:87::1;;;;;;;410:177:::0;;:::o;1918:198:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;2408:2:111;1240:68:2;;;2390:21:111;;;2427:18;;;2420:30;2486:34;2466:18;;;2459:62;2538:18;;1240:68:2;2206:356:111;1240:68:2;2006:22:::1;::::0;::::1;1998:73;;;::::0;::::1;::::0;;4042:2:111;1998:73:2::1;::::0;::::1;4024:21:111::0;4081:2;4061:18;;;4054:30;4120:34;4100:18;;;4093:62;4191:8;4171:18;;;4164:36;4217:19;;1998:73:2::1;3840:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;2270:187::-;2343:16;2362:6;;;2378:17;;;;;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:180:111:-;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:111;;14:180;-1:-1:-1;14:180:111:o;199:332::-;257:6;310:2;298:9;289:7;285:23;281:32;278:52;;;326:1;323;316:12;278:52;365:9;352:23;415:66;408:5;404:78;397:5;394:89;384:117;;497:1;494;487:12;384:117;520:5;199:332;-1:-1:-1;;;199:332:111:o;972:196::-;1040:20;;1100:42;1089:54;;1079:65;;1069:93;;1158:1;1155;1148:12;1069:93;972:196;;;:::o;1173:186::-;1232:6;1285:2;1273:9;1264:7;1260:23;1256:32;1253:52;;;1301:1;1298;1291:12;1253:52;1324:29;1343:9;1324:29;:::i;1364:254::-;1432:6;1440;1493:2;1481:9;1472:7;1468:23;1464:32;1461:52;;;1509:1;1506;1499:12;1461:52;1545:9;1532:23;1522:33;;1574:38;1608:2;1597:9;1593:18;1574:38;:::i;:::-;1564:48;;1364:254;;;;;:::o;1854:347::-;1919:6;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2019:29;2038:9;2019:29;:::i;:::-;2009:39;;2098:2;2087:9;2083:18;2070:32;2145:5;2138:13;2131:21;2124:5;2121:32;2111:60;;2167:1;2164;2157:12;2111:60;2190:5;2180:15;;;1854:347;;;;;:::o;3651:184::-;3721:6;3774:2;3762:9;3753:7;3749:23;3745:32;3742:52;;;3790:1;3787;3780:12;3742:52;-1:-1:-1;3813:16:111;;3651:184;-1:-1:-1;3651:184:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "525200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "controllers(address)": "2530",
                "ens()": "2336",
                "lock(bytes32)": "27809",
                "locked(bytes32)": "2506",
                "owner()": "2352",
                "renounceOwnership()": "28142",
                "setController(address,bool)": "28278",
                "setResolver(address)": "infinite",
                "setSubnodeOwner(bytes32,address)": "infinite",
                "supportsInterface(bytes4)": "356",
                "transferOwnership(address)": "28312"
              }
            },
            "methodIdentifiers": {
              "controllers(address)": "da8c229e",
              "ens()": "3f15457f",
              "lock(bytes32)": "01670ba9",
              "locked(bytes32)": "cbe9e764",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "setController(address,bool)": "e0dba60f",
              "setResolver(address)": "4e543b26",
              "setSubnodeOwner(bytes32,address)": "8cb8ecec",
              "supportsInterface(bytes4)": "01ffc9a7",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"_ens\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"ControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"TLDLocked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"controllers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"locked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/root/Root.sol\":\"Root\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/root/Controllable.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool enabled);\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n\\n    function setController(address controller, bool enabled) public onlyOwner {\\n        controllers[controller] = enabled;\\n        emit ControllerChanged(controller, enabled);\\n    }\\n}\\n\",\"keccak256\":\"0xb19b8c0fafe9ca2b4bf8aaafee486fa31437672e1e1977bdf84bfe03464969db\"},\"contracts/root/Root.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"./Controllable.sol\\\";\\n\\ncontract Root is Ownable, Controllable {\\n    bytes32 private constant ROOT_NODE = bytes32(0);\\n\\n    bytes4 private constant INTERFACE_META_ID =\\n        bytes4(keccak256(\\\"supportsInterface(bytes4)\\\"));\\n\\n    event TLDLocked(bytes32 indexed label);\\n\\n    ENS public ens;\\n    mapping(bytes32 => bool) public locked;\\n\\n    constructor(ENS _ens) public {\\n        ens = _ens;\\n    }\\n\\n    function setSubnodeOwner(bytes32 label, address owner)\\n        external\\n        onlyController\\n    {\\n        require(!locked[label]);\\n        ens.setSubnodeOwner(ROOT_NODE, label, owner);\\n    }\\n\\n    function setResolver(address resolver) external onlyOwner {\\n        ens.setResolver(ROOT_NODE, resolver);\\n    }\\n\\n    function lock(bytes32 label) external onlyOwner {\\n        emit TLDLocked(label);\\n        locked[label] = true;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        external\\n        pure\\n        returns (bool)\\n    {\\n        return interfaceID == INTERFACE_META_ID;\\n    }\\n}\\n\",\"keccak256\":\"0xf6fed46bbdc8a425d112c473a649045148b2e0404647c97590d2a3e2798c9fe3\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "contracts/root/Root.sol:Root",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 15628,
                "contract": "contracts/root/Root.sol:Root",
                "label": "controllers",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_bool)"
              },
              {
                "astId": 15758,
                "contract": "contracts/root/Root.sol:Root",
                "label": "ens",
                "offset": 0,
                "slot": "2",
                "type": "t_contract(ENS)12157"
              },
              {
                "astId": 15762,
                "contract": "contracts/root/Root.sol:Root",
                "label": "locked",
                "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(ENS)12157": {
                "encoding": "inplace",
                "label": "contract ENS",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_bytes32,t_bool)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/utils/ERC20Recoverable.sol": {
        "ERC20Recoverable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "recoverFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "recoverFunds(address,address,uint256)": {
                "details": "The contract is Ownable and only the owner can call the recover function.",
                "params": {
                  "_amount": "The amount of tokens to recover.",
                  "_to": "The address to send the tokens to.",
                  "_token": "The address of the ERC20 token to recover"
                }
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 31,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104e38061007e6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635d3590d514610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461009a575b600080fd5b61006461005f36600461042d565b6100ad565b005b6100646101d2565b6000546040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100646100a8366004610469565b61025f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156101a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cc919061048b565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161012a565b61025d600061038f565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161012a565b73ffffffffffffffffffffffffffffffffffffffff8116610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161012a565b61038c8161038f565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461042857600080fd5b919050565b60008060006060848603121561044257600080fd5b61044b84610404565b925061045960208501610404565b9150604084013590509250925092565b60006020828403121561047b57600080fd5b61048482610404565b9392505050565b60006020828403121561049d57600080fd5b8151801515811461048457600080fdfea264697066735822122093d4f35441e149693692e6983a54fa4a9e5f7a5e0ab935d376c3074f965dc67764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x4E3 DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5D3590D5 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x9A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x42D JUMP JUMPDEST PUSH2 0xAD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x64 PUSH2 0x1D2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA8 CALLDATASIZE PUSH1 0x4 PUSH2 0x469 JUMP JUMPDEST PUSH2 0x25F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x133 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CC SWAP2 SWAP1 PUSH2 0x48B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x253 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x12A JUMP JUMPDEST PUSH2 0x25D PUSH1 0x0 PUSH2 0x38F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x12A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x383 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x12A JUMP JUMPDEST PUSH2 0x38C DUP2 PUSH2 0x38F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44B DUP5 PUSH2 0x404 JUMP JUMPDEST SWAP3 POP PUSH2 0x459 PUSH1 0x20 DUP6 ADD PUSH2 0x404 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x484 DUP3 PUSH2 0x404 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 0xD4 RETURN SLOAD COINBASE 0xE1 0x49 PUSH10 0x3692E6983A54FA4A9E5F PUSH27 0x5E0AB935D376C3074F965DC67764736F6C63430008110033000000 ",
              "sourceMap": "271:535:90:-:0;;;;;;;;;;;;-1:-1:-1;921:32:2;719:10:14;921:18:2;:32::i;:::-;271:535:90;;2270:187:2;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;271:535:90:-;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 911,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@recoverFunds_15872": {
                  "entryPoint": 173,
                  "id": 15872,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@renounceOwnership_598": {
                  "entryPoint": 466,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferOwnership_621": {
                  "entryPoint": 607,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 1028,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 1129,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 1069,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 1163,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2319:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "111:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "319:224:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "365:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "374:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "377:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "367:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "367:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "367:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "340:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "349:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "336:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "336:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "361:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "332:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "332:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "329:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "390:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "419:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "400:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "400:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "390:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "438:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "471:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "482:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "467:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "467:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "448:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "448:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "438:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "495:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "522:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "533:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "518:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "518:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "505:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "495:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "269:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "280:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "292:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "300:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "308:6:111",
                            "type": ""
                          }
                        ],
                        "src": "215:328:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "649:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "659:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "671:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "682:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "667:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "667:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "659:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "701:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "716:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "724:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "712:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "712:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "694:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "694:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "694:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "618:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "629:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "640:4:111",
                            "type": ""
                          }
                        ],
                        "src": "548:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "849:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "895:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "904:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "907:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "897:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "897:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "897:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "866:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "866:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "891:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "862:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "862:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "859:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "920:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "949:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "930:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "930:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "920:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "815:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "826:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "838:6:111",
                            "type": ""
                          }
                        ],
                        "src": "779:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1144:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1161:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1172:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1154:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1154:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1154:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1195:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1206:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1191:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1191:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1211:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1184:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1184:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1184:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1234:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1245:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1230:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1230:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1250:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1223:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1223:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1223:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1294:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1306:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1317:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1302:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1302:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1294:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1121:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1135:4:111",
                            "type": ""
                          }
                        ],
                        "src": "970:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1460:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1470:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1482:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1493:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1478:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1478:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1470:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1512:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1527:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1535:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1523:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1523:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1505:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1505:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1505:74:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1599:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1610:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1595:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1595:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1615:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1588:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1588:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1588:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1421:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1432:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1440:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1451:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1331:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1711:199:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1757:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1766:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1769:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1759:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1759:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1759:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1732:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1728:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1728:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1753:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1724:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1724:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1721:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1782:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1801:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1795:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1786:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1864:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1873:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1876:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1866:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1866:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1866:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1833:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1854:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "1847:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1847:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1840:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1840:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1830:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1830:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1823:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1823:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1820:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1889:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1899:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1889:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1677:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1688:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1700:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1633:277:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2089:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2106:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2117:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2099:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2099:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2099:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2140:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2151:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2136:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2136:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2156:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2129:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2129:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2129:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2179:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2190:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2175:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2175:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2195:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2168:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2168:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2168:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2250:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2261:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2246:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2246:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2266:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2239:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2239:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2239:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2284:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2296:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2307:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2292:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2292:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2284:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2066:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2080:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1915:402:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80635d3590d514610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461009a575b600080fd5b61006461005f36600461042d565b6100ad565b005b6100646101d2565b6000546040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100646100a8366004610469565b61025f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156101a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cc919061048b565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161012a565b61025d600061038f565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161012a565b73ffffffffffffffffffffffffffffffffffffffff8116610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161012a565b61038c8161038f565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461042857600080fd5b919050565b60008060006060848603121561044257600080fd5b61044b84610404565b925061045960208501610404565b9150604084013590509250925092565b60006020828403121561047b57600080fd5b61048482610404565b9392505050565b60006020828403121561049d57600080fd5b8151801515811461048457600080fdfea264697066735822122093d4f35441e149693692e6983a54fa4a9e5f7a5e0ab935d376c3074f965dc67764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5D3590D5 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x9A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x42D JUMP JUMPDEST PUSH2 0xAD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x64 PUSH2 0x1D2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA8 CALLDATASIZE PUSH1 0x4 PUSH2 0x469 JUMP JUMPDEST PUSH2 0x25F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x133 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CC SWAP2 SWAP1 PUSH2 0x48B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x253 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x12A JUMP JUMPDEST PUSH2 0x25D PUSH1 0x0 PUSH2 0x38F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x12A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x383 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x12A JUMP JUMPDEST PUSH2 0x38C DUP2 PUSH2 0x38F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44B DUP5 PUSH2 0x404 JUMP JUMPDEST SWAP3 POP PUSH2 0x459 PUSH1 0x20 DUP6 ADD PUSH2 0x404 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x484 DUP3 PUSH2 0x404 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 0xD4 RETURN SLOAD COINBASE 0xE1 0x49 PUSH10 0x3692E6983A54FA4A9E5F PUSH27 0x5E0AB935D376C3074F965DC67764736F6C63430008110033000000 ",
              "sourceMap": "271:535:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:171;;;;;;:::i;:::-;;:::i;:::-;;1668:101:2;;;:::i;1036:85::-;1082:7;1108:6;1036:85;;;1108:6;;;;694:74:111;;1036:85:2;;;;;682:2:111;1036:85:2;;;1918:198;;;;;;:::i;:::-;;:::i;633:171:90:-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1172:2:111;1240:68:2;;;1154:21:111;;;1191:18;;;1184:30;1250:34;1230:18;;;1223:62;1302:18;;1240:68:2;;;;;;;;;760:37:90::1;::::0;;;;:23:::1;1523:55:111::0;;;760:37:90::1;::::0;::::1;1505:74:111::0;1595:18;;;1588:34;;;760:23:90;::::1;::::0;::::1;::::0;1478:18:111;;760:37:90::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;633:171:::0;;;:::o;1668:101:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1172:2:111;1240:68:2;;;1154:21:111;;;1191:18;;;1184:30;1250:34;1230:18;;;1223:62;1302:18;;1240:68:2;970:356:111;1240:68:2;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;1918:198::-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1172:2:111;1240:68:2;;;1154:21:111;;;1191:18;;;1184:30;1250:34;1230:18;;;1223:62;1302:18;;1240:68:2;970:356:111;1240:68:2;2006:22:::1;::::0;::::1;1998:73;;;::::0;::::1;::::0;;2117:2:111;1998:73:2::1;::::0;::::1;2099:21:111::0;2156:2;2136:18;;;2129:30;2195:34;2175:18;;;2168:62;2266:8;2246:18;;;2239:36;2292:19;;1998:73:2::1;1915:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;2270:187::-;2343:16;2362:6;;;2378:17;;;;;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:196:111:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:328::-;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;;448:38;482:2;471:9;467:18;448:38;:::i;:::-;438:48;;533:2;522:9;518:18;505:32;495:42;;215:328;;;;;:::o;779:186::-;838:6;891:2;879:9;870:7;866:23;862:32;859:52;;;907:1;904;897:12;859:52;930:29;949:9;930:29;:::i;:::-;920:39;779:186;-1:-1:-1;;;779:186:111:o;1633:277::-;1700:6;1753:2;1741:9;1732:7;1728:23;1724:32;1721:52;;;1769:1;1766;1759:12;1721:52;1801:9;1795:16;1854:5;1847:13;1840:21;1833:5;1830:32;1820:60;;1876:1;1873;1866:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "250200",
                "executionCost": "26135",
                "totalCost": "276335"
              },
              "external": {
                "owner()": "2302",
                "recoverFunds(address,address,uint256)": "infinite",
                "renounceOwnership()": "28075",
                "transferOwnership(address)": "28290"
              }
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "recoverFunds(address,address,uint256)": "5d3590d5",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"recoverFunds(address,address,uint256)\":{\"details\":\"The contract is Ownable and only the owner can call the recover function.\",\"params\":{\"_amount\":\"The amount of tokens to recover.\",\"_to\":\"The address to send the tokens to.\",\"_token\":\"The address of the ERC20 token to recover\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverFunds(address,address,uint256)\":{\"notice\":\"Recover ERC20 tokens sent to the contract by mistake.\"}},\"notice\":\"Contract is used to recover ERC20 tokens sent to the contract by mistake.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/ERC20Recoverable.sol\":\"ERC20Recoverable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/utils/ERC20Recoverable.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\n/**\\n    @notice Contract is used to recover ERC20 tokens sent to the contract by mistake.\\n */\\n\\ncontract ERC20Recoverable is Ownable {\\n    /**\\n    @notice Recover ERC20 tokens sent to the contract by mistake.\\n    @dev The contract is Ownable and only the owner can call the recover function.\\n    @param _to The address to send the tokens to.\\n@param _token The address of the ERC20 token to recover\\n    @param _amount The amount of tokens to recover.\\n */\\n    function recoverFunds(\\n        address _token,\\n        address _to,\\n        uint256 _amount\\n    ) external onlyOwner {\\n        IERC20(_token).transfer(_to, _amount);\\n    }\\n}\\n\",\"keccak256\":\"0x793a38091e1f81499a29ddba82c2b2f3cdd07071b81a832886e8e02a45ff352a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "contracts/utils/ERC20Recoverable.sol:ERC20Recoverable",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "recoverFunds(address,address,uint256)": {
                "notice": "Recover ERC20 tokens sent to the contract by mistake."
              }
            },
            "notice": "Contract is used to recover ERC20 tokens sent to the contract by mistake.",
            "version": 1
          }
        }
      },
      "contracts/utils/LowLevelCallUtils.sol": {
        "LowLevelCallUtils": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122065116a8405a2d7d59db29c96c2a4ab7ac81308c6f7baaa6b6586a011e7ac49c664736f6c63430008110033",
              "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 PUSH6 0x116A8405A2D7 0xD5 SWAP14 0xB2 SWAP13 SWAP7 0xC2 LOG4 0xAB PUSH27 0xC81308C6F7BAAA6B6586A011E7AC49C664736F6C63430008110033 ",
              "sourceMap": "127:1832:91:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;127:1832:91;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122065116a8405a2d7d59db29c96c2a4ab7ac81308c6f7baaa6b6586a011e7ac49c664736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x116A8405A2D7 0xD5 SWAP14 0xB2 SWAP13 SWAP7 0xC2 LOG4 0xAB PUSH27 0xC81308C6F7BAAA6B6586A011E7AC49C664736F6C63430008110033 ",
              "sourceMap": "127:1832:91:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "functionStaticCall(address,bytes memory)": "infinite",
                "propagateRevert()": "infinite",
                "readReturnData(uint256,uint256)": "infinite",
                "returnDataSize()": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/LowLevelCallUtils.sol\":\"LowLevelCallUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"contracts/utils/LowLevelCallUtils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.13;\\n\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\nlibrary LowLevelCallUtils {\\n    using Address for address;\\n\\n    /**\\n     * @dev Makes a static call to the specified `target` with `data`. Return data can be fetched with\\n     *      `returnDataSize` and `readReturnData`.\\n     * @param target The address to staticcall.\\n     * @param data The data to pass to the call.\\n     * @return success True if the call succeeded, or false if it reverts.\\n     */\\n    function functionStaticCall(address target, bytes memory data)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        require(\\n            target.isContract(),\\n            \\\"LowLevelCallUtils: static call to non-contract\\\"\\n        );\\n        assembly {\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(data, 32),\\n                mload(data),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the size of the return data of the most recent external call.\\n     */\\n    function returnDataSize() internal pure returns (uint256 len) {\\n        assembly {\\n            len := returndatasize()\\n        }\\n    }\\n\\n    /**\\n     * @dev Reads return data from the most recent external call.\\n     * @param offset Offset into the return data.\\n     * @param length Number of bytes to return.\\n     */\\n    function readReturnData(uint256 offset, uint256 length)\\n        internal\\n        pure\\n        returns (bytes memory data)\\n    {\\n        data = new bytes(length);\\n        assembly {\\n            returndatacopy(add(data, 32), offset, length)\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with the return data from the most recent external call.\\n     */\\n    function propagateRevert() internal pure {\\n        assembly {\\n            returndatacopy(0, 0, returndatasize())\\n            revert(0, returndatasize())\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5119479484321f0c5b092bcccda442d7d96792923811774c63ae85be3872e962\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/utils/NameEncoder.sol": {
        "NameEncoder": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207b5211c43afc7c8d828e8939db608e34542264c891ea270e749ee85da70dd9f064736f6c63430008110033",
              "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 PUSH28 0x5211C43AFC7C8D828E8939DB608E34542264C891EA270E749EE85DA7 0xD 0xD9 CREATE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "113:1458:92:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;113:1458:92;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207b5211c43afc7c8d828e8939db608e34542264c891ea270e749ee85da70dd9f064736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0x5211C43AFC7C8D828E8939DB608E34542264C891EA270E749EE85DA7 0xD 0xD9 CREATE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "113:1458:92:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "dnsEncodeName(string memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/NameEncoder.sol\":\"NameEncoder\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/utils/NameEncoder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {BytesUtils} from \\\"../wrapper/BytesUtils.sol\\\";\\n\\nlibrary NameEncoder {\\n    using BytesUtils for bytes;\\n\\n    function dnsEncodeName(string memory name)\\n        internal\\n        pure\\n        returns (bytes memory dnsName, bytes32 node)\\n    {\\n        uint8 labelLength = 0;\\n        bytes memory bytesName = bytes(name);\\n        uint256 length = bytesName.length;\\n        dnsName = new bytes(length + 2);\\n        node = 0;\\n        if (length == 0) {\\n            dnsName[0] = 0;\\n            return (dnsName, node);\\n        }\\n\\n        // use unchecked to save gas since we check for an underflow\\n        // and we check for the length before the loop\\n        unchecked {\\n            for (uint256 i = length - 1; i >= 0; i--) {\\n                if (bytesName[i] == \\\".\\\") {\\n                    dnsName[i + 1] = bytes1(labelLength);\\n                    node = keccak256(\\n                        abi.encodePacked(\\n                            node,\\n                            bytesName.keccak(i + 1, labelLength)\\n                        )\\n                    );\\n                    labelLength = 0;\\n                } else {\\n                    labelLength += 1;\\n                    dnsName[i + 1] = bytesName[i];\\n                }\\n                if (i == 0) {\\n                    break;\\n                }\\n            }\\n        }\\n\\n        node = keccak256(\\n            abi.encodePacked(node, bytesName.keccak(0, labelLength))\\n        );\\n\\n        dnsName[0] = bytes1(labelLength);\\n        return (dnsName, node);\\n    }\\n}\\n\",\"keccak256\":\"0x61b99997cae6ba9df23817c5ef25d5ce5b3d2bb057da3cad3e6300971eb47fc8\",\"license\":\"MIT\"},\"contracts/wrapper/BytesUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the ENS namehash of a DNS-encoded name.\\n     * @param self The DNS-encoded name to hash.\\n     * @param offset The offset at which to start hashing.\\n     * @return The namehash of the name.\\n     */\\n    function namehash(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        (bytes32 labelhash, uint256 newOffset) = readLabel(self, offset);\\n        if (labelhash == bytes32(0)) {\\n            require(offset == self.length - 1, \\\"namehash: Junk at end of name\\\");\\n            return bytes32(0);\\n        }\\n        return\\n            keccak256(abi.encodePacked(namehash(self, newOffset), labelhash));\\n    }\\n\\n    /**\\n     * @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\\n     * @param self The byte string to read a label from.\\n     * @param idx The index to read a label at.\\n     * @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\\n     * @return newIdx The index of the start of the next label.\\n     */\\n    function readLabel(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 labelhash, uint256 newIdx)\\n    {\\n        require(idx < self.length, \\\"readLabel: Index out of bounds\\\");\\n        uint256 len = uint256(uint8(self[idx]));\\n        if (len > 0) {\\n            labelhash = keccak(self, idx + 1, len);\\n        } else {\\n            labelhash = bytes32(0);\\n        }\\n        newIdx = idx + len + 1;\\n    }\\n}\\n\",\"keccak256\":\"0xc0d13fcaccd6c3af927106b2ea48eec83c5d0a18d608bde013a53742ac058526\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/utils/TestNameEncoder.sol": {
        "TestNameEncoder": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                }
              ],
              "name": "encodeName",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610557806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806318d321ca14610030575b600080fd5b61004361003e366004610370565b61005a565b60405161005192919061043f565b60405180910390f35b6060600061006783610070565b91509150915091565b8051606090600090819084906100878160026104b2565b67ffffffffffffffff81111561009f5761009f610341565b6040519080825280601f01601f1916602001820160405280156100c9576020820181803683370190505b5094506000935080840361012657600060f81b856000815181106100ef576100ef6104f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81015b82818151811061015c5761015c6104f2565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000003610236578360f81b8682600101815181106101c2576101c26104f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535084610203846001840160ff881661031d565b6040805160208101939093528201526060016040516020818303038152906040528051906020012094506000935061029e565b60018401935082818151811061024e5761024e6104f2565b602001015160f81c60f81b86826001018151811061026e5761026e6104f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b80156102cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161014a565b50836102dc83600060ff871661031d565b6040805160208101939093528201526060016040516020818303038152906040528051906020012093508260f81b856000815181106100ef576100ef6104f2565b825160009061032c83856104b2565b111561033757600080fd5b5091016020012090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561038257600080fd5b813567ffffffffffffffff8082111561039a57600080fd5b818401915084601f8301126103ae57600080fd5b8135818111156103c0576103c0610341565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561040657610406610341565b8160405282815287602084870101111561041f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b604081526000835180604084015260005b8181101561046d5760208187018101516060868401015201610450565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b808201808211156104ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212206c6b3b52fab26b05fb477887c27e69a34aa40dee200b474cb379037208894ae964736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x557 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x18D321CA EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x370 JUMP JUMPDEST PUSH2 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x51 SWAP3 SWAP2 SWAP1 PUSH2 0x43F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x67 DUP4 PUSH2 0x70 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 SWAP1 PUSH2 0x87 DUP2 PUSH1 0x2 PUSH2 0x4B2 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9F JUMPI PUSH2 0x9F PUSH2 0x341 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP5 POP PUSH1 0x0 SWAP4 POP DUP1 DUP5 SUB PUSH2 0x126 JUMPI PUSH1 0x0 PUSH1 0xF8 SHL DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEF JUMPI PUSH2 0xEF PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD JUMPDEST DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x15C JUMPI PUSH2 0x15C PUSH2 0x4F2 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0x2E00000000000000000000000000000000000000000000000000000000000000 SUB PUSH2 0x236 JUMPI DUP4 PUSH1 0xF8 SHL DUP7 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1C2 JUMPI PUSH2 0x1C2 PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP5 PUSH2 0x203 DUP5 PUSH1 0x1 DUP5 ADD PUSH1 0xFF DUP9 AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x29E JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x24E JUMPI PUSH2 0x24E PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP7 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x26E JUMPI PUSH2 0x26E PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP JUMPDEST DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x14A JUMP JUMPDEST POP DUP4 PUSH2 0x2DC DUP4 PUSH1 0x0 PUSH1 0xFF DUP8 AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP DUP3 PUSH1 0xF8 SHL DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEF JUMPI PUSH2 0xEF PUSH2 0x4F2 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x32C DUP4 DUP6 PUSH2 0x4B2 JUMP JUMPDEST GT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3C0 JUMPI PUSH2 0x3C0 PUSH2 0x341 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x406 JUMPI PUSH2 0x406 PUSH2 0x341 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x46D JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x450 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x4EC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0x6B3B52FAB26B05FB477887C27E PUSH10 0xA34AA40DEE200B474CB3 PUSH26 0x37208894AE964736F6C63430008110033000000000000000000 ",
              "sourceMap": "106:224:93:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@dnsEncodeName_16095": {
                  "entryPoint": 112,
                  "id": 16095,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@encodeName_16117": {
                  "entryPoint": 90,
                  "id": 16117,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@keccak_16698": {
                  "entryPoint": 797,
                  "id": 16698,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptr": {
                  "entryPoint": 880,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed": {
                  "entryPoint": 1087,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 1202,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x32": {
                  "entryPoint": 1266,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 833,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2577:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "66:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "160:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "163:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "153:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "153:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "153:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "184:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "187:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "177:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "177:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "177:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "283:901:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "329:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "338:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "341:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "331:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "331:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "331:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "304:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "313:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "300:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "300:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "325:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "296:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "296:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "293:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "354:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "381:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "368:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "368:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "358:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "400:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "410:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "404:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "455:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "464:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "467:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "457:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "457:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "457:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "443:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "451:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "440:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "440:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "437:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "480:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "505:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "490:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "490:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "484:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "560:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "569:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "572:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "562:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "562:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "562:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "539:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "543:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "535:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "535:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "550:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "531:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "531:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "524:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "524:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "521:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "585:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "608:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "595:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "595:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "589:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "634:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "636:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "636:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "636:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "626:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "630:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "623:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "623:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "620:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "665:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "675:66:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "669:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "750:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "770:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "764:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "764:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "754:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "782:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "804:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "828:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "832:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "824:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "824:13:111"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "839:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "820:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "820:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "844:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "816:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "816:31:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "849:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "812:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "812:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "800:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "800:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "786:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "912:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "914:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "914:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "914:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "871:10:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "883:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "868:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "868:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "891:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "903:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "888:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "888:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "865:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "865:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "862:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "950:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "954:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "943:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "943:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "943:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "981:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "989:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "974:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "974:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "974:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1038:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1047:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1050:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1040:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1040:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1040:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1015:2:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1019:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1011:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1011:11:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1024:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1007:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1007:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1029:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1004:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1004:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1001:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1080:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1088:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1076:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1076:15:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1097:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1101:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1093:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1093:11:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1106:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1063:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1063:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1063:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1133:6:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1141:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1129:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1129:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1146:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1125:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1125:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1151:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1118:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1118:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1118:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1162:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1172:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "249:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "260:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "272:6:111",
                            "type": ""
                          }
                        ],
                        "src": "203:981:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1336:514:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1353:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1364:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1346:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1346:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1346:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1376:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1396:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1390:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1390:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1380:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1423:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1434:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1419:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1419:18:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1412:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1412:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1412:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1455:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1464:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1459:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1526:92:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1555:9:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1566:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1551:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1551:17:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1570:2:111",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1547:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1547:26:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1589:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1597:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1585:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1585:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1601:4:111",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1581:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1581:25:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1575:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1575:32:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1540:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1540:68:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1540:68:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1485:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1488:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1482:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1482:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1496:21:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1498:17:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1507:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1510:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1503:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1503:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1498:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1478:3:111",
                                "statements": []
                              },
                              "src": "1474:144:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "1642:9:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1653:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1638:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1638:22:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1662:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1634:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1634:31:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1667:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1627:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1627:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1627:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1678:121:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1694:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1713:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1721:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1709:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1709:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1726:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1705:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1705:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1690:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1690:104:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1796:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1686:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1686:113:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1678:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1819:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1830:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1815:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1815:20:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1837:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1808:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1808:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1808:36:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1297:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1308:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1316:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1327:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1189:661:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1903:231:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1913:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1924:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1927:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1920:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1920:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "1913:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1960:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1981:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1984:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1974:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1974:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1974:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2082:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2085:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2075:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2075:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2075:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2110:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2113:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2103:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2103:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2103:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1944:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "1947:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1941:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1941:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1938:190:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1886:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1889:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "1895:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1855:279:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2171:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2188:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2191:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2181:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2181:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2181:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2285:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2288:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2278:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2278:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2278:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2309:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2312:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2302:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2302:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2302:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2139:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2475:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2492:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2497:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2485:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2485:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2485:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2524:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2529:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2520:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2520:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2534:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2513:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2513:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2513:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2550:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2561:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2566:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2557:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2557:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2550:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2443:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2448:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2456:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2467:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2328:247:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let length := mload(value0)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n        }\n        mstore(add(add(headStart, length), 96), 0)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n        mstore(add(headStart, 0x20), value1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c806318d321ca14610030575b600080fd5b61004361003e366004610370565b61005a565b60405161005192919061043f565b60405180910390f35b6060600061006783610070565b91509150915091565b8051606090600090819084906100878160026104b2565b67ffffffffffffffff81111561009f5761009f610341565b6040519080825280601f01601f1916602001820160405280156100c9576020820181803683370190505b5094506000935080840361012657600060f81b856000815181106100ef576100ef6104f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81015b82818151811061015c5761015c6104f2565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000003610236578360f81b8682600101815181106101c2576101c26104f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535084610203846001840160ff881661031d565b6040805160208101939093528201526060016040516020818303038152906040528051906020012094506000935061029e565b60018401935082818151811061024e5761024e6104f2565b602001015160f81c60f81b86826001018151811061026e5761026e6104f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b80156102cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161014a565b50836102dc83600060ff871661031d565b6040805160208101939093528201526060016040516020818303038152906040528051906020012093508260f81b856000815181106100ef576100ef6104f2565b825160009061032c83856104b2565b111561033757600080fd5b5091016020012090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561038257600080fd5b813567ffffffffffffffff8082111561039a57600080fd5b818401915084601f8301126103ae57600080fd5b8135818111156103c0576103c0610341565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561040657610406610341565b8160405282815287602084870101111561041f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b604081526000835180604084015260005b8181101561046d5760208187018101516060868401015201610450565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b808201808211156104ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212206c6b3b52fab26b05fb477887c27e69a34aa40dee200b474cb379037208894ae964736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x18D321CA EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x370 JUMP JUMPDEST PUSH2 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x51 SWAP3 SWAP2 SWAP1 PUSH2 0x43F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x67 DUP4 PUSH2 0x70 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 SWAP1 PUSH2 0x87 DUP2 PUSH1 0x2 PUSH2 0x4B2 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9F JUMPI PUSH2 0x9F PUSH2 0x341 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP5 POP PUSH1 0x0 SWAP4 POP DUP1 DUP5 SUB PUSH2 0x126 JUMPI PUSH1 0x0 PUSH1 0xF8 SHL DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEF JUMPI PUSH2 0xEF PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD JUMPDEST DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x15C JUMPI PUSH2 0x15C PUSH2 0x4F2 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0x2E00000000000000000000000000000000000000000000000000000000000000 SUB PUSH2 0x236 JUMPI DUP4 PUSH1 0xF8 SHL DUP7 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x1C2 JUMPI PUSH2 0x1C2 PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP5 PUSH2 0x203 DUP5 PUSH1 0x1 DUP5 ADD PUSH1 0xFF DUP9 AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0x29E JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x24E JUMPI PUSH2 0x24E PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP7 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x26E JUMPI PUSH2 0x26E PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP JUMPDEST DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x14A JUMP JUMPDEST POP DUP4 PUSH2 0x2DC DUP4 PUSH1 0x0 PUSH1 0xFF DUP8 AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP DUP3 PUSH1 0xF8 SHL DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEF JUMPI PUSH2 0xEF PUSH2 0x4F2 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x32C DUP4 DUP6 PUSH2 0x4B2 JUMP JUMPDEST GT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3C0 JUMPI PUSH2 0x3C0 PUSH2 0x341 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x406 JUMPI PUSH2 0x406 PUSH2 0x341 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x46D JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x450 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x4EC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0x6B3B52FAB26B05FB477887C27E PUSH10 0xA34AA40DEE200B474CB3 PUSH26 0x37208894AE964736F6C63430008110033000000000000000000 ",
              "sourceMap": "106:224:93:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;172:156;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;257:12;271:7;301:20;:4;:18;:20::i;:::-;294:27;;;;172:156;;;:::o;:1397:92:-;406:16;;262:20;;284:12;;;;374:4;;452:10;406:16;461:1;452:10;:::i;:::-;442:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;442:21:92;-1:-1:-1;432:31:92;-1:-1:-1;480:1:92;;-1:-1:-1;495:11:92;;;491:92;;535:1;522:14;;:7;530:1;522:10;;;;;;;;:::i;:::-;;;;:14;;;;;;;;;;;550:22;;;172:1397;;;:::o;491:92::-;758:10;;;741:630;805:9;815:1;805:12;;;;;;;;:::i;:::-;;;;;;;:19;;801:481;;872:11;865:19;;848:7;856:1;860;856:5;848:14;;;;;;;;:::i;:::-;;;;:36;;;;;;;;;;-1:-1:-1;994:4:92;1028:36;:9;1049:1;1045:5;;1028:36;;;:16;:36::i;:::-;948:142;;;;;;2485:19:111;;;;2520:12;;2513:28;2557:12;;948:142:92;;;;;;;;;;;;913:199;;;;;;906:206;;1148:1;1134:15;;801:481;;;1211:1;1196:16;;;;1251:9;1261:1;1251:12;;;;;;;;:::i;:::-;;;;;;;;;1234:7;1242:1;1246;1242:5;1234:14;;;;;;;;:::i;:::-;;;;:29;;;;;;;;;;;801:481;1299:58;;1333:5;1299:58;778:3;;741:630;;;-1:-1:-1;1438:4:92;1444:32;:9;1461:1;1444:32;;;:16;:32::i;:::-;1421:56;;;;;;2485:19:111;;;;2520:12;;2513:28;2557:12;;1421:56:92;;;;;;;;;;;;1398:89;;;;;;1391:96;;1518:11;1511:19;;1498:7;1506:1;1498:10;;;;;;;;:::i;343:274:95:-;507:11;;460;;491:12;500:3;491:6;:12;:::i;:::-;:27;;483:36;;;;;;-1:-1:-1;569:26:95;;583:2;569:26;559:42;;343:274::o;14:184:111:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:981;272:6;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;381:9;368:23;410:18;451:2;443:6;440:14;437:34;;;467:1;464;457:12;437:34;505:6;494:9;490:22;480:32;;550:7;543:4;539:2;535:13;531:27;521:55;;572:1;569;562:12;521:55;608:2;595:16;630:2;626;623:10;620:36;;;636:18;;:::i;:::-;770:2;764:9;832:4;824:13;;675:66;820:22;;;844:2;816:31;812:40;800:53;;;868:18;;;888:22;;;865:46;862:72;;;914:18;;:::i;:::-;954:10;950:2;943:22;989:2;981:6;974:18;1029:7;1024:2;1019;1015;1011:11;1007:20;1004:33;1001:53;;;1050:1;1047;1040:12;1001:53;1106:2;1101;1097;1093:11;1088:2;1080:6;1076:15;1063:46;1151:1;1129:15;;;1146:2;1125:24;1118:35;;;;-1:-1:-1;1133:6:111;203:981;-1:-1:-1;;;;;203:981:111:o;1189:661::-;1364:2;1353:9;1346:21;1327:4;1396:6;1390:13;1439:6;1434:2;1423:9;1419:18;1412:34;1464:1;1474:144;1488:6;1485:1;1482:13;1474:144;;;1601:4;1585:14;;;1581:25;;1575:32;1570:2;1551:17;;;1547:26;1540:68;1503:12;1474:144;;;1478:3;1667:1;1662:2;1653:6;1642:9;1638:22;1634:31;1627:42;1796:2;1726:66;1721:2;1713:6;1709:15;1705:88;1694:9;1690:104;1686:113;1678:121;;;1837:6;1830:4;1819:9;1815:20;1808:36;1189:661;;;;;:::o;1855:279::-;1920:9;;;1941:10;;;1938:190;;;1984:77;1981:1;1974:88;2085:4;2082:1;2075:15;2113:4;2110:1;2103:15;1938:190;1855:279;;;;:::o;2139:184::-;2191:77;2188:1;2181:88;2288:4;2285:1;2278:15;2312:4;2309:1;2302:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "273400",
                "executionCost": "312",
                "totalCost": "273712"
              },
              "external": {
                "encodeName(string)": "infinite"
              }
            },
            "methodIdentifiers": {
              "encodeName(string)": "18d321ca"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"encodeName\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/TestNameEncoder.sol\":\"TestNameEncoder\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/utils/NameEncoder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {BytesUtils} from \\\"../wrapper/BytesUtils.sol\\\";\\n\\nlibrary NameEncoder {\\n    using BytesUtils for bytes;\\n\\n    function dnsEncodeName(string memory name)\\n        internal\\n        pure\\n        returns (bytes memory dnsName, bytes32 node)\\n    {\\n        uint8 labelLength = 0;\\n        bytes memory bytesName = bytes(name);\\n        uint256 length = bytesName.length;\\n        dnsName = new bytes(length + 2);\\n        node = 0;\\n        if (length == 0) {\\n            dnsName[0] = 0;\\n            return (dnsName, node);\\n        }\\n\\n        // use unchecked to save gas since we check for an underflow\\n        // and we check for the length before the loop\\n        unchecked {\\n            for (uint256 i = length - 1; i >= 0; i--) {\\n                if (bytesName[i] == \\\".\\\") {\\n                    dnsName[i + 1] = bytes1(labelLength);\\n                    node = keccak256(\\n                        abi.encodePacked(\\n                            node,\\n                            bytesName.keccak(i + 1, labelLength)\\n                        )\\n                    );\\n                    labelLength = 0;\\n                } else {\\n                    labelLength += 1;\\n                    dnsName[i + 1] = bytesName[i];\\n                }\\n                if (i == 0) {\\n                    break;\\n                }\\n            }\\n        }\\n\\n        node = keccak256(\\n            abi.encodePacked(node, bytesName.keccak(0, labelLength))\\n        );\\n\\n        dnsName[0] = bytes1(labelLength);\\n        return (dnsName, node);\\n    }\\n}\\n\",\"keccak256\":\"0x61b99997cae6ba9df23817c5ef25d5ce5b3d2bb057da3cad3e6300971eb47fc8\",\"license\":\"MIT\"},\"contracts/utils/TestNameEncoder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {NameEncoder} from \\\"./NameEncoder.sol\\\";\\n\\ncontract TestNameEncoder {\\n    using NameEncoder for string;\\n\\n    function encodeName(string memory name)\\n        public\\n        pure\\n        returns (bytes memory, bytes32)\\n    {\\n        return name.dnsEncodeName();\\n    }\\n}\\n\",\"keccak256\":\"0x3182454f9053b320bdc12de9a5c778b9fe79bcdf2b7dc79e9bb608303dd0cb5b\",\"license\":\"MIT\"},\"contracts/wrapper/BytesUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the ENS namehash of a DNS-encoded name.\\n     * @param self The DNS-encoded name to hash.\\n     * @param offset The offset at which to start hashing.\\n     * @return The namehash of the name.\\n     */\\n    function namehash(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        (bytes32 labelhash, uint256 newOffset) = readLabel(self, offset);\\n        if (labelhash == bytes32(0)) {\\n            require(offset == self.length - 1, \\\"namehash: Junk at end of name\\\");\\n            return bytes32(0);\\n        }\\n        return\\n            keccak256(abi.encodePacked(namehash(self, newOffset), labelhash));\\n    }\\n\\n    /**\\n     * @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\\n     * @param self The byte string to read a label from.\\n     * @param idx The index to read a label at.\\n     * @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\\n     * @return newIdx The index of the start of the next label.\\n     */\\n    function readLabel(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 labelhash, uint256 newIdx)\\n    {\\n        require(idx < self.length, \\\"readLabel: Index out of bounds\\\");\\n        uint256 len = uint256(uint8(self[idx]));\\n        if (len > 0) {\\n            labelhash = keccak(self, idx + 1, len);\\n        } else {\\n            labelhash = bytes32(0);\\n        }\\n        newIdx = idx + len + 1;\\n    }\\n}\\n\",\"keccak256\":\"0xc0d13fcaccd6c3af927106b2ea48eec83c5d0a18d608bde013a53742ac058526\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/utils/UniversalResolver.sol": {
        "UniversalResolver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_registry",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "string[]",
                  "name": "urls",
                  "type": "string[]"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes4",
                  "name": "callbackFunction",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "extraData",
                  "type": "bytes"
                }
              ],
              "name": "OffchainLookup",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                }
              ],
              "name": "findResolver",
              "outputs": [
                {
                  "internalType": "contract Resolver",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "registry",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "resolve",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "extraData",
                  "type": "bytes"
                }
              ],
              "name": "resolveCallback",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "reverseName",
                  "type": "bytes"
                }
              ],
              "name": "reverse",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "findResolver(bytes)": {
                "details": "Finds a resolver by recursively querying the registry, starting at the longest name and progressively      removing labels until it finds a result.",
                "params": {
                  "name": "The name to resolve, in DNS-encoded and normalised form."
                },
                "returns": {
                  "_0": "The Resolver responsible for this name, and the namehash of the full name."
                }
              },
              "resolve(bytes,bytes)": {
                "details": "Performs ENS name resolution for the supplied name and resolution data.",
                "params": {
                  "data": "The resolution data, as specified in ENSIP-10.",
                  "name": "The name to resolve, in normalised and DNS-encoded form."
                },
                "returns": {
                  "_0": "The result of resolving the name."
                }
              },
              "resolveCallback(bytes,bytes)": {
                "details": "Callback function for `resolve`.",
                "params": {
                  "extraData": "Extra data encoded by `callWithOffchainLookupPropagation` to allow completing the request.",
                  "response": "Response data returned by the target address that invoked the inner `OffchainData` revert."
                }
              },
              "reverse(bytes)": {
                "details": "Performs ENS name reverse resolution for the supplied reverse name.",
                "params": {
                  "reverseName": "The reverse name to resolve, in normalised and DNS-encoded form. e.g. b6E040C9ECAaE172a89bD561c5F73e1C48d28cd9.addr.reverse"
                },
                "returns": {
                  "_0": "The resolved name, the resolved address, the reverse resolver address, and the resolver address."
                }
              },
              "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_16180": {
                  "entryPoint": null,
                  "id": 16180,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 64,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:290:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604051611c0b380380611c0b83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611b7a6100916000396000818160a40152610a3a0152611b7a6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a1cbcbaf11610050578063a1cbcbaf1461010c578063b4a858011461014b578063ec11c8231461016b57600080fd5b806301ffc9a7146100775780637b1039991461009f5780639061b923146100eb575b600080fd5b61008a610085366004611247565b61018e565b60405190151581526020015b60405180910390f35b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100fe6100f9366004611384565b610227565b60405161009692919061143d565b61011f61011a366004611475565b6103fc565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610096565b61015e6101593660046114b7565b61041d565b6040516100969190611523565b61017e610179366004611475565b6104e9565b6040516100969493929190611536565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f9061b92300000000000000000000000000000000000000000000000000000000148061022157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008061023686866103fc565b50905073ffffffffffffffffffffffffffffffffffffffff811661026e575050604080516020810190915260008082529091506103f4565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f9061b92300000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa925050508015610314575060408051601f3d908101601f191682019092526103119181019061157f565b60015b156103c45780156103c2576103b682888888604051602401610338939291906115a1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9061b923000000000000000000000000000000000000000000000000000000001790527fb4a85801000000000000000000000000000000000000000000000000000000006107a1565b829350935050506103f4565b505b6103ef81857fb4a85801000000000000000000000000000000000000000000000000000000006107a1565b925090505b935093915050565b60008060008061040e86866000610927565b909450925050505b9250929050565b60606000808061042f85870187611601565b9250925092506104ca8289898460405160240161044e939291906115a1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915273ffffffffffffffffffffffffffffffffffffffff851690610ae4565b8060200190518101906104dd91906116a6565b98975050505050505050565b606060008060008060003073ffffffffffffffffffffffffffffffffffffffff16639061b923898961055560008d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b099050565b60405160240161056791815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f691f343100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526105f8939291906004016115a1565b600060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261063d91908101906116db565b9150915060008280602001905181019061065791906116a6565b905060008061066583610be2565b915091506000803073ffffffffffffffffffffffffffffffffffffffff16639061b923858560405160240161069c91815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3b3b57de00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815261072c92919060040161172d565b600060405180830381865afa158015610749573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077191908101906116db565b9150915060008280602001905181019061078b919061175b565b959e959d50959b50995092975050505050505050565b606060006107af8585610e8f565b90503d81156107cc576107c3600082610f48565b92505050610920565b600481106109155760006107e260006004610f48565b90507f556f18300000000000000000000000000000000000000000000000000000000061080e82611778565b7fffffffff00000000000000000000000000000000000000000000000000000000160361091357600061084b600461084681866117f7565b610f48565b9050600080600080600085806020019051810190610869919061181a565b945094509450945094508c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361090c573084848d8886866040516020016108bf9392919061194d565b60408051601f19818403018152908290527f556f183000000000000000000000000000000000000000000000000000000000825261090395949392916004016119a4565b60405180910390fd5b5050505050505b505b61091d610f9d565b50505b9392505050565b600080600085858581811061093e5761093e611a87565b919091013560f81c915050600081900361095f5750600091508190506103f4565b600061096b8286611ab6565b610976906001611ab6565b905060008787610987886001611ab6565b61099392859290611ac9565b6040516109a1929190611af3565b604051809103902090506000806109b98a8a86610927565b91509150600081846040516020016109db929190918252602082015260400190565b60408051601f198184030181529082905280516020909101207f0178b8bf00000000000000000000000000000000000000000000000000000000825260048201819052915060009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630178b8bf90602401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa5919061175b565b905073ffffffffffffffffffffffffffffffffffffffff811615610ad257975095506103f4945050505050565b50919a91995090975050505050505050565b60606109208383604051806060016040528060258152602001611b2060259139610fa7565b6000806000610b1885856110ce565b909250905081610ba45760018551610b3091906117f7565b8414610b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d650000006044820152606401610903565b50600091506102219050565b610bae8582610b09565b6040805160208101929092528101839052606001604051602081830303815290604052805190602001209250505092915050565b805160609060009081908490610bf9816002611ab6565b67ffffffffffffffff811115610c1157610c116112a6565b6040519080825280601f01601f191660200182016040528015610c3b576020820181803683370190505b50945060009350808403610c9857600060f81b85600081518110610c6157610c61611a87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81015b828181518110610cce57610cce611a87565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000003610da8578360f81b868260010181518110610d3457610d34611a87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535084610d75846001840160ff881661119f565b60408051602081019390935282015260600160405160208183030381529060405280519060200120945060009350610e10565b600184019350828181518110610dc057610dc0611a87565b602001015160f81c60f81b868260010181518110610de057610de0611a87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b8015610e3d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610cbc565b5083610e4e83600060ff871661119f565b6040805160208101939093528201526060016040516020818303038152906040528051906020012093508260f81b85600081518110610c6157610c61611a87565b600073ffffffffffffffffffffffffffffffffffffffff83163b610f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c6f774c6576656c43616c6c5574696c733a207374617469632063616c6c207460448201527f6f206e6f6e2d636f6e74726163740000000000000000000000000000000000006064820152608401610903565b600080835160208501865afa9392505050565b60608167ffffffffffffffff811115610f6357610f636112a6565b6040519080825280601f01601f191660200182016040528015610f8d576020820181803683370190505b5090508183602083013e92915050565b3d6000803e3d6000fd5b606073ffffffffffffffffffffffffffffffffffffffff84163b61104c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7460448201527f72616374000000000000000000000000000000000000000000000000000000006064820152608401610903565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516110749190611b03565b600060405180830381855afa9150503d80600081146110af576040519150601f19603f3d011682016040523d82523d6000602084013e6110b4565b606091505b50915091506110c48282866111c3565b9695505050505050565b6000808351831061113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e647300006044820152606401610903565b600084848151811061114f5761114f611a87565b016020015160f81c9050801561117b576111748561116e866001611ab6565b8361119f565b9250611180565b600092505b61118a8185611ab6565b611195906001611ab6565b9150509250929050565b82516000906111ae8385611ab6565b11156111b957600080fd5b5091016020012090565b606083156111d2575081610920565b8251156111e25782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109039190611523565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461124457600080fd5b50565b60006020828403121561125957600080fd5b813561092081611216565b60008083601f84011261127657600080fd5b50813567ffffffffffffffff81111561128e57600080fd5b60208301915083602082850101111561041657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112fe576112fe6112a6565b604052919050565b600067ffffffffffffffff821115611320576113206112a6565b50601f01601f191660200190565b600082601f83011261133f57600080fd5b813561135261134d82611306565b6112d5565b81815284602083860101111561136757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006040848603121561139957600080fd5b833567ffffffffffffffff808211156113b157600080fd5b6113bd87838801611264565b909550935060208601359150808211156113d657600080fd5b506113e38682870161132e565b9150509250925092565b60005b838110156114085781810151838201526020016113f0565b50506000910152565b600081518084526114298160208601602086016113ed565b601f01601f19169290920160200192915050565b6040815260006114506040830185611411565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6000806020838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b6114ab85828601611264565b90969095509350505050565b600080600080604085870312156114cd57600080fd5b843567ffffffffffffffff808211156114e557600080fd5b6114f188838901611264565b9096509450602087013591508082111561150a57600080fd5b5061151787828801611264565b95989497509550505050565b6020815260006109206020830184611411565b6080815260006115496080830187611411565b73ffffffffffffffffffffffffffffffffffffffff95861660208401529385166040830152509216606090920191909152919050565b60006020828403121561159157600080fd5b8151801515811461092057600080fd5b60408152826040820152828460608301376000606084830101526000601f19601f850116820160608382030160208401526110c46060820185611411565b73ffffffffffffffffffffffffffffffffffffffff8116811461124457600080fd5b60008060006060848603121561161657600080fd5b8335611621816115df565b9250602084013561163181611216565b9150604084013567ffffffffffffffff81111561164d57600080fd5b6113e38682870161132e565b600082601f83011261166a57600080fd5b815161167861134d82611306565b81815284602083860101111561168d57600080fd5b61169e8260208301602087016113ed565b949350505050565b6000602082840312156116b857600080fd5b815167ffffffffffffffff8111156116cf57600080fd5b61169e84828501611659565b600080604083850312156116ee57600080fd5b825167ffffffffffffffff81111561170557600080fd5b61171185828601611659565b9250506020830151611722816115df565b809150509250929050565b6040815260006117406040830185611411565b82810360208401526117528185611411565b95945050505050565b60006020828403121561176d57600080fd5b8151610920816115df565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156117c05780818460040360031b1b83161693505b505050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610221576102216117c8565b805161181581611216565b919050565b600080600080600060a0868803121561183257600080fd5b855161183d816115df565b8095505060208087015167ffffffffffffffff8082111561185d57600080fd5b818901915089601f83011261187157600080fd5b815181811115611883576118836112a6565b8060051b6118928582016112d5565b918252838101850191858101908d8411156118ac57600080fd5b86860192505b838310156118e8578251858111156118ca5760008081fd5b6118d88f89838a0101611659565b83525091860191908601906118b2565b60408d0151909a5095505050508083111561190257600080fd5b61190e8a848b01611659565b955061191c60608a0161180a565b9450608089015192508083111561193257600080fd5b505061194088828901611659565b9150509295509295909350565b73ffffffffffffffffffffffffffffffffffffffff841681527fffffffff00000000000000000000000000000000000000000000000000000000831660208201526060604082015260006117526060830184611411565b600060a0820173ffffffffffffffffffffffffffffffffffffffff88168352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b82811015611a34577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40888703018452611a22868351611411565b955092840192908401906001016119e8565b50505050508281036040840152611a4b8187611411565b7fffffffff0000000000000000000000000000000000000000000000000000000086166060850152905082810360808401526104dd8185611411565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610221576102216117c8565b60008085851115611ad957600080fd5b83861115611ae657600080fd5b5050820193919092039150565b8183823760009101908152919050565b60008251611b158184602087016113ed565b919091019291505056fe416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a2646970667358221220f0118c9c742460e490b8a97ba3fd9ef419d3f09fa81536be717ea48be011ed3a64736f6c63430008110033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1C0B CODESIZE SUB DUP1 PUSH2 0x1C0B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1B7A PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xA4 ADD MSTORE PUSH2 0xA3A ADD MSTORE PUSH2 0x1B7A PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA1CBCBAF GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA1CBCBAF EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xB4A85801 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0xEC11C823 EQ PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x9061B923 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x1247 JUMP JUMPDEST PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC6 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1384 JUMP JUMPDEST PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x11F PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0x1475 JUMP JUMPDEST PUSH2 0x3FC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x15E PUSH2 0x159 CALLDATASIZE PUSH1 0x4 PUSH2 0x14B7 JUMP JUMPDEST PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x1523 JUMP JUMPDEST PUSH2 0x17E PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0x1475 JUMP JUMPDEST PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1536 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x9061B92300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x221 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x236 DUP7 DUP7 PUSH2 0x3FC JUMP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x26E JUMPI POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE SWAP1 SWAP2 POP PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x9061B92300000000000000000000000000000000000000000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x1FFC9A7 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x314 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x311 SWAP2 DUP2 ADD SWAP1 PUSH2 0x157F JUMP JUMPDEST PUSH1 0x1 JUMPDEST ISZERO PUSH2 0x3C4 JUMPI DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH2 0x3B6 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x338 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x15A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9061B92300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH32 0xB4A8580100000000000000000000000000000000000000000000000000000000 PUSH2 0x7A1 JUMP JUMPDEST DUP3 SWAP4 POP SWAP4 POP POP POP PUSH2 0x3F4 JUMP JUMPDEST POP JUMPDEST PUSH2 0x3EF DUP2 DUP6 PUSH32 0xB4A8580100000000000000000000000000000000000000000000000000000000 PUSH2 0x7A1 JUMP JUMPDEST SWAP3 POP SWAP1 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x40E DUP7 DUP7 PUSH1 0x0 PUSH2 0x927 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP1 PUSH2 0x42F DUP6 DUP8 ADD DUP8 PUSH2 0x1601 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x4CA DUP3 DUP10 DUP10 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x44E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x15A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH2 0xAE4 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DD SWAP2 SWAP1 PUSH2 0x16A6 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9061B923 DUP10 DUP10 PUSH2 0x555 PUSH1 0x0 DUP14 DUP14 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0xB09 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x567 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x691F343100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x5F8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x15A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x615 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x63D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16DB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x657 SWAP2 SWAP1 PUSH2 0x16A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x665 DUP4 PUSH2 0xBE2 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9061B923 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x69C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3B3B57DE00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x72C SWAP3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x172D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x771 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16DB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x78B SWAP2 SWAP1 PUSH2 0x175B JUMP JUMPDEST SWAP6 SWAP15 SWAP6 SWAP14 POP SWAP6 SWAP12 POP SWAP10 POP SWAP3 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x7AF DUP6 DUP6 PUSH2 0xE8F JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP2 ISZERO PUSH2 0x7CC JUMPI PUSH2 0x7C3 PUSH1 0x0 DUP3 PUSH2 0xF48 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x920 JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x915 JUMPI PUSH1 0x0 PUSH2 0x7E2 PUSH1 0x0 PUSH1 0x4 PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH32 0x556F183000000000000000000000000000000000000000000000000000000000 PUSH2 0x80E DUP3 PUSH2 0x1778 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SUB PUSH2 0x913 JUMPI PUSH1 0x0 PUSH2 0x84B PUSH1 0x4 PUSH2 0x846 DUP2 DUP7 PUSH2 0x17F7 JUMP JUMPDEST PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x869 SWAP2 SWAP1 PUSH2 0x181A JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x90C JUMPI ADDRESS DUP5 DUP5 DUP14 DUP9 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8BF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x194D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH32 0x556F183000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH2 0x903 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0x19A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP JUMPDEST PUSH2 0x91D PUSH2 0xF9D JUMP JUMPDEST POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x93E JUMPI PUSH2 0x93E PUSH2 0x1A87 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP2 POP POP PUSH1 0x0 DUP2 SWAP1 SUB PUSH2 0x95F JUMPI POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x96B DUP3 DUP7 PUSH2 0x1AB6 JUMP JUMPDEST PUSH2 0x976 SWAP1 PUSH1 0x1 PUSH2 0x1AB6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 DUP8 PUSH2 0x987 DUP9 PUSH1 0x1 PUSH2 0x1AB6 JUMP JUMPDEST PUSH2 0x993 SWAP3 DUP6 SWAP3 SWAP1 PUSH2 0x1AC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9A1 SWAP3 SWAP2 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x9B9 DUP11 DUP11 DUP7 PUSH2 0x927 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x9DB SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0x178B8BF00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x178B8BF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAA5 SWAP2 SWAP1 PUSH2 0x175B JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0xAD2 JUMPI SWAP8 POP SWAP6 POP PUSH2 0x3F4 SWAP5 POP POP POP POP POP JUMP JUMPDEST POP SWAP2 SWAP11 SWAP2 SWAP10 POP SWAP1 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x920 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B20 PUSH1 0x25 SWAP2 CODECOPY PUSH2 0xFA7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB18 DUP6 DUP6 PUSH2 0x10CE JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0xBA4 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0xB30 SWAP2 SWAP1 PUSH2 0x17F7 JUMP JUMPDEST DUP5 EQ PUSH2 0xB98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D65686173683A204A756E6B20617420656E64206F66206E616D65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x903 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x221 SWAP1 POP JUMP JUMPDEST PUSH2 0xBAE DUP6 DUP3 PUSH2 0xB09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 SWAP1 PUSH2 0xBF9 DUP2 PUSH1 0x2 PUSH2 0x1AB6 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC11 JUMPI PUSH2 0xC11 PUSH2 0x12A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC3B JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP5 POP PUSH1 0x0 SWAP4 POP DUP1 DUP5 SUB PUSH2 0xC98 JUMPI PUSH1 0x0 PUSH1 0xF8 SHL DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC61 JUMPI PUSH2 0xC61 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD JUMPDEST DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xCCE JUMPI PUSH2 0xCCE PUSH2 0x1A87 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0x2E00000000000000000000000000000000000000000000000000000000000000 SUB PUSH2 0xDA8 JUMPI DUP4 PUSH1 0xF8 SHL DUP7 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0xD34 JUMPI PUSH2 0xD34 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP5 PUSH2 0xD75 DUP5 PUSH1 0x1 DUP5 ADD PUSH1 0xFF DUP9 AND PUSH2 0x119F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0xE10 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xDC0 JUMPI PUSH2 0xDC0 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP7 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0xDE0 JUMPI PUSH2 0xDE0 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP JUMPDEST DUP1 ISZERO PUSH2 0xE3D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0xCBC JUMP JUMPDEST POP DUP4 PUSH2 0xE4E DUP4 PUSH1 0x0 PUSH1 0xFF DUP8 AND PUSH2 0x119F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP DUP3 PUSH1 0xF8 SHL DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC61 JUMPI PUSH2 0xC61 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE PUSH2 0xF35 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6F774C6576656C43616C6C5574696C733A207374617469632063616C6C2074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F206E6F6E2D636F6E7472616374000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS STATICCALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF63 JUMPI PUSH2 0xF63 PUSH2 0x12A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF8D JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP4 PUSH1 0x20 DUP4 ADD RETURNDATACOPY SWAP3 SWAP2 POP POP JUMP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE PUSH2 0x104C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x416464726573733A207374617469632063616C6C20746F206E6F6E2D636F6E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7261637400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1074 SWAP2 SWAP1 PUSH2 0x1B03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x10AF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x10B4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x10C4 DUP3 DUP3 DUP7 PUSH2 0x11C3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD DUP4 LT PUSH2 0x113B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726561644C6162656C3A20496E646578206F7574206F6620626F756E64730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x114F JUMPI PUSH2 0x114F PUSH2 0x1A87 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP DUP1 ISZERO PUSH2 0x117B JUMPI PUSH2 0x1174 DUP6 PUSH2 0x116E DUP7 PUSH1 0x1 PUSH2 0x1AB6 JUMP JUMPDEST DUP4 PUSH2 0x119F JUMP JUMPDEST SWAP3 POP PUSH2 0x1180 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST PUSH2 0x118A DUP2 DUP6 PUSH2 0x1AB6 JUMP JUMPDEST PUSH2 0x1195 SWAP1 PUSH1 0x1 PUSH2 0x1AB6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x11AE DUP4 DUP6 PUSH2 0x1AB6 JUMP JUMPDEST GT ISZERO PUSH2 0x11B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x11D2 JUMPI POP DUP2 PUSH2 0x920 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x11E2 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x903 SWAP2 SWAP1 PUSH2 0x1523 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x1244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x920 DUP2 PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x128E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x12FE JUMPI PUSH2 0x12FE PUSH2 0x12A6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1320 JUMPI PUSH2 0x1320 PUSH2 0x12A6 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x133F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1352 PUSH2 0x134D DUP3 PUSH2 0x1306 JUMP JUMPDEST PUSH2 0x12D5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13BD DUP8 DUP4 DUP9 ADD PUSH2 0x1264 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x13D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13E3 DUP7 DUP3 DUP8 ADD PUSH2 0x132E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1408 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13F0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1429 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x13ED JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1450 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1411 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x149F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14AB DUP6 DUP3 DUP7 ADD PUSH2 0x1264 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x14CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x14E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F1 DUP9 DUP4 DUP10 ADD PUSH2 0x1264 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x150A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1517 DUP8 DUP3 DUP9 ADD PUSH2 0x1264 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x920 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1411 JUMP JUMPDEST PUSH1 0x80 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1549 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x1411 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 AND PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP5 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x60 DUP5 DUP4 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP3 ADD PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x10C4 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x1411 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1621 DUP2 PUSH2 0x15DF JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1631 DUP2 PUSH2 0x1216 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x164D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13E3 DUP7 DUP3 DUP8 ADD PUSH2 0x132E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x166A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1678 PUSH2 0x134D DUP3 PUSH2 0x1306 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x168D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x169E DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x13ED JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x169E DUP5 DUP3 DUP6 ADD PUSH2 0x1659 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1711 DUP6 DUP3 DUP7 ADD PUSH2 0x1659 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1722 DUP2 PUSH2 0x15DF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1740 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1411 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1752 DUP2 DUP6 PUSH2 0x1411 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x920 DUP2 PUSH2 0x15DF JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 AND SWAP4 POP PUSH1 0x4 DUP4 LT ISZERO PUSH2 0x17C0 JUMPI DUP1 DUP2 DUP5 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP4 POP JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x221 JUMPI PUSH2 0x221 PUSH2 0x17C8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1815 DUP2 PUSH2 0x1216 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x183D DUP2 PUSH2 0x15DF JUMP JUMPDEST DUP1 SWAP6 POP POP PUSH1 0x20 DUP1 DUP8 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1883 JUMPI PUSH2 0x1883 PUSH2 0x12A6 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x1892 DUP6 DUP3 ADD PUSH2 0x12D5 JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP6 DUP2 ADD SWAP1 DUP14 DUP5 GT ISZERO PUSH2 0x18AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x18E8 JUMPI DUP3 MLOAD DUP6 DUP2 GT ISZERO PUSH2 0x18CA JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18D8 DUP16 DUP10 DUP4 DUP11 ADD ADD PUSH2 0x1659 JUMP JUMPDEST DUP4 MSTORE POP SWAP2 DUP7 ADD SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x40 DUP14 ADD MLOAD SWAP1 SWAP11 POP SWAP6 POP POP POP POP DUP1 DUP4 GT ISZERO PUSH2 0x1902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x190E DUP11 DUP5 DUP12 ADD PUSH2 0x1659 JUMP JUMPDEST SWAP6 POP PUSH2 0x191C PUSH1 0x60 DUP11 ADD PUSH2 0x180A JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD MLOAD SWAP3 POP DUP1 DUP4 GT ISZERO PUSH2 0x1932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH2 0x1940 DUP9 DUP3 DUP10 ADD PUSH2 0x1659 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1752 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1411 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP4 MSTORE PUSH1 0x20 PUSH1 0xA0 DUP2 DUP6 ADD MSTORE DUP2 DUP9 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP11 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1A34 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 DUP9 DUP8 SUB ADD DUP5 MSTORE PUSH2 0x1A22 DUP7 DUP4 MLOAD PUSH2 0x1411 JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x19E8 JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x1A4B DUP2 DUP8 PUSH2 0x1411 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP7 AND PUSH1 0x60 DUP6 ADD MSTORE SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x4DD DUP2 DUP6 PUSH2 0x1411 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x221 JUMPI PUSH2 0x221 PUSH2 0x17C8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x1AD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x1AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1B15 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x13ED JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2073746174 PUSH10 0x632063616C6C20666169 PUSH13 0x6564A2646970667358221220F0 GT DUP13 SWAP13 PUSH21 0x2460E490B8A97BA3FD9EF419D3F09FA81536BE717E LOG4 DUP12 0xE0 GT 0xED GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "900:7917:94:-:0;;;1096:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1137:25:94;;;900:7917;;14:290:111;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:111;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:111:o;:::-;900:7917:94;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@callWithOffchainLookupPropagation_16501": {
                  "entryPoint": 1953,
                  "id": 16501,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@dnsEncodeName_16095": {
                  "entryPoint": 3042,
                  "id": 16095,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@findResolver_16573": {
                  "entryPoint": 1020,
                  "id": 16573,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@findResolver_16673": {
                  "entryPoint": 2343,
                  "id": 16673,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@functionStaticCall_15899": {
                  "entryPoint": 3727,
                  "id": 15899,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionStaticCall_2714": {
                  "entryPoint": 2788,
                  "id": 2714,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionStaticCall_2749": {
                  "entryPoint": 4007,
                  "id": 2749,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@isContract_2556": {
                  "entryPoint": null,
                  "id": 2556,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@keccak_16698": {
                  "entryPoint": 4511,
                  "id": 16698,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@namehash_16752": {
                  "entryPoint": 2825,
                  "id": 16752,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@propagateRevert_15932": {
                  "entryPoint": 3997,
                  "id": 15932,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@readLabel_16816": {
                  "entryPoint": 4302,
                  "id": 16816,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@readReturnData_15926": {
                  "entryPoint": 3912,
                  "id": 15926,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@registry_16168": {
                  "entryPoint": null,
                  "id": 16168,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@resolveCallback_16546": {
                  "entryPoint": 1053,
                  "id": 16546,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@resolve_16276": {
                  "entryPoint": 551,
                  "id": 16276,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@returnDataSize_15907": {
                  "entryPoint": null,
                  "id": 15907,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@reverse_16358": {
                  "entryPoint": 1257,
                  "id": 16358,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "@supportsInterface_16379": {
                  "entryPoint": 398,
                  "id": 16379,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_3081": {
                  "entryPoint": null,
                  "id": 3081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_2832": {
                  "entryPoint": 4547,
                  "id": 2832,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 4910,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes4_fromMemory": {
                  "entryPoint": 6154,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 4708,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_bytes_fromMemory": {
                  "entryPoint": 5721,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable_fromMemory": {
                  "entryPoint": 5979,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_array$_t_string_memory_ptr_$dyn_memory_ptrt_bytes_memory_ptrt_bytes4t_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 6170,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_address_payablet_bytes4t_bytes_memory_ptr": {
                  "entryPoint": 5633,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 5503,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 4679,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 5237,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 5303,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_memory_ptr": {
                  "entryPoint": 4996,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 5798,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory": {
                  "entryPoint": 5851,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 5137,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 6899,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 6915,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__to_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6564,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes4_t_bytes_memory_ptr__to_t_address_t_bytes4_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6477,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_calldata_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5537,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5411,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                  "entryPoint": 5181,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5933,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_Resolver_$13920_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr_t_address_t_address_t_address__to_t_string_memory_ptr_t_address_t_address_t_address__fromStack_reversed": {
                  "entryPoint": 5430,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0ac203751bc6c539988299c5b94d9ac70ecc8c84eb3b7e4104b8b4017125eb31__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 4821,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 4870,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "calldata_array_index_range_access_t_bytes_calldata_ptr": {
                  "entryPoint": 6857,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "checked_add_t_uint256": {
                  "entryPoint": 6838,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 6135,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes4": {
                  "entryPoint": 6008,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 5101,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x11": {
                  "entryPoint": 6088,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 6791,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 4774,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address_payable": {
                  "entryPoint": 5599,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 4630,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:18799:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:133:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "99:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "68:117:111"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "265:176:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "311:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "320:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "323:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "313:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "313:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "313:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "286:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "295:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "282:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "282:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "307:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "278:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "278:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "275:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "336:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "362:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "349:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "349:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "340:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "405:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "381:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "381:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "381:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "420:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "430:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "231:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "242:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "254:6:111",
                            "type": ""
                          }
                        ],
                        "src": "196:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "541:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "551:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "563:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "574:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "559:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "559:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "551:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "618:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "611:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "611:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "604:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "604:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "586:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "586:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "586:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "510:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "521:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "532:4:111",
                            "type": ""
                          }
                        ],
                        "src": "446:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "752:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "762:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "774:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "785:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "770:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "770:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "762:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "804:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "819:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "827:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "815:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "815:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "797:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "797:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "797:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "721:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "732:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "743:4:111",
                            "type": ""
                          }
                        ],
                        "src": "638:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "954:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1003:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1012:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1015:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1005:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1005:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1005:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "982:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "990:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "978:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "978:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "997:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "974:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "974:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "967:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "967:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "964:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1028:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1051:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1038:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1038:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1028:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1101:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1110:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1113:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1103:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1103:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1103:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1073:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1081:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1070:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1070:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1067:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1126:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1142:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1150:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1138:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1138:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1126:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1207:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1216:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1219:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1209:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1209:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1209:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1178:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1186:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1174:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1174:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1195:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1170:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1170:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1202:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1167:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1167:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1164:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "917:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "925:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "933:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "943:6:111",
                            "type": ""
                          }
                        ],
                        "src": "882:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1266:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1283:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1286:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1276:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1276:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1276:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1380:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1383:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1373:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1373:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1373:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1404:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1407:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1397:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1397:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1234:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1468:289:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1478:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1494:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1488:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1488:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1478:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1506:117:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1528:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "1544:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1550:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1540:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1540:13:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1555:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1536:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1536:86:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1524:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1524:99:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1510:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1698:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1700:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1700:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1700:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1641:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1653:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1638:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1638:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1677:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1689:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1674:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1674:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1635:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1635:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1632:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1736:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1740:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1729:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1729:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1729:22:111"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "1448:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "1457:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1423:334:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1819:188:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1863:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1865:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1865:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1865:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1835:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1843:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1832:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1832:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1829:56:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1894:107:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1914:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1922:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1910:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1910:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1927:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1906:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1906:88:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1996:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1902:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1902:99:111"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "1894:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1799:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "1810:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1762:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2064:410:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2113:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2122:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2125:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2115:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2115:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2115:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2092:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2100:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2088:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2088:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2107:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2084:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2084:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2077:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2077:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2074:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2138:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2161:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2148:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2148:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2142:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2177:63:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2236:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "2208:27:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2208:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2192:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2192:48:111"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2181:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2256:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2265:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2249:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2249:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2249:19:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2316:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2325:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2328:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2318:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2318:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2318:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2291:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2299:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2287:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2287:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2304:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2283:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2283:26:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "2311:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2280:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2280:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2277:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2358:7:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2367:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2354:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2354:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2378:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2386:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2374:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2374:17:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2393:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2341:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2341:55:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2341:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2420:7:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2429:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2416:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2416:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2434:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2412:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2412:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2441:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2405:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2405:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2405:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2452:16:111",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "2461:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "2452:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2038:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2046:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2054:5:111",
                            "type": ""
                          }
                        ],
                        "src": "2012:462:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2594:513:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2640:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2649:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2652:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2642:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2642:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2642:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2615:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2624:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2611:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2611:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2636:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2607:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2607:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2604:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2665:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2692:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2679:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2679:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2669:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2711:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2721:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2715:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2766:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2775:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2778:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2768:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2768:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2768:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2754:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2751:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2751:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2748:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2791:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2847:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2858:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2843:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2843:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2867:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2817:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2817:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2795:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2805:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2884:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "2894:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2884:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2911:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "2921:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2911:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2938:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2971:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2982:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2967:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2967:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2942:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3015:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3024:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3027:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3017:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3017:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3017:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3001:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3011:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2998:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2998:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2995:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3040:61:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3071:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3082:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3067:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3067:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3093:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3050:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3050:51:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3040:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2544:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2555:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2567:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2575:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2583:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2479:628:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3178:184:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3188:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3197:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3192:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3257:63:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "3282:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "3287:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3278:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3278:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3301:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3306:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3297:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3297:11:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3291:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3291:18:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3271:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3271:39:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3271:39:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3218:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3221:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3215:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3215:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3229:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3231:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "3240:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3243:2:111",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3236:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3236:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3231:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3211:3:111",
                                "statements": []
                              },
                              "src": "3207:113:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "3340:3:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3345:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3336:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3336:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3354:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3329:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3329:27:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3329:27:111"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "3156:3:111",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "3161:3:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3166:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3112:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3416:280:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3426:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3446:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3440:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3440:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3430:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3468:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3473:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3461:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3461:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3461:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3528:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3535:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3524:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3524:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3546:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3551:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3542:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3542:14:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3558:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "3489:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3489:76:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3489:76:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3574:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3589:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3602:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3610:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3598:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3598:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3615:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3594:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3594:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3585:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3585:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3685:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3581:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3581:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3574:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3393:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3400:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3408:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3367:329:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3848:190:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3865:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3876:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3858:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3858:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3858:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3888:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3913:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3925:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3936:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3921:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3921:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3896:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3896:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3888:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3960:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3971:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3956:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3956:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3980:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3988:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3976:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3976:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3949:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3949:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3949:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3809:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3820:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3828:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3839:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3701:337:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4132:320:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4178:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4187:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4190:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4180:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4180:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4180:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4153:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4162:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4149:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4149:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4174:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4145:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4145:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4142:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4203:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4230:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4217:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4217:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4207:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4283:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4292:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4295:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4285:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4285:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4285:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4255:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4263:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4252:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4252:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4249:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4308:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4364:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4375:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4360:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4360:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4384:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4334:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4334:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4312:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4322:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4401:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "4411:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4401:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4428:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "4438:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4428:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4090:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4101:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4113:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4121:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4043:409:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4604:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4614:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4626:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4637:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4622:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4622:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4614:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4656:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4671:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4679:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4667:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4667:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4649:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4649:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4649:74:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4743:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4754:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4739:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4739:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4759:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4732:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4732:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4732:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_Resolver_$13920_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4565:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4576:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4584:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4595:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4457:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4902:592:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4948:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4957:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4960:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4950:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4950:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4950:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4923:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4932:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4919:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4919:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4944:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4915:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4915:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4912:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4973:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5000:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4987:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4987:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4977:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5019:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5029:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5023:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5074:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5083:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5086:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5076:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5076:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5076:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5062:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5070:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5059:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5059:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5056:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5099:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5155:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5166:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5151:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5151:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5175:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "5125:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5125:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5103:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5113:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5192:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "5202:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5192:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5219:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "5229:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5219:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5246:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5279:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5290:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5275:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5275:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5262:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5262:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5250:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5323:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5332:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5335:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5325:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5325:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5325:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5309:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5319:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5306:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5306:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5303:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5348:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5404:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5415:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5400:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5400:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5426:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "5374:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5374:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5352:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5362:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5443:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "5453:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5443:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5470:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "5480:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5470:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4844:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4855:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4867:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4875:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4883:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4891:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4777:717:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5618:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5635:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5646:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5628:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5628:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5628:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5658:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5683:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5695:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5706:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5691:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5691:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5666:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5666:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5658:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5587:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5598:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5609:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5499:217:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5926:317:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5943:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5954:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5936:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5936:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5936:22:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5967:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5992:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6004:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6015:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6000:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6000:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5975:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5975:45:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5967:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6029:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6039:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6033:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6101:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6112:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6097:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6097:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6121:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6129:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6117:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6117:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6090:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6090:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6090:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6153:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6164:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6149:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6149:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6173:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6181:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6169:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6169:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6142:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6142:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6142:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6205:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6216:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6201:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6201:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "6225:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6233:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6221:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6221:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6194:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6194:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6194:43:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr_t_address_t_address_t_address__to_t_string_memory_ptr_t_address_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5871:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5882:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5890:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5898:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5906:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5917:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5721:522:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6291:107:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6308:3:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6317:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6324:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6313:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6313:78:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6301:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6301:91:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6301:91:111"
                            }
                          ]
                        },
                        "name": "abi_encode_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6275:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6282:3:111",
                            "type": ""
                          }
                        ],
                        "src": "6248:150:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6502:149:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6512:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6524:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6535:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6520:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6520:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6512:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6554:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6569:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6577:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6565:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6565:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6547:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6547:98:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6547:98:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6471:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6482:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6493:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6403:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6734:199:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6780:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6789:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6792:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6782:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6782:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6782:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6755:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6764:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6751:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6751:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6776:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6747:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6747:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6744:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6805:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6824:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6818:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6818:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6809:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6887:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6896:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6899:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6889:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6889:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6889:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6856:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "6877:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "6870:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6870:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6863:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6863:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6853:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6853:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6846:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6846:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6843:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6912:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6922:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6912:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6700:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6711:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6723:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6656:277:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7113:431:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7130:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7141:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7123:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7123:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7123:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7164:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7175:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7160:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7160:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7180:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7153:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7153:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7153:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7213:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7224:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7209:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7209:18:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7229:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7237:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "7196:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7196:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7196:48:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7268:9:111"
                                          },
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "7279:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7264:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7264:22:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7288:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7260:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7260:31:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7293:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7253:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7253:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7253:42:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7304:114:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7318:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "7337:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7345:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7333:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7333:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7350:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7329:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7329:88:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7314:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7314:104:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7308:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7438:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7449:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7434:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7434:20:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "7464:2:111"
                                          },
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7468:9:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7460:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7460:18:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7480:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7456:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7456:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7427:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7427:57:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7427:57:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7493:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7518:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7530:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7534:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7526:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7526:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7501:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7501:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7493:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_calldata_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7066:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7077:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7085:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7093:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7104:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6938:606:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7602:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7689:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7698:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7701:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7691:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7691:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7691:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7625:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7636:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7643:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7632:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7632:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7622:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7622:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7615:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7615:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7612:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address_payable",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7591:5:111",
                            "type": ""
                          }
                        ],
                        "src": "7549:162:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7836:490:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7882:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7891:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7894:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7884:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7884:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7884:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7857:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7866:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7853:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7853:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7878:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7849:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7849:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7846:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7907:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7933:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7920:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7920:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7911:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7985:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address_payable",
                                  "nodeType": "YulIdentifier",
                                  "src": "7952:32:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7952:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7952:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8000:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8010:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8000:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8024:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8056:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8067:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8052:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8052:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8039:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8039:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8028:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8104:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8080:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8080:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8080:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8121:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "8131:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8121:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8147:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8178:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8189:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8174:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8174:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8161:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8161:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8151:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8236:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8245:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8248:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8238:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8238:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8238:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8208:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8216:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8205:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8205:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8202:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8261:59:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8292:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8303:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8288:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8288:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8312:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "8271:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8271:49:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8261:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_bytes4t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7786:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7797:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7809:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7817:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7825:6:111",
                            "type": ""
                          }
                        ],
                        "src": "7716:610:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8394:378:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8443:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8452:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8455:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8445:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8445:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8445:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8422:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8430:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8418:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8418:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8437:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8414:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8414:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8407:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8407:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8404:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8468:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8484:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8478:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8478:13:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8472:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8500:63:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8559:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "8531:27:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8531:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8515:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8515:48:111"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8504:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8579:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8588:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8572:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8572:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8572:19:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8639:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8648:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8651:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8641:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8641:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8641:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8614:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8622:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8610:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8610:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8627:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8606:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8606:26:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8634:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8603:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8603:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8600:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8703:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8711:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8699:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8699:17:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8722:7:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8731:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8718:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8718:18:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8738:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "8664:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8664:77:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8664:77:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8750:16:111",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "8759:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8750:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "8368:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8376:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "8384:5:111",
                            "type": ""
                          }
                        ],
                        "src": "8331:441:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8867:245:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8913:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8922:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8925:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8915:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8915:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8915:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8888:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8897:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8884:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8884:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8909:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8880:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8880:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8877:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8938:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8958:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8952:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8952:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8942:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9011:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9020:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9023:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9013:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9013:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9013:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8983:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8991:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8980:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8980:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8977:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9036:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9078:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9089:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9074:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9074:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9098:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "9046:27:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9046:60:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9036:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8833:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8844:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8856:6:111",
                            "type": ""
                          }
                        ],
                        "src": "8777:335:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9218:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9228:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9240:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9251:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9236:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9236:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9228:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9270:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9281:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9263:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9263:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9263:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9187:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9198:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9209:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9117:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9406:364:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9452:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9461:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9464:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9454:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9454:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9454:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9427:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9436:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9423:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9423:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9448:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9419:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9419:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9416:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9477:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9497:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9491:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9491:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9481:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9550:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9559:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9562:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9552:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9552:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9552:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9522:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9530:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9519:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9519:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9516:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9575:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9617:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9628:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9613:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9613:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9637:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "9585:27:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9585:60:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9575:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9654:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9677:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9688:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9673:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9673:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9667:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9667:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9658:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9734:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address_payable",
                                  "nodeType": "YulIdentifier",
                                  "src": "9701:32:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9701:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9701:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9749:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9759:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9749:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9364:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9375:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9387:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9395:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9299:471:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9866:245:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9912:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9921:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9924:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9914:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9914:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9914:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9887:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9896:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9883:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9883:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9908:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9879:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9879:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9876:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9937:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9957:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9951:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9951:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9941:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10010:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10019:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10022:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10012:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10012:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10012:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9982:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9990:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9979:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9979:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9976:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10035:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10077:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10088:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10073:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10073:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10097:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "10045:27:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10045:60:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10035:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9832:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9843:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9855:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9775:336:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10281:212:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10298:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10309:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10291:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10291:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10291:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10321:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10352:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10364:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10375:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10360:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10360:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10335:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10335:44:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10325:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10399:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10410:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10395:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10395:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10419:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10427:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10415:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10415:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10388:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10388:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10388:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10447:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10472:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10480:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10455:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10455:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10447:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10242:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10253:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10261:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10272:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10116:377:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10587:178:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10633:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10642:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10645:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10635:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10635:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10635:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10608:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10617:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10604:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10604:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10629:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10600:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10600:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10597:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10658:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10677:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10671:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10671:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10662:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10729:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address_payable",
                                  "nodeType": "YulIdentifier",
                                  "src": "10696:32:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10696:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10696:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10744:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10754:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10744:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10553:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10564:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10576:6:111",
                            "type": ""
                          }
                        ],
                        "src": "10498:267:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10863:314:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10873:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "10893:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10887:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10887:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10877:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10908:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "10928:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10935:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10924:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10924:16:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10918:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10918:23:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10912:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10950:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10960:66:111",
                                "type": "",
                                "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10954:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11035:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11048:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11052:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "11044:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11044:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "11035:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11089:82:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11103:58:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "11120:2:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "11132:1:111",
                                                      "type": "",
                                                      "value": "3"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "11139:1:111",
                                                          "type": "",
                                                          "value": "4"
                                                        },
                                                        {
                                                          "name": "length",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "11142:6:111"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11135:3:111"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "11135:14:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11128:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "11128:22:111"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11152:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "shl",
                                                "nodeType": "YulIdentifier",
                                                "src": "11124:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11124:31:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "11116:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11116:40:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "11158:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "11112:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11112:49:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "11103:5:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11070:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11078:1:111",
                                    "type": "",
                                    "value": "4"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11067:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11067:13:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11064:107:111"
                            }
                          ]
                        },
                        "name": "convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "10843:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "10853:5:111",
                            "type": ""
                          }
                        ],
                        "src": "10770:407:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11214:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11231:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11234:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11224:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11224:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11224:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11328:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11331:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11321:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11321:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11321:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11352:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11355:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11345:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11345:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11345:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11182:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11420:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11430:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11442:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11445:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "11438:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11438:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "11430:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11471:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "11473:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11473:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11473:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "11462:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11468:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11459:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11459:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11456:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "11402:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "11405:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "11411:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11371:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11563:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11573:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11588:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11582:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11582:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "11573:5:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11628:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11604:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11604:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11604:30:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "11542:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11553:5:111",
                            "type": ""
                          }
                        ],
                        "src": "11504:136:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11854:1591:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11901:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11910:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11913:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11903:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11903:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11903:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11875:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11884:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11871:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11871:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11896:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11867:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11867:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11864:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11926:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11945:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11939:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11939:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11930:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11997:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address_payable",
                                  "nodeType": "YulIdentifier",
                                  "src": "11964:32:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11964:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11964:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12012:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12022:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12012:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12036:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12046:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12040:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12057:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12081:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12092:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12077:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12077:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12071:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12071:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12061:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12105:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12115:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "12109:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12160:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12169:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12172:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12162:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12162:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12162:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12148:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12156:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12145:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12145:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12142:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12185:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12199:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12210:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12195:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12195:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "12189:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12265:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12274:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12277:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12267:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12267:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12267:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "12244:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12248:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12240:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12240:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12255:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "12236:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12236:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12229:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12229:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12226:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12290:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12306:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12300:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12300:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "12294:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12332:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "12334:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12334:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12334:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "12324:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12328:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12321:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12321:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12318:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12363:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12377:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "12380:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "12373:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12373:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "12367:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12392:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "12423:2:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12427:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12419:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12419:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "12403:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12403:28:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "12396:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12440:16:111",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "12453:3:111"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12444:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "12472:3:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "12477:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12465:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12465:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12465:15:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12489:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "12500:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12505:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12496:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12496:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "12489:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12517:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "12539:2:111"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "12543:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12535:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12535:11:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12548:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12531:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12531:20:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "12521:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12583:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12592:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12595:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12585:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12585:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12585:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12566:6:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12574:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12563:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12563:19:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12560:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12608:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12623:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12627:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12619:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12619:11:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "12612:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12695:300:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "12709:29:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "12734:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "12728:5:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12728:10:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "12713:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "12786:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "12804:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12814:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulTypedName",
                                              "src": "12808:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "12839:2:111"
                                              },
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "12843:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "12832:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12832:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "12832:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "12757:11:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12770:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "12754:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12754:19:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "12751:109:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "12880:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12921:2:111"
                                                    },
                                                    {
                                                      "name": "innerOffset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12925:11:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12917:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "12917:20:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12939:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "12913:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12913:29:111"
                                            },
                                            {
                                              "name": "dataEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "12944:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_bytes_fromMemory",
                                            "nodeType": "YulIdentifier",
                                            "src": "12885:27:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12885:67:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12873:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12873:80:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12873:80:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12966:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "12977:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12982:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12973:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12973:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "12966:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "12650:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12655:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12647:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12647:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "12663:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12665:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "12676:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12681:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12672:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12672:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "12665:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "12643:3:111",
                                "statements": []
                              },
                              "src": "12639:356:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13004:15:111",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "13014:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13004:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13028:41:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13054:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13065:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13050:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13050:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13044:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13044:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13032:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13098:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13107:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13110:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13100:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13100:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13100:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13084:8:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13094:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13081:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13081:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13078:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13123:72:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13165:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13176:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13161:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13161:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13187:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13133:27:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13133:62:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "13123:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13204:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13247:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13258:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13243:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13243:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13214:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13214:48:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "13204:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13271:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13297:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13308:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13293:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13293:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13287:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13287:26:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "13275:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13342:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13351:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13354:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13344:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13344:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13344:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13328:8:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13338:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13325:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13325:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13322:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13367:72:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13409:9:111"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "13420:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13405:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13405:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13431:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13377:27:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13377:62:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "13367:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_array$_t_string_memory_ptr_$dyn_memory_ptrt_bytes_memory_ptrt_bytes4t_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11788:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11799:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11811:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11819:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11827:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11835:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11843:6:111",
                            "type": ""
                          }
                        ],
                        "src": "11645:1800:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13623:306:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13640:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13655:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13663:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13651:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13651:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13633:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13633:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13633:74:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13727:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13738:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13723:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13723:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13747:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13755:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13743:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13743:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13716:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13716:107:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13716:107:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13843:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13854:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13839:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13839:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13859:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13832:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13832:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13832:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13871:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13896:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13908:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13919:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13904:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13904:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "13879:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13879:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13871:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes4_t_bytes_memory_ptr__to_t_address_t_bytes4_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13576:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13587:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13595:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13603:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13614:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13450:479:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14251:1040:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14261:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14279:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14290:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14275:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14275:19:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14265:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14310:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14325:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14333:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14321:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14321:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14303:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14303:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14303:74:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14386:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14396:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14390:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14418:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14429:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14414:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14414:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14434:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14407:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14407:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14407:31:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14447:17:111",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "14458:6:111"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "14451:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14473:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14493:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14487:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14487:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "14477:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14516:6:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14524:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14509:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14509:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14509:22:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14540:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14551:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14562:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14547:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14547:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "14540:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14575:54:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14597:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14612:1:111",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "14615:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "14608:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14608:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14593:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14593:30:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14625:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14589:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14589:40:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "14579:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14638:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14656:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14664:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14652:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14652:15:111"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "14642:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14676:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14685:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "14680:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14744:264:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "14765:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14778:6:111"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14786:9:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "14774:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14774:22:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14798:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14770:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14770:95:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14758:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14758:108:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14758:108:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14879:49:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "14912:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "14906:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14906:13:111"
                                        },
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "14921:6:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "14889:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14889:39:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14879:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14941:25:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14955:6:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14963:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14951:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14951:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14941:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14979:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "14990:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14995:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14986:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14986:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "14979:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "14706:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14709:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14703:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14703:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "14717:18:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14719:14:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "14728:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14731:1:111",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14724:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14724:9:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "14719:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "14699:3:111",
                                "statements": []
                              },
                              "src": "14695:313:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15028:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15039:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15024:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15024:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "15048:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15056:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15044:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15044:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15017:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15017:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15017:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15076:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15107:6:111"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15115:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15090:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15090:32:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_3",
                                  "nodeType": "YulTypedName",
                                  "src": "15080:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15149:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15161:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15172:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15157:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15157:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "15131:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15131:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15131:45:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15196:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15207:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15192:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15192:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "15217:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15225:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15213:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15213:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15185:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15185:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15185:51:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15245:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "15270:6:111"
                                  },
                                  {
                                    "name": "tail_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15278:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15253:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15253:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15245:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__to_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14188:9:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "14199:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14207:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14215:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14223:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14231:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14242:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13934:1357:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15328:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15345:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15348:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15338:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15338:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15338:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15442:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15445:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15435:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15435:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15435:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15466:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15469:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "15459:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15459:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15459:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "15296:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15533:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15543:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15554:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15557:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15550:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15550:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "15543:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15582:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "15584:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15584:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15584:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15574:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "15577:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15571:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15571:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15568:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15516:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15519:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "15525:3:111",
                            "type": ""
                          }
                        ],
                        "src": "15485:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15745:201:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15783:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15792:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15795:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15785:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15785:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15785:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "15761:10:111"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "15773:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15758:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15758:24:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15755:44:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15832:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15841:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15844:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15834:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15834:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15834:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "15814:8:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15824:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15811:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15811:20:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15808:40:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15857:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15874:6:111"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "15882:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15870:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15870:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "15857:9:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15902:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "15919:8:111"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "15929:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "15915:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15915:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "15902:9:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "15679:6:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "15687:6:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "15695:10:111",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "15707:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "15720:9:111",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "15731:9:111",
                            "type": ""
                          }
                        ],
                        "src": "15615:331:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16104:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16127:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16132:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16140:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "16114:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16114:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16114:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16156:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16170:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16175:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16166:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16166:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16160:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16198:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16202:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16191:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16191:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16191:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16213:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "16220:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "16213:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "16072:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16077:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16085:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "16096:3:111",
                            "type": ""
                          }
                        ],
                        "src": "15951:277:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16380:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16397:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16402:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16390:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16390:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16390:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16429:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16434:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16425:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16425:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16439:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16418:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16418:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16418:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16455:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16466:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16471:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16462:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16462:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "16455:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "16348:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16353:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16361:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "16372:3:111",
                            "type": ""
                          }
                        ],
                        "src": "16233:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16566:178:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16612:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16621:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16624:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16614:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16614:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16614:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16587:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16596:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16583:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16583:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16608:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16579:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16579:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "16576:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16637:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16656:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16650:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16650:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "16641:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "16708:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address_payable",
                                  "nodeType": "YulIdentifier",
                                  "src": "16675:32:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16675:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16675:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16723:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "16733:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16723:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16532:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16543:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16555:6:111",
                            "type": ""
                          }
                        ],
                        "src": "16485:259:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16923:179:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16940:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16951:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16933:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16933:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16933:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16974:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16985:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16970:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16970:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16990:2:111",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16963:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16963:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16963:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17013:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17024:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17009:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17009:18:111"
                                  },
                                  {
                                    "hexValue": "6e616d65686173683a204a756e6b20617420656e64206f66206e616d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17029:31:111",
                                    "type": "",
                                    "value": "namehash: Junk at end of name"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17002:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17002:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17002:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17070:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17082:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17093:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17078:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17078:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17070:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16900:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16914:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16749:353:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17281:236:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17298:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17309:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17291:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17291:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17291:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17332:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17343:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17328:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17328:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17348:2:111",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17321:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17321:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17321:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17371:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17382:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17367:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17367:18:111"
                                  },
                                  {
                                    "hexValue": "4c6f774c6576656c43616c6c5574696c733a207374617469632063616c6c2074",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17387:34:111",
                                    "type": "",
                                    "value": "LowLevelCallUtils: static call t"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17360:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17360:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17360:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17442:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17453:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17438:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17438:18:111"
                                  },
                                  {
                                    "hexValue": "6f206e6f6e2d636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17458:16:111",
                                    "type": "",
                                    "value": "o non-contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17431:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17431:44:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17431:44:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17484:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17496:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17507:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17492:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17492:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17484:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0ac203751bc6c539988299c5b94d9ac70ecc8c84eb3b7e4104b8b4017125eb31__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17258:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17272:4:111",
                            "type": ""
                          }
                        ],
                        "src": "17107:410:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17696:226:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17713:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17724:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17706:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17706:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17706:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17747:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17758:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17743:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17743:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17763:2:111",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17736:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17736:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17736:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17786:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17797:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17782:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17782:18:111"
                                  },
                                  {
                                    "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17802:34:111",
                                    "type": "",
                                    "value": "Address: static call to non-cont"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17775:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17775:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17775:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17857:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17868:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17853:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17853:18:111"
                                  },
                                  {
                                    "hexValue": "72616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17873:6:111",
                                    "type": "",
                                    "value": "ract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17846:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17846:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17846:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17889:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17901:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17912:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17897:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17897:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17889:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17673:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17687:4:111",
                            "type": ""
                          }
                        ],
                        "src": "17522:400:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18064:150:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18074:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18094:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18088:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18088:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "18078:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18149:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18157:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18145:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18145:17:111"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "18164:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18169:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "18110:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18110:66:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18110:66:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18185:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "18196:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18201:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18192:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18192:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "18185:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "18040:3:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18045:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "18056:3:111",
                            "type": ""
                          }
                        ],
                        "src": "17927:287:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18393:180:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18410:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18421:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18403:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18403:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18403:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18444:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18455:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18440:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18440:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18460:2:111",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18433:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18433:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18433:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18483:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18494:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18479:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18479:18:111"
                                  },
                                  {
                                    "hexValue": "726561644c6162656c3a20496e646578206f7574206f6620626f756e6473",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18499:32:111",
                                    "type": "",
                                    "value": "readLabel: Index out of bounds"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18472:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18472:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18472:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18541:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18553:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18564:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18549:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18549:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18541:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18370:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18384:4:111",
                            "type": ""
                          }
                        ],
                        "src": "18219:354:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18699:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18716:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18727:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18709:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18709:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18709:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18739:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18764:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18776:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18787:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18772:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18772:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "18747:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18747:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18739:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18668:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18679:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18690:4:111",
                            "type": ""
                          }
                        ],
                        "src": "18578:219:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_contract$_Resolver_$13920_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_string_memory_ptr_t_address_t_address_t_address__to_t_string_memory_ptr_t_address_t_address_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 128)\n        tail := abi_encode_bytes(value0, add(headStart, 128))\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n    }\n    function abi_encode_bytes4(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), value1)\n        calldatacopy(add(headStart, 96), value0, value1)\n        mstore(add(add(headStart, value1), 96), 0)\n        let _1 := add(headStart, and(add(value1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        mstore(add(headStart, 0x20), add(sub(_1, headStart), 96))\n        tail := abi_encode_bytes(value2, add(_1, 96))\n    }\n    function validator_revert_address_payable(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_payablet_bytes4t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address_payable(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bytes4(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(offset, 0x20), add(array_1, 0x20), _1)\n        array := array_1\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n        let value := mload(add(headStart, 32))\n        validator_revert_address_payable(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_bytes(value1, tail_1)\n    }\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address_payable(value)\n        value0 := value\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes4(array) -> value\n    {\n        let length := mload(array)\n        let _1 := mload(add(array, 0x20))\n        let _2 := 0xffffffff00000000000000000000000000000000000000000000000000000000\n        value := and(_1, _2)\n        if lt(length, 4)\n        {\n            value := and(and(_1, shl(shl(3, sub(4, length)), _2)), _2)\n        }\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_decode_bytes4_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_bytes4(value)\n    }\n    function abi_decode_tuple_t_address_payablet_array$_t_string_memory_ptr_$dyn_memory_ptrt_bytes_memory_ptrt_bytes4t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address_payable(value)\n        value0 := value\n        let _1 := 32\n        let offset := mload(add(headStart, _1))\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let dst := allocate_memory(add(_5, _1))\n        let dst_1 := dst\n        mstore(dst, _4)\n        dst := add(dst, _1)\n        let srcEnd := add(add(_3, _5), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            let innerOffset := mload(src)\n            if gt(innerOffset, _2)\n            {\n                let _6 := 0\n                revert(_6, _6)\n            }\n            mstore(dst, abi_decode_bytes_fromMemory(add(add(_3, innerOffset), _1), dataEnd))\n            dst := add(dst, _1)\n        }\n        value1 := dst_1\n        let offset_1 := mload(add(headStart, 64))\n        if gt(offset_1, _2) { revert(0, 0) }\n        value2 := abi_decode_bytes_fromMemory(add(headStart, offset_1), dataEnd)\n        value3 := abi_decode_bytes4_fromMemory(add(headStart, 96))\n        let offset_2 := mload(add(headStart, 128))\n        if gt(offset_2, _2) { revert(0, 0) }\n        value4 := abi_decode_bytes_fromMemory(add(headStart, offset_2), dataEnd)\n    }\n    function abi_encode_tuple_t_address_t_bytes4_t_bytes_memory_ptr__to_t_address_t_bytes4_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n        mstore(add(headStart, 64), 96)\n        tail := abi_encode_bytes(value2, add(headStart, 96))\n    }\n    function abi_encode_tuple_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__to_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 160)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        let _1 := 32\n        mstore(add(headStart, _1), 160)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        pos := add(headStart, 192)\n        let tail_2 := add(add(headStart, shl(5, length)), 192)\n        let srcPtr := add(value1, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        mstore(add(headStart, 64), sub(tail_2, headStart))\n        let tail_3 := abi_encode_bytes(value2, tail_2)\n        abi_encode_bytes4(value3, add(headStart, 96))\n        mstore(add(headStart, 128), sub(tail_3, headStart))\n        tail := abi_encode_bytes(value4, tail_3)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address_payable(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"namehash: Junk at end of name\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0ac203751bc6c539988299c5b94d9ac70ecc8c84eb3b7e4104b8b4017125eb31__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"LowLevelCallUtils: static call t\")\n        mstore(add(headStart, 96), \"o non-contract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"Address: static call to non-cont\")\n        mstore(add(headStart, 96), \"ract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"readLabel: Index out of bounds\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "16168": [
                  {
                    "length": 32,
                    "start": 164
                  },
                  {
                    "length": 32,
                    "start": 2618
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100725760003560e01c8063a1cbcbaf11610050578063a1cbcbaf1461010c578063b4a858011461014b578063ec11c8231461016b57600080fd5b806301ffc9a7146100775780637b1039991461009f5780639061b923146100eb575b600080fd5b61008a610085366004611247565b61018e565b60405190151581526020015b60405180910390f35b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100fe6100f9366004611384565b610227565b60405161009692919061143d565b61011f61011a366004611475565b6103fc565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610096565b61015e6101593660046114b7565b61041d565b6040516100969190611523565b61017e610179366004611475565b6104e9565b6040516100969493929190611536565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f9061b92300000000000000000000000000000000000000000000000000000000148061022157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008061023686866103fc565b50905073ffffffffffffffffffffffffffffffffffffffff811661026e575050604080516020810190915260008082529091506103f4565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f9061b92300000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa925050508015610314575060408051601f3d908101601f191682019092526103119181019061157f565b60015b156103c45780156103c2576103b682888888604051602401610338939291906115a1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9061b923000000000000000000000000000000000000000000000000000000001790527fb4a85801000000000000000000000000000000000000000000000000000000006107a1565b829350935050506103f4565b505b6103ef81857fb4a85801000000000000000000000000000000000000000000000000000000006107a1565b925090505b935093915050565b60008060008061040e86866000610927565b909450925050505b9250929050565b60606000808061042f85870187611601565b9250925092506104ca8289898460405160240161044e939291906115a1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915273ffffffffffffffffffffffffffffffffffffffff851690610ae4565b8060200190518101906104dd91906116a6565b98975050505050505050565b606060008060008060003073ffffffffffffffffffffffffffffffffffffffff16639061b923898961055560008d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b099050565b60405160240161056791815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f691f343100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526105f8939291906004016115a1565b600060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261063d91908101906116db565b9150915060008280602001905181019061065791906116a6565b905060008061066583610be2565b915091506000803073ffffffffffffffffffffffffffffffffffffffff16639061b923858560405160240161069c91815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3b3b57de00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815261072c92919060040161172d565b600060405180830381865afa158015610749573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077191908101906116db565b9150915060008280602001905181019061078b919061175b565b959e959d50959b50995092975050505050505050565b606060006107af8585610e8f565b90503d81156107cc576107c3600082610f48565b92505050610920565b600481106109155760006107e260006004610f48565b90507f556f18300000000000000000000000000000000000000000000000000000000061080e82611778565b7fffffffff00000000000000000000000000000000000000000000000000000000160361091357600061084b600461084681866117f7565b610f48565b9050600080600080600085806020019051810190610869919061181a565b945094509450945094508c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361090c573084848d8886866040516020016108bf9392919061194d565b60408051601f19818403018152908290527f556f183000000000000000000000000000000000000000000000000000000000825261090395949392916004016119a4565b60405180910390fd5b5050505050505b505b61091d610f9d565b50505b9392505050565b600080600085858581811061093e5761093e611a87565b919091013560f81c915050600081900361095f5750600091508190506103f4565b600061096b8286611ab6565b610976906001611ab6565b905060008787610987886001611ab6565b61099392859290611ac9565b6040516109a1929190611af3565b604051809103902090506000806109b98a8a86610927565b91509150600081846040516020016109db929190918252602082015260400190565b60408051601f198184030181529082905280516020909101207f0178b8bf00000000000000000000000000000000000000000000000000000000825260048201819052915060009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630178b8bf90602401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa5919061175b565b905073ffffffffffffffffffffffffffffffffffffffff811615610ad257975095506103f4945050505050565b50919a91995090975050505050505050565b60606109208383604051806060016040528060258152602001611b2060259139610fa7565b6000806000610b1885856110ce565b909250905081610ba45760018551610b3091906117f7565b8414610b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d650000006044820152606401610903565b50600091506102219050565b610bae8582610b09565b6040805160208101929092528101839052606001604051602081830303815290604052805190602001209250505092915050565b805160609060009081908490610bf9816002611ab6565b67ffffffffffffffff811115610c1157610c116112a6565b6040519080825280601f01601f191660200182016040528015610c3b576020820181803683370190505b50945060009350808403610c9857600060f81b85600081518110610c6157610c61611a87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81015b828181518110610cce57610cce611a87565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000003610da8578360f81b868260010181518110610d3457610d34611a87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535084610d75846001840160ff881661119f565b60408051602081019390935282015260600160405160208183030381529060405280519060200120945060009350610e10565b600184019350828181518110610dc057610dc0611a87565b602001015160f81c60f81b868260010181518110610de057610de0611a87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b8015610e3d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610cbc565b5083610e4e83600060ff871661119f565b6040805160208101939093528201526060016040516020818303038152906040528051906020012093508260f81b85600081518110610c6157610c61611a87565b600073ffffffffffffffffffffffffffffffffffffffff83163b610f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c6f774c6576656c43616c6c5574696c733a207374617469632063616c6c207460448201527f6f206e6f6e2d636f6e74726163740000000000000000000000000000000000006064820152608401610903565b600080835160208501865afa9392505050565b60608167ffffffffffffffff811115610f6357610f636112a6565b6040519080825280601f01601f191660200182016040528015610f8d576020820181803683370190505b5090508183602083013e92915050565b3d6000803e3d6000fd5b606073ffffffffffffffffffffffffffffffffffffffff84163b61104c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7460448201527f72616374000000000000000000000000000000000000000000000000000000006064820152608401610903565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516110749190611b03565b600060405180830381855afa9150503d80600081146110af576040519150601f19603f3d011682016040523d82523d6000602084013e6110b4565b606091505b50915091506110c48282866111c3565b9695505050505050565b6000808351831061113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e647300006044820152606401610903565b600084848151811061114f5761114f611a87565b016020015160f81c9050801561117b576111748561116e866001611ab6565b8361119f565b9250611180565b600092505b61118a8185611ab6565b611195906001611ab6565b9150509250929050565b82516000906111ae8385611ab6565b11156111b957600080fd5b5091016020012090565b606083156111d2575081610920565b8251156111e25782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109039190611523565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461124457600080fd5b50565b60006020828403121561125957600080fd5b813561092081611216565b60008083601f84011261127657600080fd5b50813567ffffffffffffffff81111561128e57600080fd5b60208301915083602082850101111561041657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112fe576112fe6112a6565b604052919050565b600067ffffffffffffffff821115611320576113206112a6565b50601f01601f191660200190565b600082601f83011261133f57600080fd5b813561135261134d82611306565b6112d5565b81815284602083860101111561136757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006040848603121561139957600080fd5b833567ffffffffffffffff808211156113b157600080fd5b6113bd87838801611264565b909550935060208601359150808211156113d657600080fd5b506113e38682870161132e565b9150509250925092565b60005b838110156114085781810151838201526020016113f0565b50506000910152565b600081518084526114298160208601602086016113ed565b601f01601f19169290920160200192915050565b6040815260006114506040830185611411565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6000806020838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b6114ab85828601611264565b90969095509350505050565b600080600080604085870312156114cd57600080fd5b843567ffffffffffffffff808211156114e557600080fd5b6114f188838901611264565b9096509450602087013591508082111561150a57600080fd5b5061151787828801611264565b95989497509550505050565b6020815260006109206020830184611411565b6080815260006115496080830187611411565b73ffffffffffffffffffffffffffffffffffffffff95861660208401529385166040830152509216606090920191909152919050565b60006020828403121561159157600080fd5b8151801515811461092057600080fd5b60408152826040820152828460608301376000606084830101526000601f19601f850116820160608382030160208401526110c46060820185611411565b73ffffffffffffffffffffffffffffffffffffffff8116811461124457600080fd5b60008060006060848603121561161657600080fd5b8335611621816115df565b9250602084013561163181611216565b9150604084013567ffffffffffffffff81111561164d57600080fd5b6113e38682870161132e565b600082601f83011261166a57600080fd5b815161167861134d82611306565b81815284602083860101111561168d57600080fd5b61169e8260208301602087016113ed565b949350505050565b6000602082840312156116b857600080fd5b815167ffffffffffffffff8111156116cf57600080fd5b61169e84828501611659565b600080604083850312156116ee57600080fd5b825167ffffffffffffffff81111561170557600080fd5b61171185828601611659565b9250506020830151611722816115df565b809150509250929050565b6040815260006117406040830185611411565b82810360208401526117528185611411565b95945050505050565b60006020828403121561176d57600080fd5b8151610920816115df565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156117c05780818460040360031b1b83161693505b505050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610221576102216117c8565b805161181581611216565b919050565b600080600080600060a0868803121561183257600080fd5b855161183d816115df565b8095505060208087015167ffffffffffffffff8082111561185d57600080fd5b818901915089601f83011261187157600080fd5b815181811115611883576118836112a6565b8060051b6118928582016112d5565b918252838101850191858101908d8411156118ac57600080fd5b86860192505b838310156118e8578251858111156118ca5760008081fd5b6118d88f89838a0101611659565b83525091860191908601906118b2565b60408d0151909a5095505050508083111561190257600080fd5b61190e8a848b01611659565b955061191c60608a0161180a565b9450608089015192508083111561193257600080fd5b505061194088828901611659565b9150509295509295909350565b73ffffffffffffffffffffffffffffffffffffffff841681527fffffffff00000000000000000000000000000000000000000000000000000000831660208201526060604082015260006117526060830184611411565b600060a0820173ffffffffffffffffffffffffffffffffffffffff88168352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b82811015611a34577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40888703018452611a22868351611411565b955092840192908401906001016119e8565b50505050508281036040840152611a4b8187611411565b7fffffffff0000000000000000000000000000000000000000000000000000000086166060850152905082810360808401526104dd8185611411565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610221576102216117c8565b60008085851115611ad957600080fd5b83861115611ae657600080fd5b5050820193919092039150565b8183823760009101908152919050565b60008251611b158184602087016113ed565b919091019291505056fe416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a2646970667358221220f0118c9c742460e490b8a97ba3fd9ef419d3f09fa81536be717ea48be011ed3a64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA1CBCBAF GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA1CBCBAF EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xB4A85801 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0xEC11C823 EQ PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x9061B923 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x1247 JUMP JUMPDEST PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC6 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1384 JUMP JUMPDEST PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x11F PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0x1475 JUMP JUMPDEST PUSH2 0x3FC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x15E PUSH2 0x159 CALLDATASIZE PUSH1 0x4 PUSH2 0x14B7 JUMP JUMPDEST PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x1523 JUMP JUMPDEST PUSH2 0x17E PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0x1475 JUMP JUMPDEST PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1536 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x9061B92300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x221 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x236 DUP7 DUP7 PUSH2 0x3FC JUMP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x26E JUMPI POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE SWAP1 SWAP2 POP PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x9061B92300000000000000000000000000000000000000000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x1FFC9A7 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x314 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x311 SWAP2 DUP2 ADD SWAP1 PUSH2 0x157F JUMP JUMPDEST PUSH1 0x1 JUMPDEST ISZERO PUSH2 0x3C4 JUMPI DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH2 0x3B6 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x338 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x15A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9061B92300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH32 0xB4A8580100000000000000000000000000000000000000000000000000000000 PUSH2 0x7A1 JUMP JUMPDEST DUP3 SWAP4 POP SWAP4 POP POP POP PUSH2 0x3F4 JUMP JUMPDEST POP JUMPDEST PUSH2 0x3EF DUP2 DUP6 PUSH32 0xB4A8580100000000000000000000000000000000000000000000000000000000 PUSH2 0x7A1 JUMP JUMPDEST SWAP3 POP SWAP1 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x40E DUP7 DUP7 PUSH1 0x0 PUSH2 0x927 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP1 PUSH2 0x42F DUP6 DUP8 ADD DUP8 PUSH2 0x1601 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x4CA DUP3 DUP10 DUP10 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x44E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x15A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH2 0xAE4 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DD SWAP2 SWAP1 PUSH2 0x16A6 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9061B923 DUP10 DUP10 PUSH2 0x555 PUSH1 0x0 DUP14 DUP14 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0xB09 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x567 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x691F343100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x5F8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x15A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x615 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x63D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16DB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x657 SWAP2 SWAP1 PUSH2 0x16A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x665 DUP4 PUSH2 0xBE2 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9061B923 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x69C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3B3B57DE00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x72C SWAP3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x172D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x771 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16DB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x78B SWAP2 SWAP1 PUSH2 0x175B JUMP JUMPDEST SWAP6 SWAP15 SWAP6 SWAP14 POP SWAP6 SWAP12 POP SWAP10 POP SWAP3 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x7AF DUP6 DUP6 PUSH2 0xE8F JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP2 ISZERO PUSH2 0x7CC JUMPI PUSH2 0x7C3 PUSH1 0x0 DUP3 PUSH2 0xF48 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x920 JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x915 JUMPI PUSH1 0x0 PUSH2 0x7E2 PUSH1 0x0 PUSH1 0x4 PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH32 0x556F183000000000000000000000000000000000000000000000000000000000 PUSH2 0x80E DUP3 PUSH2 0x1778 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SUB PUSH2 0x913 JUMPI PUSH1 0x0 PUSH2 0x84B PUSH1 0x4 PUSH2 0x846 DUP2 DUP7 PUSH2 0x17F7 JUMP JUMPDEST PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x869 SWAP2 SWAP1 PUSH2 0x181A JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x90C JUMPI ADDRESS DUP5 DUP5 DUP14 DUP9 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8BF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x194D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH32 0x556F183000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH2 0x903 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0x19A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP JUMPDEST PUSH2 0x91D PUSH2 0xF9D JUMP JUMPDEST POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x93E JUMPI PUSH2 0x93E PUSH2 0x1A87 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP2 POP POP PUSH1 0x0 DUP2 SWAP1 SUB PUSH2 0x95F JUMPI POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x96B DUP3 DUP7 PUSH2 0x1AB6 JUMP JUMPDEST PUSH2 0x976 SWAP1 PUSH1 0x1 PUSH2 0x1AB6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 DUP8 PUSH2 0x987 DUP9 PUSH1 0x1 PUSH2 0x1AB6 JUMP JUMPDEST PUSH2 0x993 SWAP3 DUP6 SWAP3 SWAP1 PUSH2 0x1AC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9A1 SWAP3 SWAP2 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x9B9 DUP11 DUP11 DUP7 PUSH2 0x927 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x9DB SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0x178B8BF00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x178B8BF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAA5 SWAP2 SWAP1 PUSH2 0x175B JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0xAD2 JUMPI SWAP8 POP SWAP6 POP PUSH2 0x3F4 SWAP5 POP POP POP POP POP JUMP JUMPDEST POP SWAP2 SWAP11 SWAP2 SWAP10 POP SWAP1 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x920 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B20 PUSH1 0x25 SWAP2 CODECOPY PUSH2 0xFA7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB18 DUP6 DUP6 PUSH2 0x10CE JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0xBA4 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0xB30 SWAP2 SWAP1 PUSH2 0x17F7 JUMP JUMPDEST DUP5 EQ PUSH2 0xB98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D65686173683A204A756E6B20617420656E64206F66206E616D65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x903 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x221 SWAP1 POP JUMP JUMPDEST PUSH2 0xBAE DUP6 DUP3 PUSH2 0xB09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 SWAP1 PUSH2 0xBF9 DUP2 PUSH1 0x2 PUSH2 0x1AB6 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC11 JUMPI PUSH2 0xC11 PUSH2 0x12A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC3B JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP5 POP PUSH1 0x0 SWAP4 POP DUP1 DUP5 SUB PUSH2 0xC98 JUMPI PUSH1 0x0 PUSH1 0xF8 SHL DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC61 JUMPI PUSH2 0xC61 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD JUMPDEST DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xCCE JUMPI PUSH2 0xCCE PUSH2 0x1A87 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0x2E00000000000000000000000000000000000000000000000000000000000000 SUB PUSH2 0xDA8 JUMPI DUP4 PUSH1 0xF8 SHL DUP7 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0xD34 JUMPI PUSH2 0xD34 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP5 PUSH2 0xD75 DUP5 PUSH1 0x1 DUP5 ADD PUSH1 0xFF DUP9 AND PUSH2 0x119F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP5 POP PUSH1 0x0 SWAP4 POP PUSH2 0xE10 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xDC0 JUMPI PUSH2 0xDC0 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP7 DUP3 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0xDE0 JUMPI PUSH2 0xDE0 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP JUMPDEST DUP1 ISZERO PUSH2 0xE3D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0xCBC JUMP JUMPDEST POP DUP4 PUSH2 0xE4E DUP4 PUSH1 0x0 PUSH1 0xFF DUP8 AND PUSH2 0x119F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP DUP3 PUSH1 0xF8 SHL DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC61 JUMPI PUSH2 0xC61 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE PUSH2 0xF35 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6F774C6576656C43616C6C5574696C733A207374617469632063616C6C2074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F206E6F6E2D636F6E7472616374000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS STATICCALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF63 JUMPI PUSH2 0xF63 PUSH2 0x12A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF8D JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP4 PUSH1 0x20 DUP4 ADD RETURNDATACOPY SWAP3 SWAP2 POP POP JUMP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE PUSH2 0x104C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x416464726573733A207374617469632063616C6C20746F206E6F6E2D636F6E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7261637400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1074 SWAP2 SWAP1 PUSH2 0x1B03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x10AF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x10B4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x10C4 DUP3 DUP3 DUP7 PUSH2 0x11C3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD DUP4 LT PUSH2 0x113B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726561644C6162656C3A20496E646578206F7574206F6620626F756E64730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x114F JUMPI PUSH2 0x114F PUSH2 0x1A87 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP DUP1 ISZERO PUSH2 0x117B JUMPI PUSH2 0x1174 DUP6 PUSH2 0x116E DUP7 PUSH1 0x1 PUSH2 0x1AB6 JUMP JUMPDEST DUP4 PUSH2 0x119F JUMP JUMPDEST SWAP3 POP PUSH2 0x1180 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST PUSH2 0x118A DUP2 DUP6 PUSH2 0x1AB6 JUMP JUMPDEST PUSH2 0x1195 SWAP1 PUSH1 0x1 PUSH2 0x1AB6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x11AE DUP4 DUP6 PUSH2 0x1AB6 JUMP JUMPDEST GT ISZERO PUSH2 0x11B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x11D2 JUMPI POP DUP2 PUSH2 0x920 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x11E2 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x903 SWAP2 SWAP1 PUSH2 0x1523 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x1244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x920 DUP2 PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x128E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x12FE JUMPI PUSH2 0x12FE PUSH2 0x12A6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1320 JUMPI PUSH2 0x1320 PUSH2 0x12A6 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x133F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1352 PUSH2 0x134D DUP3 PUSH2 0x1306 JUMP JUMPDEST PUSH2 0x12D5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13BD DUP8 DUP4 DUP9 ADD PUSH2 0x1264 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x13D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13E3 DUP7 DUP3 DUP8 ADD PUSH2 0x132E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1408 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13F0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1429 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x13ED JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1450 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1411 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x149F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14AB DUP6 DUP3 DUP7 ADD PUSH2 0x1264 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x14CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x14E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F1 DUP9 DUP4 DUP10 ADD PUSH2 0x1264 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x150A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1517 DUP8 DUP3 DUP9 ADD PUSH2 0x1264 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x920 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1411 JUMP JUMPDEST PUSH1 0x80 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1549 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x1411 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 AND PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP5 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x60 DUP5 DUP4 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP3 ADD PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x10C4 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x1411 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1621 DUP2 PUSH2 0x15DF JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1631 DUP2 PUSH2 0x1216 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x164D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13E3 DUP7 DUP3 DUP8 ADD PUSH2 0x132E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x166A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1678 PUSH2 0x134D DUP3 PUSH2 0x1306 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x168D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x169E DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x13ED JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x169E DUP5 DUP3 DUP6 ADD PUSH2 0x1659 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1711 DUP6 DUP3 DUP7 ADD PUSH2 0x1659 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1722 DUP2 PUSH2 0x15DF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1740 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1411 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1752 DUP2 DUP6 PUSH2 0x1411 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x920 DUP2 PUSH2 0x15DF JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 AND SWAP4 POP PUSH1 0x4 DUP4 LT ISZERO PUSH2 0x17C0 JUMPI DUP1 DUP2 DUP5 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP4 POP JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x221 JUMPI PUSH2 0x221 PUSH2 0x17C8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1815 DUP2 PUSH2 0x1216 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x183D DUP2 PUSH2 0x15DF JUMP JUMPDEST DUP1 SWAP6 POP POP PUSH1 0x20 DUP1 DUP8 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1883 JUMPI PUSH2 0x1883 PUSH2 0x12A6 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x1892 DUP6 DUP3 ADD PUSH2 0x12D5 JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP6 DUP2 ADD SWAP1 DUP14 DUP5 GT ISZERO PUSH2 0x18AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x18E8 JUMPI DUP3 MLOAD DUP6 DUP2 GT ISZERO PUSH2 0x18CA JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18D8 DUP16 DUP10 DUP4 DUP11 ADD ADD PUSH2 0x1659 JUMP JUMPDEST DUP4 MSTORE POP SWAP2 DUP7 ADD SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x40 DUP14 ADD MLOAD SWAP1 SWAP11 POP SWAP6 POP POP POP POP DUP1 DUP4 GT ISZERO PUSH2 0x1902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x190E DUP11 DUP5 DUP12 ADD PUSH2 0x1659 JUMP JUMPDEST SWAP6 POP PUSH2 0x191C PUSH1 0x60 DUP11 ADD PUSH2 0x180A JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD MLOAD SWAP3 POP DUP1 DUP4 GT ISZERO PUSH2 0x1932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH2 0x1940 DUP9 DUP3 DUP10 ADD PUSH2 0x1659 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1752 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1411 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP4 MSTORE PUSH1 0x20 PUSH1 0xA0 DUP2 DUP6 ADD MSTORE DUP2 DUP9 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP11 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1A34 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 DUP9 DUP8 SUB ADD DUP5 MSTORE PUSH2 0x1A22 DUP7 DUP4 MLOAD PUSH2 0x1411 JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x19E8 JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x1A4B DUP2 DUP8 PUSH2 0x1411 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP7 AND PUSH1 0x60 DUP6 ADD MSTORE SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x4DD DUP2 DUP6 PUSH2 0x1411 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x221 JUMPI PUSH2 0x221 PUSH2 0x17C8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x1AD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x1AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1B15 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x13ED JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2073746174 PUSH10 0x632063616C6C20666169 PUSH13 0x6564A2646970667358221220F0 GT DUP13 SWAP13 PUSH21 0x2460E490B8A97BA3FD9EF419D3F09FA81536BE717E LOG4 DUP12 0xE0 GT 0xED GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "900:7917:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3929:273;;;;;;:::i;:::-;;:::i;:::-;;;611:14:111;;604:22;586:41;;574:2;559:18;3929:273:94;;;;;;;;1060:29;;;;;;;;827:42:111;815:55;;;797:74;;785:2;770:18;1060:29:94;638:239:111;1466:1074:94;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7798:237::-;;;;;;:::i;:::-;;:::i;:::-;;;;4679:42:111;4667:55;;;4649:74;;4754:2;4739:18;;4732:34;;;;4622:18;7798:237:94;4457:315:111;6788:655:94;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2904:1019::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;3929:273::-;4054:4;4093:50;;;4108:35;4093:50;;:102;;-1:-1:-1;952:25:16;937:40;;;;4159:36:94;4074:121;3929:273;-1:-1:-1;;3929:273:94:o;1466:1074::-;1587:12;1601:7;1625:17;1648:18;1661:4;;1648:12;:18::i;:::-;-1:-1:-1;1624:42:94;-1:-1:-1;1680:31:94;;;1676:85;;-1:-1:-1;;1727:23:94;;;;;;;;;1747:1;1727:23;;;;;-1:-1:-1;1727:23:94;;1676:85;1787:63;;;;;1814:35;1787:63;;;6547:98:111;1787:26:94;;;;;;6520:18:111;;1787:63:94;;;;;;;;;;;;;;;;;;-1:-1:-1;1787:63:94;;;;;;;;-1:-1:-1;;1787:63:94;;;;;;;;;;;;:::i;:::-;;;1771:527;;;1902:9;1898:381;;;1960:247;2027:8;2105:4;;2111;2062:55;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2062:55:94;;;;;;;;;;;;;;;;;;;;2143:42;1960:33;:247::i;:::-;2237:8;1931:333;;;;;;;;1898:381;1859:430;1771:527;2328:164;2387:8;2414:4;2436:42;2328:33;:164::i;:::-;2307:226;-1:-1:-1;2514:8:94;-1:-1:-1;1466:1074:94;;;;;;;:::o;7798:237::-;7886:8;7896:7;7920:16;7938:17;7959:21;7972:4;;7978:1;7959:12;:21::i;:::-;7919:61;;-1:-1:-1;7919:61:94;-1:-1:-1;;;7798:237:94;;;;;;:::o;6788:655::-;6911:12;6953:14;;;7063:47;;;;7074:9;7063:47;:::i;:::-;6939:171;;;;;;7167:230;7262:21;7309:8;;7343:14;7214:165;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7214:165:94;;;;;;;;;;;;;;;;;;;;;;;;;;;7167:25;;;;;:230::i;:::-;7139:297;;;;;;;;;;;;:::i;:::-;7120:316;6788:655;-1:-1:-1;;;;;;;;6788:655:94:o;2904:1019::-;3009:13;3036:7;3057;3078;3124:32;3170:30;3213:4;:12;;;3243:11;;3307:23;3328:1;3307:11;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3307:20:94;;:23;-1:-1:-1;;3307:20:94;:23;-1:-1:-1;3307:23:94:i;:::-;3272:59;;;;;;9263:25:111;;9251:2;9236:18;;9117:177;3272:59:94;;;;-1:-1:-1;;3272:59:94;;;;;;;;;;;;;;;;;;;;3213:132;;3272:59;3213:132;;;;;;;;;;3272:59;3213:132;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3213:132:94;;;;;;;;;;;;:::i;:::-;3110:235;;;;3356:26;3396:19;3385:41;;;;;;;;;;;;:::i;:::-;3356:70;;3438:24;3464:16;3484:41;:12;:39;:41::i;:::-;3437:88;;;;3537:25;3564:23;3591:4;:12;;;3617:11;3677:8;3642:44;;;;;;9263:25:111;;9251:2;9236:18;;9117:177;3642:44:94;;;;-1:-1:-1;;3642:44:94;;;;;;;;;;;;;;;;;;;;3591:105;;3642:44;3591:105;;;;;;;;;3642:44;3591:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3591:105:94;;;;;;;;;;;;:::i;:::-;3536:160;;;;3707:23;3744:12;3733:35;;;;;;;;;;;;:::i;:::-;3800:12;;;;-1:-1:-1;3855:22:94;;-1:-1:-1;3855:22:94;-1:-1:-1;2904:1019:94;;-1:-1:-1;;;;;;;;2904:1019:94:o;4853:1639::-;5009:16;5037:11;5051:50;5088:6;5096:4;5051:36;:50::i;:::-;5037:64;-1:-1:-1;1218:16:91;5171:85:94;;;;5204:41;5237:1;5240:4;5204:32;:41::i;:::-;5197:48;;;;;;5171:85;5297:1;5289:4;:9;5285:1155;;5314:20;5337:38;5370:1;5373;5337:32;:38::i;:::-;5314:61;-1:-1:-1;5412:23:94;5393:15;5314:61;5393:15;:::i;:::-;:42;;;5389:1041;;5551:23;5577:103;5631:1;5654:8;5631:1;5654:4;:8;:::i;:::-;5577:32;:103::i;:::-;5551:129;;5720:14;5756:20;5798:21;5841:28;5891:22;5970:10;5934:135;;;;;;;;;;;;:::i;:::-;5698:371;;;;;;;;;;6101:6;6091:16;;:6;:16;;;6087:329;;6186:4;6217;6247:8;6281:16;6334:6;6342:21;6365:9;6323:52;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6323:52:94;;;;;;;;;;6138:259;;;;;;;;;;;;:::i;:::-;;;;;;;;6087:329;5437:993;;;;;;5389:1041;5300:1140;5285:1155;6450:35;:33;:35::i;:::-;5027:1465;;4853:1639;;;;;;:::o;8041:774::-;8147:7;8156;8179:19;8215:4;;8220:6;8215:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;8258:1:94;8243:16;;;8239:78;;-1:-1:-1;8291:1:94;;-1:-1:-1;8291:1:94;;-1:-1:-1;8275:31:94;;8239:78;8326:17;8346:20;8355:11;8346:6;:20;:::i;:::-;:24;;8369:1;8346:24;:::i;:::-;8326:44;-1:-1:-1;8380:17:94;8410:4;;8415:10;:6;8424:1;8415:10;:::i;:::-;8410:26;;8426:9;;8410:26;;:::i;:::-;8400:37;;;;;;;:::i;:::-;;;;;;;;8380:57;;8448:22;8472:18;8494:63;8520:4;;8538:9;8494:12;:63::i;:::-;8447:110;;;;8567:12;8609:10;8621:9;8592:39;;;;;;;;16390:19:111;;;16434:2;16425:12;;16418:28;16471:2;16462:12;;16233:247;8592:39:94;;;;-1:-1:-1;;8592:39:94;;;;;;;;;;8582:50;;8592:39;8582:50;;;;8661:23;;;;;;9263:25:111;;;8582:50:94;-1:-1:-1;8642:16:94;;8661:17;:8;:17;;;;9236:18:111;;8661:23:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8642:42;-1:-1:-1;8698:22:94;;;;8694:76;;8744:8;-1:-1:-1;8754:4:94;-1:-1:-1;8736:23:94;;-1:-1:-1;;;;;8736:23:94;8694:76;-1:-1:-1;8787:14:94;;;;-1:-1:-1;8041:774:94;;-1:-1:-1;;;;;;;;8041:774:94:o;5624:197:13:-;5710:12;5741:73;5760:6;5768:4;5741:73;;;;;;;;;;;;;;;;;:18;:73::i;848:449:95:-;948:7;972:17;991;1012:23;1022:4;1028:6;1012:9;:23::i;:::-;971:64;;-1:-1:-1;971:64:95;-1:-1:-1;971:64:95;1045:152;;1120:1;1106:4;:11;:15;;;;:::i;:::-;1096:6;:25;1088:67;;;;;;;16951:2:111;1088:67:95;;;16933:21:111;16990:2;16970:18;;;16963:30;17029:31;17009:18;;;17002:59;17078:18;;1088:67:95;16749:353:111;1088:67:95;-1:-1:-1;1184:1:95;;-1:-1:-1;1169:17:95;;-1:-1:-1;1169:17:95;1045:152;1252:25;1261:4;1267:9;1252:8;:25::i;:::-;1235:54;;;;;;16390:19:111;;;;16425:12;;16418:28;;;16462:12;;1235:54:95;;;;;;;;;;;;1225:65;;;;;;1206:84;;;;848:449;;;;:::o;172:1397:92:-;406:16;;262:20;;284:12;;;;374:4;;452:10;406:16;461:1;452:10;:::i;:::-;442:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;442:21:92;-1:-1:-1;432:31:92;-1:-1:-1;480:1:92;;-1:-1:-1;495:11:92;;;491:92;;535:1;522:14;;:7;530:1;522:10;;;;;;;;:::i;:::-;;;;:14;;;;;;;;;;;550:22;;;172:1397;;;:::o;491:92::-;758:10;;;741:630;805:9;815:1;805:12;;;;;;;;:::i;:::-;;;;;;;:19;;801:481;;872:11;865:19;;848:7;856:1;860;856:5;848:14;;;;;;;;:::i;:::-;;;;:36;;;;;;;;;;-1:-1:-1;994:4:92;1028:36;:9;1049:1;1045:5;;1028:36;;;:16;:36::i;:::-;948:142;;;;;;16390:19:111;;;;16425:12;;16418:28;16462:12;;948:142:92;;;;;;;;;;;;913:199;;;;;;906:206;;1148:1;1134:15;;801:481;;;1211:1;1196:16;;;;1251:9;1261:1;1251:12;;;;;;;;:::i;:::-;;;;;;;;;1234:7;1242:1;1246;1242:5;1234:14;;;;;;;;:::i;:::-;;;;:29;;;;;;;;;;;801:481;1299:58;;1333:5;1299:58;778:3;;741:630;;;-1:-1:-1;1438:4:92;1444:32;:9;1461:1;1444:32;;;:16;:32::i;:::-;1421:56;;;;;;16390:19:111;;;;16425:12;;16418:28;16462:12;;1421:56:92;;;;;;;;;;;;1398:89;;;;;;1391:96;;1518:11;1511:19;;1498:7;1506:1;1498:10;;;;;;;;:::i;533:479:91:-;643:12;692:17;;;1465:19:13;671:112:91;;;;;;;17309:2:111;671:112:91;;;17291:21:111;17348:2;17328:18;;;17321:30;17387:34;17367:18;;;17360:62;17458:16;17438:18;;;17431:44;17492:19;;671:112:91;17107:410:111;671:112:91;981:1;962;939:4;933:11;912:2;906:4;902:13;878:6;855:5;827:169;816:180;533:479;-1:-1:-1;;;533:479:91:o;1436:254::-;1539:17;1589:6;1579:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1579:17:91;;1572:24;;1667:6;1659;1654:2;1648:4;1644:13;1629:45;1436:254;;;;:::o;1789:168::-;1884:16;1881:1;;1863:38;1924:16;1881:1;1914:27;6005:386:13;6149:12;1465:19;;;;6173:67;;;;;;;17724:2:111;6173:67:13;;;17706:21:111;17763:2;17743:18;;;17736:30;17802:34;17782:18;;;17775:62;17873:6;17853:18;;;17846:34;17897:19;;6173:67:13;17522:400:111;6173:67:13;6252:12;6266:23;6293:6;:17;;6311:4;6293:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6251:65;;;;6333:51;6350:7;6359:10;6371:12;6333:16;:51::i;:::-;6326:58;6005:386;-1:-1:-1;;;;;;6005:386:13:o;1700:433:95:-;1798:17;1817:14;1861:4;:11;1855:3;:17;1847:60;;;;;;;18421:2:111;1847:60:95;;;18403:21:111;18460:2;18440:18;;;18433:30;18499:32;18479:18;;;18472:60;18549:18;;1847:60:95;18219:354:111;1847:60:95;1917:11;1945:4;1950:3;1945:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1970:7:95;;1966:129;;2005:26;2012:4;2018:7;:3;2024:1;2018:7;:::i;:::-;2027:3;2005:6;:26::i;:::-;1993:38;;1966:129;;;2082:1;;-1:-1:-1;1966:129:95;2113:9;2119:3;2113;:9;:::i;:::-;:13;;2125:1;2113:13;:::i;:::-;2104:22;;1837:296;1700:433;;;;;:::o;343:274::-;507:11;;460;;491:12;500:3;491:6;:12;:::i;:::-;:27;;483:36;;;;;;-1:-1:-1;569:26:95;;583:2;569:26;559:42;;343:274::o;7561:692:13:-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:13;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;;;;;;;;;;:::i;14:177:111:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;68:117;14:177;:::o;196:245::-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;882:347::-;933:8;943:6;997:3;990:4;982:6;978:17;974:27;964:55;;1015:1;1012;1005:12;964:55;-1:-1:-1;1038:20:111;;1081:18;1070:30;;1067:50;;;1113:1;1110;1103:12;1067:50;1150:4;1142:6;1138:17;1126:29;;1202:3;1195:4;1186:6;1178;1174:19;1170:30;1167:39;1164:59;;;1219:1;1216;1209:12;1234:184;1286:77;1283:1;1276:88;1383:4;1380:1;1373:15;1407:4;1404:1;1397:15;1423:334;1494:2;1488:9;1550:2;1540:13;;-1:-1:-1;;1536:86:111;1524:99;;1653:18;1638:34;;1674:22;;;1635:62;1632:88;;;1700:18;;:::i;:::-;1736:2;1729:22;1423:334;;-1:-1:-1;1423:334:111:o;1762:245::-;1810:4;1843:18;1835:6;1832:30;1829:56;;;1865:18;;:::i;:::-;-1:-1:-1;1922:2:111;1910:15;-1:-1:-1;;1906:88:111;1996:4;1902:99;;1762:245::o;2012:462::-;2054:5;2107:3;2100:4;2092:6;2088:17;2084:27;2074:55;;2125:1;2122;2115:12;2074:55;2161:6;2148:20;2192:48;2208:31;2236:2;2208:31;:::i;:::-;2192:48;:::i;:::-;2265:2;2256:7;2249:19;2311:3;2304:4;2299:2;2291:6;2287:15;2283:26;2280:35;2277:55;;;2328:1;2325;2318:12;2277:55;2393:2;2386:4;2378:6;2374:17;2367:4;2358:7;2354:18;2341:55;2441:1;2416:16;;;2434:4;2412:27;2405:38;;;;2420:7;2012:462;-1:-1:-1;;;2012:462:111:o;2479:628::-;2567:6;2575;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2692:9;2679:23;2721:18;2762:2;2754:6;2751:14;2748:34;;;2778:1;2775;2768:12;2748:34;2817:58;2867:7;2858:6;2847:9;2843:22;2817:58;:::i;:::-;2894:8;;-1:-1:-1;2791:84:111;-1:-1:-1;2982:2:111;2967:18;;2954:32;;-1:-1:-1;2998:16:111;;;2995:36;;;3027:1;3024;3017:12;2995:36;;3050:51;3093:7;3082:8;3071:9;3067:24;3050:51;:::i;:::-;3040:61;;;2479:628;;;;;:::o;3112:250::-;3197:1;3207:113;3221:6;3218:1;3215:13;3207:113;;;3297:11;;;3291:18;3278:11;;;3271:39;3243:2;3236:10;3207:113;;;-1:-1:-1;;3354:1:111;3336:16;;3329:27;3112:250::o;3367:329::-;3408:3;3446:5;3440:12;3473:6;3468:3;3461:19;3489:76;3558:6;3551:4;3546:3;3542:14;3535:4;3528:5;3524:16;3489:76;:::i;:::-;3610:2;3598:15;-1:-1:-1;;3594:88:111;3585:98;;;;3685:4;3581:109;;3367:329;-1:-1:-1;;3367:329:111:o;3701:337::-;3876:2;3865:9;3858:21;3839:4;3896:44;3936:2;3925:9;3921:18;3913:6;3896:44;:::i;:::-;3888:52;;3988:42;3980:6;3976:55;3971:2;3960:9;3956:18;3949:83;3701:337;;;;;:::o;4043:409::-;4113:6;4121;4174:2;4162:9;4153:7;4149:23;4145:32;4142:52;;;4190:1;4187;4180:12;4142:52;4230:9;4217:23;4263:18;4255:6;4252:30;4249:50;;;4295:1;4292;4285:12;4249:50;4334:58;4384:7;4375:6;4364:9;4360:22;4334:58;:::i;:::-;4411:8;;4308:84;;-1:-1:-1;4043:409:111;-1:-1:-1;;;;4043:409:111:o;4777:717::-;4867:6;4875;4883;4891;4944:2;4932:9;4923:7;4919:23;4915:32;4912:52;;;4960:1;4957;4950:12;4912:52;5000:9;4987:23;5029:18;5070:2;5062:6;5059:14;5056:34;;;5086:1;5083;5076:12;5056:34;5125:58;5175:7;5166:6;5155:9;5151:22;5125:58;:::i;:::-;5202:8;;-1:-1:-1;5099:84:111;-1:-1:-1;5290:2:111;5275:18;;5262:32;;-1:-1:-1;5306:16:111;;;5303:36;;;5335:1;5332;5325:12;5303:36;;5374:60;5426:7;5415:8;5404:9;5400:24;5374:60;:::i;:::-;4777:717;;;;-1:-1:-1;5453:8:111;-1:-1:-1;;;;4777:717:111:o;5499:217::-;5646:2;5635:9;5628:21;5609:4;5666:44;5706:2;5695:9;5691:18;5683:6;5666:44;:::i;5721:522::-;5954:3;5943:9;5936:22;5917:4;5975:45;6015:3;6004:9;6000:19;5992:6;5975:45;:::i;:::-;6039:42;6117:15;;;6112:2;6097:18;;6090:43;6169:15;;;6164:2;6149:18;;6142:43;-1:-1:-1;6221:15:111;;6216:2;6201:18;;;6194:43;;;;5967:53;5721:522;-1:-1:-1;5721:522:111:o;6656:277::-;6723:6;6776:2;6764:9;6755:7;6751:23;6747:32;6744:52;;;6792:1;6789;6782:12;6744:52;6824:9;6818:16;6877:5;6870:13;6863:21;6856:5;6853:32;6843:60;;6899:1;6896;6889:12;6938:606;7141:2;7130:9;7123:21;7180:6;7175:2;7164:9;7160:18;7153:34;7237:6;7229;7224:2;7213:9;7209:18;7196:48;7293:1;7288:2;7279:6;7268:9;7264:22;7260:31;7253:42;7104:4;-1:-1:-1;;7345:2:111;7337:6;7333:15;7329:88;7318:9;7314:104;7480:2;7468:9;7464:2;7460:18;7456:27;7449:4;7438:9;7434:20;7427:57;7501:37;7534:2;7530;7526:11;7518:6;7501:37;:::i;7549:162::-;7643:42;7636:5;7632:54;7625:5;7622:65;7612:93;;7701:1;7698;7691:12;7716:610;7809:6;7817;7825;7878:2;7866:9;7857:7;7853:23;7849:32;7846:52;;;7894:1;7891;7884:12;7846:52;7933:9;7920:23;7952:39;7985:5;7952:39;:::i;:::-;8010:5;-1:-1:-1;8067:2:111;8052:18;;8039:32;8080;8039;8080;:::i;:::-;8131:7;-1:-1:-1;8189:2:111;8174:18;;8161:32;8216:18;8205:30;;8202:50;;;8248:1;8245;8238:12;8202:50;8271:49;8312:7;8303:6;8292:9;8288:22;8271:49;:::i;8331:441::-;8384:5;8437:3;8430:4;8422:6;8418:17;8414:27;8404:55;;8455:1;8452;8445:12;8404:55;8484:6;8478:13;8515:48;8531:31;8559:2;8531:31;:::i;8515:48::-;8588:2;8579:7;8572:19;8634:3;8627:4;8622:2;8614:6;8610:15;8606:26;8603:35;8600:55;;;8651:1;8648;8641:12;8600:55;8664:77;8738:2;8731:4;8722:7;8718:18;8711:4;8703:6;8699:17;8664:77;:::i;:::-;8759:7;8331:441;-1:-1:-1;;;;8331:441:111:o;8777:335::-;8856:6;8909:2;8897:9;8888:7;8884:23;8880:32;8877:52;;;8925:1;8922;8915:12;8877:52;8958:9;8952:16;8991:18;8983:6;8980:30;8977:50;;;9023:1;9020;9013:12;8977:50;9046:60;9098:7;9089:6;9078:9;9074:22;9046:60;:::i;9299:471::-;9387:6;9395;9448:2;9436:9;9427:7;9423:23;9419:32;9416:52;;;9464:1;9461;9454:12;9416:52;9497:9;9491:16;9530:18;9522:6;9519:30;9516:50;;;9562:1;9559;9552:12;9516:50;9585:60;9637:7;9628:6;9617:9;9613:22;9585:60;:::i;:::-;9575:70;;;9688:2;9677:9;9673:18;9667:25;9701:39;9734:5;9701:39;:::i;:::-;9759:5;9749:15;;;9299:471;;;;;:::o;10116:377::-;10309:2;10298:9;10291:21;10272:4;10335:44;10375:2;10364:9;10360:18;10352:6;10335:44;:::i;:::-;10427:9;10419:6;10415:22;10410:2;10399:9;10395:18;10388:50;10455:32;10480:6;10472;10455:32;:::i;:::-;10447:40;10116:377;-1:-1:-1;;;;;10116:377:111:o;10498:267::-;10576:6;10629:2;10617:9;10608:7;10604:23;10600:32;10597:52;;;10645:1;10642;10635:12;10597:52;10677:9;10671:16;10696:39;10729:5;10696:39;:::i;10770:407::-;10853:5;10893;10887:12;10935:4;10928:5;10924:16;10918:23;10960:66;11052:2;11048;11044:11;11035:20;;11078:1;11070:6;11067:13;11064:107;;;11158:2;11152;11142:6;11139:1;11135:14;11132:1;11128:22;11124:31;11120:2;11116:40;11112:49;11103:58;;11064:107;;;;10770:407;;;:::o;11182:184::-;11234:77;11231:1;11224:88;11331:4;11328:1;11321:15;11355:4;11352:1;11345:15;11371:128;11438:9;;;11459:11;;;11456:37;;;11473:18;;:::i;11504:136::-;11582:13;;11604:30;11582:13;11604:30;:::i;:::-;11504:136;;;:::o;11645:1800::-;11811:6;11819;11827;11835;11843;11896:3;11884:9;11875:7;11871:23;11867:33;11864:53;;;11913:1;11910;11903:12;11864:53;11945:9;11939:16;11964:39;11997:5;11964:39;:::i;:::-;12022:5;12012:15;;;12046:2;12092;12081:9;12077:18;12071:25;12115:18;12156:2;12148:6;12145:14;12142:34;;;12172:1;12169;12162:12;12142:34;12210:6;12199:9;12195:22;12185:32;;12255:7;12248:4;12244:2;12240:13;12236:27;12226:55;;12277:1;12274;12267:12;12226:55;12306:2;12300:9;12328:2;12324;12321:10;12318:36;;;12334:18;;:::i;:::-;12380:2;12377:1;12373:10;12403:28;12427:2;12423;12419:11;12403:28;:::i;:::-;12465:15;;;12535:11;;;12531:20;;;12496:12;;;;12563:19;;;12560:39;;;12595:1;12592;12585:12;12560:39;12627:2;12623;12619:11;12608:22;;12639:356;12655:6;12650:3;12647:15;12639:356;;;12734:3;12728:10;12770:2;12757:11;12754:19;12751:109;;;12814:1;12843:2;12839;12832:14;12751:109;12885:67;12944:7;12939:2;12925:11;12921:2;12917:20;12913:29;12885:67;:::i;:::-;12873:80;;-1:-1:-1;12672:12:111;;;;12973;;;;12639:356;;;13065:2;13050:18;;13044:25;13014:5;;-1:-1:-1;13044:25:111;-1:-1:-1;;;;13081:16:111;;;13078:36;;;13110:1;13107;13100:12;13078:36;13133:62;13187:7;13176:8;13165:9;13161:24;13133:62;:::i;:::-;13123:72;;13214:48;13258:2;13247:9;13243:18;13214:48;:::i;:::-;13204:58;;13308:3;13297:9;13293:19;13287:26;13271:42;;13338:2;13328:8;13325:16;13322:36;;;13354:1;13351;13344:12;13322:36;;;13377:62;13431:7;13420:8;13409:9;13405:24;13377:62;:::i;:::-;13367:72;;;11645:1800;;;;;;;;:::o;13450:479::-;13663:42;13655:6;13651:55;13640:9;13633:74;13755:66;13747:6;13743:79;13738:2;13727:9;13723:18;13716:107;13859:2;13854;13843:9;13839:18;13832:30;13614:4;13879:44;13919:2;13908:9;13904:18;13896:6;13879:44;:::i;13934:1357::-;14242:4;14290:3;14279:9;14275:19;14333:42;14325:6;14321:55;14310:9;14303:74;14396:2;14434:3;14429:2;14418:9;14414:18;14407:31;14458:6;14493;14487:13;14524:6;14516;14509:22;14562:3;14551:9;14547:19;14540:26;;14625:3;14615:6;14612:1;14608:14;14597:9;14593:30;14589:40;14575:54;;14664:2;14656:6;14652:15;14685:1;14695:313;14709:6;14706:1;14703:13;14695:313;;;14798:66;14786:9;14778:6;14774:22;14770:95;14765:3;14758:108;14889:39;14921:6;14912;14906:13;14889:39;:::i;:::-;14879:49;-1:-1:-1;14986:12:111;;;;14951:15;;;;14731:1;14724:9;14695:313;;;14699:3;;;;;15056:9;15048:6;15044:22;15039:2;15028:9;15024:18;15017:50;15090:32;15115:6;15107;15090:32;:::i;:::-;6324:66;6313:78;;15172:2;15157:18;;6301:91;15076:46;-1:-1:-1;15225:9:111;15217:6;15213:22;15207:3;15196:9;15192:19;15185:51;15253:32;15278:6;15270;15253:32;:::i;15296:184::-;15348:77;15345:1;15338:88;15445:4;15442:1;15435:15;15469:4;15466:1;15459:15;15485:125;15550:9;;;15571:10;;;15568:36;;;15584:18;;:::i;15615:331::-;15720:9;15731;15773:8;15761:10;15758:24;15755:44;;;15795:1;15792;15785:12;15755:44;15824:6;15814:8;15811:20;15808:40;;;15844:1;15841;15834:12;15808:40;-1:-1:-1;;15870:23:111;;;15915:25;;;;;-1:-1:-1;15615:331:111:o;15951:277::-;16140:6;16132;16127:3;16114:33;16096:3;16166:16;;16191:13;;;16166:16;15951:277;-1:-1:-1;15951:277:111:o;17927:287::-;18056:3;18094:6;18088:13;18110:66;18169:6;18164:3;18157:4;18149:6;18145:17;18110:66;:::i;:::-;18192:16;;;;;17927:287;-1:-1:-1;;17927:287:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1406800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "findResolver(bytes)": "infinite",
                "registry()": "infinite",
                "resolve(bytes,bytes)": "infinite",
                "resolveCallback(bytes,bytes)": "infinite",
                "reverse(bytes)": "infinite",
                "supportsInterface(bytes4)": "399"
              },
              "internal": {
                "callWithOffchainLookupPropagation(address,bytes memory,bytes4)": "infinite",
                "findResolver(bytes calldata,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "findResolver(bytes)": "a1cbcbaf",
              "registry()": "7b103999",
              "resolve(bytes,bytes)": "9061b923",
              "resolveCallback(bytes,bytes)": "b4a85801",
              "reverse(bytes)": "ec11c823",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"urls\",\"type\":\"string[]\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"callbackFunction\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"OffchainLookup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"}],\"name\":\"findResolver\",\"outputs\":[{\"internalType\":\"contract Resolver\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"resolveCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reverseName\",\"type\":\"bytes\"}],\"name\":\"reverse\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"findResolver(bytes)\":{\"details\":\"Finds a resolver by recursively querying the registry, starting at the longest name and progressively      removing labels until it finds a result.\",\"params\":{\"name\":\"The name to resolve, in DNS-encoded and normalised form.\"},\"returns\":{\"_0\":\"The Resolver responsible for this name, and the namehash of the full name.\"}},\"resolve(bytes,bytes)\":{\"details\":\"Performs ENS name resolution for the supplied name and resolution data.\",\"params\":{\"data\":\"The resolution data, as specified in ENSIP-10.\",\"name\":\"The name to resolve, in normalised and DNS-encoded form.\"},\"returns\":{\"_0\":\"The result of resolving the name.\"}},\"resolveCallback(bytes,bytes)\":{\"details\":\"Callback function for `resolve`.\",\"params\":{\"extraData\":\"Extra data encoded by `callWithOffchainLookupPropagation` to allow completing the request.\",\"response\":\"Response data returned by the target address that invoked the inner `OffchainData` revert.\"}},\"reverse(bytes)\":{\"details\":\"Performs ENS name reverse resolution for the supplied reverse name.\",\"params\":{\"reverseName\":\"The reverse name to resolve, in normalised and DNS-encoded form. e.g. b6E040C9ECAaE172a89bD561c5F73e1C48d28cd9.addr.reverse\"},\"returns\":{\"_0\":\"The resolved name, the resolved address, the reverse resolver address, and the resolver address.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"The Universal Resolver is a contract that handles the work of resolving a name entirely onchain, making it possible to make a single smart contract call to resolve an ENS name.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/UniversalResolver.sol\":\"UniversalResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/resolvers/Resolver.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"./profiles/IABIResolver.sol\\\";\\nimport \\\"./profiles/IAddressResolver.sol\\\";\\nimport \\\"./profiles/IAddrResolver.sol\\\";\\nimport \\\"./profiles/IContentHashResolver.sol\\\";\\nimport \\\"./profiles/IDNSRecordResolver.sol\\\";\\nimport \\\"./profiles/IDNSZoneResolver.sol\\\";\\nimport \\\"./profiles/IInterfaceResolver.sol\\\";\\nimport \\\"./profiles/INameResolver.sol\\\";\\nimport \\\"./profiles/IPubkeyResolver.sol\\\";\\nimport \\\"./profiles/ITextResolver.sol\\\";\\nimport \\\"./profiles/IExtendedResolver.sol\\\";\\n\\n/**\\n * A generic resolver interface which includes all the functions including the ones deprecated\\n */\\ninterface Resolver is\\n    IERC165,\\n    IABIResolver,\\n    IAddressResolver,\\n    IAddrResolver,\\n    IContentHashResolver,\\n    IDNSRecordResolver,\\n    IDNSZoneResolver,\\n    IInterfaceResolver,\\n    INameResolver,\\n    IPubkeyResolver,\\n    ITextResolver,\\n    IExtendedResolver\\n{\\n    /* Deprecated events */\\n    event ContentChanged(bytes32 indexed node, bytes32 hash);\\n\\n    function setABI(\\n        bytes32 node,\\n        uint256 contentType,\\n        bytes calldata data\\n    ) external;\\n\\n    function setAddr(bytes32 node, address addr) external;\\n\\n    function setAddr(\\n        bytes32 node,\\n        uint256 coinType,\\n        bytes calldata a\\n    ) external;\\n\\n    function setContenthash(bytes32 node, bytes calldata hash) external;\\n\\n    function setDnsrr(bytes32 node, bytes calldata data) external;\\n\\n    function setName(bytes32 node, string calldata _name) external;\\n\\n    function setPubkey(\\n        bytes32 node,\\n        bytes32 x,\\n        bytes32 y\\n    ) external;\\n\\n    function setText(\\n        bytes32 node,\\n        string calldata key,\\n        string calldata value\\n    ) external;\\n\\n    function setInterface(\\n        bytes32 node,\\n        bytes4 interfaceID,\\n        address implementer\\n    ) external;\\n\\n    function multicall(bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    function multicallWithNodeCheck(bytes32 nodehash, bytes[] calldata data)\\n        external\\n        returns (bytes[] memory results);\\n\\n    /* Deprecated functions */\\n    function content(bytes32 node) external view returns (bytes32);\\n\\n    function multihash(bytes32 node) external view returns (bytes memory);\\n\\n    function setContent(bytes32 node, bytes32 hash) external;\\n\\n    function setMultihash(bytes32 node, bytes calldata hash) external;\\n}\\n\",\"keccak256\":\"0x73b6cd44b0ed803083996abd3d2683f2444731b6486045f8274c44fce66bf939\",\"license\":\"MIT\"},\"contracts/resolvers/ResolverBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"./profiles/IVersionableResolver.sol\\\";\\n\\nabstract contract ResolverBase is ERC165, IVersionableResolver {\\n    mapping(bytes32 => uint64) public recordVersions;\\n\\n    function isAuthorised(bytes32 node) internal view virtual returns (bool);\\n\\n    modifier authorised(bytes32 node) {\\n        require(isAuthorised(node));\\n        _;\\n    }\\n\\n    /**\\n     * Increments the record version associated with an ENS node.\\n     * May only be called by the owner of that node in the ENS registry.\\n     * @param node The node to update.\\n     */\\n    function clearRecords(bytes32 node) public virtual authorised(node) {\\n        recordVersions[node]++;\\n        emit VersionChanged(node, recordVersions[node]);\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == type(IVersionableResolver).interfaceId ||\\n            super.supportsInterface(interfaceID);\\n    }\\n}\\n\",\"keccak256\":\"0x99887f8890c62800bfe702dd67e36453a7017f05a368017c1187366bd98bc0a6\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\nimport \\\"./IABIResolver.sol\\\";\\nimport \\\"../ResolverBase.sol\\\";\\n\\ninterface IABIResolver {\\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n    /**\\n     * Returns the ABI associated with an ENS node.\\n     * Defined in EIP205.\\n     * @param node The ENS node to query\\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n     * @return contentType The content type of the return value\\n     * @return data The ABI data\\n     */\\n    function ABI(bytes32 node, uint256 contentTypes)\\n        external\\n        view\\n        returns (uint256, bytes memory);\\n}\\n\",\"keccak256\":\"0xc6db25d9b07ea925c64bb777f00ba557e99fbccd4c30c20e5a1b5cd8c159dcbf\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddrResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the legacy (ETH-only) addr function.\\n */\\ninterface IAddrResolver {\\n    event AddrChanged(bytes32 indexed node, address a);\\n\\n    /**\\n     * Returns the address associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated address.\\n     */\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\n/**\\n * Interface for the new (multicoin) addr function.\\n */\\ninterface IAddressResolver {\\n    event AddressChanged(\\n        bytes32 indexed node,\\n        uint256 coinType,\\n        bytes newAddress\\n    );\\n\\n    function addr(bytes32 node, uint256 coinType)\\n        external\\n        view\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x37221203e063dee5aa2a067a6ab3401e9cca41cce5b15230994b6ea377f05ed5\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IContentHashResolver {\\n    event ContenthashChanged(bytes32 indexed node, bytes hash);\\n\\n    /**\\n     * Returns the contenthash associated with an ENS node.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function contenthash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\\n    event DNSRecordChanged(\\n        bytes32 indexed node,\\n        bytes name,\\n        uint16 resource,\\n        bytes record\\n    );\\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n    /**\\n     * Obtain a DNS record.\\n     * @param node the namehash of the node for which to fetch the record\\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n     * @return the DNS record in wire format if present, otherwise empty\\n     */\\n    function dnsRecord(\\n        bytes32 node,\\n        bytes32 name,\\n        uint16 resource\\n    ) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n    // DNSZonehashChanged is emitted whenever a given node's zone hash is updated.\\n    event DNSZonehashChanged(\\n        bytes32 indexed node,\\n        bytes lastzonehash,\\n        bytes zonehash\\n    );\\n\\n    /**\\n     * zonehash obtains the hash for the zone.\\n     * @param node The ENS node to query.\\n     * @return The associated contenthash.\\n     */\\n    function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IExtendedResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IExtendedResolver {\\n    function resolve(bytes memory name, bytes memory data)\\n        external\\n        view\\n        returns (bytes memory, address);\\n}\\n\",\"keccak256\":\"0x0a586a1725cdc5f90f2e302c620a4a033adfc87e49bbcc5a43604ba579bce7a7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IInterfaceResolver {\\n    event InterfaceChanged(\\n        bytes32 indexed node,\\n        bytes4 indexed interfaceID,\\n        address implementer\\n    );\\n\\n    /**\\n     * Returns the address of a contract that implements the specified interface for this name.\\n     * If an implementer has not been set for this interfaceID and name, the resolver will query\\n     * the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\\n     * contract implements EIP165 and returns `true` for the specified interfaceID, its address\\n     * will be returned.\\n     * @param node The ENS node to query.\\n     * @param interfaceID The EIP 165 interface ID to check for.\\n     * @return The address that implements this interface, or 0 if the interface is unsupported.\\n     */\\n    function interfaceImplementer(bytes32 node, bytes4 interfaceID)\\n        external\\n        view\\n        returns (address);\\n}\\n\",\"keccak256\":\"0x6d75d6010016684030e13711b3bc1a4e1a784c7398937f1b7c2b2f328f962c2b\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface INameResolver {\\n    event NameChanged(bytes32 indexed node, string name);\\n\\n    /**\\n     * Returns the name associated with an ENS node, for reverse records.\\n     * Defined in EIP181.\\n     * @param node The ENS node to query.\\n     * @return The associated name.\\n     */\\n    function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IPubkeyResolver {\\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n    /**\\n     * Returns the SECP256k1 public key associated with an ENS node.\\n     * Defined in EIP 619.\\n     * @param node The ENS node to query\\n     * @return x The X coordinate of the curve point for the public key.\\n     * @return y The Y coordinate of the curve point for the public key.\\n     */\\n    function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface ITextResolver {\\n    event TextChanged(\\n        bytes32 indexed node,\\n        string indexed indexedKey,\\n        string key,\\n        string value\\n    );\\n\\n    /**\\n     * Returns the text data associated with an ENS node and key.\\n     * @param node The ENS node to query.\\n     * @param key The text data key to query.\\n     * @return The associated text data.\\n     */\\n    function text(bytes32 node, string calldata key)\\n        external\\n        view\\n        returns (string memory);\\n}\\n\",\"keccak256\":\"0xcc5eada60de63f42f47a4bbc8a5d2bed4cd1394646197a08da7957c6fd90ba5d\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IVersionableResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IVersionableResolver {\\n    event VersionChanged(bytes32 indexed node, uint64 newVersion);\\n\\n    function recordVersions(bytes32 node) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0xd0d09596f20c57bafb2ffa8521a8c57120e9af6c6b194f9c689d4da56f91a57c\",\"license\":\"MIT\"},\"contracts/utils/LowLevelCallUtils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.13;\\n\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\nlibrary LowLevelCallUtils {\\n    using Address for address;\\n\\n    /**\\n     * @dev Makes a static call to the specified `target` with `data`. Return data can be fetched with\\n     *      `returnDataSize` and `readReturnData`.\\n     * @param target The address to staticcall.\\n     * @param data The data to pass to the call.\\n     * @return success True if the call succeeded, or false if it reverts.\\n     */\\n    function functionStaticCall(address target, bytes memory data)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        require(\\n            target.isContract(),\\n            \\\"LowLevelCallUtils: static call to non-contract\\\"\\n        );\\n        assembly {\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(data, 32),\\n                mload(data),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the size of the return data of the most recent external call.\\n     */\\n    function returnDataSize() internal pure returns (uint256 len) {\\n        assembly {\\n            len := returndatasize()\\n        }\\n    }\\n\\n    /**\\n     * @dev Reads return data from the most recent external call.\\n     * @param offset Offset into the return data.\\n     * @param length Number of bytes to return.\\n     */\\n    function readReturnData(uint256 offset, uint256 length)\\n        internal\\n        pure\\n        returns (bytes memory data)\\n    {\\n        data = new bytes(length);\\n        assembly {\\n            returndatacopy(add(data, 32), offset, length)\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with the return data from the most recent external call.\\n     */\\n    function propagateRevert() internal pure {\\n        assembly {\\n            returndatacopy(0, 0, returndatasize())\\n            revert(0, returndatasize())\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5119479484321f0c5b092bcccda442d7d96792923811774c63ae85be3872e962\",\"license\":\"MIT\"},\"contracts/utils/NameEncoder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {BytesUtils} from \\\"../wrapper/BytesUtils.sol\\\";\\n\\nlibrary NameEncoder {\\n    using BytesUtils for bytes;\\n\\n    function dnsEncodeName(string memory name)\\n        internal\\n        pure\\n        returns (bytes memory dnsName, bytes32 node)\\n    {\\n        uint8 labelLength = 0;\\n        bytes memory bytesName = bytes(name);\\n        uint256 length = bytesName.length;\\n        dnsName = new bytes(length + 2);\\n        node = 0;\\n        if (length == 0) {\\n            dnsName[0] = 0;\\n            return (dnsName, node);\\n        }\\n\\n        // use unchecked to save gas since we check for an underflow\\n        // and we check for the length before the loop\\n        unchecked {\\n            for (uint256 i = length - 1; i >= 0; i--) {\\n                if (bytesName[i] == \\\".\\\") {\\n                    dnsName[i + 1] = bytes1(labelLength);\\n                    node = keccak256(\\n                        abi.encodePacked(\\n                            node,\\n                            bytesName.keccak(i + 1, labelLength)\\n                        )\\n                    );\\n                    labelLength = 0;\\n                } else {\\n                    labelLength += 1;\\n                    dnsName[i + 1] = bytesName[i];\\n                }\\n                if (i == 0) {\\n                    break;\\n                }\\n            }\\n        }\\n\\n        node = keccak256(\\n            abi.encodePacked(node, bytesName.keccak(0, labelLength))\\n        );\\n\\n        dnsName[0] = bytes1(labelLength);\\n        return (dnsName, node);\\n    }\\n}\\n\",\"keccak256\":\"0x61b99997cae6ba9df23817c5ef25d5ce5b3d2bb057da3cad3e6300971eb47fc8\",\"license\":\"MIT\"},\"contracts/utils/UniversalResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport {LowLevelCallUtils} from \\\"./LowLevelCallUtils.sol\\\";\\nimport {ENS} from \\\"../registry/ENS.sol\\\";\\nimport {IExtendedResolver} from \\\"../resolvers/profiles/IExtendedResolver.sol\\\";\\nimport {Resolver, INameResolver, IAddrResolver} from \\\"../resolvers/Resolver.sol\\\";\\nimport {NameEncoder} from \\\"./NameEncoder.sol\\\";\\nimport {BytesUtils} from \\\"../wrapper/BytesUtils.sol\\\";\\n\\nerror OffchainLookup(\\n    address sender,\\n    string[] urls,\\n    bytes callData,\\n    bytes4 callbackFunction,\\n    bytes extraData\\n);\\n\\n/**\\n * The Universal Resolver is a contract that handles the work of resolving a name entirely onchain,\\n * making it possible to make a single smart contract call to resolve an ENS name.\\n */\\ncontract UniversalResolver is IExtendedResolver, ERC165 {\\n    using Address for address;\\n    using NameEncoder for string;\\n    using BytesUtils for bytes;\\n\\n    ENS public immutable registry;\\n\\n    constructor(address _registry) {\\n        registry = ENS(_registry);\\n    }\\n\\n    /**\\n     * @dev Performs ENS name resolution for the supplied name and resolution data.\\n     * @param name The name to resolve, in normalised and DNS-encoded form.\\n     * @param data The resolution data, as specified in ENSIP-10.\\n     * @return The result of resolving the name.\\n     */\\n    function resolve(bytes calldata name, bytes memory data)\\n        external\\n        view\\n        override\\n        returns (bytes memory, address)\\n    {\\n        (Resolver resolver, ) = findResolver(name);\\n        if (address(resolver) == address(0)) {\\n            return (\\\"\\\", address(0));\\n        }\\n\\n        try\\n            resolver.supportsInterface(type(IExtendedResolver).interfaceId)\\n        returns (bool supported) {\\n            if (supported) {\\n                return (\\n                    callWithOffchainLookupPropagation(\\n                        address(resolver),\\n                        abi.encodeCall(IExtendedResolver.resolve, (name, data)),\\n                        UniversalResolver.resolveCallback.selector\\n                    ),\\n                    address(resolver)\\n                );\\n            }\\n        } catch {}\\n        return (\\n            callWithOffchainLookupPropagation(\\n                address(resolver),\\n                data,\\n                UniversalResolver.resolveCallback.selector\\n            ),\\n            address(resolver)\\n        );\\n    }\\n\\n    /**\\n     * @dev Performs ENS name reverse resolution for the supplied reverse name.\\n     * @param reverseName The reverse name to resolve, in normalised and DNS-encoded form. e.g. b6E040C9ECAaE172a89bD561c5F73e1C48d28cd9.addr.reverse\\n     * @return The resolved name, the resolved address, the reverse resolver address, and the resolver address.\\n     */\\n    function reverse(bytes calldata reverseName)\\n        external\\n        view\\n        returns (\\n            string memory,\\n            address,\\n            address,\\n            address\\n        )\\n    {\\n        (\\n            bytes memory resolvedReverseData,\\n            address reverseResolverAddress\\n        ) = this.resolve(\\n                reverseName,\\n                abi.encodeCall(INameResolver.name, reverseName.namehash(0))\\n            );\\n\\n        string memory resolvedName = abi.decode(resolvedReverseData, (string));\\n\\n        (bytes memory encodedName, bytes32 namehash) = resolvedName\\n            .dnsEncodeName();\\n\\n        (bytes memory resolvedData, address resolverAddress) = this.resolve(\\n            encodedName,\\n            abi.encodeCall(IAddrResolver.addr, namehash)\\n        );\\n\\n        address resolvedAddress = abi.decode(resolvedData, (address));\\n\\n        return (\\n            resolvedName,\\n            resolvedAddress,\\n            reverseResolverAddress,\\n            resolverAddress\\n        );\\n    }\\n\\n    function supportsInterface(bytes4 interfaceId)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceId == type(IExtendedResolver).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev Makes a call to `target` with `data`. If the call reverts with an `OffchainLookup` error, wraps\\n     *      the error with the data necessary to continue the request where it left off.\\n     * @param target The address to call.\\n     * @param data The data to call `target` with.\\n     * @param callbackFunction The function ID of a function on this contract to use as an EIP 3668 callback.\\n     *        This function's `extraData` argument will be passed `(address target, bytes4 innerCallback, bytes innerExtraData)`.\\n     * @return ret If `target` did not revert, contains the return data from the call to `target`.\\n     */\\n    function callWithOffchainLookupPropagation(\\n        address target,\\n        bytes memory data,\\n        bytes4 callbackFunction\\n    ) internal view returns (bytes memory ret) {\\n        bool result = LowLevelCallUtils.functionStaticCall(target, data);\\n        uint256 size = LowLevelCallUtils.returnDataSize();\\n\\n        if (result) {\\n            return LowLevelCallUtils.readReturnData(0, size);\\n        }\\n\\n        // Failure\\n        if (size >= 4) {\\n            bytes memory errorId = LowLevelCallUtils.readReturnData(0, 4);\\n            if (bytes4(errorId) == OffchainLookup.selector) {\\n                // Offchain lookup. Decode the revert message and create our own that nests it.\\n                bytes memory revertData = LowLevelCallUtils.readReturnData(\\n                    4,\\n                    size - 4\\n                );\\n                (\\n                    address sender,\\n                    string[] memory urls,\\n                    bytes memory callData,\\n                    bytes4 innerCallbackFunction,\\n                    bytes memory extraData\\n                ) = abi.decode(\\n                        revertData,\\n                        (address, string[], bytes, bytes4, bytes)\\n                    );\\n                if (sender == target) {\\n                    revert OffchainLookup(\\n                        address(this),\\n                        urls,\\n                        callData,\\n                        callbackFunction,\\n                        abi.encode(sender, innerCallbackFunction, extraData)\\n                    );\\n                }\\n            }\\n        }\\n\\n        LowLevelCallUtils.propagateRevert();\\n    }\\n\\n    /**\\n     * @dev Callback function for `resolve`.\\n     * @param response Response data returned by the target address that invoked the inner `OffchainData` revert.\\n     * @param extraData Extra data encoded by `callWithOffchainLookupPropagation` to allow completing the request.\\n     */\\n    function resolveCallback(bytes calldata response, bytes calldata extraData)\\n        external\\n        view\\n        returns (bytes memory)\\n    {\\n        (\\n            address target,\\n            bytes4 innerCallbackFunction,\\n            bytes memory innerExtraData\\n        ) = abi.decode(extraData, (address, bytes4, bytes));\\n        return\\n            abi.decode(\\n                target.functionStaticCall(\\n                    abi.encodeWithSelector(\\n                        innerCallbackFunction,\\n                        response,\\n                        innerExtraData\\n                    )\\n                ),\\n                (bytes)\\n            );\\n    }\\n\\n    /**\\n     * @dev Finds a resolver by recursively querying the registry, starting at the longest name and progressively\\n     *      removing labels until it finds a result.\\n     * @param name The name to resolve, in DNS-encoded and normalised form.\\n     * @return The Resolver responsible for this name, and the namehash of the full name.\\n     */\\n    function findResolver(bytes calldata name)\\n        public\\n        view\\n        returns (Resolver, bytes32)\\n    {\\n        (address resolver, bytes32 labelhash) = findResolver(name, 0);\\n        return (Resolver(resolver), labelhash);\\n    }\\n\\n    function findResolver(bytes calldata name, uint256 offset)\\n        internal\\n        view\\n        returns (address, bytes32)\\n    {\\n        uint256 labelLength = uint256(uint8(name[offset]));\\n        if (labelLength == 0) {\\n            return (address(0), bytes32(0));\\n        }\\n        uint256 nextLabel = offset + labelLength + 1;\\n        bytes32 labelHash = keccak256(name[offset + 1:nextLabel]);\\n        (address parentresolver, bytes32 parentnode) = findResolver(\\n            name,\\n            nextLabel\\n        );\\n        bytes32 node = keccak256(abi.encodePacked(parentnode, labelHash));\\n        address resolver = registry.resolver(node);\\n        if (resolver != address(0)) {\\n            return (resolver, node);\\n        }\\n        return (parentresolver, node);\\n    }\\n}\\n\",\"keccak256\":\"0x069cc77c8d9c808de4adc2d34001e5a6c9224852eae55413c3103f4b1bcab9bc\",\"license\":\"MIT\"},\"contracts/wrapper/BytesUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the ENS namehash of a DNS-encoded name.\\n     * @param self The DNS-encoded name to hash.\\n     * @param offset The offset at which to start hashing.\\n     * @return The namehash of the name.\\n     */\\n    function namehash(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        (bytes32 labelhash, uint256 newOffset) = readLabel(self, offset);\\n        if (labelhash == bytes32(0)) {\\n            require(offset == self.length - 1, \\\"namehash: Junk at end of name\\\");\\n            return bytes32(0);\\n        }\\n        return\\n            keccak256(abi.encodePacked(namehash(self, newOffset), labelhash));\\n    }\\n\\n    /**\\n     * @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\\n     * @param self The byte string to read a label from.\\n     * @param idx The index to read a label at.\\n     * @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\\n     * @return newIdx The index of the start of the next label.\\n     */\\n    function readLabel(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 labelhash, uint256 newIdx)\\n    {\\n        require(idx < self.length, \\\"readLabel: Index out of bounds\\\");\\n        uint256 len = uint256(uint8(self[idx]));\\n        if (len > 0) {\\n            labelhash = keccak(self, idx + 1, len);\\n        } else {\\n            labelhash = bytes32(0);\\n        }\\n        newIdx = idx + len + 1;\\n    }\\n}\\n\",\"keccak256\":\"0xc0d13fcaccd6c3af927106b2ea48eec83c5d0a18d608bde013a53742ac058526\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "The Universal Resolver is a contract that handles the work of resolving a name entirely onchain, making it possible to make a single smart contract call to resolve an ENS name.",
            "version": 1
          }
        }
      },
      "contracts/wrapper/BytesUtils.sol": {
        "BytesUtils": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220216ad65db004e742ecf9bfa5aacc011fac1a151aef79431aea56fba80334dbed64736f6c63430008110033",
              "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 0x21 PUSH11 0xD65DB004E742ECF9BFA5AA 0xCC ADD 0x1F 0xAC BYTE ISZERO BYTE 0xEF PUSH26 0x431AEA56FBA80334DBED64736F6C634300081100330000000000 ",
              "sourceMap": "57:2078:95:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;57:2078:95;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220216ad65db004e742ecf9bfa5aacc011fac1a151aef79431aea56fba80334dbed64736f6c63430008110033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 PUSH11 0xD65DB004E742ECF9BFA5AA 0xCC ADD 0x1F 0xAC BYTE ISZERO BYTE 0xEF PUSH26 0x431AEA56FBA80334DBED64736F6C634300081100330000000000 ",
              "sourceMap": "57:2078:95:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "keccak(bytes memory,uint256,uint256)": "infinite",
                "namehash(bytes memory,uint256)": "infinite",
                "readLabel(bytes memory,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/BytesUtils.sol\":\"BytesUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/wrapper/BytesUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the ENS namehash of a DNS-encoded name.\\n     * @param self The DNS-encoded name to hash.\\n     * @param offset The offset at which to start hashing.\\n     * @return The namehash of the name.\\n     */\\n    function namehash(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        (bytes32 labelhash, uint256 newOffset) = readLabel(self, offset);\\n        if (labelhash == bytes32(0)) {\\n            require(offset == self.length - 1, \\\"namehash: Junk at end of name\\\");\\n            return bytes32(0);\\n        }\\n        return\\n            keccak256(abi.encodePacked(namehash(self, newOffset), labelhash));\\n    }\\n\\n    /**\\n     * @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\\n     * @param self The byte string to read a label from.\\n     * @param idx The index to read a label at.\\n     * @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\\n     * @return newIdx The index of the start of the next label.\\n     */\\n    function readLabel(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 labelhash, uint256 newIdx)\\n    {\\n        require(idx < self.length, \\\"readLabel: Index out of bounds\\\");\\n        uint256 len = uint256(uint8(self[idx]));\\n        if (len > 0) {\\n            labelhash = keccak(self, idx + 1, len);\\n        } else {\\n            labelhash = bytes32(0);\\n        }\\n        newIdx = idx + len + 1;\\n    }\\n}\\n\",\"keccak256\":\"0xc0d13fcaccd6c3af927106b2ea48eec83c5d0a18d608bde013a53742ac058526\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/Controllable.sol": {
        "Controllable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                }
              ],
              "name": "ControllerChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "controllers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                }
              ],
              "name": "setController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 31,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104fb8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063da8c229e11610050578063da8c229e146100a3578063e0dba60f146100d6578063f2fde38b146100e957600080fd5b8063715018a61461006c5780638da5cb5b14610076575b600080fd5b6100746100fc565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100c66100b1366004610467565b60016020526000908152604090205460ff1681565b604051901515815260200161009a565b6100746100e4366004610489565b61018e565b6100746100f7366004610467565b610299565b60005473ffffffffffffffffffffffffffffffffffffffff163314610182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61018c60006103c9565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610179565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461031a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610179565b73ffffffffffffffffffffffffffffffffffffffff81166103bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610179565b6103c6816103c9565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461046257600080fd5b919050565b60006020828403121561047957600080fd5b6104828261043e565b9392505050565b6000806040838503121561049c57600080fd5b6104a58361043e565b9150602083013580151581146104ba57600080fd5b80915050925092905056fea26469706673582212206edf02798f72cc09f725cc9b13cbd8de26985657812613881ebd4e24c2e261ac64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x4FB DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDA8C229E GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xFC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC6 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x467 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9A JUMP JUMPDEST PUSH2 0x74 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x489 JUMP JUMPDEST PUSH2 0x18E JUMP JUMPDEST PUSH2 0x74 PUSH2 0xF7 CALLDATASIZE PUSH1 0x4 PUSH2 0x467 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x182 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18C PUSH1 0x0 PUSH2 0x3C9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x179 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x179 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x3BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x179 JUMP JUMPDEST PUSH2 0x3C6 DUP2 PUSH2 0x3C9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482 DUP3 PUSH2 0x43E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A5 DUP4 PUSH2 0x43E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0xDF02798F72CC09F725CC9B13CBD8DE 0x26 SWAP9 JUMP JUMPI DUP2 0x26 SGT DUP9 0x1E 0xBD 0x4E 0x24 0xC2 0xE2 PUSH2 0xAC64 PUSH20 0x6F6C634300081100330000000000000000000000 ",
              "sourceMap": "111:506:96:-:0;;;;;;;;;;;;-1:-1:-1;921:32:2;719:10:14;921:18:2;:32::i;:::-;111:506:96;;2270:187:2;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;111:506:96:-;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_641": {
                  "entryPoint": 969,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@controllers_16826": {
                  "entryPoint": null,
                  "id": 16826,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@renounceOwnership_598": {
                  "entryPoint": 252,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setController_16853": {
                  "entryPoint": 398,
                  "id": 16853,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@transferOwnership_621": {
                  "entryPoint": 665,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 1086,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 1127,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 1161,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1946:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "115:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "125:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "137:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "148:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "133:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "133:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "125:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "182:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "190:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "178:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "178:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "160:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "160:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "84:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "95:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "106:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "294:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "304:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "326:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "313:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "313:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "304:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "419:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "428:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "431:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "421:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "421:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "421:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "355:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "366:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "373:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "362:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "362:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "352:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "352:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "342:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "273:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "284:5:111",
                            "type": ""
                          }
                        ],
                        "src": "245:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "516:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "562:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "571:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "574:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "564:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "564:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "564:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "537:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "546:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "533:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "533:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "558:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "529:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "529:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "526:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "587:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "616:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "597:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "597:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "587:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "482:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "493:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "505:6:111",
                            "type": ""
                          }
                        ],
                        "src": "446:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "732:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "742:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "754:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "765:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "742:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "784:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "809:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "802:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "802:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "795:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "795:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "777:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "777:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "777:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "701:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "712:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "723:4:111",
                            "type": ""
                          }
                        ],
                        "src": "637:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "913:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "959:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "968:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "971:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "961:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "961:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "961:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "934:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "943:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "930:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "930:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "955:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "926:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "926:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "923:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "984:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1013:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "994:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "994:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "984:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1032:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1062:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1073:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1058:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1058:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1045:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1045:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1036:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1130:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1139:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1142:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1132:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1132:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1099:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1120:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "1113:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1113:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1106:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1106:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1096:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1096:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1089:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1089:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1086:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1155:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1165:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1155:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "871:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "882:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "894:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "902:6:111",
                            "type": ""
                          }
                        ],
                        "src": "829:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1355:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1372:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1383:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1365:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1365:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1365:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1406:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1417:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1402:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1402:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1422:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1395:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1395:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1445:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1456:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1441:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1441:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1461:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1434:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1434:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1434:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1505:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1517:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1528:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1513:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1513:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1505:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1332:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1346:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1181:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1716:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1733:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1744:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1726:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1726:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1726:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1767:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1778:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1763:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1763:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1783:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1756:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1756:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1756:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1806:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1817:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1802:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1802:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1822:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1795:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1795:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1877:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1888:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1873:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1873:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1893:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1866:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1866:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1866:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1911:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1923:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1934:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1919:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1919:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1911:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1693:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1707:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1542:402:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c8063da8c229e11610050578063da8c229e146100a3578063e0dba60f146100d6578063f2fde38b146100e957600080fd5b8063715018a61461006c5780638da5cb5b14610076575b600080fd5b6100746100fc565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100c66100b1366004610467565b60016020526000908152604090205460ff1681565b604051901515815260200161009a565b6100746100e4366004610489565b61018e565b6100746100f7366004610467565b610299565b60005473ffffffffffffffffffffffffffffffffffffffff163314610182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61018c60006103c9565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610179565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461031a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610179565b73ffffffffffffffffffffffffffffffffffffffff81166103bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610179565b6103c6816103c9565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461046257600080fd5b919050565b60006020828403121561047957600080fd5b6104828261043e565b9392505050565b6000806040838503121561049c57600080fd5b6104a58361043e565b9150602083013580151581146104ba57600080fd5b80915050925092905056fea26469706673582212206edf02798f72cc09f725cc9b13cbd8de26985657812613881ebd4e24c2e261ac64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDA8C229E GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xFC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC6 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x467 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9A JUMP JUMPDEST PUSH2 0x74 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x489 JUMP JUMPDEST PUSH2 0x18E JUMP JUMPDEST PUSH2 0x74 PUSH2 0xF7 CALLDATASIZE PUSH1 0x4 PUSH2 0x467 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x182 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18C PUSH1 0x0 PUSH2 0x3C9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x179 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x179 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x3BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x179 JUMP JUMPDEST PUSH2 0x3C6 DUP2 PUSH2 0x3C9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482 DUP3 PUSH2 0x43E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A5 DUP4 PUSH2 0x43E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0xDF02798F72CC09F725CC9B13CBD8DE 0x26 SWAP9 JUMP JUMPI DUP2 0x26 SGT DUP9 0x1E 0xBD 0x4E 0x24 0xC2 0xE2 PUSH2 0xAC64 PUSH20 0x6F6C634300081100330000000000000000000000 ",
              "sourceMap": "111:506:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1668:101:2;;;:::i;:::-;;1036:85;1082:7;1108:6;1036:85;;1108:6;;;;160:74:111;;148:2;133:18;1036:85:2;;;;;;;;150:43:96;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;802:14:111;;795:22;777:41;;765:2;750:18;150:43:96;637:187:111;271:174:96;;;;;;:::i;:::-;;:::i;1918:198:2:-;;;;;;:::i;:::-;;:::i;1668:101::-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1383:2:111;1240:68:2;;;1365:21:111;;;1402:18;;;1395:30;1461:34;1441:18;;;1434:62;1513:18;;1240:68:2;;;;;;;;;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;271:174:96:-;1082:7:2;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1383:2:111;1240:68:2;;;1365:21:111;;;1402:18;;;1395:30;1461:34;1441:18;;;1434:62;1513:18;;1240:68:2;1181:356:111;1240:68:2;354:23:96::1;::::0;::::1;;::::0;;;:11:::1;:23;::::0;;;;;;;;:32;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;401:37;;777:41:111;;;401:37:96::1;::::0;750:18:111;401:37:96::1;;;;;;;271:174:::0;;:::o;1918:198:2:-;1082:7;1108:6;1248:23;1108:6;719:10:14;1248:23:2;1240:68;;;;;;;1383:2:111;1240:68:2;;;1365:21:111;;;1402:18;;;1395:30;1461:34;1441:18;;;1434:62;1513:18;;1240:68:2;1181:356:111;1240:68:2;2006:22:::1;::::0;::::1;1998:73;;;::::0;::::1;::::0;;1744:2:111;1998:73:2::1;::::0;::::1;1726:21:111::0;1783:2;1763:18;;;1756:30;1822:34;1802:18;;;1795:62;1893:8;1873:18;;;1866:36;1919:19;;1998:73:2::1;1542:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;2270:187::-;2343:16;2362:6;;;2378:17;;;;;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;245:196:111:-;313:20;;373:42;362:54;;352:65;;342:93;;431:1;428;421:12;342:93;245:196;;;:::o;446:186::-;505:6;558:2;546:9;537:7;533:23;529:32;526:52;;;574:1;571;564:12;526:52;597:29;616:9;597:29;:::i;:::-;587:39;446:186;-1:-1:-1;;;446:186:111:o;829:347::-;894:6;902;955:2;943:9;934:7;930:23;926:32;923:52;;;971:1;968;961:12;923:52;994:29;1013:9;994:29;:::i;:::-;984:39;;1073:2;1062:9;1058:18;1045:32;1120:5;1113:13;1106:21;1099:5;1096:32;1086:60;;1142:1;1139;1132:12;1086:60;1165:5;1155:15;;;829:347;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "255000",
                "executionCost": "26135",
                "totalCost": "281135"
              },
              "external": {
                "controllers(address)": "2519",
                "owner()": "2301",
                "renounceOwnership()": "28076",
                "setController(address,bool)": "28256",
                "transferOwnership(address)": "28290"
              }
            },
            "methodIdentifiers": {
              "controllers(address)": "da8c229e",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "setController(address,bool)": "e0dba60f",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"name\":\"ControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"controllers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"name\":\"setController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/Controllable.sol\":\"Controllable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/wrapper/Controllable.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool active);\\n\\n    function setController(address controller, bool active) public onlyOwner {\\n        controllers[controller] = active;\\n        emit ControllerChanged(controller, active);\\n    }\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x9a9191656a82eda6763cda29ce893ddbfddb6c43559ff3b90c00a184e14e1fa1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "contracts/wrapper/Controllable.sol:Controllable",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 16826,
                "contract": "contracts/wrapper/Controllable.sol:Controllable",
                "label": "controllers",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_bool)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/ERC1155Fuse.sol": {
        "ERC1155Fuse": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "OperationProhibited",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "_tokens",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getData",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "balanceOf(address,uint256)": {
                "details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
              },
              "balanceOfBatch(address[],uint256[])": {
                "details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
              },
              "getData(uint256)": {
                "details": "Returns the Name's owner address and fuses"
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC1155-isApprovedForAll}."
              },
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
                "details": "See {IERC1155-safeBatchTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,uint256,bytes)": {
                "details": "See {IERC1155-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC1155-setApprovalForAll}."
              },
              "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
              },
              "uri(uint256)": {
                "details": "Returns the URI for token type `id`. If the `\\{id\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "_tokens(uint256)": "ed70554d",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "getData(uint256)": "0178fe3f",
              "isApprovedForAll(address,address)": "e985e9c5",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"OperationProhibited\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"_tokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"getData(uint256)\":{\"details\":\"Returns the Name's owner address and fuses\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"uri(uint256)\":{\"details\":\"Returns the URI for token type `id`. If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/ERC1155Fuse.sol\":\"ERC1155Fuse\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n    /**\\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\\n     *\\n     * NOTE: To accept the transfer, this must return\\n     * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n     * (i.e. 0xf23a6e61, or its own function selector).\\n     *\\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param id The ID of the token being transferred\\n     * @param value The amount of tokens being transferred\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256 value,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n\\n    /**\\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\\n     * been updated.\\n     *\\n     * NOTE: To accept the transfer(s), this must return\\n     * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n     * (i.e. 0xbc197c81, or its own function selector).\\n     *\\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155BatchReceived(\\n        address operator,\\n        address from,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n    /**\\n     * @dev Returns the URI for token type `id`.\\n     *\\n     * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n     * clients with the actual token type ID.\\n     */\\n    function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/wrapper/ERC1155Fuse.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/* This contract is a variation on ERC1155 with the additions of _setData, getData and _canTransfer and ownerOf. _setData and getData allows the use of the other 96 bits next to the address of the owner for extra data. We use this to store 'fuses' that control permissions that can be burnt. 32 bits are used for the fuses themselves and 64 bits are used for the expiry of the name. When a name has expired, its fuses will be be set back to 0 */\\n\\nerror OperationProhibited(bytes32 node);\\n\\nabstract contract ERC1155Fuse is ERC165, IERC1155, IERC1155MetadataURI {\\n    using Address for address;\\n    mapping(uint256 => uint256) public _tokens;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**************************************************************************\\n     * ERC721 methods\\n     *************************************************************************/\\n\\n    function ownerOf(uint256 id) public view virtual returns (address) {\\n        (address owner, , ) = getData(id);\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId)\\n        public\\n        view\\n        virtual\\n        override(ERC165, IERC165)\\n        returns (bool)\\n    {\\n        return\\n            interfaceId == type(IERC1155).interfaceId ||\\n            interfaceId == type(IERC1155MetadataURI).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (uint256)\\n    {\\n        require(\\n            account != address(0),\\n            \\\"ERC1155: balance query for the zero address\\\"\\n        );\\n        (address owner, , ) = getData(id);\\n        if (owner == account) {\\n            return 1;\\n        }\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-balanceOfBatch}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (uint256[] memory)\\n    {\\n        require(\\n            accounts.length == ids.length,\\n            \\\"ERC1155: accounts and ids length mismatch\\\"\\n        );\\n\\n        uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n        for (uint256 i = 0; i < accounts.length; ++i) {\\n            batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n        }\\n\\n        return batchBalances;\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved)\\n        public\\n        virtual\\n        override\\n    {\\n        require(\\n            msg.sender != operator,\\n            \\\"ERC1155: setting approval status for self\\\"\\n        );\\n\\n        _operatorApprovals[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return _operatorApprovals[account][operator];\\n    }\\n\\n    /**\\n     * @dev Returns the Name's owner address and fuses\\n     */\\n    function getData(uint256 tokenId)\\n        public\\n        view\\n        virtual\\n        returns (\\n            address owner,\\n            uint32 fuses,\\n            uint64 expiry\\n        )\\n    {\\n        uint256 t = _tokens[tokenId];\\n        owner = address(uint160(t));\\n        expiry = uint64(t >> 192);\\n        if (block.timestamp > expiry) {\\n            fuses = 0;\\n        } else {\\n            fuses = uint32(t >> 160);\\n        }\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes memory data\\n    ) public virtual override {\\n        require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n        require(\\n            from == msg.sender || isApprovedForAll(from, msg.sender),\\n            \\\"ERC1155: caller is not owner nor approved\\\"\\n        );\\n\\n        _transfer(from, to, id, amount, data);\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-safeBatchTransferFrom}.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] memory ids,\\n        uint256[] memory amounts,\\n        bytes memory data\\n    ) public virtual override {\\n        require(\\n            ids.length == amounts.length,\\n            \\\"ERC1155: ids and amounts length mismatch\\\"\\n        );\\n        require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n        require(\\n            from == msg.sender || isApprovedForAll(from, msg.sender),\\n            \\\"ERC1155: transfer caller is not owner nor approved\\\"\\n        );\\n\\n        for (uint256 i = 0; i < ids.length; ++i) {\\n            uint256 id = ids[i];\\n            uint256 amount = amounts[i];\\n\\n            (address oldOwner, uint32 fuses, uint64 expiration) = getData(id);\\n\\n            if (!_canTransfer(fuses)) {\\n                revert OperationProhibited(bytes32(id));\\n            }\\n\\n            require(\\n                amount == 1 && oldOwner == from,\\n                \\\"ERC1155: insufficient balance for transfer\\\"\\n            );\\n            _setData(id, to, fuses, expiration);\\n        }\\n\\n        emit TransferBatch(msg.sender, from, to, ids, amounts);\\n\\n        _doSafeBatchTransferAcceptanceCheck(\\n            msg.sender,\\n            from,\\n            to,\\n            ids,\\n            amounts,\\n            data\\n        );\\n    }\\n\\n    /**************************************************************************\\n     * Internal/private methods\\n     *************************************************************************/\\n\\n    /**\\n     * @dev Sets the Name's owner address and fuses\\n     */\\n    function _setData(\\n        uint256 tokenId,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal virtual {\\n        _tokens[tokenId] =\\n            uint256(uint160(owner)) |\\n            (uint256(fuses) << 160) |\\n            (uint256(expiry) << 192);\\n    }\\n\\n    function _canTransfer(uint32 fuses) internal virtual returns (bool);\\n\\n    function _mint(\\n        bytes32 node,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal virtual {\\n        uint256 tokenId = uint256(node);\\n        (address oldOwner, uint32 oldFuses, uint64 oldExpiry) = getData(\\n            uint256(node)\\n        );\\n\\n        if (oldExpiry > expiry) {\\n            expiry = oldExpiry;\\n        }\\n\\n        require(oldOwner == address(0), \\\"ERC1155: mint of existing token\\\");\\n        require(owner != address(0), \\\"ERC1155: mint to the zero address\\\");\\n        require(\\n            owner != address(this),\\n            \\\"ERC1155: newOwner cannot be the NameWrapper contract\\\"\\n        );\\n\\n        _setData(tokenId, owner, fuses | oldFuses, expiry);\\n        emit TransferSingle(msg.sender, address(0x0), owner, tokenId, 1);\\n        _doSafeTransferAcceptanceCheck(\\n            msg.sender,\\n            address(0),\\n            owner,\\n            tokenId,\\n            1,\\n            \\\"\\\"\\n        );\\n    }\\n\\n    function _burn(uint256 tokenId) internal virtual {\\n        (address owner, uint32 fuses, uint64 expiry) = getData(tokenId);\\n        // Fuses and expiry are kept on burn\\n        _setData(tokenId, address(0x0), fuses, expiry);\\n        emit TransferSingle(msg.sender, owner, address(0x0), tokenId, 1);\\n    }\\n\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes memory data\\n    ) internal {\\n        (address oldOwner, uint32 fuses, uint64 expiry) = getData(id);\\n\\n        if (!_canTransfer(fuses)) {\\n            revert OperationProhibited(bytes32(id));\\n        }\\n\\n        require(\\n            amount == 1 && oldOwner == from,\\n            \\\"ERC1155: insufficient balance for transfer\\\"\\n        );\\n\\n        if (oldOwner == to) {\\n            return;\\n        }\\n\\n        _setData(id, to, fuses, expiry);\\n\\n        emit TransferSingle(msg.sender, from, to, id, amount);\\n\\n        _doSafeTransferAcceptanceCheck(msg.sender, from, to, id, amount, data);\\n    }\\n\\n    function _doSafeTransferAcceptanceCheck(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes memory data\\n    ) private {\\n        if (to.isContract()) {\\n            try\\n                IERC1155Receiver(to).onERC1155Received(\\n                    operator,\\n                    from,\\n                    id,\\n                    amount,\\n                    data\\n                )\\n            returns (bytes4 response) {\\n                if (\\n                    response != IERC1155Receiver(to).onERC1155Received.selector\\n                ) {\\n                    revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n                }\\n            } catch Error(string memory reason) {\\n                revert(reason);\\n            } catch {\\n                revert(\\\"ERC1155: transfer to non ERC1155Receiver implementer\\\");\\n            }\\n        }\\n    }\\n\\n    function _doSafeBatchTransferAcceptanceCheck(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256[] memory ids,\\n        uint256[] memory amounts,\\n        bytes memory data\\n    ) private {\\n        if (to.isContract()) {\\n            try\\n                IERC1155Receiver(to).onERC1155BatchReceived(\\n                    operator,\\n                    from,\\n                    ids,\\n                    amounts,\\n                    data\\n                )\\n            returns (bytes4 response) {\\n                if (\\n                    response !=\\n                    IERC1155Receiver(to).onERC1155BatchReceived.selector\\n                ) {\\n                    revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n                }\\n            } catch Error(string memory reason) {\\n                revert(reason);\\n            } catch {\\n                revert(\\\"ERC1155: transfer to non ERC1155Receiver implementer\\\");\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5af84ab27b3f359527255d8d3f19ad9ea428165ab632a2ab4ad6fdeb8b48389d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 16890,
                "contract": "contracts/wrapper/ERC1155Fuse.sol:ERC1155Fuse",
                "label": "_tokens",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 16896,
                "contract": "contracts/wrapper/ERC1155Fuse.sol:ERC1155Fuse",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/IMetadataService.sol": {
        "IMetadataService": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "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": {
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/IMetadataService.sol\":\"IMetadataService\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/wrapper/IMetadataService.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface IMetadataService {\\n    function uri(uint256) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xb3f1cf6df01ed7b15e5f2318f6823afbdb586ca38c2124c67955c645647ae9a2\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/INameWrapper.sol": {
        "INameWrapper": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "FusesSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "NameUnwrapped",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "NameWrapped",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint32",
                  "name": "fuseMask",
                  "type": "uint32"
                }
              ],
              "name": "allFusesBurned",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "getData",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "isTokenOwnerOrApproved",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "isWrapped",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "metadataService",
              "outputs": [
                {
                  "internalType": "contract IMetadataService",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "names",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "registerAndWrapETH2LD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "registrarExpiry",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "registrar",
              "outputs": [
                {
                  "internalType": "contract IBaseRegistrar",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "labelHash",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "renew",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "labelhash",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "setChildFuses",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                }
              ],
              "name": "setFuses",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "newFuses",
                  "type": "uint32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeOwner",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeRecord",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setTTL",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "unwrap",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "newRegistrant",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "newController",
                  "type": "address"
                }
              ],
              "name": "unwrapETH2LD",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "wrap",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "_expiry",
                  "type": "uint64"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "wrapETH2LD",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "balanceOf(address,uint256)": {
                "details": "Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."
              },
              "balanceOfBatch(address[],uint256[])": {
                "details": "xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."
              },
              "isApprovedForAll(address,address)": {
                "details": "Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."
              },
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
                "details": "xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."
              },
              "safeTransferFrom(address,address,uint256,uint256,bytes)": {
                "details": "Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."
              },
              "setApprovalForAll(address,bool)": {
                "details": "Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "allFusesBurned(bytes32,uint32)": "adf4960a",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "ens()": "3f15457f",
              "getData(uint256)": "0178fe3f",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isTokenOwnerOrApproved(bytes32,address)": "f44779b9",
              "isWrapped(bytes32)": "fd0cd0d9",
              "metadataService()": "53095467",
              "names(bytes32)": "20c38e2b",
              "ownerOf(uint256)": "6352211e",
              "registerAndWrapETH2LD(string,address,uint256,address,uint32,uint64)": "9f56dac6",
              "registrar()": "2b20e397",
              "renew(uint256,uint256,uint32,uint64)": "47d2e9fe",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setChildFuses(bytes32,bytes32,uint32,uint64)": "33c69ea9",
              "setFuses(bytes32,uint32)": "c20a2eb0",
              "setRecord(bytes32,address,address,uint64)": "cf408823",
              "setResolver(bytes32,address)": "1896f70a",
              "setSubnodeOwner(bytes32,string,address,uint32,uint64)": "c658e086",
              "setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)": "24c1af44",
              "setTTL(bytes32,uint64)": "14ab9038",
              "supportsInterface(bytes4)": "01ffc9a7",
              "unwrap(bytes32,bytes32,address)": "d8c9921a",
              "unwrapETH2LD(bytes32,address,address)": "8b4dfa75",
              "wrap(bytes,address,address)": "eb8ae530",
              "wrapETH2LD(string,address,uint32,uint64,address)": "f9547a9e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"FusesSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NameUnwrapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"NameWrapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"fuseMask\",\"type\":\"uint32\"}],\"name\":\"allFusesBurned\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isTokenOwnerOrApproved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"isWrapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metadataService\",\"outputs\":[{\"internalType\":\"contract IMetadataService\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"names\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"registerAndWrapETH2LD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"registrarExpiry\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registrar\",\"outputs\":[{\"internalType\":\"contract IBaseRegistrar\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"labelHash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"renew\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"labelhash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"setChildFuses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"}],\"name\":\"setFuses\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"newFuses\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newRegistrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newController\",\"type\":\"address\"}],\"name\":\"unwrapETH2LD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"_expiry\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"wrapETH2LD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/INameWrapper.sol\":\"INameWrapper\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/wrapper/IMetadataService.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface IMetadataService {\\n    function uri(uint256) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xb3f1cf6df01ed7b15e5f2318f6823afbdb586ca38c2124c67955c645647ae9a2\",\"license\":\"MIT\"},\"contracts/wrapper/INameWrapper.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"../ethregistrar/IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"./IMetadataService.sol\\\";\\n\\nuint32 constant CANNOT_UNWRAP = 1;\\nuint32 constant CANNOT_BURN_FUSES = 2;\\nuint32 constant CANNOT_TRANSFER = 4;\\nuint32 constant CANNOT_SET_RESOLVER = 8;\\nuint32 constant CANNOT_SET_TTL = 16;\\nuint32 constant CANNOT_CREATE_SUBDOMAIN = 32;\\nuint32 constant PARENT_CANNOT_CONTROL = 64;\\nuint32 constant CAN_DO_EVERYTHING = 0;\\n\\ninterface INameWrapper is IERC1155 {\\n    event NameWrapped(\\n        bytes32 indexed node,\\n        bytes name,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    );\\n\\n    event NameUnwrapped(bytes32 indexed node, address owner);\\n\\n    event FusesSet(bytes32 indexed node, uint32 fuses, uint64 expiry);\\n\\n    function ens() external view returns (ENS);\\n\\n    function registrar() external view returns (IBaseRegistrar);\\n\\n    function metadataService() external view returns (IMetadataService);\\n\\n    function names(bytes32) external view returns (bytes memory);\\n\\n    function wrap(\\n        bytes calldata name,\\n        address wrappedOwner,\\n        address resolver\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 _expiry,\\n        address resolver\\n    ) external returns (uint64 expiry);\\n\\n    function registerAndWrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint256 duration,\\n        address resolver,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 registrarExpiry);\\n\\n    function renew(\\n        uint256 labelHash,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 expires);\\n\\n    function unwrap(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external;\\n\\n    function unwrapETH2LD(\\n        bytes32 label,\\n        address newRegistrant,\\n        address newController\\n    ) external;\\n\\n    function setFuses(bytes32 node, uint32 fuses)\\n        external\\n        returns (uint32 newFuses);\\n\\n    function setChildFuses(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        string calldata label,\\n        address newOwner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\\n        external\\n        returns (bool);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function ownerOf(uint256 id) external returns (address owner);\\n\\n    function getData(uint256 id)\\n        external\\n        returns (\\n            address,\\n            uint32,\\n            uint64\\n        );\\n\\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\\n        external\\n        view\\n        returns (bool);\\n\\n    function isWrapped(bytes32 node) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9c0ff4675d7faf51638138ecfc76a1f50c1005d1005bfba31c1cac7990a43c30\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/INameWrapperUpgrade.sol": {
        "INameWrapperUpgrade": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "wrapETH2LD",
              "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": {
              "setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)": "24c1af44",
              "wrapETH2LD(string,address,uint32,uint64,address)": "f9547a9e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"wrapETH2LD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/INameWrapperUpgrade.sol\":\"INameWrapperUpgrade\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/wrapper/INameWrapperUpgrade.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface INameWrapperUpgrade {\\n    function setSubnodeRecord(\\n        bytes32 parentNode,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 expiry,\\n        address resolver\\n    ) external;\\n}\\n\",\"keccak256\":\"0x40b2719f8a3c5f037dd7c827fd5e694d0e5485bbbca4e66aa9334e097f3d2854\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/NameWrapper.sol": {
        "NameWrapper": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ENS",
                  "name": "_ens",
                  "type": "address"
                },
                {
                  "internalType": "contract IBaseRegistrar",
                  "name": "_registrar",
                  "type": "address"
                },
                {
                  "internalType": "contract IMetadataService",
                  "name": "_metadataService",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "CannotUpgrade",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "IncompatibleParent",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "IncorrectTargetOwner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "IncorrectTokenType",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "labelHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "expectedLabelhash",
                  "type": "bytes32"
                }
              ],
              "name": "LabelMismatch",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                }
              ],
              "name": "LabelTooLong",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "LabelTooShort",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "OperationProhibited",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "Unauthorised",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                }
              ],
              "name": "ControllerChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "FusesSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "NameUnwrapped",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "NameWrapped",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "_tokens",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint32",
                  "name": "fuseMask",
                  "type": "uint32"
                }
              ],
              "name": "allFusesBurned",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "controllers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "getData",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "isTokenOwnerOrApproved",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "isWrapped",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "metadataService",
              "outputs": [
                {
                  "internalType": "contract IMetadataService",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "names",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC721Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "recoverFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "registerAndWrapETH2LD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "registrarExpiry",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "registrar",
              "outputs": [
                {
                  "internalType": "contract IBaseRegistrar",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "renew",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "expires",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "labelhash",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "setChildFuses",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                }
              ],
              "name": "setController",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                }
              ],
              "name": "setFuses",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IMetadataService",
                  "name": "_metadataService",
                  "type": "address"
                }
              ],
              "name": "setMetadataService",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "setResolver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeOwner",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeRecord",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                }
              ],
              "name": "setTTL",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract INameWrapperUpgrade",
                  "name": "_upgradeAddress",
                  "type": "address"
                }
              ],
              "name": "setUpgradeContract",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "labelhash",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "unwrap",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "labelhash",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "registrant",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "controller",
                  "type": "address"
                }
              ],
              "name": "unwrapETH2LD",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "upgrade",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "upgradeContract",
              "outputs": [
                {
                  "internalType": "contract INameWrapperUpgrade",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "upgradeETH2LD",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "wrap",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "wrapETH2LD",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "allFusesBurned(bytes32,uint32)": {
                "params": {
                  "fuseMask": "The fuses you want to check",
                  "node": "Namehash of the name"
                },
                "returns": {
                  "_0": "Boolean of whether or not all the selected fuses are burned"
                }
              },
              "balanceOf(address,uint256)": {
                "details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
              },
              "balanceOfBatch(address[],uint256[])": {
                "details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
              },
              "getData(uint256)": {
                "params": {
                  "id": "Label as a string of the .eth domain to wrap"
                },
                "returns": {
                  "_0": "address The owner of the name",
                  "_1": "uint32 Fuses of the name",
                  "_2": "uint64 Expiry of when the fuses expire for the name"
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC1155-isApprovedForAll}."
              },
              "isTokenOwnerOrApproved(bytes32,address)": {
                "params": {
                  "addr": "which address to check permissions for",
                  "node": "namehash of the name to check"
                },
                "returns": {
                  "_0": "whether or not is owner or approved"
                }
              },
              "isWrapped(bytes32)": {
                "details": "Both of these checks need to be true to be considered wrapped if checked without this contract",
                "params": {
                  "node": "Namehash of the name"
                },
                "returns": {
                  "_0": "Boolean of whether or not the name is wrapped"
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "params": {
                  "id": "Label as a string of the .eth domain to wrap"
                },
                "returns": {
                  "owner": "The owner of the name"
                }
              },
              "recoverFunds(address,address,uint256)": {
                "details": "The contract is Ownable and only the owner can call the recover function.",
                "params": {
                  "_amount": "The amount of tokens to recover.",
                  "_to": "The address to send the tokens to.",
                  "_token": "The address of the ERC20 token to recover"
                }
              },
              "registerAndWrapETH2LD(string,address,uint256,address,uint32,uint64)": {
                "details": "Registers a new .eth second-level domain and wraps it.      Only callable by authorised controllers.",
                "params": {
                  "duration": "The duration, in seconds, to register the name for.",
                  "expiry": "When the fuses will expire",
                  "fuses": "Initial fuses to set",
                  "label": "The label to register (Eg, 'foo' for 'foo.eth').",
                  "resolver": "The resolver address to set on the ENS registry (optional).",
                  "wrappedOwner": "The owner of the wrapped name."
                },
                "returns": {
                  "registrarExpiry": "The expiry date of the new name on the .eth registrar, in seconds since the Unix epoch."
                }
              },
              "renew(uint256,uint256,uint32,uint64)": {
                "details": "Only callable by authorised controllers.",
                "params": {
                  "duration": "The number of seconds to renew the name for.",
                  "tokenId": "The hash of the label to register (eg, `keccak256('foo')`, for 'foo.eth')."
                },
                "returns": {
                  "expires": "The expiry date of the name on the .eth registrar, in seconds since the Unix epoch."
                }
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
                "details": "See {IERC1155-safeBatchTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,uint256,bytes)": {
                "details": "See {IERC1155-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC1155-setApprovalForAll}."
              },
              "setChildFuses(bytes32,bytes32,uint32,uint64)": {
                "params": {
                  "expiry": "When the fuses will expire",
                  "fuses": "Fuses to burn",
                  "labelhash": "Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')",
                  "parentNode": "Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')"
                }
              },
              "setFuses(bytes32,uint32)": {
                "params": {
                  "fuses": "Fuses to burn (cannot burn PARENT_CANNOT_CONTROL)",
                  "node": "Namehash of the name"
                },
                "returns": {
                  "_0": "New fuses"
                }
              },
              "setMetadataService(address)": {
                "params": {
                  "_metadataService": "The new metadata service"
                }
              },
              "setRecord(bytes32,address,address,uint64)": {
                "params": {
                  "node": "Namehash of the name to set a record for",
                  "owner": "New owner in the registry",
                  "resolver": "Resolver contract",
                  "ttl": "Time to live in the registry"
                }
              },
              "setResolver(bytes32,address)": {
                "params": {
                  "node": "namehash of the name",
                  "resolver": "the resolver contract"
                }
              },
              "setSubnodeOwner(bytes32,string,address,uint32,uint64)": {
                "params": {
                  "expiry": "When the fuses will expire",
                  "fuses": "Initial fuses for the wrapped subdomain",
                  "label": "Label of the subdomain as a string",
                  "owner": "New owner in the wrapper",
                  "parentNode": "Parent namehash of the subdomain"
                },
                "returns": {
                  "node": "Namehash of the subdomain"
                }
              },
              "setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)": {
                "params": {
                  "expiry": "expiry date for the domain",
                  "fuses": "initial fuses for the wrapped subdomain",
                  "label": "label of the subdomain as a string",
                  "owner": "new owner in the wrapper",
                  "parentNode": "parent namehash of the subdomain",
                  "resolver": "resolver contract in the registry",
                  "ttl": "ttl in the regsitry"
                },
                "returns": {
                  "node": "Namehash of the subdomain"
                }
              },
              "setTTL(bytes32,uint64)": {
                "params": {
                  "node": "Namehash of the name",
                  "ttl": "TTL in the registry"
                }
              },
              "setUpgradeContract(address)": {
                "details": "The default value of upgradeContract is the 0 address. Use the 0 address at any time to make the contract not upgradable.",
                "params": {
                  "_upgradeAddress": "address of an upgraded contract"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "unwrap(bytes32,bytes32,address)": {
                "details": "Can be called by the owner in the wrapper or an authorised caller in the wrapper",
                "params": {
                  "controller": "Sets the owner in the registry to this address",
                  "labelhash": "Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')",
                  "parentNode": "Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')"
                }
              },
              "unwrapETH2LD(bytes32,address,address)": {
                "details": "Can be called by the owner in the wrapper or an authorised caller in the wrapper",
                "params": {
                  "controller": "Sets the owner in the registry to this address",
                  "labelhash": "Labelhash of the .eth domain",
                  "registrant": "Sets the owner in the .eth registrar to this address"
                }
              },
              "upgrade(bytes32,string,address,address)": {
                "details": "Can be called by the owner or an authorised caller Requires upgraded Namewrapper to permit old Namewrapper to call `setSubnodeRecord` for all names",
                "params": {
                  "label": "Label as a string of the name to upgrade",
                  "parentNode": "Namehash of the parent name",
                  "resolver": "Resolver contract for this name",
                  "wrappedOwner": "Owner of the name in this contract"
                }
              },
              "upgradeETH2LD(string,address,address)": {
                "details": "Can be called by the owner of the name in this contract",
                "params": {
                  "label": "Label as a string of the .eth name to upgrade",
                  "wrappedOwner": "The owner of the wrapped name"
                }
              },
              "uri(uint256)": {
                "params": {
                  "tokenId": "The id of the token"
                },
                "returns": {
                  "_0": "string uri of the metadata service"
                }
              },
              "wrap(bytes,address,address)": {
                "details": "Can be called by the owner in the registry or an authorised caller in the registry",
                "params": {
                  "name": "The name to wrap, in DNS format",
                  "resolver": "Resolver contract",
                  "wrappedOwner": "Owner of the name in this contract"
                }
              },
              "wrapETH2LD(string,address,uint32,uint64,address)": {
                "details": "Can be called by the owner of the name on the .eth registrar or an authorised caller on the registrar",
                "params": {
                  "expiry": "When the fuses will expire",
                  "fuses": "Initial fuses to set",
                  "label": "Label as a string of the .eth domain to wrap",
                  "resolver": "Resolver contract address",
                  "wrappedOwner": "Owner of the name in this contract"
                },
                "returns": {
                  "_0": "Normalised expiry of when the fuses expire"
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_18255": {
                  "entryPoint": null,
                  "id": 18255,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_561": {
                  "entryPoint": null,
                  "id": 561,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setData_17379": {
                  "entryPoint": null,
                  "id": 17379,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_transferOwnership_641": {
                  "entryPoint": 390,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157t_contract$_IBaseRegistrar_$11222t_contract$_IMetadataService_$17752_fromMemory": {
                  "entryPoint": 495,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "array_dataslot_bytes_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_bytes_storage": {
                  "entryPoint": 661,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_bytes_storage": {
                  "entryPoint": 744,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 601,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 579,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_contract_ENS": {
                  "entryPoint": 470,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3470:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "64:86:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "128:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "137:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "140:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "130:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "130:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "130:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "87:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "98:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "113:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "118:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "109:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "109:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "122:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "105:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "105:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "94:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "94:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "84:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "84:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "77:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "77:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "74:70:111"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_ENS",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:136:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "333:419:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "379:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "388:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "391:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "381:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "381:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "381:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "354:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "363:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "350:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "350:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "375:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "343:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "404:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "423:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "417:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "417:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "408:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "472:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "442:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "442:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "442:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "487:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "497:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "487:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "511:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "536:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "547:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "532:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "532:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "526:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "526:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "515:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "590:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "560:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "560:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "560:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "607:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "617:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "607:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "633:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "658:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "669:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "654:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "654:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "648:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "648:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "637:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "712:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_ENS",
                                  "nodeType": "YulIdentifier",
                                  "src": "682:29:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "682:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "682:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "729:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "739:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "729:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157t_contract$_IBaseRegistrar_$11222t_contract$_IMetadataService_$17752_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "283:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "294:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "306:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "314:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "322:6:111",
                            "type": ""
                          }
                        ],
                        "src": "155:597:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "789:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "806:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "813:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "818:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "809:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "809:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "799:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "799:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "846:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "849:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "839:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "839:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "839:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "870:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "873:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "863:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "863:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "863:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "757:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "944:325:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "954:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "968:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "971:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "964:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "964:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "954:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "985:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1015:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1021:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "1011:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1011:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "989:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1062:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1064:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "1078:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1086:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "1074:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1074:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1064:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1042:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1035:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1035:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1032:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1152:111:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1173:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1180:3:111",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1185:10:111",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1176:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1176:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1166:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1166:31:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1166:31:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1217:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1220:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1210:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1210:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1210:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1245:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1248:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1238:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1238:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1238:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1108:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1131:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1139:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1128:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1128:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1105:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1105:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1102:161:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "924:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "933:6:111",
                            "type": ""
                          }
                        ],
                        "src": "889:380:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1329:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1346:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1349:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1339:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1339:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1339:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1362:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1380:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1383:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "1370:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1370:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "1362:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "1312:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1320:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1274:120:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1479:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1512:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1526:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1536:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "1530:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1557:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1561:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1550:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1550:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1550:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1580:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1602:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1606:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "1592:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1592:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "1584:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1624:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "1647:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1657:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1664:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1676:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1660:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1660:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1653:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1653:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1643:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1643:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "1628:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "1718:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "1720:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "1735:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "1720:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "1700:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1712:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "1697:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1697:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1694:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1754:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "1768:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1778:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1785:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1790:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1781:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1781:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1774:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1774:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1764:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1764:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "1758:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1808:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "1821:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "1812:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "1906:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "1915:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1922:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "1908:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1908:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "1908:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "1856:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "1863:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "1853:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1853:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "1867:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "1869:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "1882:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1889:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1878:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1878:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "1869:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "1849:3:111",
                                      "statements": []
                                    },
                                    "src": "1845:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "1495:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1500:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1492:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1492:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1489:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1451:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "1458:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "1463:10:111",
                            "type": ""
                          }
                        ],
                        "src": "1399:544:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2033:81:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2043:65:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "2058:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2076:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2079:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2072:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2072:11:111"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2089:1:111",
                                                    "type": "",
                                                    "value": "0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "not",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2085:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2085:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "2068:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2068:24:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "2064:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2064:29:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2054:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2054:40:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2100:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "2103:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2096:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2096:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2051:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2051:57:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "2043:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2010:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "2016:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "2024:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1948:166:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2214:1254:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2224:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "2244:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2238:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2238:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "2228:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2291:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2293:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2293:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2293:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2263:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2279:2:111",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2283:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "2275:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2275:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2287:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2271:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2271:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2260:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2260:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2257:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "2365:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "2403:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "2397:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2397:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "2371:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2371:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2411:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_bytes_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "2322:42:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2322:96:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2322:96:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2427:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2444:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "2431:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2454:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2473:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2458:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2486:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "2499:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "2486:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "2556:655:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2570:35:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "2589:6:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2601:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "2597:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2597:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2585:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2585:20:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "2574:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2618:48:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "2661:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_bytes_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "2632:28:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2632:34:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "2622:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "2679:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2688:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "2683:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "2766:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2791:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2809:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2814:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2805:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2805:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2799:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2799:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2784:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2784:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "2784:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "2843:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2857:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2865:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2853:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2853:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2843:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "2884:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2901:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2912:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2897:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2897:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2884:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2713:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "2716:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2710:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2710:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "2725:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "2727:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2736:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2739:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2732:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2732:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2727:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "2706:3:111",
                                          "statements": []
                                        },
                                        "src": "2702:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "2986:166:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "3004:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3031:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3036:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3027:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3027:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3021:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3021:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "3008:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3071:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3083:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3110:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3113:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "3106:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3106:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3122:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3102:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3102:24:111"
                                                              },
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3132:1:111",
                                                                    "type": "",
                                                                    "value": "0"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "not",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3128:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3128:6:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3098:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3098:37:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3094:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3094:42:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3079:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3079:58:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3064:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3064:74:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "3064:74:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "2957:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "2966:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2954:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2954:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "2951:201:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3172:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "3186:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3189:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3182:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3182:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3198:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3178:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3178:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3165:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3165:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "3165:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "2549:662:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2554:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "3228:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3242:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3255:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "3246:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "3291:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "3309:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3328:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3333:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3324:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3324:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3318:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3318:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3309:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "3272:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "3269:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "3378:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3437:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3444:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "3384:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3384:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3371:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3371:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "3371:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "3220:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "2529:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2537:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2526:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2526:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "2519:943:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "2199:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "2205:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2119:1349:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_contract_ENS(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_ENS_$12157t_contract$_IBaseRegistrar_$11222t_contract$_IMetadataService_$17752_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_ENS(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_ENS(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_contract_ENS(value_2)\n        value2 := value_2\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b5060405162006351380380620063518339810160408190526200003491620001ef565b6200003f3362000186565b6001600160a01b0383811660805282811660a052600480546001600160a01b031916918316919091179055600163ffffffbf60a01b03197fafa26c20e8b3d9a2853d642cfe1021dae26242ffedfac91c97aab212c1a4b93b8190557fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4955604080518082019091526001815260006020808301829052908052600590527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc90620001099082620002e8565b50604080518082019091526005808252626cae8d60e31b6020808401919091527f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae600052527fd99130487705d6970718a0cee91984b61956f8a1db3482bba7e6bf0131adb01f906200017c9082620002e8565b50505050620003b4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620001ec57600080fd5b50565b6000806000606084860312156200020557600080fd5b83516200021281620001d6565b60208501519093506200022581620001d6565b60408501519092506200023881620001d6565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200026e57607f821691505b6020821081036200028f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002e357600081815260208120601f850160051c81016020861015620002be5750805b601f850160051c820191505b81811015620002df57828155600101620002ca565b5050505b505050565b81516001600160401b0381111562000304576200030462000243565b6200031c8162000315845462000259565b8462000295565b602080601f8311600181146200035457600084156200033b5750858301515b600019600386901b1c1916600185901b178555620002df565b600085815260208120601f198616915b82811015620003855788860151825594840194600190910190840162000364565b5085821015620003a45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051615ea5620004ac600039600081816104b901528181610ae101528181610bd801528181611686015281816118b501528181611dbf01528181611efc0152818161219f0152818161231b0152818161349f015281816135660152818161368801528181613717015261464c01526000818161050601528181610a6701528181610dbc01528181610f31015281816110cd015281816111980152818161223d015281816123b90152818161257f015281816127180152818161290101528181612e0b01528181612ed201528181612fb4015281816130460152818161382601528181613aab015261411b0152615ea56000f3fe608060405234801561001057600080fd5b50600436106102f35760003560e01c80638b4dfa7511610191578063e0dba60f116100e3578063ee7eba7811610097578063f44779b911610071578063f44779b91461075e578063f9547a9e14610771578063fd0cd0d91461079d57600080fd5b8063ee7eba7814610725578063f242432a14610738578063f2fde38b1461074b57600080fd5b8063e985e9c5116100c8578063e985e9c5146106b6578063eb8ae530146106f2578063ed70554d1461070557600080fd5b8063e0dba60f14610690578063e72bf00f146106a357600080fd5b8063b6bcad2611610145578063cf4088231161011f578063cf40882314610647578063d8c9921a1461065a578063da8c229e1461066d57600080fd5b8063b6bcad26146105f9578063c20a2eb01461060c578063c658e0861461063457600080fd5b80639f56dac6116101765780639f56dac6146105c0578063a22cb465146105d3578063adf4960a146105e657600080fd5b80638b4dfa751461059c5780638da5cb5b146105af57600080fd5b806324c1af441161024a57806347d2e9fe116101fe5780635d3590d5116101d85780635d3590d51461056e5780636352211e14610581578063715018a61461059457600080fd5b806347d2e9fe146105285780634e1273f41461053b578063530954671461055b57600080fd5b80632eb2c2d61161022f5780632eb2c2d6146104db57806333c69ea9146104ee5780633f15457f1461050157600080fd5b806324c1af44146104a15780632b20e397146104b457600080fd5b806314ab9038116102ac5780631896f70a116102865780631896f70a146104505780631f4e15041461046357806320c38e2b1461048e57600080fd5b806314ab9038146103e4578063150b7a02146103f95780631534e1771461043d57600080fd5b806301ffc9a7116102dd57806301ffc9a71461036557806306fdde03146103885780630e89341c146103d157600080fd5b8062fdd58e146102f85780630178fe3f1461031e575b600080fd5b61030b610306366004614cca565b6107b0565b6040519081526020015b60405180910390f35b61033161032c366004614cf6565b610871565b604080516001600160a01b03909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610315565b610378610373366004614d3d565b61088c565b6040519015158152602001610315565b6103c46040518060400160405280600b81526020017f4e616d655772617070657200000000000000000000000000000000000000000081525081565b6040516103159190614db1565b6103c46103df366004614cf6565b61092e565b6103f76103f2366004614de1565b6109bb565b005b61040c610407366004614e56565b610ad4565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610315565b6103f761044b366004614ec9565b610c7c565b6103f761045e366004614ee6565b610d10565b600654610476906001600160a01b031681565b6040516001600160a01b039091168152602001610315565b6103c461049c366004614cf6565b610deb565b61030b6104af36600461500a565b610e85565b6104767f000000000000000000000000000000000000000000000000000000000000000081565b6103f76104e936600461513d565b611213565b6103f76104fc3660046151eb565b6115b1565b6104767f000000000000000000000000000000000000000000000000000000000000000081565b61030b6105363660046151eb565b6117aa565b61054e610549366004615231565b611978565b604051610315919061532f565b600454610476906001600160a01b031681565b6103f761057c366004615342565b611ab6565b61047661058f366004614cf6565b611ba2565b6103f7611bad565b6103f76105aa366004615383565b611c13565b6000546001600160a01b0316610476565b61030b6105ce3660046153c5565b611e21565b6103f76105e1366004615458565b611fc5565b6103786105f4366004615486565b6120cd565b6103f7610607366004614ec9565b6120f2565b61061f61061a366004615486565b612418565b60405163ffffffff9091168152602001610315565b61030b6106423660046154a9565b6124c3565b6103f7610655366004615528565b61283f565b6103f7610668366004615560565b61299a565b61037861067b366004614ec9565b60036020526000908152604090205460ff1681565b6103f761069e366004615458565b612adc565b6103f76106b136600461558e565b612bb4565b6103786106c43660046155f6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6103f761070036600461558e565b612cc5565b61030b610713366004614cf6565b60016020526000908152604090205481565b6103f7610733366004615624565b6130ed565b6103f7610746366004615698565b6131e3565b6103f7610759366004614ec9565b613318565b61037861076c366004614ee6565b6133f7565b61078461077f366004615701565b613452565b60405167ffffffffffffffff9091168152602001610315565b6103786107ab366004614cf6565b6137cf565b60006001600160a01b0383166108335760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600061083e83610871565b50509050836001600160a01b0316816001600160a01b03160361086557600191505061086b565b60009150505b92915050565b600080600061087f846138a1565b9250925092509193909250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fe89c48dc00000000000000000000000000000000000000000000000000000000148061091f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061086b575061086b826138d8565b600480546040517f0e89341c0000000000000000000000000000000000000000000000000000000081529182018390526060916001600160a01b0390911690630e89341c90602401600060405180830381865afa158015610993573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086b919081019061578b565b816109c681336133f7565b6109ec5760405163168ab55d60e31b81526004810182905233602482015260440161082a565b82601060006109fa83610871565b5091505063ffffffff8282161615610a285760405163a2a7201360e01b81526004810184905260240161082a565b6040517f14ab90380000000000000000000000000000000000000000000000000000000081526004810187905267ffffffffffffffff861660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906314ab9038906044015b600060405180830381600087803b158015610ab457600080fd5b505af1158015610ac8573d6000803e3d6000fd5b50505050505050505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b38576040517f1931a53800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080808080610b4a8789018961580d565b84516020860120949950929750909550935091508990808214610ba3576040517fc65c3ccc000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161082a565b6040517f28ed4f6c000000000000000000000000000000000000000000000000000000008152600481018390523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906328ed4f6c90604401600060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b50505050610c4987878787876139bb565b507f150b7a02000000000000000000000000000000000000000000000000000000009d9c50505050505050505050505050565b6000546001600160a01b03163314610cd65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b81610d1b81336133f7565b610d415760405163168ab55d60e31b81526004810182905233602482015260440161082a565b8260086000610d4f83610871565b5091505063ffffffff8282161615610d7d5760405163a2a7201360e01b81526004810184905260240161082a565b6040517f1896f70a000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0386811660248301527f00000000000000000000000000000000000000000000000000000000000000001690631896f70a90604401610a9a565b60056020526000908152604090208054610e0490615885565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3090615885565b8015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b505050505081565b600087610e9281336133f7565b610eb85760405163168ab55d60e31b81526004810182905233602482015260440161082a565b8888805190602001206000610ef48383604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c91906158d8565b90506001600160a01b038116610fe6576000610fb785610871565b509150506020811615610fe05760405163a2a7201360e01b81526004810184905260240161082a565b5061101c565b6000610ff183610871565b50915050604081161561101a5760405163a2a7201360e01b81526004810184905260240161082a565b505b8b5160208d01206110548e82604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b96506110628e888b8b613b15565b975061106d876137cf565b61113c576040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018f9052602481018290523060448201526001600160a01b038c8116606483015267ffffffffffffffff8c1660848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561111157600080fd5b505af1158015611125573d6000803e3d6000fd5b505050506111378e888f8f8d8d613b5b565b611202565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018f9052602481018290523060448201526001600160a01b038c8116606483015267ffffffffffffffff8c1660848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156111dc57600080fd5b505af11580156111f0573d6000803e3d6000fd5b505050506112028e888f8f8d8d613c15565b505050505050979650505050505050565b815183511461128a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161082a565b6001600160a01b0384166113065760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161082a565b6001600160a01b03851633148061134057506001600160a01b038516600090815260026020908152604080832033845290915290205460ff165b6113b25760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000606482015260840161082a565b60005b83518110156115445760008482815181106113d2576113d26158f5565b6020026020010151905060008483815181106113f0576113f06158f5565b60200260200101519050600080600061140885610871565b925092509250611419826004161590565b6114395760405163a2a7201360e01b81526004810186905260240161082a565b83600114801561145a57508a6001600160a01b0316836001600160a01b0316145b6114cc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161082a565b60008581526001602052604090206001600160a01b038b1677ffffffff000000000000000000000000000000000000000060a085901b16177fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1617905550505050508061153d90615953565b90506113b5565b50836001600160a01b0316856001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161159492919061598b565b60405180910390a46115aa338686868686613cd0565b5050505050565b60408051602080820187905281830186905282518083038401815260609092019092528051910120600080806115e684610871565b91945092509050600080806115fa8b610871565b9093509150507f6c32148f748aba23997146d7fe89e962e3cc30271290fb96f5f4337756c03b528b016117005761163187336133f7565b6116575760405163168ab55d60e31b81526004810188905233602482015260440161082a565b6040517fd6e4fa86000000000000000000000000000000000000000000000000000000008152600481018b90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d6e4fa8690602401602060405180830381865afa1580156116d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f991906159b9565b9250611734565b61170a8b336133f7565b6117305760405163168ab55d60e31b81526004810188905233602482015260440161082a565b8092505b61173f878a84613edc565b61174a888585613f12565b9750604085161580159061176c57508463ffffffff1689861763ffffffff1614155b1561178d5760405163a2a7201360e01b81526004810188905260240161082a565b9784179761179d87878b8b613f5c565b5050505050505050505050565b3360009081526003602052604081205460ff1661182f5760405162461bcd60e51b815260206004820152602860248201527f436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f60448201527f6e74726f6c6c6572000000000000000000000000000000000000000000000000606482015260840161082a565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae602080830191909152818301889052825180830384018152606090920190925280519101206000906040517fc475abff00000000000000000000000000000000000000000000000000000000815260048101889052602481018790529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c475abff906044016020604051808303816000875af1158015611906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192a91906159b9565b9150611935816137cf565b1561196f576000808061194784610871565b925092509250611958868287613f12565b955061196b848460408a86171789613fb8565b5050505b50949350505050565b606081518351146119f15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161082a565b6000835167ffffffffffffffff811115611a0d57611a0d614f16565b604051908082528060200260200182016040528015611a36578160200160208202803683370190505b50905060005b8451811015611aae57611a81858281518110611a5a57611a5a6158f5565b6020026020010151858381518110611a7457611a746158f5565b60200260200101516107b0565b828281518110611a9357611a936158f5565b6020908102919091010152611aa781615953565b9050611a3c565b509392505050565b6000546001600160a01b03163314611b105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9c91906159d2565b50505050565b600061086b82614029565b6000546001600160a01b03163314611c075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b611c11600061403f565b565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae60208083019190915281830186905282518083038401815260609092019092528051910120611c6781336133f7565b611c8d5760405163168ab55d60e31b81526004810182905233602482015260440161082a565b6001600160a01b038216611cd8576040517f5949361a0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161082a565b306001600160a01b03841603611d25576040517f5949361a0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161082a565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae60208083019190915281830187905282518083038401815260609092019092528051910120611d7a905b836140a7565b6040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152604482018690527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e90606401600060405180830381600087803b158015611e0357600080fd5b505af1158015611e17573d6000803e3d6000fd5b5050505050505050565b3360009081526003602052604081205460ff16611ea65760405162461bcd60e51b815260206004820152602860248201527f436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f60448201527f6e74726f6c6c6572000000000000000000000000000000000000000000000000606482015260840161082a565b60008888604051611eb89291906159ef565b6040519081900381207ffca247ac000000000000000000000000000000000000000000000000000000008252600482018190523060248301526044820188905291507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063fca247ac906064016020604051808303816000875af1158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7191906159b9565b9150611fb889898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250889150879050896139bb565b5050979650505050505050565b6001600160a01b03821633036120435760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161082a565b3360008181526002602090815260408083206001600160a01b0387168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000806120d984610871565b50841663ffffffff908116908516149250505092915050565b6000546001600160a01b0316331461214c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6006546001600160a01b03161561229e576006546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a22cb46590604401600060405180830381600087803b1580156121e557600080fd5b505af11580156121f9573d6000803e3d6000fd5b50506006546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201527f0000000000000000000000000000000000000000000000000000000000000000909116925063a22cb4659150604401600060405180830381600087803b15801561228557600080fd5b505af1158015612299573d6000803e3d6000fd5b505050505b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811790915515612415576006546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600160248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a22cb46590604401600060405180830381600087803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b50506006546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600160248201527f0000000000000000000000000000000000000000000000000000000000000000909116925063a22cb4659150604401600060405180830381600087803b15801561240157600080fd5b505af11580156115aa573d6000803e3d6000fd5b50565b60008261242581336133f7565b61244b5760405163168ab55d60e31b81526004810182905233602482015260440161082a565b836002600061245983610871565b5091505063ffffffff82821616156124875760405163a2a7201360e01b81526004810184905260240161082a565b61249187876141b2565b6000808061249e8a610871565b92509250925081891798506124b58a848b84613f5c565b509698975050505050505050565b6000866124d081336133f7565b6124f65760405163168ab55d60e31b81526004810182905233602482015260440161082a565b8787876040516125079291906159ef565b604051809103902060006125428383604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ea91906158d8565b90506001600160a01b03811661263457600061260585610871565b50915050602081161561262e5760405163a2a7201360e01b81526004810184905260240161082a565b5061266a565b600061263f83610871565b5091505060408116156126685760405163a2a7201360e01b81526004810184905260240161082a565b505b60008b8b60405161267c9291906159ef565b604051809103902090506126b78d82604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b96506126c58d888b8b613b15565b97506126d0876137cf565b6127dd576040517f06ab5923000000000000000000000000000000000000000000000000000000008152600481018e9052602481018290523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906306ab5923906064016020604051808303816000875af1158015612761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278591906159b9565b506127d88d888e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d613b5b565b61282f565b61282f8d888e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d613c15565b5050505050509695505050505050565b8361284a81336133f7565b6128705760405163168ab55d60e31b81526004810182905233602482015260440161082a565b84601c600061287e83610871565b5091505063ffffffff82821616156128ac5760405163a2a7201360e01b81526004810184905260240161082a565b6040517fcf408823000000000000000000000000000000000000000000000000000000008152600481018990523060248201526001600160a01b03878116604483015267ffffffffffffffff871660648301527f0000000000000000000000000000000000000000000000000000000000000000169063cf40882390608401600060405180830381600087803b15801561294557600080fd5b505af1158015612959573d6000803e3d6000fd5b50505050600061296b8960001c610871565b5050905061298f81898b60001c6001604051806020016040528060008152506141e1565b505050505050505050565b604080516020808201869052818301859052825180830384018152606090920190925280519101206129cc81336133f7565b6129f25760405163168ab55d60e31b81526004810182905233602482015260440161082a565b7f6c32148f748aba23997146d7fe89e962e3cc30271290fb96f5f4337756c03b528401612a4b576040517f615a470300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382161580612a6957506001600160a01b03821630145b15612aab576040517f5949361a0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161082a565b60408051602080820187905281830186905282518083038401815260609092019092528051910120611b9c90611d74565b6000546001600160a01b03163314612b365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6001600160a01b03821660008181526003602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf8791015b60405180910390a25050565b60008484604051612bc69291906159ef565b60405190819003902090506000612c247f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae83604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9050600080612c328361438f565b6006546040517ff9547a9e0000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03169063f9547a9e90612c89908b908b908b90889088908d90600401615a2a565b600060405180830381600087803b158015612ca357600080fd5b505af1158015612cb7573d6000803e3d6000fd5b505050505050505050505050565b600080612d0c600087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506144249050565b915091506000612d558288888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506144db9050565b604080516020808201849052818301879052825180830384018152606090920190925280519101209091507f6c32148f748aba23997146d7fe89e962e3cc30271290fb96f5f4337756c03b528201612dd9576040517f615a470300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302571be390602401602060405180830381865afa158015612e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7e91906158d8565b90506001600160a01b0381163314801590612f3f57506040517fe985e9c50000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d91906159d2565b155b15612f665760405163168ab55d60e31b81526004810183905233602482015260440161082a565b6001600160a01b03861615613011576040517f1896f70a000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0387811660248301527f00000000000000000000000000000000000000000000000000000000000000001690631896f70a90604401600060405180830381600087803b158015612ff857600080fd5b505af115801561300c573d6000803e3d6000fd5b505050505b6040517f5b0fc9c3000000000000000000000000000000000000000000000000000000008152600481018390523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635b0fc9c390604401600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b5050505061298f828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508d9350915081905061459a565b600084846040516130ff9291906159ef565b60405180910390209050600061313c8783604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b905060008061314a8361438f565b6006546040517f24c1af440000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b0316906324c1af44906131a6908c908c908c908c908c906000908b908b90600401615a80565b600060405180830381600087803b1580156131c057600080fd5b505af11580156131d4573d6000803e3d6000fd5b50505050505050505050505050565b6001600160a01b03841661325f5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161082a565b6001600160a01b03851633148061329957506001600160a01b038516600090815260026020908152604080832033845290915290205460ff165b61330b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161082a565b6115aa85858585856141e1565b6000546001600160a01b031633146133725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6001600160a01b0381166133ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161082a565b6124158161403f565b60008061340384611ba2565b9050826001600160a01b0316816001600160a01b0316148061344a57506001600160a01b0380821660009081526002602090815260408083209387168352929052205460ff165b949350505050565b60008087876040516134659291906159ef565b6040519081900381207f6352211e0000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156134ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351291906158d8565b90506001600160a01b03811633148015906135d357506040517fe985e9c50000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa1580156135ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d191906159d2565b155b1561364357604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae6020808301919091528183018590528251808303840181526060830193849052805191012063168ab55d60e31b909252606481019190915233608482015260a40161082a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152306024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90606401600060405180830381600087803b1580156136cc57600080fd5b505af11580156136e0573d6000803e3d6000fd5b50506040517f28ed4f6c000000000000000000000000000000000000000000000000000000008152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506328ed4f6c9150604401600060405180830381600087803b15801561376557600080fd5b505af1158015613779573d6000803e3d6000fd5b505050506137c289898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a9150899050886139bb565b9998505050505050505050565b6000806137db83611ba2565b6001600160a01b03161415801561086b57506040517f02571be30000000000000000000000000000000000000000000000000000000081526004810183905230906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa15801561386d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389191906158d8565b6001600160a01b03161492915050565b6000818152600160205260408120549060c082901c82428210156138c857600092506138d0565b60a081901c92505b509193909250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061396b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061086b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461086b565b8451602086012060009081613a177f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae83604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b90506000613a26828488614604565b97509150613a5d90507f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae838b8b60408c178b613b5b565b6001600160a01b03851615613b08576040517f1896f70a000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0386811660248301527f00000000000000000000000000000000000000000000000000000000000000001690631896f70a90604401600060405180830381600087803b158015613aef57600080fd5b505af1158015613b03573d6000803e3d6000fd5b505050505b5093979650505050505050565b600080613b2185610871565b92505050600080613b348860001c610871565b9250925050613b44878784613edc565b613b4f858483613f12565b98975050505050505050565b60008681526005602052604081208054613bfd918791613b7a90615885565b80601f0160208091040260200160405190810160405280929190818152602001828054613ba690615885565b8015613bf35780601f10613bc857610100808354040283529160200191613bf3565b820191906000526020600020905b815481529060010190602001808311613bd657829003601f168201915b50505050506146dc565b9050613c0c868286868661459a565b50505050505050565b6000613c2086611ba2565b90506000613c4686600560008b81526020019081526020016000208054613b7a90615885565b6000888152600560205260409020805491925090613c6390615885565b9050600003613c86576000878152600560205260409020613c848282615b2e565b505b613c9287838686613f5c565b6001600160a01b038516613cb057613cab8760006140a7565b611e17565b611e1782868960001c6001604051806020016040528060008152506141e1565b6001600160a01b0384163b15613ed4576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c8190613d2d9089908990889088908890600401615c2a565b6020604051808303816000875af1925050508015613d68575060408051601f3d908101601f19168201909252613d6591810190615c7c565b60015b613e1d57613d74615c99565b806308c379a003613dad5750613d88615cb5565b80613d935750613daf565b8060405162461bcd60e51b815260040161082a9190614db1565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161082a565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014613c0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161082a565b505050505050565b6040828116146001821615818015613ef15750805b156115aa5760405163a2a7201360e01b81526004810186905260240161082a565b60008167ffffffffffffffff168467ffffffffffffffff161115613f34578193505b8267ffffffffffffffff168467ffffffffffffffff161015613f54578293505b509192915050565b613f6884848484613fb8565b6040805163ffffffff8416815267ffffffffffffffff8316602082015285917f936318e296f824e203b086d97bb155a0200cec4847efea1fb4b9b7f924157355910160405180910390a250505050565b613fc28483614785565b60008481526001602052604090206001600160a01b03841677ffffffff000000000000000000000000000000000000000060a085901b16177fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b16179055611b9c565b60008061403583610871565b5090949350505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6140b28260016120cd565b156140d35760405163a2a7201360e01b81526004810183905260240161082a565b6140dc826147be565b6040517f5b0fc9c3000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382811660248301527f00000000000000000000000000000000000000000000000000000000000000001690635b0fc9c390604401600060405180830381600087803b15801561415f57600080fd5b505af1158015614173573d6000803e3d6000fd5b50506040516001600160a01b03841681528492507fee2ba1195c65bcf218a83d874335c6bf9d9067b4c672f3c3bf16cf40de7586c49150602001612ba8565b60408116156141dd5760405163168ab55d60e31b81526004810183905233602482015260440161082a565b5050565b60008060006141ef86610871565b925092509250614200826004161590565b6142205760405163a2a7201360e01b81526004810187905260240161082a565b8460011480156142415750876001600160a01b0316836001600160a01b0316145b6142b35760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161082a565b866001600160a01b0316836001600160a01b0316036142d4575050506115aa565b60008681526001602052604090206001600160a01b03881677ffffffff000000000000000000000000000000000000000060a085901b16177fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1617905560408051878152602081018790526001600160a01b03808a1692908b169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611e17338989898989614879565b60065460009081906001600160a01b03166143d6576040517f24c1d6d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6143e083336133f7565b6144065760405163168ab55d60e31b81526004810184905233602482015260440161082a565b61440f83610871565b909350915061441f9050836147be565b915091565b600080835183106144775760405162461bcd60e51b815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e64730000604482015260640161082a565b600084848151811061448b5761448b6158f5565b016020015160f81c905080156144b7576144b0856144aa866001615d5d565b836149d4565b92506144bc565b600092505b6144c68185615d5d565b6144d1906001615d5d565b9150509250929050565b60008060006144ea8585614424565b90925090508161455c57600185516145029190615d70565b84146145505760405162461bcd60e51b815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d65000000604482015260640161082a565b506000915061086b9050565b61456685826144db565b6040805160208101929092528101839052606001604051602081830303815290604052805190602001209250505092915050565b60008581526005602052604090206145b28582615b2e565b506145bf858484846149f8565b847f8ce7013e8abebc55c3890a68f5a27c67c3f7efa64e584de5fb22363c606fd340858585856040516145f59493929190615d83565b60405180910390a25050505050565b600080808061461287610871565b6040517fd6e4fa86000000000000000000000000000000000000000000000000000000008152600481018a905292965090945091506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d6e4fa8690602401602060405180830381865afa15801561469b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146bf91906159b9565b90506146cc868383613f12565b9550859250505093509350939050565b606060018351101561471a576040517f280dacb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff8351111561475857826040517fe3ba295f00000000000000000000000000000000000000000000000000000000815260040161082a9190614db1565b8251838360405160200161476e93929190615dcb565b604051602081830303815290604052905092915050565b63ffffffbf81161580159061479d5750604181811614155b156141dd5760405163a2a7201360e01b81526004810183905260240161082a565b60008060006147cc84610871565b600087815260016020526040902077ffffffff000000000000000000000000000000000000000060a084901b167fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b161790559194509250905060408051858152600160208201526000916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a450505050565b6001600160a01b0384163b15613ed4576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e61906148d69089908990889088908890600401615e2c565b6020604051808303816000875af1925050508015614911575060408051601f3d908101601f1916820190925261490e91810190615c7c565b60015b61491d57613d74615c99565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014613c0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161082a565b82516000906149e38385615d5d565b11156149ee57600080fd5b5091016020012090565b614a028483614785565b6000614a0d85611ba2565b90506001600160a01b03811615614a5e57614a27856147be565b6040516000815285907fee2ba1195c65bcf218a83d874335c6bf9d9067b4c672f3c3bf16cf40de7586c49060200160405180910390a25b6115aa858585858360008080614a7384610871565b9250925092508467ffffffffffffffff168167ffffffffffffffff161115614a99578094505b6001600160a01b03831615614af05760405162461bcd60e51b815260206004820152601f60248201527f455243313135353a206d696e74206f66206578697374696e6720746f6b656e00604482015260640161082a565b6001600160a01b038716614b6c5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161082a565b306001600160a01b03881603614bea5760405162461bcd60e51b815260206004820152603460248201527f455243313135353a206e65774f776e65722063616e6e6f74206265207468652060448201527f4e616d655772617070657220636f6e7472616374000000000000000000000000606482015260840161082a565b60008481526001602052604090206001600160a01b03881677ffffffff000000000000000000000000000000000000000088851760a01b16177fffffffffffffffff00000000000000000000000000000000000000000000000060c088901b1617905560408051858152600160208201526001600160a01b0389169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611e173360008987600160405180602001604052806000815250614879565b6001600160a01b038116811461241557600080fd5b60008060408385031215614cdd57600080fd5b8235614ce881614cb5565b946020939093013593505050565b600060208284031215614d0857600080fd5b5035919050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461241557600080fd5b600060208284031215614d4f57600080fd5b8135614d5a81614d0f565b9392505050565b60005b83811015614d7c578181015183820152602001614d64565b50506000910152565b60008151808452614d9d816020860160208601614d61565b601f01601f19169290920160200192915050565b602081526000614d5a6020830184614d85565b803567ffffffffffffffff81168114614ddc57600080fd5b919050565b60008060408385031215614df457600080fd5b82359150614e0460208401614dc4565b90509250929050565b60008083601f840112614e1f57600080fd5b50813567ffffffffffffffff811115614e3757600080fd5b602083019150836020828501011115614e4f57600080fd5b9250929050565b600080600080600060808688031215614e6e57600080fd5b8535614e7981614cb5565b94506020860135614e8981614cb5565b935060408601359250606086013567ffffffffffffffff811115614eac57600080fd5b614eb888828901614e0d565b969995985093965092949392505050565b600060208284031215614edb57600080fd5b8135614d5a81614cb5565b60008060408385031215614ef957600080fd5b823591506020830135614f0b81614cb5565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614f6b57614f6b614f16565b6040525050565b600067ffffffffffffffff821115614f8c57614f8c614f16565b50601f01601f191660200190565b600082601f830112614fab57600080fd5b8135614fb681614f72565b604051614fc38282614f45565b828152856020848701011115614fd857600080fd5b82602086016020830137600092810160200192909252509392505050565b803563ffffffff81168114614ddc57600080fd5b600080600080600080600060e0888a03121561502557600080fd5b87359650602088013567ffffffffffffffff81111561504357600080fd5b61504f8a828b01614f9a565b965050604088013561506081614cb5565b9450606088013561507081614cb5565b935061507e60808901614dc4565b925061508c60a08901614ff6565b915061509a60c08901614dc4565b905092959891949750929550565b600067ffffffffffffffff8211156150c2576150c2614f16565b5060051b60200190565b600082601f8301126150dd57600080fd5b813560206150ea826150a8565b6040516150f78282614f45565b83815260059390931b850182019282810191508684111561511757600080fd5b8286015b84811015615132578035835291830191830161511b565b509695505050505050565b600080600080600060a0868803121561515557600080fd5b853561516081614cb5565b9450602086013561517081614cb5565b9350604086013567ffffffffffffffff8082111561518d57600080fd5b61519989838a016150cc565b945060608801359150808211156151af57600080fd5b6151bb89838a016150cc565b935060808801359150808211156151d157600080fd5b506151de88828901614f9a565b9150509295509295909350565b6000806000806080858703121561520157600080fd5b843593506020850135925061521860408601614ff6565b915061522660608601614dc4565b905092959194509250565b6000806040838503121561524457600080fd5b823567ffffffffffffffff8082111561525c57600080fd5b818501915085601f83011261527057600080fd5b8135602061527d826150a8565b60405161528a8282614f45565b83815260059390931b85018201928281019150898411156152aa57600080fd5b948201945b838610156152d15785356152c281614cb5565b825294820194908201906152af565b965050860135925050808211156152e757600080fd5b506144d1858286016150cc565b600081518084526020808501945080840160005b8381101561532457815187529582019590820190600101615308565b509495945050505050565b602081526000614d5a60208301846152f4565b60008060006060848603121561535757600080fd5b833561536281614cb5565b9250602084013561537281614cb5565b929592945050506040919091013590565b60008060006060848603121561539857600080fd5b8335925060208401356153aa81614cb5565b915060408401356153ba81614cb5565b809150509250925092565b600080600080600080600060c0888a0312156153e057600080fd5b873567ffffffffffffffff8111156153f757600080fd5b6154038a828b01614e0d565b909850965050602088013561541781614cb5565b945060408801359350606088013561542e81614cb5565b925061543c60808901614ff6565b915061509a60a08901614dc4565b801515811461241557600080fd5b6000806040838503121561546b57600080fd5b823561547681614cb5565b91506020830135614f0b8161544a565b6000806040838503121561549957600080fd5b82359150614e0460208401614ff6565b60008060008060008060a087890312156154c257600080fd5b86359550602087013567ffffffffffffffff8111156154e057600080fd5b6154ec89828a01614e0d565b909650945050604087013561550081614cb5565b925061550e60608801614ff6565b915061551c60808801614dc4565b90509295509295509295565b6000806000806080858703121561553e57600080fd5b84359350602085013561555081614cb5565b9250604085013561521881614cb5565b60008060006060848603121561557557600080fd5b833592506020840135915060408401356153ba81614cb5565b600080600080606085870312156155a457600080fd5b843567ffffffffffffffff8111156155bb57600080fd5b6155c787828801614e0d565b90955093505060208501356155db81614cb5565b915060408501356155eb81614cb5565b939692955090935050565b6000806040838503121561560957600080fd5b823561561481614cb5565b91506020830135614f0b81614cb5565b60008060008060006080868803121561563c57600080fd5b85359450602086013567ffffffffffffffff81111561565a57600080fd5b61566688828901614e0d565b909550935050604086013561567a81614cb5565b9150606086013561568a81614cb5565b809150509295509295909350565b600080600080600060a086880312156156b057600080fd5b85356156bb81614cb5565b945060208601356156cb81614cb5565b93506040860135925060608601359150608086013567ffffffffffffffff8111156156f557600080fd5b6151de88828901614f9a565b60008060008060008060a0878903121561571a57600080fd5b863567ffffffffffffffff81111561573157600080fd5b61573d89828a01614e0d565b909750955050602087013561575181614cb5565b935061575f60408801614ff6565b925061576d60608801614dc4565b9150608087013561577d81614cb5565b809150509295509295509295565b60006020828403121561579d57600080fd5b815167ffffffffffffffff8111156157b457600080fd5b8201601f810184136157c557600080fd5b80516157d081614f72565b6040516157dd8282614f45565b8281528660208486010111156157f257600080fd5b615803836020830160208701614d61565b9695505050505050565b600080600080600060a0868803121561582557600080fd5b853567ffffffffffffffff81111561583c57600080fd5b61584888828901614f9a565b955050602086013561585981614cb5565b935061586760408701614ff6565b925061587560608701614dc4565b9150608086013561568a81614cb5565b600181811c9082168061589957607f821691505b6020821081036158d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156158ea57600080fd5b8151614d5a81614cb5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361598457615984615924565b5060010190565b60408152600061599e60408301856152f4565b82810360208401526159b081856152f4565b95945050505050565b6000602082840312156159cb57600080fd5b5051919050565b6000602082840312156159e457600080fd5b8151614d5a8161544a565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60a081526000615a3e60a08301888a6159ff565b90506001600160a01b03808716602084015263ffffffff8616604084015267ffffffffffffffff85166060840152808416608084015250979650505050505050565b88815260e060208201526000615a9a60e08301898b6159ff565b6001600160a01b03978816604084015295909616606082015267ffffffffffffffff938416608082015263ffffffff9290921660a083015290911660c090910152949350505050565b601f821115615b2957600081815260208120601f850160051c81016020861015615b0a5750805b601f850160051c820191505b81811015613ed457828155600101615b16565b505050565b815167ffffffffffffffff811115615b4857615b48614f16565b615b5c81615b568454615885565b84615ae3565b602080601f831160018114615baf5760008415615b795750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613ed4565b600085815260208120601f198616915b82811015615bde57888601518255948401946001909101908401615bbf565b5085821015615c1a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60006001600160a01b03808816835280871660208401525060a06040830152615c5660a08301866152f4565b8281036060840152615c6881866152f4565b90508281036080840152613b4f8185614d85565b600060208284031215615c8e57600080fd5b8151614d5a81614d0f565b600060033d1115615cb25760046000803e5060005160e01c5b90565b600060443d1015615cc35790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715615d1157505050505090565b8285019150815181811115615d295750505050505090565b843d8701016020828501011115615d435750505050505090565b615d5260208286010187614f45565b509095945050505050565b8082018082111561086b5761086b615924565b8181038181111561086b5761086b615924565b608081526000615d966080830187614d85565b6001600160a01b039590951660208301525063ffffffff92909216604083015267ffffffffffffffff16606090910152919050565b7fff000000000000000000000000000000000000000000000000000000000000008460f81b16815260008351615e08816001850160208801614d61565b835190830190615e1f816001840160208801614d61565b0160010195945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152615e6460a0830184614d85565b97965050505050505056fea2646970667358221220deb78ab8de98646fd2ce04d62c4add2b0ba8c3fed6dbe5eb810c65ecb6a839ea64736f6c63430008110033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x6351 CODESIZE SUB DUP1 PUSH3 0x6351 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1EF JUMP JUMPDEST PUSH3 0x3F CALLER PUSH3 0x186 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x80 MSTORE DUP3 DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 DUP4 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 PUSH4 0xFFFFFFBF PUSH1 0xA0 SHL SUB NOT PUSH32 0xAFA26C20E8B3D9A2853D642CFE1021DAE26242FFEDFAC91C97AAB212C1A4B93B DUP2 SWAP1 SSTORE PUSH32 0xA6EEF7E35ABE7026729641147F7915573C7E97B47EFA546F5F6E3230263BCB49 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP1 DUP1 MSTORE PUSH1 0x5 SWAP1 MSTORE PUSH32 0x5B8CCBB9D4D8FB16EA74CE3C29A41F1B461FBDAFF4714A0D9A8EB05499746BC SWAP1 PUSH3 0x109 SWAP1 DUP3 PUSH3 0x2E8 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP1 DUP3 MSTORE PUSH3 0x6CAE8D PUSH1 0xE3 SHL PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x0 MSTORE MSTORE PUSH32 0xD99130487705D6970718A0CEE91984B61956F8A1DB3482BBA7E6BF0131ADB01F SWAP1 PUSH3 0x17C SWAP1 DUP3 PUSH3 0x2E8 JUMP JUMPDEST POP POP POP POP PUSH3 0x3B4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x212 DUP2 PUSH3 0x1D6 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x225 DUP2 PUSH3 0x1D6 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x238 DUP2 PUSH3 0x1D6 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x26E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x28F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x2E3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x2BE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2DF JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2CA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x304 JUMPI PUSH3 0x304 PUSH3 0x243 JUMP JUMPDEST PUSH3 0x31C DUP2 PUSH3 0x315 DUP5 SLOAD PUSH3 0x259 JUMP JUMPDEST DUP5 PUSH3 0x295 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x354 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x33B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x2DF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x385 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x364 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x3A4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x5EA5 PUSH3 0x4AC PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4B9 ADD MSTORE DUP2 DUP2 PUSH2 0xAE1 ADD MSTORE DUP2 DUP2 PUSH2 0xBD8 ADD MSTORE DUP2 DUP2 PUSH2 0x1686 ADD MSTORE DUP2 DUP2 PUSH2 0x18B5 ADD MSTORE DUP2 DUP2 PUSH2 0x1DBF ADD MSTORE DUP2 DUP2 PUSH2 0x1EFC ADD MSTORE DUP2 DUP2 PUSH2 0x219F ADD MSTORE DUP2 DUP2 PUSH2 0x231B ADD MSTORE DUP2 DUP2 PUSH2 0x349F ADD MSTORE DUP2 DUP2 PUSH2 0x3566 ADD MSTORE DUP2 DUP2 PUSH2 0x3688 ADD MSTORE DUP2 DUP2 PUSH2 0x3717 ADD MSTORE PUSH2 0x464C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x506 ADD MSTORE DUP2 DUP2 PUSH2 0xA67 ADD MSTORE DUP2 DUP2 PUSH2 0xDBC ADD MSTORE DUP2 DUP2 PUSH2 0xF31 ADD MSTORE DUP2 DUP2 PUSH2 0x10CD ADD MSTORE DUP2 DUP2 PUSH2 0x1198 ADD MSTORE DUP2 DUP2 PUSH2 0x223D ADD MSTORE DUP2 DUP2 PUSH2 0x23B9 ADD MSTORE DUP2 DUP2 PUSH2 0x257F ADD MSTORE DUP2 DUP2 PUSH2 0x2718 ADD MSTORE DUP2 DUP2 PUSH2 0x2901 ADD MSTORE DUP2 DUP2 PUSH2 0x2E0B ADD MSTORE DUP2 DUP2 PUSH2 0x2ED2 ADD MSTORE DUP2 DUP2 PUSH2 0x2FB4 ADD MSTORE DUP2 DUP2 PUSH2 0x3046 ADD MSTORE DUP2 DUP2 PUSH2 0x3826 ADD MSTORE DUP2 DUP2 PUSH2 0x3AAB ADD MSTORE PUSH2 0x411B ADD MSTORE PUSH2 0x5EA5 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2F3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B4DFA75 GT PUSH2 0x191 JUMPI DUP1 PUSH4 0xE0DBA60F GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xEE7EBA78 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF44779B9 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF44779B9 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0xF9547A9E EQ PUSH2 0x771 JUMPI DUP1 PUSH4 0xFD0CD0D9 EQ PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xEE7EBA78 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x738 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE985E9C5 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6B6 JUMPI DUP1 PUSH4 0xEB8AE530 EQ PUSH2 0x6F2 JUMPI DUP1 PUSH4 0xED70554D EQ PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0x690 JUMPI DUP1 PUSH4 0xE72BF00F EQ PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6BCAD26 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xCF408823 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0xCF408823 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0xD8C9921A EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6BCAD26 EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0xC20A2EB0 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xC658E086 EQ PUSH2 0x634 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9F56DAC6 GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x9F56DAC6 EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x5D3 JUMPI DUP1 PUSH4 0xADF4960A EQ PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8B4DFA75 EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x24C1AF44 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x47D2E9FE GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x5D3590D5 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x5D3590D5 EQ PUSH2 0x56E JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x581 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x47D2E9FE EQ PUSH2 0x528 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x53095467 EQ PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x4DB JUMPI DUP1 PUSH4 0x33C69EA9 EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x24C1AF44 EQ PUSH2 0x4A1 JUMPI DUP1 PUSH4 0x2B20E397 EQ PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AB9038 GT PUSH2 0x2AC JUMPI DUP1 PUSH4 0x1896F70A GT PUSH2 0x286 JUMPI DUP1 PUSH4 0x1896F70A EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x1F4E1504 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x20C38E2B EQ PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AB9038 EQ PUSH2 0x3E4 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x3F9 JUMPI DUP1 PUSH4 0x1534E177 EQ PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 GT PUSH2 0x2DD JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x178FE3F EQ PUSH2 0x31E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30B PUSH2 0x306 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCA JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x331 PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x871 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x373 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D3D JUMP JUMPDEST PUSH2 0x88C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x3C4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4E616D6557726170706572000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x4DB1 JUMP JUMPDEST PUSH2 0x3C4 PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x92E JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DE1 JUMP JUMPDEST PUSH2 0x9BB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x40C PUSH2 0x407 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E56 JUMP JUMPDEST PUSH2 0xAD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x44B CALLDATASIZE PUSH1 0x4 PUSH2 0x4EC9 JUMP JUMPDEST PUSH2 0xC7C JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x4EE6 JUMP JUMPDEST PUSH2 0xD10 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x476 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x3C4 PUSH2 0x49C CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0xDEB JUMP JUMPDEST PUSH2 0x30B PUSH2 0x4AF CALLDATASIZE PUSH1 0x4 PUSH2 0x500A JUMP JUMPDEST PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x476 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x4E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x513D JUMP JUMPDEST PUSH2 0x1213 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x51EB JUMP JUMPDEST PUSH2 0x15B1 JUMP JUMPDEST PUSH2 0x476 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x536 CALLDATASIZE PUSH1 0x4 PUSH2 0x51EB JUMP JUMPDEST PUSH2 0x17AA JUMP JUMPDEST PUSH2 0x54E PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x5231 JUMP JUMPDEST PUSH2 0x1978 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x532F JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x476 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x57C CALLDATASIZE PUSH1 0x4 PUSH2 0x5342 JUMP JUMPDEST PUSH2 0x1AB6 JUMP JUMPDEST PUSH2 0x476 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x1BA2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x1BAD JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x5383 JUMP JUMPDEST PUSH2 0x1C13 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x476 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x5CE CALLDATASIZE PUSH1 0x4 PUSH2 0x53C5 JUMP JUMPDEST PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x5458 JUMP JUMPDEST PUSH2 0x1FC5 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x5F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5486 JUMP JUMPDEST PUSH2 0x20CD JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x607 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EC9 JUMP JUMPDEST PUSH2 0x20F2 JUMP JUMPDEST PUSH2 0x61F PUSH2 0x61A CALLDATASIZE PUSH1 0x4 PUSH2 0x5486 JUMP JUMPDEST PUSH2 0x2418 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x642 CALLDATASIZE PUSH1 0x4 PUSH2 0x54A9 JUMP JUMPDEST PUSH2 0x24C3 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x5528 JUMP JUMPDEST PUSH2 0x283F JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x668 CALLDATASIZE PUSH1 0x4 PUSH2 0x5560 JUMP JUMPDEST PUSH2 0x299A JUMP JUMPDEST PUSH2 0x378 PUSH2 0x67B CALLDATASIZE PUSH1 0x4 PUSH2 0x4EC9 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x69E CALLDATASIZE PUSH1 0x4 PUSH2 0x5458 JUMP JUMPDEST PUSH2 0x2ADC JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x6B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x558E JUMP JUMPDEST PUSH2 0x2BB4 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x6C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x55F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x700 CALLDATASIZE PUSH1 0x4 PUSH2 0x558E JUMP JUMPDEST PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x713 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x733 CALLDATASIZE PUSH1 0x4 PUSH2 0x5624 JUMP JUMPDEST PUSH2 0x30ED JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x746 CALLDATASIZE PUSH1 0x4 PUSH2 0x5698 JUMP JUMPDEST PUSH2 0x31E3 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x759 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EC9 JUMP JUMPDEST PUSH2 0x3318 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x76C CALLDATASIZE PUSH1 0x4 PUSH2 0x4EE6 JUMP JUMPDEST PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x784 PUSH2 0x77F CALLDATASIZE PUSH1 0x4 PUSH2 0x5701 JUMP JUMPDEST PUSH2 0x3452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x7AB CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x37CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2062616C616E636520717565727920666F7220746865207A PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65726F2061646472657373000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x83E DUP4 PUSH2 0x871 JUMP JUMPDEST POP POP SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x865 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x86B JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x87F DUP5 PUSH2 0x38A1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89C48DC00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x91F JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x86B JUMPI POP PUSH2 0x86B DUP3 PUSH2 0x38D8 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xE89341C SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x993 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x86B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x578B JUMP JUMPDEST DUP2 PUSH2 0x9C6 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x9EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP3 PUSH1 0x10 PUSH1 0x0 PUSH2 0x9FA DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH4 0xFFFFFFFF DUP3 DUP3 AND AND ISZERO PUSH2 0xA28 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x14AB903800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x14AB9038 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xB38 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1931A53800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0xB4A DUP8 DUP10 ADD DUP10 PUSH2 0x580D JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP7 ADD KECCAK256 SWAP5 SWAP10 POP SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP DUP10 SWAP1 DUP1 DUP3 EQ PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC65C3CCC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28ED4F6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x28ED4F6C SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xC49 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x39BB JUMP JUMPDEST POP PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xCD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xD1B DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0xD41 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP3 PUSH1 0x8 PUSH1 0x0 PUSH2 0xD4F DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH4 0xFFFFFFFF DUP3 DUP3 AND AND ISZERO PUSH2 0xD7D JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH2 0xA9A JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xE04 SWAP1 PUSH2 0x5885 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xE30 SWAP1 PUSH2 0x5885 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE7D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE52 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE7D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE60 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP8 PUSH2 0xE92 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0xEB8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP9 DUP9 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 PUSH2 0xEF4 DUP4 DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9C SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFE6 JUMPI PUSH1 0x0 PUSH2 0xFB7 DUP6 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x20 DUP2 AND ISZERO PUSH2 0xFE0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST POP PUSH2 0x101C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFF1 DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x40 DUP2 AND ISZERO PUSH2 0x101A JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST POP JUMPDEST DUP12 MLOAD PUSH1 0x20 DUP14 ADD KECCAK256 PUSH2 0x1054 DUP15 DUP3 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 POP PUSH2 0x1062 DUP15 DUP9 DUP12 DUP12 PUSH2 0x3B15 JUMP JUMPDEST SWAP8 POP PUSH2 0x106D DUP8 PUSH2 0x37CF JUMP JUMPDEST PUSH2 0x113C JUMPI PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP16 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1125 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1137 DUP15 DUP9 DUP16 DUP16 DUP14 DUP14 PUSH2 0x3B5B JUMP JUMPDEST PUSH2 0x1202 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP16 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1202 DUP15 DUP9 DUP16 DUP16 DUP14 DUP14 PUSH2 0x3C15 JUMP JUMPDEST POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x128A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1306 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1340 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x13B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E736665722063616C6C6572206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572206E6F7220617070726F7665640000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1544 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x13D2 JUMPI PUSH2 0x13D2 PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x13F0 JUMPI PUSH2 0x13F0 PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1408 DUP6 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1419 DUP3 PUSH1 0x4 AND ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1439 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST DUP4 PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x145A JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x14CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 SWAP1 SHL AND OR PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP5 SWAP1 SHL AND OR SWAP1 SSTORE POP POP POP POP POP DUP1 PUSH2 0x153D SWAP1 PUSH2 0x5953 JUMP JUMPDEST SWAP1 POP PUSH2 0x13B5 JUMP JUMPDEST POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1594 SWAP3 SWAP2 SWAP1 PUSH2 0x598B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x15AA CALLER DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3CD0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 DUP1 DUP1 PUSH2 0x15E6 DUP5 PUSH2 0x871 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x0 DUP1 DUP1 PUSH2 0x15FA DUP12 PUSH2 0x871 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP PUSH32 0x6C32148F748ABA23997146D7FE89E962E3CC30271290FB96F5F4337756C03B52 DUP12 ADD PUSH2 0x1700 JUMPI PUSH2 0x1631 DUP8 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x1657 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD6E4FA8600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP12 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD6E4FA86 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16F9 SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST SWAP3 POP PUSH2 0x1734 JUMP JUMPDEST PUSH2 0x170A DUP12 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x1730 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP1 SWAP3 POP JUMPDEST PUSH2 0x173F DUP8 DUP11 DUP5 PUSH2 0x3EDC JUMP JUMPDEST PUSH2 0x174A DUP9 DUP6 DUP6 PUSH2 0x3F12 JUMP JUMPDEST SWAP8 POP PUSH1 0x40 DUP6 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x176C JUMPI POP DUP5 PUSH4 0xFFFFFFFF AND DUP10 DUP7 OR PUSH4 0xFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x178D JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST SWAP8 DUP5 OR SWAP8 PUSH2 0x179D DUP8 DUP8 DUP12 DUP12 PUSH2 0x3F5C JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x182F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C61626C653A2043616C6C6572206973206E6F74206120636F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E74726F6C6C6572000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP9 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0xC475ABFF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xC475ABFF SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1906 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x192A SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST SWAP2 POP PUSH2 0x1935 DUP2 PUSH2 0x37CF JUMP JUMPDEST ISZERO PUSH2 0x196F JUMPI PUSH1 0x0 DUP1 DUP1 PUSH2 0x1947 DUP5 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1958 DUP7 DUP3 DUP8 PUSH2 0x3F12 JUMP JUMPDEST SWAP6 POP PUSH2 0x196B DUP5 DUP5 PUSH1 0x40 DUP11 DUP7 OR OR DUP10 PUSH2 0x3FB8 JUMP JUMPDEST POP POP POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x19F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A0D JUMPI PUSH2 0x1A0D PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1A36 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1AAE JUMPI PUSH2 0x1A81 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A5A JUMPI PUSH2 0x1A5A PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A74 JUMPI PUSH2 0x1A74 PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x7B0 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A93 JUMPI PUSH2 0x1A93 PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x1AA7 DUP2 PUSH2 0x5953 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A3C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1B10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B9C SWAP2 SWAP1 PUSH2 0x59D2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86B DUP3 PUSH2 0x4029 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1C07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x1C11 PUSH1 0x0 PUSH2 0x403F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1C67 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x1C8D JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1CD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5949361A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SUB PUSH2 0x1D25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5949361A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1D7A SWAP1 JUMPDEST DUP4 PUSH2 0x40A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x42842E0E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP7 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EA6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C61626C653A2043616C6C6572206973206E6F74206120636F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E74726F6C6C6572000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x1EB8 SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH32 0xFCA247AC00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xFCA247AC SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F4D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F71 SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST SWAP2 POP PUSH2 0x1FB8 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP3 POP DUP9 SWAP2 POP DUP8 SWAP1 POP DUP10 PUSH2 0x39BB JUMP JUMPDEST POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER SUB PUSH2 0x2043 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20D9 DUP5 PUSH2 0x871 JUMP JUMPDEST POP DUP5 AND PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP6 AND EQ SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x214C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x229E JUMPI PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xA22CB465 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xA22CB465 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2299 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x2415 JUMPI PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xA22CB465 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2375 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xA22CB465 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2425 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x244B JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP4 PUSH1 0x2 PUSH1 0x0 PUSH2 0x2459 DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH4 0xFFFFFFFF DUP3 DUP3 AND AND ISZERO PUSH2 0x2487 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x2491 DUP8 DUP8 PUSH2 0x41B2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x249E DUP11 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 DUP10 OR SWAP9 POP PUSH2 0x24B5 DUP11 DUP5 DUP12 DUP5 PUSH2 0x3F5C JUMP JUMPDEST POP SWAP7 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH2 0x24D0 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x24F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2507 SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x2542 DUP4 DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25EA SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2634 JUMPI PUSH1 0x0 PUSH2 0x2605 DUP6 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x20 DUP2 AND ISZERO PUSH2 0x262E JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST POP PUSH2 0x266A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x263F DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x40 DUP2 AND ISZERO PUSH2 0x2668 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH2 0x267C SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH2 0x26B7 DUP14 DUP3 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 POP PUSH2 0x26C5 DUP14 DUP9 DUP12 DUP12 PUSH2 0x3B15 JUMP JUMPDEST SWAP8 POP PUSH2 0x26D0 DUP8 PUSH2 0x37CF JUMP JUMPDEST PUSH2 0x27DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP15 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2761 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2785 SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST POP PUSH2 0x27D8 DUP14 DUP9 DUP15 DUP15 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP14 DUP14 DUP14 PUSH2 0x3B5B JUMP JUMPDEST PUSH2 0x282F JUMP JUMPDEST PUSH2 0x282F DUP14 DUP9 DUP15 DUP15 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP14 DUP14 DUP14 PUSH2 0x3C15 JUMP JUMPDEST POP POP POP POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP4 PUSH2 0x284A DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x2870 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP5 PUSH1 0x1C PUSH1 0x0 PUSH2 0x287E DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH4 0xFFFFFFFF DUP3 DUP3 AND AND ISZERO PUSH2 0x28AC JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCF40882300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xCF408823 SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2945 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x296B DUP10 PUSH1 0x0 SHR PUSH2 0x871 JUMP JUMPDEST POP POP SWAP1 POP PUSH2 0x298F DUP2 DUP10 DUP12 PUSH1 0x0 SHR PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x41E1 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP7 SWAP1 MSTORE DUP2 DUP4 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x29CC DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x29F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH32 0x6C32148F748ABA23997146D7FE89E962E3CC30271290FB96F5F4337756C03B52 DUP5 ADD PUSH2 0x2A4B JUMPI PUSH1 0x40 MLOAD PUSH32 0x615A470300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0x2A69 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ JUMPDEST ISZERO PUSH2 0x2AAB JUMPI PUSH1 0x40 MLOAD PUSH32 0x5949361A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1B9C SWAP1 PUSH2 0x1D74 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2B36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x2BC6 SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x2C24 PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2C32 DUP4 PUSH2 0x438F JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF9547A9E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xF9547A9E SWAP1 PUSH2 0x2C89 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A2A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CB7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D0C PUSH1 0x0 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x4424 SWAP1 POP JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x2D55 DUP3 DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x44DB SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 SWAP2 POP PUSH32 0x6C32148F748ABA23997146D7FE89E962E3CC30271290FB96F5F4337756C03B52 DUP3 ADD PUSH2 0x2DD9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615A470300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E7E SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x2F3F JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F3D SWAP2 SWAP1 PUSH2 0x59D2 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x2F66 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO PUSH2 0x3011 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x300C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5B0FC9C300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x5B0FC9C3 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3092 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x298F DUP3 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP DUP14 SWAP4 POP SWAP2 POP DUP2 SWAP1 POP PUSH2 0x459A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x30FF SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x313C DUP8 DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x314A DUP4 PUSH2 0x438F JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0x24C1AF4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x24C1AF44 SWAP1 PUSH2 0x31A6 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x0 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A80 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x325F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x3299 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x330B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F74206F776E6572206E6F72 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20617070726F7665640000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x15AA DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x41E1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3372 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x33EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x2415 DUP2 PUSH2 0x403F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3403 DUP5 PUSH2 0x1BA2 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x344A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x3465 SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3512 SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x35D3 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35D1 SWAP2 SWAP1 PUSH2 0x59D2 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x3643 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 DUP4 ADD SWAP4 DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH4 0x168AB55D PUSH1 0xE3 SHL SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLER PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x36E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x28ED4F6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP PUSH4 0x28ED4F6C SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3779 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x37C2 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP3 POP DUP11 SWAP2 POP DUP10 SWAP1 POP DUP9 PUSH2 0x39BB JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x37DB DUP4 PUSH2 0x1BA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x86B JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x386D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3891 SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH1 0xC0 DUP3 SWAP1 SHR DUP3 TIMESTAMP DUP3 LT ISZERO PUSH2 0x38C8 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x38D0 JUMP JUMPDEST PUSH1 0xA0 DUP2 SWAP1 SHR SWAP3 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x396B JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x86B JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x86B JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP7 ADD KECCAK256 PUSH1 0x0 SWAP1 DUP2 PUSH2 0x3A17 PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A26 DUP3 DUP5 DUP9 PUSH2 0x4604 JUMP JUMPDEST SWAP8 POP SWAP2 POP PUSH2 0x3A5D SWAP1 POP PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE DUP4 DUP12 DUP12 PUSH1 0x40 DUP13 OR DUP12 PUSH2 0x3B5B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x3B08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B21 DUP6 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x0 DUP1 PUSH2 0x3B34 DUP9 PUSH1 0x0 SHR PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3B44 DUP8 DUP8 DUP5 PUSH2 0x3EDC JUMP JUMPDEST PUSH2 0x3B4F DUP6 DUP5 DUP4 PUSH2 0x3F12 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x3BFD SWAP2 DUP8 SWAP2 PUSH2 0x3B7A SWAP1 PUSH2 0x5885 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3BA6 SWAP1 PUSH2 0x5885 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3BF3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3BC8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3BF3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3BD6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x46DC JUMP JUMPDEST SWAP1 POP PUSH2 0x3C0C DUP7 DUP3 DUP7 DUP7 DUP7 PUSH2 0x459A JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C20 DUP7 PUSH2 0x1BA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3C46 DUP7 PUSH1 0x5 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH2 0x3B7A SWAP1 PUSH2 0x5885 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x3C63 SWAP1 PUSH2 0x5885 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SUB PUSH2 0x3C86 JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3C84 DUP3 DUP3 PUSH2 0x5B2E JUMP JUMPDEST POP JUMPDEST PUSH2 0x3C92 DUP8 DUP4 DUP7 DUP7 PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3CB0 JUMPI PUSH2 0x3CAB DUP8 PUSH1 0x0 PUSH2 0x40A7 JUMP JUMPDEST PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x1E17 DUP3 DUP7 DUP10 PUSH1 0x0 SHR PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x41E1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x3ED4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0x3D2D SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C2A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3D68 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3D65 SWAP2 DUP2 ADD SWAP1 PUSH2 0x5C7C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x3E1D JUMPI PUSH2 0x3D74 PUSH2 0x5C99 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0x3DAD JUMPI POP PUSH2 0x3D88 PUSH2 0x5CB5 JUMP JUMPDEST DUP1 PUSH2 0x3D93 JUMPI POP PUSH2 0x3DAF JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82A SWAP2 SWAP1 PUSH2 0x4DB1 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x3C0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 DUP2 AND EQ PUSH1 0x1 DUP3 AND ISZERO DUP2 DUP1 ISZERO PUSH2 0x3EF1 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x15AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x3F34 JUMPI DUP2 SWAP4 POP JUMPDEST DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3F54 JUMPI DUP3 SWAP4 POP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3F68 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 AND DUP2 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP6 SWAP2 PUSH32 0x936318E296F824E203B086D97BB155A0200CEC4847EFEA1FB4B9B7F924157355 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH2 0x3FC2 DUP5 DUP4 PUSH2 0x4785 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 SWAP1 SHL AND OR PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP5 SWAP1 SHL AND OR SWAP1 SSTORE PUSH2 0x1B9C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4035 DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x40B2 DUP3 PUSH1 0x1 PUSH2 0x20CD JUMP JUMPDEST ISZERO PUSH2 0x40D3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x40DC DUP3 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5B0FC9C300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5B0FC9C3 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x415F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4173 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE DUP5 SWAP3 POP PUSH32 0xEE2BA1195C65BCF218A83D874335C6BF9D9067B4C672F3C3BF16CF40DE7586C4 SWAP2 POP PUSH1 0x20 ADD PUSH2 0x2BA8 JUMP JUMPDEST PUSH1 0x40 DUP2 AND ISZERO PUSH2 0x41DD JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x41EF DUP7 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x4200 DUP3 PUSH1 0x4 AND ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x4220 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST DUP5 PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x4241 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x42B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x42D4 JUMPI POP POP POP PUSH2 0x15AA JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 SWAP1 SHL AND OR PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP5 SWAP1 SHL AND OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 SWAP1 DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1E17 CALLER DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x4879 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x43D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x24C1D6D400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x43E0 DUP4 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x4406 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x440F DUP4 PUSH2 0x871 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x441F SWAP1 POP DUP4 PUSH2 0x47BE JUMP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD DUP4 LT PUSH2 0x4477 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726561644C6162656C3A20496E646578206F7574206F6620626F756E64730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x448B JUMPI PUSH2 0x448B PUSH2 0x58F5 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP DUP1 ISZERO PUSH2 0x44B7 JUMPI PUSH2 0x44B0 DUP6 PUSH2 0x44AA DUP7 PUSH1 0x1 PUSH2 0x5D5D JUMP JUMPDEST DUP4 PUSH2 0x49D4 JUMP JUMPDEST SWAP3 POP PUSH2 0x44BC JUMP JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST PUSH2 0x44C6 DUP2 DUP6 PUSH2 0x5D5D JUMP JUMPDEST PUSH2 0x44D1 SWAP1 PUSH1 0x1 PUSH2 0x5D5D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x44EA DUP6 DUP6 PUSH2 0x4424 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x455C JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x4502 SWAP2 SWAP1 PUSH2 0x5D70 JUMP JUMPDEST DUP5 EQ PUSH2 0x4550 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D65686173683A204A756E6B20617420656E64206F66206E616D65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x86B SWAP1 POP JUMP JUMPDEST PUSH2 0x4566 DUP6 DUP3 PUSH2 0x44DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x45B2 DUP6 DUP3 PUSH2 0x5B2E JUMP JUMPDEST POP PUSH2 0x45BF DUP6 DUP5 DUP5 DUP5 PUSH2 0x49F8 JUMP JUMPDEST DUP5 PUSH32 0x8CE7013E8ABEBC55C3890A68F5A27C67C3F7EFA64E584DE5FB22363C606FD340 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x45F5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D83 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x4612 DUP8 PUSH2 0x871 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD6E4FA8600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD6E4FA86 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x469B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46BF SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST SWAP1 POP PUSH2 0x46CC DUP7 DUP4 DUP4 PUSH2 0x3F12 JUMP JUMPDEST SWAP6 POP DUP6 SWAP3 POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP4 MLOAD LT ISZERO PUSH2 0x471A JUMPI PUSH1 0x40 MLOAD PUSH32 0x280DACB600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP4 MLOAD GT ISZERO PUSH2 0x4758 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0xE3BA295F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82A SWAP2 SWAP1 PUSH2 0x4DB1 JUMP JUMPDEST DUP3 MLOAD DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x476E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5DCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0xFFFFFFBF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x479D JUMPI POP PUSH1 0x41 DUP2 DUP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x41DD JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x47CC DUP5 PUSH2 0x871 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA0 DUP5 SWAP1 SHL AND PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP5 SWAP1 SHL AND OR SWAP1 SSTORE SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x3ED4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0x48D6 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5E2C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x4911 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x490E SWAP2 DUP2 ADD SWAP1 PUSH2 0x5C7C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x491D JUMPI PUSH2 0x3D74 PUSH2 0x5C99 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x3C0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x49E3 DUP4 DUP6 PUSH2 0x5D5D JUMP JUMPDEST GT ISZERO PUSH2 0x49EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4A02 DUP5 DUP4 PUSH2 0x4785 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0D DUP6 PUSH2 0x1BA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x4A5E JUMPI PUSH2 0x4A27 DUP6 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE DUP6 SWAP1 PUSH32 0xEE2BA1195C65BCF218A83D874335C6BF9D9067B4C672F3C3BF16CF40DE7586C4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH2 0x15AA DUP6 DUP6 DUP6 DUP6 DUP4 PUSH1 0x0 DUP1 DUP1 PUSH2 0x4A73 DUP5 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x4A99 JUMPI DUP1 SWAP5 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x4AF0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E74206F66206578697374696E6720746F6B656E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x4B6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SUB PUSH2 0x4BEA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206E65774F776E65722063616E6E6F742062652074686520 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4E616D655772617070657220636F6E7472616374000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 DUP9 DUP6 OR PUSH1 0xA0 SHL AND OR PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP9 SWAP1 SHL AND OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 SWAP2 CALLER SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1E17 CALLER PUSH1 0x0 DUP10 DUP8 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4879 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4CDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4CE8 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x2415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D5A DUP2 PUSH2 0x4D0F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D7C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4D64 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4D9D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4D61 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4D5A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D85 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4DF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x4E04 PUSH1 0x20 DUP5 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4E1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4E37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4E4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4E6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4E79 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4E89 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4EAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4EB8 DUP9 DUP3 DUP10 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4EDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D5A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4EF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4F0B DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4F6B JUMPI PUSH2 0x4F6B PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4F8C JUMPI PUSH2 0x4F8C PUSH2 0x4F16 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4FB6 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4FC3 DUP3 DUP3 PUSH2 0x4F45 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP6 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4FD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x5025 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5043 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x504F DUP11 DUP3 DUP12 ADD PUSH2 0x4F9A JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x5060 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x5070 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH2 0x507E PUSH1 0x80 DUP10 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP3 POP PUSH2 0x508C PUSH1 0xA0 DUP10 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP2 POP PUSH2 0x509A PUSH1 0xC0 DUP10 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x50C2 JUMPI PUSH2 0x50C2 PUSH2 0x4F16 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x50DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x50EA DUP3 PUSH2 0x50A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50F7 DUP3 DUP3 PUSH2 0x4F45 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0x5117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x5132 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x511B JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x5160 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x5170 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x518D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5199 DUP10 DUP4 DUP11 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x51AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x51BB DUP10 DUP4 DUP11 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x51D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51DE DUP9 DUP3 DUP10 ADD PUSH2 0x4F9A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x5218 PUSH1 0x40 DUP7 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP2 POP PUSH2 0x5226 PUSH1 0x60 DUP7 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x525C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x527D DUP3 PUSH2 0x50A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x528A DUP3 DUP3 PUSH2 0x4F45 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x52AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x52D1 JUMPI DUP6 CALLDATALOAD PUSH2 0x52C2 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x52AF JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x52E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44D1 DUP6 DUP3 DUP7 ADD PUSH2 0x50CC JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5324 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5308 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4D5A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x52F4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x5362 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x5372 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x53AA DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x53BA DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x53E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5403 DUP11 DUP3 DUP12 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x5417 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x542E DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 POP PUSH2 0x543C PUSH1 0x80 DUP10 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP2 POP PUSH2 0x509A PUSH1 0xA0 DUP10 ADD PUSH2 0x4DC4 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x546B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5476 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4F0B DUP2 PUSH2 0x544A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x4E04 PUSH1 0x20 DUP5 ADD PUSH2 0x4FF6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x54C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54EC DUP10 DUP3 DUP11 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x5500 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 POP PUSH2 0x550E PUSH1 0x60 DUP9 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP2 POP PUSH2 0x551C PUSH1 0x80 DUP9 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x553E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x5550 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x5218 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x53BA DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x55A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55C7 DUP8 DUP3 DUP9 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x55DB DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x55EB DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5614 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4F0B DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x563C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x565A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5666 DUP9 DUP3 DUP10 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x567A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x568A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x56B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x56BB DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x56CB DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x56F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x51DE DUP9 DUP3 DUP10 ADD PUSH2 0x4F9A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x571A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x573D DUP10 DUP3 DUP11 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x5751 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH2 0x575F PUSH1 0x40 DUP9 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP3 POP PUSH2 0x576D PUSH1 0x60 DUP9 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x577D DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x579D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x57B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x57C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x57D0 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x57DD DUP3 DUP3 PUSH2 0x4F45 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP7 PUSH1 0x20 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x57F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5803 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x4D61 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x583C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5848 DUP9 DUP3 DUP10 ADD PUSH2 0x4F9A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x5859 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH2 0x5867 PUSH1 0x40 DUP8 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP3 POP PUSH2 0x5875 PUSH1 0x60 DUP8 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x568A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x5899 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x58D2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4D5A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x5984 JUMPI PUSH2 0x5984 PUSH2 0x5924 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x599E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x52F4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x59B0 DUP2 DUP6 PUSH2 0x52F4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4D5A DUP2 PUSH2 0x544A JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH1 0x0 PUSH2 0x5A3E PUSH1 0xA0 DUP4 ADD DUP9 DUP11 PUSH2 0x59FF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE DUP1 DUP5 AND PUSH1 0x80 DUP5 ADD MSTORE POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP9 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5A9A PUSH1 0xE0 DUP4 ADD DUP10 DUP12 PUSH2 0x59FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xC0 SWAP1 SWAP2 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x5B29 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x5B0A JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3ED4 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5B16 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B48 JUMPI PUSH2 0x5B48 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x5B5C DUP2 PUSH2 0x5B56 DUP5 SLOAD PUSH2 0x5885 JUMP JUMPDEST DUP5 PUSH2 0x5AE3 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x5BAF JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x5B79 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x3ED4 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5BDE JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x5BBF JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x5C1A JUMPI DUP8 DUP6 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x5C56 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x52F4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x5C68 DUP2 DUP7 PUSH2 0x52F4 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x3B4F DUP2 DUP6 PUSH2 0x4D85 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4D5A DUP2 PUSH2 0x4D0F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x5CB2 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x5CC3 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP1 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x5D11 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x5D29 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5D43 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x5D52 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x4F45 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x86B JUMPI PUSH2 0x86B PUSH2 0x5924 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x86B JUMPI PUSH2 0x86B PUSH2 0x5924 JUMP JUMPDEST PUSH1 0x80 DUP2 MSTORE PUSH1 0x0 PUSH2 0x5D96 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4D85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x60 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP5 PUSH1 0xF8 SHL AND DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x5E08 DUP2 PUSH1 0x1 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4D61 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x5E1F DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4D61 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x5E64 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4D85 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xB7 DUP11 0xB8 0xDE SWAP9 PUSH5 0x6FD2CE04D6 0x2C 0x4A 0xDD 0x2B SIGNEXTEND 0xA8 0xC3 INVALID 0xD6 0xDB 0xE5 0xEB DUP2 0xC PUSH6 0xECB6A839EA64 PUSH20 0x6F6C634300081100330000000000000000000000 ",
              "sourceMap": "1236:31158:101:-:0;;;2000:720;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;921:32:2;719:10:14;921:18:2;:32::i;:::-;-1:-1:-1;;;;;2124:10:101;;;;;2144:22;;;;;2176:15;:34;;-1:-1:-1;;;;;;2176:34:101;;;;;;;;;;-1:-1:-1;;;;;;6677:16:97;:131;;;:16;:131;2647:25:101;;;;;;;;;-1:-1:-1;2647:25:101;;-1:-1:-1;6677:16:97;2647:25:101;;;;;;:16;;;:5;:16;;;;:25;;:16;:25;:::i;:::-;-1:-1:-1;2682:31:101;;;;;;;;;;;;;-1:-1:-1;;;2682:31:101;;;;;;;;1702:66;-1:-1:-1;2682:15:101;;;;:31;;:15;:31;:::i;:::-;;2000:720;;;1236:31158;;2270:187:2;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;-1:-1:-1;;;;;;2378:17:2;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:136:111:-;-1:-1:-1;;;;;94:31:111;;84:42;;74:70;;140:1;137;130:12;74:70;14:136;:::o;155:597::-;306:6;314;322;375:2;363:9;354:7;350:23;346:32;343:52;;;391:1;388;381:12;343:52;423:9;417:16;442:36;472:5;442:36;:::i;:::-;547:2;532:18;;526:25;497:5;;-1:-1:-1;560:38:111;526:25;560:38;:::i;:::-;669:2;654:18;;648:25;617:7;;-1:-1:-1;682:38:111;648:25;682:38;:::i;:::-;739:7;729:17;;;155:597;;;;;:::o;757:127::-;818:10;813:3;809:20;806:1;799:31;849:4;846:1;839:15;873:4;870:1;863:15;889:380;968:1;964:12;;;;1011;;;1032:61;;1086:4;1078:6;1074:17;1064:27;;1032:61;1139:2;1131:6;1128:14;1108:18;1105:38;1102:161;;1185:10;1180:3;1176:20;1173:1;1166:31;1220:4;1217:1;1210:15;1248:4;1245:1;1238:15;1102:161;;889:380;;;:::o;1399:544::-;1500:2;1495:3;1492:11;1489:448;;;1536:1;1561:5;1557:2;1550:17;1606:4;1602:2;1592:19;1676:2;1664:10;1660:19;1657:1;1653:27;1647:4;1643:38;1712:4;1700:10;1697:20;1694:47;;;-1:-1:-1;1735:4:111;1694:47;1790:2;1785:3;1781:12;1778:1;1774:20;1768:4;1764:31;1754:41;;1845:82;1863:2;1856:5;1853:13;1845:82;;;1908:17;;;1889:1;1878:13;1845:82;;;1849:3;;;1489:448;1399:544;;;:::o;2119:1349::-;2238:10;;-1:-1:-1;;;;;2260:30:111;;2257:56;;;2293:18;;:::i;:::-;2322:96;2411:6;2371:38;2403:4;2397:11;2371:38;:::i;:::-;2365:4;2322:96;:::i;:::-;2473:4;;2537:2;2526:14;;2554:1;2549:662;;;;3255:1;3272:6;3269:89;;;-1:-1:-1;3324:19:111;;;3318:26;3269:89;-1:-1:-1;;2076:1:111;2072:11;;;2068:24;2064:29;2054:40;2100:1;2096:11;;;2051:57;3371:81;;2519:943;;2549:662;1346:1;1339:14;;;1383:4;1370:18;;-1:-1:-1;;2585:20:111;;;2702:236;2716:7;2713:1;2710:14;2702:236;;;2805:19;;;2799:26;2784:42;;2897:27;;;;2865:1;2853:14;;;;2732:19;;2702:236;;;2706:3;2966:6;2957:7;2954:19;2951:201;;;3027:19;;;3021:26;-1:-1:-1;;3110:1:111;3106:14;;;3122:3;3102:24;3098:37;3094:42;3079:58;3064:74;;2951:201;-1:-1:-1;;;;;3198:1:111;3182:14;;;3178:22;3165:36;;-1:-1:-1;2119:1349:111:o;:::-;1236:31158:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_addLabelAndWrap_19983": {
                  "entryPoint": 15195,
                  "id": 19983,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_addLabel_19856": {
                  "entryPoint": 18140,
                  "id": 19856,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_burn_17529": {
                  "entryPoint": 18366,
                  "id": 17529,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_canFusesBeBurned_20488": {
                  "entryPoint": 18309,
                  "id": 20488,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_canTransfer_19789": {
                  "entryPoint": null,
                  "id": 19789,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_checkForParentCannotControl_20509": {
                  "entryPoint": 16818,
                  "id": 20509,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_checkParentFusesAndExpiry_20168": {
                  "entryPoint": 15125,
                  "id": 20168,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_checkParentFuses_20203": {
                  "entryPoint": 16092,
                  "id": 20203,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_doSafeBatchTransferAcceptanceCheck_17741": {
                  "entryPoint": 15568,
                  "id": 17741,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_doSafeTransferAcceptanceCheck_17674": {
                  "entryPoint": 18553,
                  "id": 17674,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_getETH2LDDataAndNormaliseExpiry_20260": {
                  "entryPoint": 17924,
                  "id": 20260,
                  "parameterSlots": 3,
                  "returnSlots": 3
                },
                "@_makeNode_19807": {
                  "entryPoint": null,
                  "id": 19807,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_17491": {
                  "entryPoint": null,
                  "id": 17491,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_mint_19915": {
                  "entryPoint": 18936,
                  "id": 19915,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_normaliseExpiry_20292": {
                  "entryPoint": 16146,
                  "id": 20292,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_prepareUpgrade_20039": {
                  "entryPoint": 17295,
                  "id": 20039,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@_setData_17379": {
                  "entryPoint": null,
                  "id": 17379,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_setData_20456": {
                  "entryPoint": 16312,
                  "id": 20456,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_setFuses_20427": {
                  "entryPoint": 16220,
                  "id": 20427,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_tokens_16890": {
                  "entryPoint": null,
                  "id": 16890,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_transferOwnership_641": {
                  "entryPoint": 16447,
                  "id": 641,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_17609": {
                  "entryPoint": 16865,
                  "id": 17609,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_unwrap_20402": {
                  "entryPoint": 16551,
                  "id": 20402,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_updateName_20122": {
                  "entryPoint": 15381,
                  "id": 20122,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_wrapETH2LD_20365": {
                  "entryPoint": 14779,
                  "id": 20365,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@_wrap_19950": {
                  "entryPoint": 17818,
                  "id": 19950,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@allFusesBurned_19636": {
                  "entryPoint": 8397,
                  "id": 19636,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOfBatch_17044": {
                  "entryPoint": 6520,
                  "id": 17044,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_16980": {
                  "entryPoint": 1968,
                  "id": 16980,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@controllers_16826": {
                  "entryPoint": null,
                  "id": 16826,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@ens_18150": {
                  "entryPoint": null,
                  "id": 18150,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getData_17154": {
                  "entryPoint": 14497,
                  "id": 17154,
                  "parameterSlots": 1,
                  "returnSlots": 3
                },
                "@getData_18323": {
                  "entryPoint": 2161,
                  "id": 18323,
                  "parameterSlots": 1,
                  "returnSlots": 3
                },
                "@isApprovedForAll_17096": {
                  "entryPoint": null,
                  "id": 17096,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_2556": {
                  "entryPoint": null,
                  "id": 2556,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isTokenOwnerOrApproved_18479": {
                  "entryPoint": 13303,
                  "id": 18479,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isWrapped_19668": {
                  "entryPoint": 14287,
                  "id": 19668,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@keccak_16698": {
                  "entryPoint": 18900,
                  "id": 16698,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@metadataService_18158": {
                  "entryPoint": null,
                  "id": 18158,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@name_18166": {
                  "entryPoint": null,
                  "id": 18166,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@namehash_16752": {
                  "entryPoint": 17627,
                  "id": 16752,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@names_18163": {
                  "entryPoint": 3563,
                  "id": 18163,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@onERC721Received_19774": {
                  "entryPoint": 2772,
                  "id": 19774,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@ownerOf_16912": {
                  "entryPoint": 16425,
                  "id": 16912,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@ownerOf_18302": {
                  "entryPoint": 7074,
                  "id": 18302,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_570": {
                  "entryPoint": null,
                  "id": 570,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@readLabel_16816": {
                  "entryPoint": 17444,
                  "id": 16816,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@recoverFunds_15872": {
                  "entryPoint": 6838,
                  "id": 15872,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@registerAndWrapETH2LD_18625": {
                  "entryPoint": 7713,
                  "id": 18625,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "@registrar_18154": {
                  "entryPoint": null,
                  "id": 18154,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@renew_18701": {
                  "entryPoint": 6058,
                  "id": 18701,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@renounceOwnership_598": {
                  "entryPoint": 7085,
                  "id": 598,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@safeBatchTransferFrom_17338": {
                  "entryPoint": 4627,
                  "id": 17338,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@safeTransferFrom_17202": {
                  "entryPoint": 12771,
                  "id": 17202,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@setApprovalForAll_17078": {
                  "entryPoint": 8133,
                  "id": 17078,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setChildFuses_19204": {
                  "entryPoint": 5553,
                  "id": 19204,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setController_16853": {
                  "entryPoint": 10972,
                  "id": 16853,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setFuses_18970": {
                  "entryPoint": 9240,
                  "id": 18970,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@setMetadataService_18337": {
                  "entryPoint": 3196,
                  "id": 18337,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@setRecord_19460": {
                  "entryPoint": 10303,
                  "id": 19460,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setResolver_19484": {
                  "entryPoint": 3344,
                  "id": 19484,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSubnodeOwner_19294": {
                  "entryPoint": 9411,
                  "id": 19294,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@setSubnodeRecord_19403": {
                  "entryPoint": 3717,
                  "id": 19403,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "@setTTL_19508": {
                  "entryPoint": 2491,
                  "id": 19508,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setUpgradeContract_18428": {
                  "entryPoint": 8434,
                  "id": 18428,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@supportsInterface_16943": {
                  "entryPoint": 14552,
                  "id": 16943,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_18285": {
                  "entryPoint": 2188,
                  "id": 18285,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_3081": {
                  "entryPoint": null,
                  "id": 3081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferOwnership_621": {
                  "entryPoint": 13080,
                  "id": 621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@unwrapETH2LD_18868": {
                  "entryPoint": 7187,
                  "id": 18868,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@unwrap_18921": {
                  "entryPoint": 10650,
                  "id": 18921,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@upgradeContract_18175": {
                  "entryPoint": null,
                  "id": 18175,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@upgradeETH2LD_19015": {
                  "entryPoint": 11188,
                  "id": 19015,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@upgrade_19064": {
                  "entryPoint": 12525,
                  "id": 19064,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@uri_18352": {
                  "entryPoint": 2350,
                  "id": 18352,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@wrapETH2LD_18571": {
                  "entryPoint": 13394,
                  "id": 18571,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@wrap_18804": {
                  "entryPoint": 11461,
                  "id": 18804,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "abi_decode_array_uint256_dyn": {
                  "entryPoint": 20684,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 19981,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_string": {
                  "entryPoint": 20378,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 22744,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 22006,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr": {
                  "entryPoint": 20797,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 21314,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 20054,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr": {
                  "entryPoint": 22168,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 21592,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 19658,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr": {
                  "entryPoint": 21041,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 22994,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 20198,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_addresst_address": {
                  "entryPoint": 21379,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_addresst_addresst_uint64": {
                  "entryPoint": 21800,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_address": {
                  "entryPoint": 21856,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_uint32t_uint64": {
                  "entryPoint": 20971,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32t_string_calldata_ptrt_addresst_address": {
                  "entryPoint": 22052,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bytes32t_string_calldata_ptrt_addresst_uint32t_uint64": {
                  "entryPoint": 21673,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_bytes32t_string_memory_ptrt_addresst_addresst_uint64t_uint32t_uint64": {
                  "entryPoint": 20490,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_bytes32t_uint32": {
                  "entryPoint": 21638,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_uint64": {
                  "entryPoint": 19937,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 19773,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 23676,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_addresst_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_contract$_IMetadataService_$17752": {
                  "entryPoint": 20169,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_INameWrapperUpgrade_$18063": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_calldata_ptrt_addresst_address": {
                  "entryPoint": 21902,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256t_addresst_uint32t_uint64": {
                  "entryPoint": 21445,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint32t_uint64t_address": {
                  "entryPoint": 22273,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                  "entryPoint": 22411,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptrt_address_payablet_uint32t_uint64t_address_payable": {
                  "entryPoint": 22541,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 19702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 22969,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256t_uint32t_uint64": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_uint32": {
                  "entryPoint": 20470,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint64": {
                  "entryPoint": 19908,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_array_uint256_dyn": {
                  "entryPoint": 21236,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 19845,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_calldata": {
                  "entryPoint": 23039,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 23023,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_uint8_t_string_memory_ptr_t_bytes_memory_ptr__to_t_uint8_t_string_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 24011,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 23594,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 24108,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint32_t_uint64__to_t_address_t_uint32_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 21295,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22923,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint64__to_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_uint64__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_string_calldata_ptr_t_address_t_address_t_rational_0_by_1_t_uint32_t_uint64__to_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__fromStack_reversed": {
                  "entryPoint": 23168,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_address_t_uint32_t_uint64__to_t_bytes_memory_ptr_t_address_t_uint32_t_uint64__fromStack_reversed": {
                  "entryPoint": 23939,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBaseRegistrar_$11222__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IMetadataService_$17752__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_INameWrapperUpgrade_$18063__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint32_t_uint64_t_address__to_t_string_memory_ptr_t_address_t_uint32_t_uint64_t_address__fromStack_reversed": {
                  "entryPoint": 23082,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 19889,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0a5a3f6c2833a0d5056e4c87913f3b2ad716b97085ed243cd04d020b3830fcac__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_52680399c4a01b55318dc7a1e656395c494f95152fe03ad468b9b7af702c670b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_rational_1_by_1__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32_t_uint64__to_t_uint32_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_allocation_size_array_uint256_dyn": {
                  "entryPoint": 20648,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_string": {
                  "entryPoint": 20338,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_dataslot_bytes_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 23901,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 23920,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_bytes_storage": {
                  "entryPoint": 23267,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage": {
                  "entryPoint": 23342,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 19809,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 22661,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 20293,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 22867,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 22820,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 22773,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 20246,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "return_data_selector": {
                  "entryPoint": 23705,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "try_decode_error_message": {
                  "entryPoint": 23733,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "validator_revert_address": {
                  "entryPoint": 19637,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 21578,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 19727,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:48298:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "59:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "146:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "155:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "158:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "148:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "148:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "148:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "82:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "93:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "100:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "89:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "89:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "79:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "79:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "72:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "72:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "69:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "48:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:154:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "260:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "306:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "315:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "318:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "308:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "308:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "308:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "281:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "290:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "277:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "277:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "302:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "273:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "273:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "270:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "331:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "357:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "344:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "344:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "335:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "401:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "376:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "376:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "376:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "416:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "426:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "416:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "440:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "467:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "478:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "463:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "463:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "450:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "450:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "440:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "218:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "229:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "241:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "249:6:111",
                            "type": ""
                          }
                        ],
                        "src": "173:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "594:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "604:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "616:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "627:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "612:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "604:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "646:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "657:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "639:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "639:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "639:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "563:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "574:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "585:4:111",
                            "type": ""
                          }
                        ],
                        "src": "493:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "745:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "791:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "800:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "803:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "793:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "793:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "793:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "766:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "775:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "762:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "762:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "787:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "758:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "758:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "755:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "816:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "839:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "826:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "826:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "816:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "711:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "722:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "734:6:111",
                            "type": ""
                          }
                        ],
                        "src": "675:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1013:253:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1023:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1035:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1046:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1031:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1031:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1023:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1065:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1080:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1088:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1076:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1076:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1058:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1058:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1058:74:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1152:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1163:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1148:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1148:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1172:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1180:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1168:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1168:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1141:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1141:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1141:51:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1212:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1223:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1208:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1208:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1232:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1240:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1228:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1228:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1201:59:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint32_t_uint64__to_t_address_t_uint32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "966:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "977:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "985:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "993:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1004:4:111",
                            "type": ""
                          }
                        ],
                        "src": "860:406:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1315:133:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1426:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1435:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1438:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1428:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1428:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1428:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1338:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1349:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1356:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1345:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1345:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1335:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1335:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1328:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1328:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1325:117:111"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1304:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1271:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1522:176:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1568:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1577:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1580:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1570:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1570:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1570:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1543:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1552:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1539:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1539:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1564:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1535:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1535:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1532:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1593:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1619:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1606:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1606:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1597:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1662:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1638:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1638:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1638:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1677:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1687:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1488:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1499:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1511:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1453:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1798:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1808:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1820:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1816:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1816:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1808:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1850:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1875:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1868:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1868:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1861:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1861:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1843:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1843:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1843:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1767:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1778:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1789:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1703:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1961:184:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1971:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1980:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1975:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2040:63:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2065:3:111"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2070:1:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2061:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2061:11:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2084:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2089:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2080:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2080:11:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2074:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2074:18:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2054:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2054:39:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2054:39:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2001:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2004:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1998:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1998:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2012:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2014:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2023:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2026:2:111",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2019:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2019:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2014:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1994:3:111",
                                "statements": []
                              },
                              "src": "1990:113:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "2123:3:111"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2128:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2119:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2119:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2137:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2112:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2112:27:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2112:27:111"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "1939:3:111",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "1944:3:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1949:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1895:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2200:280:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2210:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2230:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2224:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2224:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2214:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2252:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2257:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2245:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2245:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2245:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2312:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2319:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2308:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2308:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2330:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2335:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2326:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2326:14:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2342:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "2273:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2273:76:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2273:76:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2358:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2373:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2386:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2394:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2382:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2382:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2399:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2378:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2378:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2369:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2369:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2469:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2365:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2365:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2358:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2177:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2184:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2192:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2150:330:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2606:99:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2623:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2634:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2616:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2616:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2616:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2646:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2672:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2684:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2695:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2680:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2680:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2654:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2654:45:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2646:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2575:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2586:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2597:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2485:220:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2758:123:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2768:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2790:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2777:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2777:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "2768:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2859:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2868:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2871:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2861:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2861:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2861:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2819:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2830:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2837:18:111",
                                            "type": "",
                                            "value": "0xffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2826:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2826:30:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2816:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2816:41:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2809:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2809:49:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2806:69:111"
                            }
                          ]
                        },
                        "name": "abi_decode_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2737:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2748:5:111",
                            "type": ""
                          }
                        ],
                        "src": "2710:171:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2972:166:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3018:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3027:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3030:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3020:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3020:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3020:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2993:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3002:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2989:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3014:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2985:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2985:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2982:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3043:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3066:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3053:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3053:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3043:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3085:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3117:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3128:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3113:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3113:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "3095:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3095:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3085:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2930:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2941:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2953:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2961:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2886:252:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3215:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3264:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3273:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3276:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3266:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3266:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3266:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3243:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3251:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3239:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3239:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "3258:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3235:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3235:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3228:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3225:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3289:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3312:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3299:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3299:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "3289:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3362:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3371:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3374:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3364:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3364:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3364:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3334:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3342:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3331:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3331:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3328:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3387:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3403:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3411:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3399:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3399:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "3387:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3468:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3477:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3480:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3470:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3470:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3470:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3439:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "3447:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3435:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3435:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3456:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3431:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3431:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "3463:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3428:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3428:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3425:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "3178:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3186:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "3194:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3204:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3143:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3635:614:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3682:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3691:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3694:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3684:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3684:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3684:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3656:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3665:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3652:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3652:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3677:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3648:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3648:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3645:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3707:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3733:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3720:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3720:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3711:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3777:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3752:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3752:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3752:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3792:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3802:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3792:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3816:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3848:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3859:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3844:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3844:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3831:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3831:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3820:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3897:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3872:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3872:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3872:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3914:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3924:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3914:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3940:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3967:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3978:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3963:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3963:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3950:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3950:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3940:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3991:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4022:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4033:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4018:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4018:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4005:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4005:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3995:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4080:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4089:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4092:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4082:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4082:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4082:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4052:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4060:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4049:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4049:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4046:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4105:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4161:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4172:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4157:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4157:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4181:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4131:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4131:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4109:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4119:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4198:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "4208:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4198:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4225:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "4235:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4225:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3569:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3580:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3592:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3600:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3608:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3616:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3624:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3495:754:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4353:149:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4363:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4375:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4386:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4371:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4371:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4363:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4405:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4420:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4428:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4416:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4416:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4398:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4398:98:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4398:98:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4322:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4333:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4344:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4254:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4603:177:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4649:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4658:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4661:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4651:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4651:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4651:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4624:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4633:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4620:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4620:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4645:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4616:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4616:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4613:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4674:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4700:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4687:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4687:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4678:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4744:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4719:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4719:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4719:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4759:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4769:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4759:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IMetadataService_$17752",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4569:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4580:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4592:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4507:273:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4872:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4918:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4927:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4930:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4920:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4920:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4920:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4893:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4902:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4889:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4889:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4914:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4885:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4885:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4882:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4943:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4966:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4953:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4953:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4985:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5015:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5026:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5011:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5011:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4998:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4998:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4989:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5064:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5039:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5039:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5039:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5079:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5089:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5079:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4830:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4841:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4853:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4861:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4785:315:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5235:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5245:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5257:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5268:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5253:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5253:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5245:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5287:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5310:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5280:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5280:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5280:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_INameWrapperUpgrade_$18063__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5204:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5215:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5226:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5105:255:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5435:110:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5481:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5490:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5493:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5483:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5483:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5483:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5456:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5465:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5452:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5452:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5477:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5448:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5448:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5445:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5506:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5529:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5516:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5516:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5506:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5401:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5412:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5424:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5365:180:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5669:99:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5686:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5697:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5679:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5679:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5679:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5709:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5735:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5747:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5758:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5743:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5743:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5717:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5717:45:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5709:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5638:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5649:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5660:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5550:218:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5805:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5822:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5825:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5815:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5815:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5815:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5919:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5922:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5912:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5912:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5912:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5943:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5946:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5936:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5936:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5936:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5773:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6009:261:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6019:117:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6041:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "6057:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6063:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6053:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6053:13:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6068:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6049:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6049:86:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6037:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6037:99:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6023:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6211:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "6213:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6213:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6213:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6154:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6166:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6151:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6151:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6190:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6202:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6187:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6187:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "6148:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6148:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6145:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6249:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6253:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6242:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6242:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6242:22:111"
                            }
                          ]
                        },
                        "name": "finalize_allocation",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "5991:6:111",
                            "type": ""
                          },
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "5999:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5962:308:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6333:188:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6377:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "6379:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6379:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6379:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6349:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6357:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6346:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6346:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6343:56:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6408:107:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "6428:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6436:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6424:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6424:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6441:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6420:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6420:88:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6510:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6416:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6416:99:111"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "6408:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "6313:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "6324:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6275:246:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6579:457:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6628:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6637:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6640:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6630:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6630:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6630:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "6607:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6615:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6603:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6603:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "6622:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6599:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6599:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6592:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6592:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6589:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6653:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6676:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6663:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6663:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6657:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6692:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6731:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6702:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6702:32:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6696:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6743:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6763:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6757:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6757:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6747:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6795:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6803:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "6775:19:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6775:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6775:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6822:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6830:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6815:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6815:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6815:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6881:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6890:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6893:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6883:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6883:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6883:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "6856:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6864:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6852:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6852:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6869:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6848:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6848:26:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "6876:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6845:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6845:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6842:55:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6923:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6931:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6919:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6919:17:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6942:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6950:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6938:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6938:17:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6957:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "6906:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6906:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6906:54:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "6984:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6992:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6980:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6980:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6997:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6976:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6976:26:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7004:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6969:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6969:37:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6969:37:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7015:15:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "7024:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "7015:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "6553:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6561:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "6569:5:111",
                            "type": ""
                          }
                        ],
                        "src": "6526:510:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7089:115:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7099:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7121:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7108:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7108:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "7099:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7182:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7191:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7194:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7184:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7184:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7184:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7150:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7161:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7168:10:111",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7157:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7157:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7147:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7147:33:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7140:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7140:41:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7137:61:111"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "7068:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7079:5:111",
                            "type": ""
                          }
                        ],
                        "src": "7041:163:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7388:707:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7435:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7444:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7447:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7437:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7437:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7437:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7409:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7418:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7405:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7405:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7430:3:111",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7401:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7401:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7398:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7460:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7483:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7470:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7470:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7460:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7502:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7533:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7544:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7529:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7529:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7516:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7516:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7506:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7591:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7600:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7603:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7593:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7593:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7593:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7563:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7571:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7560:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7560:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7557:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7616:60:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7648:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7659:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7644:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7644:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7668:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "7626:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7626:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7616:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7685:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7715:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7726:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7711:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7711:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7698:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7698:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7689:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7764:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7739:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7739:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7739:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7779:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7789:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7779:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7803:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7835:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7846:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7831:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7831:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7818:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7818:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7807:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7884:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7859:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7859:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7859:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7901:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "7911:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7901:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7927:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7959:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7970:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7955:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7955:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "7937:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7937:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "7927:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7984:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8016:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8027:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8012:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8012:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "7994:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7994:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "7984:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8041:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8073:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8084:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8069:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8069:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "8051:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8051:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8041:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_memory_ptrt_addresst_addresst_uint64t_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7306:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7317:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7329:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7337:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7345:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7353:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7361:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "7369:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "7377:6:111",
                            "type": ""
                          }
                        ],
                        "src": "7209:886:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8201:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8211:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8223:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8234:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8219:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8219:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8211:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8253:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8264:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8246:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8246:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8246:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8170:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8181:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8192:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8100:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8407:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8417:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8429:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8440:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8425:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8425:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8417:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8459:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8474:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8482:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8470:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8470:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8452:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8452:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8452:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBaseRegistrar_$11222__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8376:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8387:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8398:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8282:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8606:114:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8650:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8652:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8652:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8652:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8622:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8630:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8619:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8619:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8616:56:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8681:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8697:1:111",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "8700:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8693:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8693:14:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8709:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8689:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8689:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "8681:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8586:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "8597:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8537:183:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8789:660:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8838:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8847:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8850:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8840:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8840:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8840:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8817:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8825:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8813:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8813:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8832:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8809:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8809:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8802:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8802:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8799:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8863:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8886:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8873:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8873:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8867:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8902:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8912:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8906:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8925:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8975:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "8935:39:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8935:43:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "8929:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8987:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9007:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9001:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9001:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8991:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9039:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "9047:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "9019:19:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9019:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9019:31:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9059:17:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "9070:6:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "9063:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9092:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9100:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9085:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9085:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9085:18:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9112:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9123:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9131:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9119:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9119:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "9112:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9143:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9165:6:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9177:1:111",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9180:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "9173:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9173:10:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9161:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9161:23:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9186:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9157:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9157:32:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "9147:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9217:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9226:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9229:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9219:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9219:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9219:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9204:6:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9212:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9201:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9201:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9198:35:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9242:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9257:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9265:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9253:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9253:15:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "9246:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9333:86:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "9354:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "9372:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9359:12:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9359:17:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9347:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9347:30:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9347:30:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9390:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "9401:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9406:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9397:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9397:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "9390:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "9288:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9293:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9285:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9285:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9301:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9303:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "9314:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9319:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9310:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9310:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "9303:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9281:3:111",
                                "statements": []
                              },
                              "src": "9277:142:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9428:15:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "9437:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "9428:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "8763:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8771:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "8779:5:111",
                            "type": ""
                          }
                        ],
                        "src": "8725:724:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9651:875:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9698:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9707:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9710:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9700:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9700:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9700:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9672:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9681:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9668:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9668:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9693:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9664:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9664:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "9661:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9723:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9749:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9736:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9736:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9727:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9793:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9768:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9768:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9768:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9808:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9818:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9808:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9832:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9864:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9875:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9860:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9860:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9847:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9847:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9836:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9913:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9888:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9888:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9888:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9930:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "9940:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9930:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9956:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9987:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9998:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9983:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9983:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9970:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9970:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9960:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10011:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10021:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10015:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10066:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10075:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10078:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10068:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10068:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10068:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10054:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10062:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10051:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10051:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10048:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10091:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10134:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10145:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10130:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10130:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10154:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "10101:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10101:61:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10091:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10171:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10204:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10215:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10200:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10200:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10187:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10187:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10175:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10248:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10257:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10260:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10250:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10250:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10250:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10234:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10244:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10231:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10231:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10228:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10273:73:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10316:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10327:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10312:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10312:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10338:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "10283:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10283:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10273:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10355:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10388:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10399:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10384:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10384:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10371:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10371:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10359:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10433:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10442:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10445:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10435:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10435:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10435:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10419:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10429:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10416:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10416:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10413:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10458:62:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10490:9:111"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10501:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10486:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10486:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10512:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10468:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10468:52:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "10458:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9585:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9596:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9608:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9616:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9624:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9632:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9640:6:111",
                            "type": ""
                          }
                        ],
                        "src": "9454:1072:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10650:274:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10697:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10706:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10709:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10699:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10699:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10699:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10671:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10680:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10667:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10667:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10692:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10663:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10663:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "10660:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10722:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10745:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10732:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10732:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10722:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10764:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10791:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10802:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10787:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10787:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10774:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10774:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10764:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10815:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10847:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10858:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10843:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10843:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "10825:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10825:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10815:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10871:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10903:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10914:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10899:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10899:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "10881:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10881:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10871:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10592:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10603:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10615:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10623:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10631:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10639:6:111",
                            "type": ""
                          }
                        ],
                        "src": "10531:393:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11043:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11053:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11065:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11076:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11061:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11061:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11053:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11095:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "11110:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11118:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11106:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11088:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11088:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11088:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11012:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11023:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11034:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10929:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11292:274:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11339:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11348:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11351:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11341:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11341:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11341:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11313:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11322:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11309:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11309:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11334:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11305:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11305:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11302:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11364:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11387:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11374:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11374:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11364:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11406:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11433:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11444:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11429:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11429:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11416:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11416:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11406:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11457:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11489:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11500:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11485:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11485:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11467:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11467:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11457:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11513:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11545:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11556:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11541:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11541:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "11523:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11523:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11513:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11234:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11245:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11257:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11265:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11273:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11281:6:111",
                            "type": ""
                          }
                        ],
                        "src": "11173:393:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11708:1140:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11754:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11763:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11766:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11756:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11756:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11756:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11729:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11738:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11725:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11725:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11750:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11721:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11721:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11718:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11779:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11806:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11793:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11793:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11783:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11825:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11835:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11829:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11880:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11889:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11892:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11882:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11882:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11882:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11868:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11876:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11865:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11865:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11862:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11905:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11919:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11930:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11915:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11915:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11909:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11985:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11994:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11997:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11987:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11987:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11987:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "11964:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11968:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11960:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11960:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11975:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11956:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11956:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11949:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11949:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "11946:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12010:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12033:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12020:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12020:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "12014:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12045:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12055:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "12049:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12068:53:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12118:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "12078:39:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12078:43:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "12072:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12130:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12150:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12144:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12144:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12134:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "12182:6:111"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "12190:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "12162:19:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12162:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12162:31:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12202:17:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "12213:6:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "12206:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "12235:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12243:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12228:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12228:18:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12255:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "12266:6:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "12274:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12262:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12262:15:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "12255:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12286:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "12308:2:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12316:1:111",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "12319:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "12312:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12312:10:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12304:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12304:19:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "12325:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12300:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12300:28:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "12290:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12360:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12369:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12372:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12362:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12362:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12362:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12343:6:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12351:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12340:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12340:19:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12337:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12385:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12400:2:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "12404:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12396:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12396:11:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "12389:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12472:161:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "12486:30:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "12512:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "12499:12:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12499:17:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "12490:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "12554:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "12529:24:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12529:31:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12529:31:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "12580:3:111"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "12585:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12573:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12573:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12573:18:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12604:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "12615:3:111"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "12620:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12611:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12611:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "12604:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "12427:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12432:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12424:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12424:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "12440:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12442:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "12453:3:111"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "12458:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12449:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12449:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "12442:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "12420:3:111",
                                "statements": []
                              },
                              "src": "12416:217:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12642:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "12652:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12642:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12667:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12700:9:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "12711:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12696:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12696:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12683:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12683:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12671:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12744:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12753:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12756:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12746:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12746:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12746:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12730:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12740:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12727:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12727:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12724:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12769:73:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12812:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12823:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12808:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12808:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12834:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "12779:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12779:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12769:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11666:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11677:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11689:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11697:6:111",
                            "type": ""
                          }
                        ],
                        "src": "11571:1277:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12914:374:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12924:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12944:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12938:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12938:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12928:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12966:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12971:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12959:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12959:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12959:19:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12987:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12997:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12991:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13010:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13021:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13026:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13017:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13017:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "13010:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13038:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13056:5:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13063:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13052:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13052:14:111"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "13042:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13075:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13084:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "13079:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13143:120:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "13164:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "13175:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "13169:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13169:13:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13157:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13157:26:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13157:26:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13196:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "13207:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13212:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13203:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13203:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "13196:3:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13228:25:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "13242:6:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13250:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13238:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13238:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13228:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "13105:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13108:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13102:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13102:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "13116:18:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13118:14:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "13127:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13130:1:111",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13123:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13123:9:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "13118:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "13098:3:111",
                                "statements": []
                              },
                              "src": "13094:169:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13272:10:111",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13279:3:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "13272:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12891:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12898:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12906:3:111",
                            "type": ""
                          }
                        ],
                        "src": "12853:435:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13444:110:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13461:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13472:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13454:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13454:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13454:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13484:64:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13521:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13533:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13544:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13529:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13529:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "13492:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13492:56:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13484:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13413:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13424:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13435:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13293:261:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13686:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13696:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13708:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13719:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13704:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13704:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13696:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13738:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13753:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13761:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13749:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13749:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13731:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13731:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13731:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IMetadataService_$17752__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13655:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13666:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13677:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13559:252:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13920:352:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13966:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13975:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13978:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13968:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13968:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13968:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13941:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13950:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13937:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13937:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13962:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13933:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13933:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13930:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13991:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14017:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14004:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14004:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13995:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14061:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "14036:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14036:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14036:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14076:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14086:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14076:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14100:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14132:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14143:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14128:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14128:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14115:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14115:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14104:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14181:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "14156:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14156:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14156:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14198:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "14208:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14198:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14224:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14251:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14262:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14247:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14247:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14234:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14234:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "14224:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13870:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13881:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13893:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13901:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13909:6:111",
                            "type": ""
                          }
                        ],
                        "src": "13816:456:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14378:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14388:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14400:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14411:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14396:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14396:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14388:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14430:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14445:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14453:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14441:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14441:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14423:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14423:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14423:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14347:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14358:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14369:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14277:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14612:352:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14658:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14667:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14670:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14660:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14660:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14660:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14633:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14642:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14629:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14629:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14654:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14625:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14625:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14622:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14683:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14706:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14693:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14693:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14683:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14725:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14755:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14766:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14751:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14751:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14738:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14738:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "14729:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14804:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "14779:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14779:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14779:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14819:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14829:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14819:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14843:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14875:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14886:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14871:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14871:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14858:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14858:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14847:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14924:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "14899:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14899:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14899:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14941:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "14951:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "14941:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14562:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14573:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14585:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14593:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14601:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14508:456:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15142:728:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15189:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15198:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15201:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15191:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15191:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15191:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15163:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15172:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15159:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15159:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15184:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15155:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15155:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15152:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15214:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15241:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15228:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15228:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15218:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15294:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15303:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15306:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15296:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15296:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15296:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15266:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15274:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15263:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15263:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15260:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15319:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15375:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15386:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15371:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15371:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15395:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "15345:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15345:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15323:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15333:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15412:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "15422:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15412:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15439:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "15449:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15439:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15466:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15496:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15507:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15492:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15492:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15479:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15479:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "15470:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "15545:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "15520:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15520:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15520:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15560:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15570:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "15560:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15584:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15611:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15622:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15607:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15607:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15594:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15594:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "15584:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15635:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15667:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15678:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15663:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15663:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15650:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15650:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15639:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15716:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "15691:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15691:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15691:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15733:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "15743:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "15733:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15759:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15791:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15802:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15787:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15787:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "15769:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15769:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "15759:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15816:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15848:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15859:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15844:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15844:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "15826:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15826:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "15816:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256t_addresst_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15060:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15071:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15083:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15091:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15099:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15107:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "15115:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "15123:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "15131:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14969:901:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15917:76:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15971:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15980:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15983:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15973:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15973:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15973:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "15940:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "15961:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "15954:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "15954:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "15947:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15947:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "15937:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15937:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15930:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15930:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15927:60:111"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "15906:5:111",
                            "type": ""
                          }
                        ],
                        "src": "15875:118:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16082:298:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16128:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16137:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16140:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16130:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16130:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16130:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16103:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16112:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16099:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16099:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16124:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16095:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16095:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "16092:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16153:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16179:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16166:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16166:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "16157:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "16223:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "16198:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16198:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16198:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16238:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "16248:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16238:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16262:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16294:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16305:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16290:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16290:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16277:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16277:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16266:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16340:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "16318:21:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16318:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16318:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16357:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "16367:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16357:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16040:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16051:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16063:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16071:6:111",
                            "type": ""
                          }
                        ],
                        "src": "15998:382:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16471:166:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16517:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16526:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16529:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16519:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16519:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16519:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16492:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16501:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16488:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16488:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16513:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16484:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16484:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "16481:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16542:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16565:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16552:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16552:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16542:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16584:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16616:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16627:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16612:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16612:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "16594:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16594:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16584:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16429:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16440:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16452:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16460:6:111",
                            "type": ""
                          }
                        ],
                        "src": "16385:252:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16741:177:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16787:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16796:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16799:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16789:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16789:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16789:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16762:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16771:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16758:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16758:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16783:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16754:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16754:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "16751:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16812:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16838:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16825:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16825:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "16816:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "16882:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "16857:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16857:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16857:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16897:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "16907:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16897:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_INameWrapperUpgrade_$18063",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16707:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16718:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16730:6:111",
                            "type": ""
                          }
                        ],
                        "src": "16642:276:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17022:93:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17032:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17044:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17055:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17040:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17040:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17032:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17074:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17089:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17097:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17085:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17085:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17067:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17067:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17067:42:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16991:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17002:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17013:4:111",
                            "type": ""
                          }
                        ],
                        "src": "16923:192:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17276:603:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17323:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17332:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17335:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17325:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17325:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17325:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "17297:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17306:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "17293:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17293:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17318:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17289:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17289:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "17286:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17348:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17371:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17358:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17358:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "17348:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17390:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17421:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17432:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17417:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17417:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17404:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17404:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "17394:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17479:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17488:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17491:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17481:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17481:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17481:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "17451:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17459:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17448:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17448:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "17445:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17504:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17560:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "17571:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17556:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17556:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "17580:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "17530:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17530:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17508:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17518:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17597:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "17607:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17597:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17624:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "17634:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "17624:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17651:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17681:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17692:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17677:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17677:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17664:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17664:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "17655:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "17730:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "17705:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17705:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17705:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17745:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "17755:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "17745:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17769:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17801:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17812:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17797:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17797:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "17779:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17779:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "17769:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17825:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17857:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17868:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17853:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17853:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "17835:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17835:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "17825:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_calldata_ptrt_addresst_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17202:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "17213:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17225:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17233:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17241:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17249:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17257:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "17265:6:111",
                            "type": ""
                          }
                        ],
                        "src": "17120:759:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18004:409:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18051:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18060:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18063:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18053:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18053:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18053:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "18025:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18034:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "18021:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18021:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18046:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18017:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18017:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "18014:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18076:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18099:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18086:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18086:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "18076:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18118:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18148:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18159:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18144:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18144:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18131:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18131:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "18122:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "18197:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "18172:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18172:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18172:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18212:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "18222:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "18212:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18236:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18268:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18279:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18264:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18264:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18251:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18251:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18240:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18317:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "18292:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18292:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18292:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18334:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "18344:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "18334:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18360:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18392:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18403:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18388:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18388:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "18370:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18370:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18360:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_addresst_addresst_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17946:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "17957:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17969:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17977:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17985:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17993:6:111",
                            "type": ""
                          }
                        ],
                        "src": "17884:529:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18522:279:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18568:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18577:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18580:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18570:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18570:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18570:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "18543:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18552:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "18539:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18539:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18564:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18535:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18535:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "18532:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18593:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18616:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18603:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18603:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "18593:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18635:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18662:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18673:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18658:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18658:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18645:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18645:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "18635:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18686:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18716:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18727:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18712:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18712:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18699:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18699:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "18690:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "18765:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "18740:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18740:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18740:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18780:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "18790:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "18780:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18472:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "18483:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18495:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18503:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18511:6:111",
                            "type": ""
                          }
                        ],
                        "src": "18418:383:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18876:177:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18922:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18931:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18934:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18924:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18924:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18924:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "18897:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18906:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "18893:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18893:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18918:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18889:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18889:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "18886:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18947:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18973:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18960:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18960:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "18951:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19017:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "18992:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18992:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18992:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19032:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "19042:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "19032:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18842:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "18853:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18865:6:111",
                            "type": ""
                          }
                        ],
                        "src": "18806:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19182:562:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19228:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19237:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19240:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19230:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19230:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19230:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "19203:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19212:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19199:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19199:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19224:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19195:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19195:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19192:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19253:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19280:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19267:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19267:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "19257:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19333:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19342:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19345:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19335:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19335:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19335:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "19305:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19313:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19302:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19302:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19299:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19358:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19414:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "19425:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19410:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19410:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "19434:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "19384:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19384:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19362:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19372:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19451:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "19461:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "19451:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19478:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "19488:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "19478:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19505:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19535:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19546:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19531:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19531:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19518:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19518:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "19509:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19584:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "19559:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19559:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19559:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19599:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "19609:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "19599:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19623:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19655:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19666:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19651:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19651:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19638:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19638:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19627:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19704:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "19679:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19679:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19679:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19721:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "19731:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "19721:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19124:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "19135:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19147:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19155:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19163:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "19171:6:111",
                            "type": ""
                          }
                        ],
                        "src": "19058:686:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19836:301:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19882:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19891:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19894:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19884:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19884:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19884:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "19857:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19866:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19853:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19853:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19878:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19849:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19849:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "19846:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19907:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19933:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19920:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19920:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "19911:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19977:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "19952:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19952:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19952:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19992:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "20002:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "19992:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20016:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20048:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20059:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20044:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20044:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20031:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20031:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20020:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20097:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "20072:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20072:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20072:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20114:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "20124:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "20114:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19794:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "19805:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19817:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19825:6:111",
                            "type": ""
                          }
                        ],
                        "src": "19749:388:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20265:562:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20311:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20320:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20323:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20313:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20313:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20313:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "20286:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20295:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20282:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20282:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20307:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20278:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20278:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "20275:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20336:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20363:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20350:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20350:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "20340:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20416:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20425:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20428:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20418:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20418:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20418:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "20388:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20396:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20385:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20385:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "20382:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20441:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20497:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "20508:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20493:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20493:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "20517:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "20467:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20467:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20445:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20455:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20534:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "20544:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "20534:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20561:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "20571:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "20561:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20588:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20618:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20629:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20614:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20614:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20601:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20601:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "20592:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "20667:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "20642:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20642:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20642:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20682:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "20692:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "20682:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20706:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20738:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20749:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20734:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20734:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20721:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20721:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20710:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20787:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "20762:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20762:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20762:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20804:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "20814:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20804:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20207:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "20218:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20230:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20238:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20246:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20254:6:111",
                            "type": ""
                          }
                        ],
                        "src": "20142:685:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20973:614:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21020:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21029:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21032:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21022:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21022:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21022:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "20994:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21003:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20990:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20990:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21015:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20986:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20986:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "20983:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21045:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21068:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21055:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21055:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "21045:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21087:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21118:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21129:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21114:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21114:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21101:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21101:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "21091:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21176:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21185:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21188:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21178:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21178:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21178:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21148:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21156:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21145:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21145:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "21142:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21201:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21257:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "21268:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21253:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21253:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21277:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21227:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21227:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21205:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21215:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21294:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "21304:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "21294:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21321:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "21331:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "21321:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21348:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21378:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21389:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21374:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21374:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21361:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21361:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "21352:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21427:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "21402:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21402:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21402:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21442:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "21452:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21442:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21466:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21498:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21509:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21494:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21494:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21481:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21481:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21470:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21547:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "21522:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21522:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21522:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21564:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "21574:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "21564:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_calldata_ptrt_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20907:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "20918:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20930:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20938:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20946:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20954:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "20962:6:111",
                            "type": ""
                          }
                        ],
                        "src": "20832:755:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21739:588:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21786:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21795:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21798:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21788:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21788:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21788:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "21760:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21769:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "21756:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21756:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21781:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21752:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21752:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "21749:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21811:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21837:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21824:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21824:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "21815:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21881:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "21856:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21856:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21856:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21896:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "21906:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "21896:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21920:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21952:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21963:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21948:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21948:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21935:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21935:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21924:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22001:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "21976:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21976:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21976:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22018:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "22028:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "22018:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22044:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22071:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22082:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22067:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22067:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22054:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22054:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "22044:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22095:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22122:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22133:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22118:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22118:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22105:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22105:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "22095:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22146:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22177:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22188:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22173:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22173:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22160:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22160:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "22150:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22236:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22245:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22248:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22238:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22238:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22238:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "22208:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22216:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22205:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22205:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "22202:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22261:60:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22293:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "22304:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22289:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22289:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "22313:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "22271:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22271:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "22261:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21673:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "21684:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21696:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21704:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21712:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "21720:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "21728:6:111",
                            "type": ""
                          }
                        ],
                        "src": "21592:735:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22488:676:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22535:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22544:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22547:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22537:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22537:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22537:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "22509:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22518:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "22505:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22505:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22530:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22501:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22501:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "22498:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22560:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22587:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22574:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22574:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "22564:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22640:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22649:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22652:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22642:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22642:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22642:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "22612:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22620:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22609:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22609:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "22606:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22665:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22721:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "22732:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22717:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22717:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "22741:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "22691:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22691:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22669:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22679:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22758:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "22768:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "22758:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22785:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "22795:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "22785:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22812:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22842:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22853:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22838:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22838:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22825:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22825:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "22816:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22891:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "22866:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22866:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22866:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22906:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "22916:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "22906:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22930:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22962:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22973:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22958:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22958:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "22940:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22940:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "22930:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22986:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23018:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23029:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23014:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23014:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "22996:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22996:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "22986:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23042:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23074:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23085:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23070:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23070:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23057:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23057:33:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23046:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23124:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "23099:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23099:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23099:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23141:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "23151:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "23141:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint32t_uint64t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22414:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "22425:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22437:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22445:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "22453:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "22461:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "22469:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "22477:6:111",
                            "type": ""
                          }
                        ],
                        "src": "22332:832:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23268:101:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23278:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23290:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23301:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23286:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23286:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23278:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23320:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "23335:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23343:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23331:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23331:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23313:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23313:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23313:50:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23237:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23248:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23259:4:111",
                            "type": ""
                          }
                        ],
                        "src": "23169:200:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23548:233:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23565:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23576:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23558:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23558:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23558:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23599:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23610:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23595:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23595:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23615:2:111",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23588:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23588:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23588:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23638:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23649:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23634:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23634:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a2062616c616e636520717565727920666f7220746865207a",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23654:34:111",
                                    "type": "",
                                    "value": "ERC1155: balance query for the z"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23627:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23627:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23627:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23709:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23720:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23705:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23705:18:111"
                                  },
                                  {
                                    "hexValue": "65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23725:13:111",
                                    "type": "",
                                    "value": "ero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23698:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23698:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23698:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23748:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23760:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23771:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23756:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23756:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23748:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23525:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23539:4:111",
                            "type": ""
                          }
                        ],
                        "src": "23374:407:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23877:613:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23923:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23932:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23935:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "23925:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23925:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23925:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "23898:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23907:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "23894:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23894:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23919:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23890:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23890:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "23887:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23948:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23968:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23962:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23962:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "23952:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24021:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24030:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24033:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24023:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24023:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24023:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "23993:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24001:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23990:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23990:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "23987:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24046:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24060:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "24071:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24056:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24056:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "24050:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24126:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24135:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24138:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24128:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24128:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24128:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "24105:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24109:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "24101:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24101:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "24116:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "24097:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24097:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "24090:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24090:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "24087:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24151:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24167:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24161:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24161:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "24155:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24179:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "24218:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "24189:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24189:32:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "24183:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24230:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24250:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24244:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24244:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "24234:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "24282:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "24290:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "24262:19:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24262:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24262:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "24309:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "24317:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24302:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24302:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24302:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24366:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24375:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24378:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24368:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24368:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24368:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "24343:2:111"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "24347:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "24339:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24339:11:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24352:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24335:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24335:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "24357:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24332:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24332:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "24329:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "24430:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24434:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24426:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24426:11:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "24443:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24451:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24439:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24439:15:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "24456:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "24391:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24391:68:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24391:68:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24468:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "24478:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "24468:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23843:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "23854:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23866:6:111",
                            "type": ""
                          }
                        ],
                        "src": "23786:704:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24624:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "24634:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24646:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24657:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24642:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24642:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24634:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24676:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "24687:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24669:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24669:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24669:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24714:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24725:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24710:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24710:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "24734:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24742:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "24730:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24730:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24703:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24703:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24703:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24585:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "24596:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "24604:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24615:4:111",
                            "type": ""
                          }
                        ],
                        "src": "24495:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24924:144:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "24934:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24946:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24957:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24942:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24942:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24934:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24976:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "24987:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24969:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24969:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24969:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25014:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25025:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25010:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25010:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25034:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25042:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "25030:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25030:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25003:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25003:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25003:59:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24885:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "24896:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "24904:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24915:4:111",
                            "type": ""
                          }
                        ],
                        "src": "24797:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25235:598:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25282:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25291:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25294:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25284:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25284:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25284:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "25256:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25265:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "25252:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25252:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25277:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25248:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25248:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "25245:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25307:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25334:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25321:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25321:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "25311:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25387:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25396:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25399:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25389:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25389:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25389:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "25359:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25367:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25356:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25356:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "25353:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25412:60:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25444:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "25455:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25440:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25440:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "25464:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "25422:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25422:50:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "25412:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25481:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25511:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25522:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25507:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25507:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25494:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25494:32:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "25485:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "25560:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "25535:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25535:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25535:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25575:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "25585:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "25575:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25599:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25631:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25642:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25627:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25627:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "25609:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25609:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "25599:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25655:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25687:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25698:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25683:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25683:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "25665:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25665:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "25655:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25711:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25743:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25754:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25739:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25739:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25726:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25726:33:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25715:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25793:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "25768:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25768:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25768:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25810:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "25820:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "25810:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptrt_address_payablet_uint32t_uint64t_address_payable",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25169:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "25180:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25192:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25200:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "25208:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "25216:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "25224:6:111",
                            "type": ""
                          }
                        ],
                        "src": "25073:760:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25967:119:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "25977:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25989:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26000:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25985:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25985:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25977:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26019:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26030:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26012:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26012:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26012:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26057:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26068:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26053:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26053:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26073:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26046:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26046:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26046:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25928:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25939:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25947:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25958:4:111",
                            "type": ""
                          }
                        ],
                        "src": "25838:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26220:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26230:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26242:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26253:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26238:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26238:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26230:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26272:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26283:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26265:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26265:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26265:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26310:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26321:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26306:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26306:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "26330:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26338:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "26326:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26326:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26299:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26299:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26299:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26181:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "26192:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26200:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26211:4:111",
                            "type": ""
                          }
                        ],
                        "src": "26091:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26567:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26584:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26595:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26577:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26577:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26577:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26618:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26629:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26614:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26614:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26634:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26607:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26607:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26607:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26657:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26668:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26653:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26653:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26673:34:111",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26646:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26646:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26646:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26717:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26729:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26740:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26725:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26725:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26717:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26544:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26558:4:111",
                            "type": ""
                          }
                        ],
                        "src": "26393:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26809:382:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26819:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26833:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "26836:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "26829:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26829:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "26819:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26850:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "26880:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26886:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "26876:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26876:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "26854:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26927:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "26929:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "26943:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26951:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "26939:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26939:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "26929:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "26907:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "26900:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26900:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "26897:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27017:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27038:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27041:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "27031:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27031:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27031:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27139:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27142:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "27132:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27132:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27132:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27167:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27170:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27160:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27160:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27160:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "26973:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "26996:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27004:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "26993:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26993:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "26970:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26970:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "26967:218:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "26789:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "26798:6:111",
                            "type": ""
                          }
                        ],
                        "src": "26754:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27277:170:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27323:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27332:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27335:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27325:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27325:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27325:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "27298:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27307:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "27294:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27294:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27319:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27290:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27290:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "27287:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27348:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27367:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27361:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27361:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "27352:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "27411:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "27386:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27386:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27386:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27426:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "27436:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "27426:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27243:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "27254:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "27266:6:111",
                            "type": ""
                          }
                        ],
                        "src": "27196:251:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27663:354:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27673:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27685:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27696:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27681:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27681:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27673:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27716:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "27727:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27709:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27709:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27709:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27754:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27765:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27750:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27750:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27770:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27743:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27743:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27743:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27786:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "27796:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "27790:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27858:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27869:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27854:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27854:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "27878:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27886:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "27874:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27874:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27847:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27847:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27847:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27910:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27921:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27906:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27906:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "27930:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27938:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "27926:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27926:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27899:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27899:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27899:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27962:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27973:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27958:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27958:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "27983:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27991:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "27979:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27979:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27951:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27951:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27951:60:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_uint64__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27600:9:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "27611:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "27619:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "27627:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "27635:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "27643:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27654:4:111",
                            "type": ""
                          }
                        ],
                        "src": "27452:565:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28196:230:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28213:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28224:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28206:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28206:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28206:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28247:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28258:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28243:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28243:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28263:2:111",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28236:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28236:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28236:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28286:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28297:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28282:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28282:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e67746820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28302:34:111",
                                    "type": "",
                                    "value": "ERC1155: ids and amounts length "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28275:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28275:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28275:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28357:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28368:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28353:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28353:18:111"
                                  },
                                  {
                                    "hexValue": "6d69736d61746368",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28373:10:111",
                                    "type": "",
                                    "value": "mismatch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28346:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28346:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28346:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28393:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28405:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28416:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28401:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28401:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28393:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28173:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28187:4:111",
                            "type": ""
                          }
                        ],
                        "src": "28022:404:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28605:227:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28622:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28633:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28615:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28615:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28615:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28656:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28667:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28652:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28652:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28672:2:111",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28645:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28645:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28645:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28695:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28706:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28691:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28691:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28711:34:111",
                                    "type": "",
                                    "value": "ERC1155: transfer to the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28684:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28684:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28684:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28766:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28777:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28762:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28762:18:111"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28782:7:111",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28755:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28755:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28755:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28799:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28811:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28822:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28807:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28807:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28799:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28582:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28596:4:111",
                            "type": ""
                          }
                        ],
                        "src": "28431:401:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29011:240:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29028:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29039:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29021:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29021:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29021:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29062:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29073:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29058:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29058:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29078:2:111",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29051:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29051:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29051:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29101:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29112:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29097:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29097:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a207472616e736665722063616c6c6572206973206e6f7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29117:34:111",
                                    "type": "",
                                    "value": "ERC1155: transfer caller is not "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29090:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29090:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29090:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29172:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29183:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29168:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29168:18:111"
                                  },
                                  {
                                    "hexValue": "6f776e6572206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29188:20:111",
                                    "type": "",
                                    "value": "owner nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29161:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29161:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29161:48:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29218:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29230:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29241:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29226:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29226:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29218:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28988:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29002:4:111",
                            "type": ""
                          }
                        ],
                        "src": "28837:414:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29288:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29305:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29308:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29298:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29298:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29298:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29402:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29405:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29395:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29395:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29426:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29429:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "29419:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29419:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29419:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "29256:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29619:232:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29636:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29647:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29629:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29629:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29629:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29670:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29681:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29666:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29666:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29686:2:111",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29659:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29659:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29659:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29709:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29720:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29705:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29705:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29725:34:111",
                                    "type": "",
                                    "value": "ERC1155: insufficient balance fo"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29698:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29698:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29698:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29780:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29791:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29776:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29776:18:111"
                                  },
                                  {
                                    "hexValue": "72207472616e73666572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29796:12:111",
                                    "type": "",
                                    "value": "r transfer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29769:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29769:40:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29769:40:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29818:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29830:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29841:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29826:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29826:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29818:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29596:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29610:4:111",
                            "type": ""
                          }
                        ],
                        "src": "29445:406:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29888:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29905:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29908:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29898:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29898:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29898:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30002:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30005:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29995:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29995:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29995:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30026:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30029:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "30019:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30019:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30019:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "29856:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30092:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30183:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "30185:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30185:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30185:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "30108:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30115:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "30105:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30105:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "30102:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30214:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "30225:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30232:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30221:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30221:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "30214:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "30074:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "30084:3:111",
                            "type": ""
                          }
                        ],
                        "src": "30045:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30474:236:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30491:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30502:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30484:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30484:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30484:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30514:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "30557:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30569:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30580:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30565:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30565:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "30528:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30528:56:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "30518:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30604:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30615:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30600:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30600:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "30624:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30632:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "30620:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30620:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30593:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30593:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30593:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30652:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "30689:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "30697:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "30660:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30660:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30652:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30435:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "30446:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "30454:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30465:4:111",
                            "type": ""
                          }
                        ],
                        "src": "30245:465:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30796:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30842:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30851:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30854:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30844:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30844:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30844:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "30817:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30826:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "30813:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30813:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30838:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30809:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30809:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "30806:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30867:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30883:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "30877:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30877:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "30867:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30762:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "30773:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "30785:6:111",
                            "type": ""
                          }
                        ],
                        "src": "30715:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31078:230:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31095:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31106:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31088:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31088:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31088:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31129:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31140:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31125:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31125:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31145:2:111",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31118:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31118:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31118:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31168:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31179:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31164:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31164:18:111"
                                  },
                                  {
                                    "hexValue": "436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31184:34:111",
                                    "type": "",
                                    "value": "Controllable: Caller is not a co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31157:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31157:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31157:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31239:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31250:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31235:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31235:18:111"
                                  },
                                  {
                                    "hexValue": "6e74726f6c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31255:10:111",
                                    "type": "",
                                    "value": "ntroller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31228:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31228:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31275:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31287:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31298:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31283:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31283:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31275:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31055:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31069:4:111",
                            "type": ""
                          }
                        ],
                        "src": "30904:404:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31442:119:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "31452:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31464:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31475:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31460:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31460:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31452:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31494:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "31505:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31487:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31487:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31487:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31532:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31543:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31528:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31528:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31548:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31521:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31521:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31521:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31403:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "31414:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31422:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31433:4:111",
                            "type": ""
                          }
                        ],
                        "src": "31313:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31740:231:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31757:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31768:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31750:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31750:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31750:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31791:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31802:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31787:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31787:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31807:2:111",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31780:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31780:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31780:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31830:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31841:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31826:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31826:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31846:34:111",
                                    "type": "",
                                    "value": "ERC1155: accounts and ids length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31819:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31819:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31819:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31901:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31912:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31897:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31897:18:111"
                                  },
                                  {
                                    "hexValue": "206d69736d61746368",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31917:11:111",
                                    "type": "",
                                    "value": " mismatch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31890:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31890:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31890:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31938:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31950:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31961:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31946:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31946:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31938:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31717:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31731:4:111",
                            "type": ""
                          }
                        ],
                        "src": "31566:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32105:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "32115:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32127:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32138:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32123:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32123:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32115:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32157:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "32172:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32180:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "32168:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32168:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32150:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32150:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32150:74:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32244:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32255:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32240:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32240:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "32260:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32233:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32233:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32233:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32066:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "32077:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "32085:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32096:4:111",
                            "type": ""
                          }
                        ],
                        "src": "31976:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32356:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32402:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32411:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32414:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32404:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32404:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32404:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "32377:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32386:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "32373:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32373:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32398:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32369:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32369:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "32366:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32427:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32446:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32440:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32440:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "32431:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "32487:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "32465:21:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32465:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32465:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32502:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "32512:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "32502:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32322:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "32333:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "32345:6:111",
                            "type": ""
                          }
                        ],
                        "src": "32278:245:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32685:241:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "32695:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32707:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32718:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32703:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32703:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32695:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32730:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "32740:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "32734:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32798:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "32813:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "32821:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "32809:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32809:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32791:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32791:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32791:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32845:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32856:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32841:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32841:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "32865:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "32873:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "32861:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32861:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32834:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32834:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32834:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32897:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32908:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32893:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32893:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "32913:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32886:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32886:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32886:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32638:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "32649:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "32657:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "32665:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32676:4:111",
                            "type": ""
                          }
                        ],
                        "src": "32528:398:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33078:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "33101:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33106:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33114:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "33088:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33088:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33088:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33130:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "33144:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33149:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33140:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33140:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33134:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33172:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33176:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33165:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33165:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33165:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33187:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "33194:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "33187:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33046:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "33051:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33059:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33070:3:111",
                            "type": ""
                          }
                        ],
                        "src": "32931:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33364:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "33374:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33386:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33397:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33382:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33382:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "33374:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33416:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33427:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33409:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33409:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33409:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33454:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33465:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33450:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33450:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "33474:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33482:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "33470:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33470:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33443:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33443:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33443:83:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33546:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33557:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33542:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33542:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "33562:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33535:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33535:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33535:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "33317:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "33328:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "33336:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33344:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "33355:4:111",
                            "type": ""
                          }
                        ],
                        "src": "33207:368:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33754:231:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33771:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33782:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33764:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33764:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33764:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33805:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33816:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33801:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33801:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33821:2:111",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33794:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33794:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33794:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33844:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33855:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33840:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33840:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a2073657474696e6720617070726f76616c20737461747573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33860:34:111",
                                    "type": "",
                                    "value": "ERC1155: setting approval status"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33833:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33833:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33833:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33915:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33926:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33911:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33911:18:111"
                                  },
                                  {
                                    "hexValue": "20666f722073656c66",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33931:11:111",
                                    "type": "",
                                    "value": " for self"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33904:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33904:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33904:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33952:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33964:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33975:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33960:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33960:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "33952:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "33731:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "33745:4:111",
                            "type": ""
                          }
                        ],
                        "src": "33580:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34113:184:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "34123:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34135:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34146:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34131:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34131:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "34123:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34165:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "34180:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34188:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "34176:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34176:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34158:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34158:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34158:74:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34252:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34263:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34248:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34248:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "34282:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "34275:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "34275:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "34268:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34268:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34241:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34241:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34241:50:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34074:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "34085:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "34093:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34104:4:111",
                            "type": ""
                          }
                        ],
                        "src": "33990:307:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34459:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "34469:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34481:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34492:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34477:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34477:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "34469:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34511:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "34522:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34504:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34504:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34504:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34549:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34560:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34545:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34545:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34565:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34538:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34538:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34538:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34592:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34603:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34588:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34588:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "34612:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34620:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "34608:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34608:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34581:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34581:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34581:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34412:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "34423:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "34431:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "34439:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34450:4:111",
                            "type": ""
                          }
                        ],
                        "src": "34302:368:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34756:103:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34802:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34811:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34814:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "34804:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34804:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34804:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "34777:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34786:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "34773:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34773:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34798:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "34769:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34769:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "34766:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34827:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34843:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "34837:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34837:16:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "34827:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34722:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "34733:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "34745:6:111",
                            "type": ""
                          }
                        ],
                        "src": "34675:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35047:310:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "35057:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35069:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35080:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35065:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35065:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35057:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35100:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "35111:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35093:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35093:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35093:25:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35127:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "35137:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "35131:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35199:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35210:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35195:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35195:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "35219:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "35227:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35215:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35215:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35188:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35188:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35188:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35251:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35262:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35247:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35247:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "35271:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "35279:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35267:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35267:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35240:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35240:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35240:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35303:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35314:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35299:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35299:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "35323:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35331:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35319:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35319:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35292:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35292:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35292:59:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint64__to_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34992:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "35003:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35011:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35019:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35027:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35038:4:111",
                            "type": ""
                          }
                        ],
                        "src": "34864:493:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35429:259:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "35446:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "35451:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35439:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35439:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35439:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "35484:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35489:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35480:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35480:14:111"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "35496:5:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "35503:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "35467:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35467:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35467:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "35534:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "35539:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "35530:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "35530:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35548:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35526:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35526:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35555:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35519:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35519:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35519:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35566:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "35581:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "35594:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "35602:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "35590:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "35590:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "35607:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "35586:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "35586:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35577:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35577:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35677:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35573:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35573:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "35566:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "35398:5:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "35405:6:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "35413:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "35421:3:111",
                            "type": ""
                          }
                        ],
                        "src": "35362:326:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35932:412:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35949:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35960:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35942:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35942:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35942:22:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35973:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36008:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "36016:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36028:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36039:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36024:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36024:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "35981:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35981:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35973:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "36053:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "36063:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "36057:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36125:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36136:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36121:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36121:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "36145:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36153:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36141:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36141:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36114:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36114:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36114:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36177:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36188:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36173:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36173:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "36197:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36205:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36193:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36193:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36166:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36166:51:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36237:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36248:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36233:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36233:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "36257:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36265:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36253:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36253:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36226:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36226:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36226:59:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36305:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36316:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36301:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36301:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "36326:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36334:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36322:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36322:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36294:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36294:44:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36294:44:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint32_t_uint64_t_address__to_t_string_memory_ptr_t_address_t_uint32_t_uint64_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35861:9:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "35872:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "35880:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "35888:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35896:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35904:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35912:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35923:4:111",
                            "type": ""
                          }
                        ],
                        "src": "35693:651:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36478:198:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "36488:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36500:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36511:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36496:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36496:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36488:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "36523:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "36533:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "36527:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36591:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "36606:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36614:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36602:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36602:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36584:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36584:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36584:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36638:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36649:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36634:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36634:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36658:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36666:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36654:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36654:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36627:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36627:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36627:43:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36439:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36450:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36458:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36469:4:111",
                            "type": ""
                          }
                        ],
                        "src": "36349:327:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36983:530:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37000:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "37011:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36993:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36993:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36993:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37038:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37049:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37034:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37034:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37054:3:111",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37027:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37027:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37027:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37067:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37102:6:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "37110:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37122:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37133:3:111",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37118:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37118:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "37075:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37075:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37067:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37147:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37157:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37151:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37219:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37230:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37215:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37215:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "37239:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37247:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37235:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37235:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37208:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37208:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37208:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37271:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37282:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37267:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37267:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "37291:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37299:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37287:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37287:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37260:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37260:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37260:43:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37312:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37322:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "37316:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37360:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37371:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37356:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37356:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "37381:6:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "37389:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37377:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37377:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37349:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37349:44:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37349:44:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37413:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37424:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37409:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37409:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "37434:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37442:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37430:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37430:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37402:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37402:52:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37402:52:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37474:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37485:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37470:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37470:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "37495:6:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "37503:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37491:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37491:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37463:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37463:44:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37463:44:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_string_calldata_ptr_t_address_t_address_t_rational_0_by_1_t_uint32_t_uint64__to_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36896:9:111",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "36907:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "36915:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "36923:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "36931:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "36939:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "36947:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36955:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36963:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36974:4:111",
                            "type": ""
                          }
                        ],
                        "src": "36681:832:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37692:231:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37709:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37720:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37702:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37702:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37702:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37743:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37754:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37739:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37739:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37759:2:111",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37732:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37732:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37732:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37782:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37793:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37778:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37778:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "37798:34:111",
                                    "type": "",
                                    "value": "ERC1155: caller is not owner nor"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37771:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37771:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37771:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37853:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37864:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37849:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37849:18:111"
                                  },
                                  {
                                    "hexValue": "20617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "37869:11:111",
                                    "type": "",
                                    "value": " approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37842:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37842:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37842:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37890:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37902:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37913:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37898:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37898:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37890:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37669:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37683:4:111",
                            "type": ""
                          }
                        ],
                        "src": "37518:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38102:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38119:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38130:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38112:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38112:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38112:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38153:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38164:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38149:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38149:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38169:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38142:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38142:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38142:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38192:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38203:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38188:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38188:18:111"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "38208:34:111",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38181:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38181:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38181:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38263:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38274:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38259:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38259:18:111"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "38279:8:111",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38252:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38252:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38252:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38297:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38309:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38320:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38305:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38305:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "38297:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "38079:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "38093:4:111",
                            "type": ""
                          }
                        ],
                        "src": "37928:402:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38482:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "38499:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "38504:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38492:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38492:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38492:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "38531:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38536:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38527:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38527:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38541:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38520:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38520:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38520:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38557:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "38568:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38573:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38564:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38564:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "38557:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "38450:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "38455:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "38463:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "38474:3:111",
                            "type": ""
                          }
                        ],
                        "src": "38335:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38642:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38659:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "38662:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38652:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38652:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38652:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38675:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38693:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38696:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "38683:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38683:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "38675:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "38625:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "38633:4:111",
                            "type": ""
                          }
                        ],
                        "src": "38587:120:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38792:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38825:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38839:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38849:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "38843:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "38870:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "38874:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38863:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38863:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38863:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38893:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "38915:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38919:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "38905:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38905:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "38897:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38937:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "38960:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38970:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38977:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "38989:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38973:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38973:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "38966:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38966:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38956:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38956:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "38941:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "39031:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "39033:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "39048:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "39033:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "39013:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "39025:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "39010:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39010:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "39007:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "39067:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "39081:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "39091:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "39098:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "39103:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "39094:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "39094:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "39087:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39087:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39077:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39077:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "39071:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "39121:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "39134:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "39125:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "39219:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "39228:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "39235:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "39221:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "39221:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "39221:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "39169:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "39176:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "39166:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39166:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "39180:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "39182:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "39195:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "39202:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "39191:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "39191:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "39182:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "39162:3:111",
                                      "statements": []
                                    },
                                    "src": "39158:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "38808:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38813:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "38805:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38805:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "38802:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "38764:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "38771:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "38776:10:111",
                            "type": ""
                          }
                        ],
                        "src": "38712:544:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39346:141:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "39356:125:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "39371:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "39389:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "39392:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "39385:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "39385:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "39398:66:111",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "39381:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "39381:84:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "39377:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "39377:89:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "39367:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39367:100:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39473:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "39476:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "39469:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39469:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "39364:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39364:117:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "39356:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "39323:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "39329:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "39337:4:111",
                            "type": ""
                          }
                        ],
                        "src": "39261:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39586:1373:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39596:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "39616:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "39610:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39610:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "39600:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "39663:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "39665:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39665:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39665:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "39635:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39643:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "39632:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39632:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "39629:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "39737:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "39775:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "39769:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "39769:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "39743:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39743:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "39783:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_bytes_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "39694:42:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39694:96:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39694:96:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39799:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39816:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "39803:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39826:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39845:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39830:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39858:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "39871:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "39858:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "39928:774:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "39942:94:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "39961:6:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "39969:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "39957:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39957:79:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "39946:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "40049:48:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "40092:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_bytes_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "40063:28:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40063:34:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "40053:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "40110:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "40119:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "40114:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "40197:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40222:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "40240:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "40245:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "40236:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "40236:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "40230:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "40230:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40215:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "40215:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "40215:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "40274:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40288:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "40296:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40284:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "40284:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40274:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "40315:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40332:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40343:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40328:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "40328:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40315:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "40144:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "40147:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "40141:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40141:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "40156:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "40158:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40167:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40170:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40163:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "40163:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40158:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "40137:3:111",
                                          "statements": []
                                        },
                                        "src": "40133:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "40417:226:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "40435:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "40462:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "40467:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "40458:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "40458:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40452:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "40452:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "40439:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40502:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "40514:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "40541:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "40544:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "40537:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "40537:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "40553:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "40533:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "40533:24:111"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "40559:66:111",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "40529:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "40529:97:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "40525:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "40525:102:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "40510:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "40510:118:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40495:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "40495:134:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "40495:134:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "40388:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "40397:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "40385:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40385:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "40382:261:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "40663:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "40677:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "40680:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40673:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "40673:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "40689:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "40669:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40669:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "40656:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40656:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "40656:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "39921:781:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39926:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "40719:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "40733:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "40746:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "40737:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "40782:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "40800:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "40819:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "40824:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "40815:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "40815:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40809:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "40809:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40800:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "40763:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "40760:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "40869:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40928:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40935:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "40875:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40875:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "40862:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40862:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "40862:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "40711:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "39901:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39909:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "39898:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39898:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "39891:1062:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "39571:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "39577:3:111",
                            "type": ""
                          }
                        ],
                        "src": "39492:1467:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41295:519:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41305:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "41315:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41309:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41373:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41388:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41396:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "41384:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41384:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41366:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41366:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41366:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41420:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41431:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41416:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41416:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41440:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41448:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "41436:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41436:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41409:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41409:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41409:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41472:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41483:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41468:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41468:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41488:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41461:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41461:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41461:31:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41501:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "41544:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41556:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41567:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41552:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41552:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "41515:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41515:57:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41505:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41592:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41603:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41588:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41588:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41612:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41620:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "41608:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41608:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41581:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41581:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41581:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41640:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "41683:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "41691:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "41654:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41654:44:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "41644:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41718:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41729:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41714:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41714:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "41739:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41747:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "41735:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41735:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41707:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41707:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41707:51:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "41767:41:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "41793:6:111"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "41801:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "41775:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41775:33:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "41767:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41232:9:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "41243:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "41251:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "41259:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "41267:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "41275:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41286:4:111",
                            "type": ""
                          }
                        ],
                        "src": "40964:850:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41899:169:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "41945:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "41954:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "41957:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "41947:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "41947:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "41947:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "41920:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41929:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "41916:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41916:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41941:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "41912:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41912:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "41909:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41970:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41989:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41983:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41983:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "41974:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "42032:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "42008:23:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42008:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42008:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "42047:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "42057:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "42047:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41865:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "41876:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "41888:6:111",
                            "type": ""
                          }
                        ],
                        "src": "41819:249:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "42116:136:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "42161:85:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "42190:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "42193:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "42196:1:111",
                                          "type": "",
                                          "value": "4"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "returndatacopy",
                                        "nodeType": "YulIdentifier",
                                        "src": "42175:14:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "42175:23:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "42175:23:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "42211:25:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "42222:3:111",
                                          "type": "",
                                          "value": "224"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "42233:1:111",
                                              "type": "",
                                              "value": "0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "42227:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "42227:8:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "42218:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "42218:18:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "sig",
                                        "nodeType": "YulIdentifier",
                                        "src": "42211:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "42132:14:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42132:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42150:1:111",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "42129:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42129:23:111"
                              },
                              "nodeType": "YulIf",
                              "src": "42126:120:111"
                            }
                          ]
                        },
                        "name": "return_data_selector",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "sig",
                            "nodeType": "YulTypedName",
                            "src": "42108:3:111",
                            "type": ""
                          }
                        ],
                        "src": "42073:179:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "42304:684:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "42344:9:111",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "42346:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "42320:14:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42320:16:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42338:4:111",
                                    "type": "",
                                    "value": "0x44"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "42317:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42317:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "42314:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42362:21:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42380:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42374:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42374:9:111"
                              },
                              "variables": [
                                {
                                  "name": "data",
                                  "nodeType": "YulTypedName",
                                  "src": "42366:4:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42392:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "42402:66:111",
                                "type": "",
                                "value": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "42396:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "42492:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42498:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "returndatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "42505:14:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42505:16:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "42523:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42501:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42501:25:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "42477:14:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42477:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42477:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42536:25:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "42556:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42550:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42550:11:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "42540:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42570:26:111",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "42580:14:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42580:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "42574:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42605:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "42615:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "42609:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "42691:9:111",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "42693:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "42651:6:111"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "42659:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "42648:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42648:14:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "42671:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42679:4:111",
                                            "type": "",
                                            "value": "0x24"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42667:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42667:17:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "42686:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "42664:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42664:25:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "42645:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42645:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "42642:58:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42709:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "42724:4:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "42730:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "42720:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42720:17:111"
                              },
                              "variables": [
                                {
                                  "name": "msg",
                                  "nodeType": "YulTypedName",
                                  "src": "42713:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42746:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msg",
                                    "nodeType": "YulIdentifier",
                                    "src": "42766:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42760:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42760:10:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "42750:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "42797:9:111",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "42799:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "42785:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "42793:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "42782:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42782:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "42779:27:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "42888:9:111",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "42890:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "msg",
                                            "nodeType": "YulIdentifier",
                                            "src": "42829:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "42834:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42825:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42825:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42843:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42821:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42821:27:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "42858:4:111"
                                          },
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "returndatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "42864:14:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "42864:16:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42854:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42854:27:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "42883:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42850:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42850:36:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "42818:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42818:69:111"
                              },
                              "nodeType": "YulIf",
                              "src": "42815:82:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "42926:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "42940:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "42948:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42936:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42936:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42957:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42932:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42932:30:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "42906:19:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42906:57:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42906:57:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "42972:10:111",
                              "value": {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "42979:3:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "42972:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "try_decode_error_message",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "42296:3:111",
                            "type": ""
                          }
                        ],
                        "src": "42257:731:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43167:242:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43184:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43195:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43177:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43177:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43177:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43218:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43229:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43214:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43214:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43234:2:111",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43207:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43207:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43207:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43257:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43268:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43253:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43253:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "43273:34:111",
                                    "type": "",
                                    "value": "ERC1155: transfer to non ERC1155"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43246:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43246:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43246:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43328:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43339:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43324:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43324:18:111"
                                  },
                                  {
                                    "hexValue": "526563656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "43344:22:111",
                                    "type": "",
                                    "value": "Receiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43317:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43317:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43317:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "43376:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43388:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43399:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "43384:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43384:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43376:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43144:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43158:4:111",
                            "type": ""
                          }
                        ],
                        "src": "42993:416:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43588:230:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43605:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43616:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43598:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43598:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43598:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43639:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43650:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43635:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43635:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43655:2:111",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43628:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43628:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43628:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43678:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43689:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43674:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43674:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a204552433131353552656365697665722072656a65637465",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "43694:34:111",
                                    "type": "",
                                    "value": "ERC1155: ERC1155Receiver rejecte"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43667:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43667:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43667:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43749:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43760:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43745:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43745:18:111"
                                  },
                                  {
                                    "hexValue": "6420746f6b656e73",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "43765:10:111",
                                    "type": "",
                                    "value": "d tokens"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43738:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43738:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43738:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "43785:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43797:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43808:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "43793:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43793:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43785:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43565:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43579:4:111",
                            "type": ""
                          }
                        ],
                        "src": "43414:404:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43948:161:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "43958:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43970:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43981:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "43966:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43966:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43958:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44000:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "44015:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44023:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "44011:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44011:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43993:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43993:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43993:42:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44055:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44066:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44051:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44051:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "44075:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44083:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "44071:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44071:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44044:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44044:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44044:59:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32_t_uint64__to_t_uint32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43909:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "43920:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "43928:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43939:4:111",
                            "type": ""
                          }
                        ],
                        "src": "43823:286:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44288:180:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44305:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44316:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44298:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44298:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44298:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44339:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44350:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44335:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44335:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44355:2:111",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44328:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44328:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44328:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44378:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44389:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44374:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44374:18:111"
                                  },
                                  {
                                    "hexValue": "726561644c6162656c3a20496e646578206f7574206f6620626f756e6473",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "44394:32:111",
                                    "type": "",
                                    "value": "readLabel: Index out of bounds"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44367:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44367:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44367:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "44436:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44448:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44459:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44444:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44444:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44436:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44265:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44279:4:111",
                            "type": ""
                          }
                        ],
                        "src": "44114:354:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44521:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "44531:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "44542:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "44545:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44538:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44538:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "44531:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "44570:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "44572:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "44572:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "44572:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "44562:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "44565:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "44559:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44559:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "44556:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "44504:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "44507:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "44513:3:111",
                            "type": ""
                          }
                        ],
                        "src": "44473:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44652:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "44662:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "44674:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "44677:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "44670:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44670:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "44662:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "44703:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "44705:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "44705:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "44705:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "44694:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "44700:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "44691:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44691:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "44688:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "44634:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "44637:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "44643:4:111",
                            "type": ""
                          }
                        ],
                        "src": "44603:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44910:179:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44927:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44938:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44920:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44920:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44920:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44961:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44972:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44957:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44957:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44977:2:111",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44950:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44950:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44950:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45000:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45011:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44996:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44996:18:111"
                                  },
                                  {
                                    "hexValue": "6e616d65686173683a204a756e6b20617420656e64206f66206e616d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45016:31:111",
                                    "type": "",
                                    "value": "namehash: Junk at end of name"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44989:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44989:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44989:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "45057:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45069:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45080:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "45065:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45065:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45057:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44887:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44901:4:111",
                            "type": ""
                          }
                        ],
                        "src": "44736:353:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45293:321:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45310:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45321:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45303:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45303:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45303:22:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "45334:54:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "45360:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45372:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45383:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45368:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45368:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "45342:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45342:46:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45334:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45408:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45419:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45404:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45404:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "45428:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45436:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "45424:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45424:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45397:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45397:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45397:83:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45500:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45511:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45496:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45496:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "45520:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45528:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "45516:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45516:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45489:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45489:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45489:51:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45560:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45571:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45556:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45556:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "45580:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45588:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "45576:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45576:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45549:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45549:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45549:59:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address_t_uint32_t_uint64__to_t_bytes_memory_ptr_t_address_t_uint32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45238:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "45249:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "45257:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "45265:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "45273:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45284:4:111",
                            "type": ""
                          }
                        ],
                        "src": "45094:520:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45828:435:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "45845:3:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "45858:3:111",
                                            "type": "",
                                            "value": "248"
                                          },
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "45863:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "45854:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "45854:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45872:66:111",
                                        "type": "",
                                        "value": "0xff00000000000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "45850:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45850:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45838:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45838:102:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45838:102:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "45949:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "45969:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "45963:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45963:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "45953:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "46024:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46032:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46020:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46020:17:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "46043:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46048:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46039:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46039:11:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "46052:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "45985:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45985:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45985:74:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "46068:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "46082:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "46087:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46078:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46078:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "46072:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "46103:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "46125:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "46119:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46119:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "46107:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "46180:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46188:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46176:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46176:17:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "46199:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46203:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46195:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46195:10:111"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "46207:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nodeType": "YulIdentifier",
                                  "src": "46141:34:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46141:75:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46141:75:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "46225:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "46240:2:111"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "46244:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46236:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46236:17:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46255:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46232:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46232:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "46225:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_uint8_t_string_memory_ptr_t_bytes_memory_ptr__to_t_uint8_t_string_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "45788:3:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "45793:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "45801:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "45809:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "45820:3:111",
                            "type": ""
                          }
                        ],
                        "src": "45619:644:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46405:119:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "46415:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46427:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46438:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46423:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46423:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "46415:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46457:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "46468:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46450:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46450:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46450:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46495:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46506:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46491:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46491:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "46511:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46484:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46484:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46484:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_rational_1_by_1__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "46366:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "46377:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "46385:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "46396:4:111",
                            "type": ""
                          }
                        ],
                        "src": "46268:256:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46760:353:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "46770:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "46780:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "46774:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46838:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "46853:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "46861:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "46849:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46849:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46831:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46831:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46831:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46885:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46896:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46881:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46881:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "46905:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "46913:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "46901:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46901:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46874:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46874:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46874:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46937:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46948:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46933:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46933:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "46953:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46926:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46926:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46926:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46980:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46991:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46976:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46976:18:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "46996:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46969:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46969:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46969:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47023:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47034:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47019:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47019:19:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47040:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47012:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47012:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47012:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "47053:54:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "47079:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47091:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47102:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47087:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47087:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "47061:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47061:46:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "47053:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "46697:9:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "46708:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "46716:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "46724:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "46732:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "46740:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "46751:4:111",
                            "type": ""
                          }
                        ],
                        "src": "46529:584:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "47292:181:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47309:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47320:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47302:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47302:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47302:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47343:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47354:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47339:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47339:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47359:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47332:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47332:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47332:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47382:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47393:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47378:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47378:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a206d696e74206f66206578697374696e6720746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "47398:33:111",
                                    "type": "",
                                    "value": "ERC1155: mint of existing token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47371:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47371:61:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47371:61:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "47441:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47453:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47464:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "47449:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47449:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "47441:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0a5a3f6c2833a0d5056e4c87913f3b2ad716b97085ed243cd04d020b3830fcac__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "47269:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "47283:4:111",
                            "type": ""
                          }
                        ],
                        "src": "47118:355:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "47652:223:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47669:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47680:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47662:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47662:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47662:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47703:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47714:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47699:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47699:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47719:2:111",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47692:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47692:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47692:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47742:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47753:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47738:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47738:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a206d696e7420746f20746865207a65726f20616464726573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "47758:34:111",
                                    "type": "",
                                    "value": "ERC1155: mint to the zero addres"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47731:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47731:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47731:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47813:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47824:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47809:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47809:18:111"
                                  },
                                  {
                                    "hexValue": "73",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "47829:3:111",
                                    "type": "",
                                    "value": "s"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47802:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47802:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47802:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "47842:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47854:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47865:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "47850:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47850:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "47842:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "47629:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "47643:4:111",
                            "type": ""
                          }
                        ],
                        "src": "47478:397:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "48054:242:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "48071:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48082:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48064:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48064:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48064:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48105:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48116:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48101:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48101:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48121:2:111",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48094:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48094:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48094:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48144:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48155:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48140:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48140:18:111"
                                  },
                                  {
                                    "hexValue": "455243313135353a206e65774f776e65722063616e6e6f742062652074686520",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "48160:34:111",
                                    "type": "",
                                    "value": "ERC1155: newOwner cannot be the "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48133:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48133:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48133:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48215:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48226:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48211:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48211:18:111"
                                  },
                                  {
                                    "hexValue": "4e616d655772617070657220636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "48231:22:111",
                                    "type": "",
                                    "value": "NameWrapper contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48204:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48204:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48204:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "48263:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "48275:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48286:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "48271:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48271:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "48263:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_52680399c4a01b55318dc7a1e656395c494f95152fe03ad468b9b7af702c670b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "48031:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "48045:4:111",
                            "type": ""
                          }
                        ],
                        "src": "47880:416:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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_address_t_uint32_t_uint64__to_t_address_t_uint32_t_uint64__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n    }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint64(add(headStart, 32))\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_decode_tuple_t_contract$_IMetadataService_$17752(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_contract$_INameWrapperUpgrade_$18063__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32(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_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function finalize_allocation(memPtr, size)\n    {\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_string(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := array_allocation_size_string(_1)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _2)\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_string_memory_ptrt_addresst_addresst_uint64t_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_string(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_address(value_1)\n        value3 := value_1\n        value4 := abi_decode_uint64(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n        value6 := abi_decode_uint64(add(headStart, 192))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_contract$_IBaseRegistrar_$11222__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function array_allocation_size_array_uint256_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := array_allocation_size_array_uint256_dyn(_1)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _3)\n        let dst := memPtr\n        mstore(memPtr, _1)\n        dst := add(memPtr, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint64(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint64(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let _5 := array_allocation_size_array_uint256_dyn(_3)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _5)\n        let dst := memPtr\n        mstore(memPtr, _3)\n        dst := add(memPtr, _4)\n        let srcEnd := add(add(_2, shl(5, _3)), _4)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_2, _4)\n        for { } lt(src, srcEnd) { src := add(src, _4) }\n        {\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n        }\n        value0 := memPtr\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_IMetadataService_$17752__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256t_addresst_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value2 := value\n        value3 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_address(value_1)\n        value4 := value_1\n        value5 := abi_decode_uint32(add(headStart, 128))\n        value6 := abi_decode_uint64(add(headStart, 160))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_bytes32t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_contract$_INameWrapperUpgrade_$18063(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_string_calldata_ptrt_addresst_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value3 := value\n        value4 := abi_decode_uint32(add(headStart, 96))\n        value5 := abi_decode_uint64(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_addresst_uint64(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n        value3 := abi_decode_uint64(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value2 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value3 := value_1\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value2 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value3 := value_1\n    }\n    function abi_decode_tuple_t_bytes32t_string_calldata_ptrt_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value3 := value\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_address(value_1)\n        value4 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_addresst_uint32t_uint64t_address(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value2 := value\n        value3 := abi_decode_uint32(add(headStart, 64))\n        value4 := abi_decode_uint64(add(headStart, 96))\n        let value_1 := calldataload(add(headStart, 128))\n        validator_revert_address(value_1)\n        value5 := value_1\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"ERC1155: balance query for the z\")\n        mstore(add(headStart, 96), \"ero address\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := mload(_1)\n        let _3 := array_allocation_size_string(_2)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _3)\n        mstore(memPtr, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(memPtr, 32), _2)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_address_payablet_uint32t_uint64t_address_payable(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_string(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint64(add(headStart, 96))\n        let value_1 := calldataload(add(headStart, 128))\n        validator_revert_address(value_1)\n        value4 := value_1\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_uint64__to_t_bytes32_t_bytes32_t_address_t_address_t_uint64__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        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC1155: ids and amounts length \")\n        mstore(add(headStart, 96), \"mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC1155: transfer to the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC1155: transfer caller is not \")\n        mstore(add(headStart, 96), \"owner nor approved\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r transfer\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value1, tail_1)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"Controllable: Caller is not a co\")\n        mstore(add(headStart, 96), \"ntroller\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155: accounts and ids length\")\n        mstore(add(headStart, 96), \" mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n        mstore(add(headStart, 96), \" for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint64__to_t_bytes32_t_address_t_address_t_uint64__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffff))\n    }\n    function abi_encode_string_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint32_t_uint64_t_address__to_t_string_memory_ptr_t_address_t_uint32_t_uint64_t_address__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 160)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 160))\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value2, _1))\n        mstore(add(headStart, 64), and(value3, 0xffffffff))\n        mstore(add(headStart, 96), and(value4, 0xffffffffffffffff))\n        mstore(add(headStart, 128), and(value5, _1))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_bytes32_t_string_calldata_ptr_t_address_t_address_t_rational_0_by_1_t_uint32_t_uint64__to_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 224)\n        tail := abi_encode_string_calldata(value1, value2, add(headStart, 224))\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 64), and(value3, _1))\n        mstore(add(headStart, 96), and(value4, _1))\n        let _2 := 0xffffffffffffffff\n        mstore(add(headStart, 128), and(value5, _2))\n        mstore(add(headStart, 160), and(value6, 0xffffffff))\n        mstore(add(headStart, 192), and(value7, _2))\n    }\n    function abi_encode_tuple_t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155: caller is not owner nor\")\n        mstore(add(headStart, 96), \" approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_string(value4, tail_2)\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function return_data_selector() -> sig\n    {\n        if gt(returndatasize(), 3)\n        {\n            returndatacopy(0, 0, 4)\n            sig := shr(224, mload(0))\n        }\n    }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        let data := mload(64)\n        let _1 := 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc\n        returndatacopy(data, 4, add(returndatasize(), _1))\n        let offset := mload(data)\n        let _2 := returndatasize()\n        let _3 := 0xffffffffffffffff\n        if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _3) { leave }\n        if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n        finalize_allocation(data, add(add(offset, length), 0x20))\n        ret := msg\n    }\n    function abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155: transfer to non ERC1155\")\n        mstore(add(headStart, 96), \"Receiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC1155: ERC1155Receiver rejecte\")\n        mstore(add(headStart, 96), \"d tokens\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint32_t_uint64__to_t_uint32_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"readLabel: Index out of bounds\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"namehash: Junk at end of name\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address_t_uint32_t_uint64__to_t_bytes_memory_ptr_t_address_t_uint32_t_uint64__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 128)\n        tail := abi_encode_string(value0, add(headStart, 128))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_packed_t_uint8_t_string_memory_ptr_t_bytes_memory_ptr__to_t_uint8_t_string_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        mstore(pos, and(shl(248, value0), 0xff00000000000000000000000000000000000000000000000000000000000000))\n        let length := mload(value1)\n        copy_memory_to_memory_with_cleanup(add(value1, 0x20), add(pos, 1), length)\n        let _1 := add(pos, length)\n        let length_1 := mload(value2)\n        copy_memory_to_memory_with_cleanup(add(value2, 0x20), add(_1, 1), length_1)\n        end := add(add(_1, length_1), 1)\n    }\n    function abi_encode_tuple_t_uint256_t_rational_1_by_1__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_string(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_stringliteral_0a5a3f6c2833a0d5056e4c87913f3b2ad716b97085ed243cd04d020b3830fcac__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC1155: mint of existing token\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC1155: mint to the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_52680399c4a01b55318dc7a1e656395c494f95152fe03ad468b9b7af702c670b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155: newOwner cannot be the \")\n        mstore(add(headStart, 96), \"NameWrapper contract\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "18150": [
                  {
                    "length": 32,
                    "start": 1286
                  },
                  {
                    "length": 32,
                    "start": 2663
                  },
                  {
                    "length": 32,
                    "start": 3516
                  },
                  {
                    "length": 32,
                    "start": 3889
                  },
                  {
                    "length": 32,
                    "start": 4301
                  },
                  {
                    "length": 32,
                    "start": 4504
                  },
                  {
                    "length": 32,
                    "start": 8765
                  },
                  {
                    "length": 32,
                    "start": 9145
                  },
                  {
                    "length": 32,
                    "start": 9599
                  },
                  {
                    "length": 32,
                    "start": 10008
                  },
                  {
                    "length": 32,
                    "start": 10497
                  },
                  {
                    "length": 32,
                    "start": 11787
                  },
                  {
                    "length": 32,
                    "start": 11986
                  },
                  {
                    "length": 32,
                    "start": 12212
                  },
                  {
                    "length": 32,
                    "start": 12358
                  },
                  {
                    "length": 32,
                    "start": 14374
                  },
                  {
                    "length": 32,
                    "start": 15019
                  },
                  {
                    "length": 32,
                    "start": 16667
                  }
                ],
                "18154": [
                  {
                    "length": 32,
                    "start": 1209
                  },
                  {
                    "length": 32,
                    "start": 2785
                  },
                  {
                    "length": 32,
                    "start": 3032
                  },
                  {
                    "length": 32,
                    "start": 5766
                  },
                  {
                    "length": 32,
                    "start": 6325
                  },
                  {
                    "length": 32,
                    "start": 7615
                  },
                  {
                    "length": 32,
                    "start": 7932
                  },
                  {
                    "length": 32,
                    "start": 8607
                  },
                  {
                    "length": 32,
                    "start": 8987
                  },
                  {
                    "length": 32,
                    "start": 13471
                  },
                  {
                    "length": 32,
                    "start": 13670
                  },
                  {
                    "length": 32,
                    "start": 13960
                  },
                  {
                    "length": 32,
                    "start": 14103
                  },
                  {
                    "length": 32,
                    "start": 17996
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102f35760003560e01c80638b4dfa7511610191578063e0dba60f116100e3578063ee7eba7811610097578063f44779b911610071578063f44779b91461075e578063f9547a9e14610771578063fd0cd0d91461079d57600080fd5b8063ee7eba7814610725578063f242432a14610738578063f2fde38b1461074b57600080fd5b8063e985e9c5116100c8578063e985e9c5146106b6578063eb8ae530146106f2578063ed70554d1461070557600080fd5b8063e0dba60f14610690578063e72bf00f146106a357600080fd5b8063b6bcad2611610145578063cf4088231161011f578063cf40882314610647578063d8c9921a1461065a578063da8c229e1461066d57600080fd5b8063b6bcad26146105f9578063c20a2eb01461060c578063c658e0861461063457600080fd5b80639f56dac6116101765780639f56dac6146105c0578063a22cb465146105d3578063adf4960a146105e657600080fd5b80638b4dfa751461059c5780638da5cb5b146105af57600080fd5b806324c1af441161024a57806347d2e9fe116101fe5780635d3590d5116101d85780635d3590d51461056e5780636352211e14610581578063715018a61461059457600080fd5b806347d2e9fe146105285780634e1273f41461053b578063530954671461055b57600080fd5b80632eb2c2d61161022f5780632eb2c2d6146104db57806333c69ea9146104ee5780633f15457f1461050157600080fd5b806324c1af44146104a15780632b20e397146104b457600080fd5b806314ab9038116102ac5780631896f70a116102865780631896f70a146104505780631f4e15041461046357806320c38e2b1461048e57600080fd5b806314ab9038146103e4578063150b7a02146103f95780631534e1771461043d57600080fd5b806301ffc9a7116102dd57806301ffc9a71461036557806306fdde03146103885780630e89341c146103d157600080fd5b8062fdd58e146102f85780630178fe3f1461031e575b600080fd5b61030b610306366004614cca565b6107b0565b6040519081526020015b60405180910390f35b61033161032c366004614cf6565b610871565b604080516001600160a01b03909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610315565b610378610373366004614d3d565b61088c565b6040519015158152602001610315565b6103c46040518060400160405280600b81526020017f4e616d655772617070657200000000000000000000000000000000000000000081525081565b6040516103159190614db1565b6103c46103df366004614cf6565b61092e565b6103f76103f2366004614de1565b6109bb565b005b61040c610407366004614e56565b610ad4565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610315565b6103f761044b366004614ec9565b610c7c565b6103f761045e366004614ee6565b610d10565b600654610476906001600160a01b031681565b6040516001600160a01b039091168152602001610315565b6103c461049c366004614cf6565b610deb565b61030b6104af36600461500a565b610e85565b6104767f000000000000000000000000000000000000000000000000000000000000000081565b6103f76104e936600461513d565b611213565b6103f76104fc3660046151eb565b6115b1565b6104767f000000000000000000000000000000000000000000000000000000000000000081565b61030b6105363660046151eb565b6117aa565b61054e610549366004615231565b611978565b604051610315919061532f565b600454610476906001600160a01b031681565b6103f761057c366004615342565b611ab6565b61047661058f366004614cf6565b611ba2565b6103f7611bad565b6103f76105aa366004615383565b611c13565b6000546001600160a01b0316610476565b61030b6105ce3660046153c5565b611e21565b6103f76105e1366004615458565b611fc5565b6103786105f4366004615486565b6120cd565b6103f7610607366004614ec9565b6120f2565b61061f61061a366004615486565b612418565b60405163ffffffff9091168152602001610315565b61030b6106423660046154a9565b6124c3565b6103f7610655366004615528565b61283f565b6103f7610668366004615560565b61299a565b61037861067b366004614ec9565b60036020526000908152604090205460ff1681565b6103f761069e366004615458565b612adc565b6103f76106b136600461558e565b612bb4565b6103786106c43660046155f6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6103f761070036600461558e565b612cc5565b61030b610713366004614cf6565b60016020526000908152604090205481565b6103f7610733366004615624565b6130ed565b6103f7610746366004615698565b6131e3565b6103f7610759366004614ec9565b613318565b61037861076c366004614ee6565b6133f7565b61078461077f366004615701565b613452565b60405167ffffffffffffffff9091168152602001610315565b6103786107ab366004614cf6565b6137cf565b60006001600160a01b0383166108335760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600061083e83610871565b50509050836001600160a01b0316816001600160a01b03160361086557600191505061086b565b60009150505b92915050565b600080600061087f846138a1565b9250925092509193909250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fe89c48dc00000000000000000000000000000000000000000000000000000000148061091f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061086b575061086b826138d8565b600480546040517f0e89341c0000000000000000000000000000000000000000000000000000000081529182018390526060916001600160a01b0390911690630e89341c90602401600060405180830381865afa158015610993573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086b919081019061578b565b816109c681336133f7565b6109ec5760405163168ab55d60e31b81526004810182905233602482015260440161082a565b82601060006109fa83610871565b5091505063ffffffff8282161615610a285760405163a2a7201360e01b81526004810184905260240161082a565b6040517f14ab90380000000000000000000000000000000000000000000000000000000081526004810187905267ffffffffffffffff861660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906314ab9038906044015b600060405180830381600087803b158015610ab457600080fd5b505af1158015610ac8573d6000803e3d6000fd5b50505050505050505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b38576040517f1931a53800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080808080610b4a8789018961580d565b84516020860120949950929750909550935091508990808214610ba3576040517fc65c3ccc000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161082a565b6040517f28ed4f6c000000000000000000000000000000000000000000000000000000008152600481018390523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906328ed4f6c90604401600060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b50505050610c4987878787876139bb565b507f150b7a02000000000000000000000000000000000000000000000000000000009d9c50505050505050505050505050565b6000546001600160a01b03163314610cd65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b81610d1b81336133f7565b610d415760405163168ab55d60e31b81526004810182905233602482015260440161082a565b8260086000610d4f83610871565b5091505063ffffffff8282161615610d7d5760405163a2a7201360e01b81526004810184905260240161082a565b6040517f1896f70a000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0386811660248301527f00000000000000000000000000000000000000000000000000000000000000001690631896f70a90604401610a9a565b60056020526000908152604090208054610e0490615885565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3090615885565b8015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b505050505081565b600087610e9281336133f7565b610eb85760405163168ab55d60e31b81526004810182905233602482015260440161082a565b8888805190602001206000610ef48383604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c91906158d8565b90506001600160a01b038116610fe6576000610fb785610871565b509150506020811615610fe05760405163a2a7201360e01b81526004810184905260240161082a565b5061101c565b6000610ff183610871565b50915050604081161561101a5760405163a2a7201360e01b81526004810184905260240161082a565b505b8b5160208d01206110548e82604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b96506110628e888b8b613b15565b975061106d876137cf565b61113c576040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018f9052602481018290523060448201526001600160a01b038c8116606483015267ffffffffffffffff8c1660848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561111157600080fd5b505af1158015611125573d6000803e3d6000fd5b505050506111378e888f8f8d8d613b5b565b611202565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018f9052602481018290523060448201526001600160a01b038c8116606483015267ffffffffffffffff8c1660848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156111dc57600080fd5b505af11580156111f0573d6000803e3d6000fd5b505050506112028e888f8f8d8d613c15565b505050505050979650505050505050565b815183511461128a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161082a565b6001600160a01b0384166113065760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161082a565b6001600160a01b03851633148061134057506001600160a01b038516600090815260026020908152604080832033845290915290205460ff165b6113b25760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000606482015260840161082a565b60005b83518110156115445760008482815181106113d2576113d26158f5565b6020026020010151905060008483815181106113f0576113f06158f5565b60200260200101519050600080600061140885610871565b925092509250611419826004161590565b6114395760405163a2a7201360e01b81526004810186905260240161082a565b83600114801561145a57508a6001600160a01b0316836001600160a01b0316145b6114cc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161082a565b60008581526001602052604090206001600160a01b038b1677ffffffff000000000000000000000000000000000000000060a085901b16177fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1617905550505050508061153d90615953565b90506113b5565b50836001600160a01b0316856001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161159492919061598b565b60405180910390a46115aa338686868686613cd0565b5050505050565b60408051602080820187905281830186905282518083038401815260609092019092528051910120600080806115e684610871565b91945092509050600080806115fa8b610871565b9093509150507f6c32148f748aba23997146d7fe89e962e3cc30271290fb96f5f4337756c03b528b016117005761163187336133f7565b6116575760405163168ab55d60e31b81526004810188905233602482015260440161082a565b6040517fd6e4fa86000000000000000000000000000000000000000000000000000000008152600481018b90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d6e4fa8690602401602060405180830381865afa1580156116d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f991906159b9565b9250611734565b61170a8b336133f7565b6117305760405163168ab55d60e31b81526004810188905233602482015260440161082a565b8092505b61173f878a84613edc565b61174a888585613f12565b9750604085161580159061176c57508463ffffffff1689861763ffffffff1614155b1561178d5760405163a2a7201360e01b81526004810188905260240161082a565b9784179761179d87878b8b613f5c565b5050505050505050505050565b3360009081526003602052604081205460ff1661182f5760405162461bcd60e51b815260206004820152602860248201527f436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f60448201527f6e74726f6c6c6572000000000000000000000000000000000000000000000000606482015260840161082a565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae602080830191909152818301889052825180830384018152606090920190925280519101206000906040517fc475abff00000000000000000000000000000000000000000000000000000000815260048101889052602481018790529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c475abff906044016020604051808303816000875af1158015611906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192a91906159b9565b9150611935816137cf565b1561196f576000808061194784610871565b925092509250611958868287613f12565b955061196b848460408a86171789613fb8565b5050505b50949350505050565b606081518351146119f15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161082a565b6000835167ffffffffffffffff811115611a0d57611a0d614f16565b604051908082528060200260200182016040528015611a36578160200160208202803683370190505b50905060005b8451811015611aae57611a81858281518110611a5a57611a5a6158f5565b6020026020010151858381518110611a7457611a746158f5565b60200260200101516107b0565b828281518110611a9357611a936158f5565b6020908102919091010152611aa781615953565b9050611a3c565b509392505050565b6000546001600160a01b03163314611b105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9c91906159d2565b50505050565b600061086b82614029565b6000546001600160a01b03163314611c075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b611c11600061403f565b565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae60208083019190915281830186905282518083038401815260609092019092528051910120611c6781336133f7565b611c8d5760405163168ab55d60e31b81526004810182905233602482015260440161082a565b6001600160a01b038216611cd8576040517f5949361a0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161082a565b306001600160a01b03841603611d25576040517f5949361a0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161082a565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae60208083019190915281830187905282518083038401815260609092019092528051910120611d7a905b836140a7565b6040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152604482018690527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e90606401600060405180830381600087803b158015611e0357600080fd5b505af1158015611e17573d6000803e3d6000fd5b5050505050505050565b3360009081526003602052604081205460ff16611ea65760405162461bcd60e51b815260206004820152602860248201527f436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f60448201527f6e74726f6c6c6572000000000000000000000000000000000000000000000000606482015260840161082a565b60008888604051611eb89291906159ef565b6040519081900381207ffca247ac000000000000000000000000000000000000000000000000000000008252600482018190523060248301526044820188905291507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063fca247ac906064016020604051808303816000875af1158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7191906159b9565b9150611fb889898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250889150879050896139bb565b5050979650505050505050565b6001600160a01b03821633036120435760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161082a565b3360008181526002602090815260408083206001600160a01b0387168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000806120d984610871565b50841663ffffffff908116908516149250505092915050565b6000546001600160a01b0316331461214c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6006546001600160a01b03161561229e576006546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a22cb46590604401600060405180830381600087803b1580156121e557600080fd5b505af11580156121f9573d6000803e3d6000fd5b50506006546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201527f0000000000000000000000000000000000000000000000000000000000000000909116925063a22cb4659150604401600060405180830381600087803b15801561228557600080fd5b505af1158015612299573d6000803e3d6000fd5b505050505b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811790915515612415576006546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600160248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a22cb46590604401600060405180830381600087803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b50506006546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600160248201527f0000000000000000000000000000000000000000000000000000000000000000909116925063a22cb4659150604401600060405180830381600087803b15801561240157600080fd5b505af11580156115aa573d6000803e3d6000fd5b50565b60008261242581336133f7565b61244b5760405163168ab55d60e31b81526004810182905233602482015260440161082a565b836002600061245983610871565b5091505063ffffffff82821616156124875760405163a2a7201360e01b81526004810184905260240161082a565b61249187876141b2565b6000808061249e8a610871565b92509250925081891798506124b58a848b84613f5c565b509698975050505050505050565b6000866124d081336133f7565b6124f65760405163168ab55d60e31b81526004810182905233602482015260440161082a565b8787876040516125079291906159ef565b604051809103902060006125428383604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ea91906158d8565b90506001600160a01b03811661263457600061260585610871565b50915050602081161561262e5760405163a2a7201360e01b81526004810184905260240161082a565b5061266a565b600061263f83610871565b5091505060408116156126685760405163a2a7201360e01b81526004810184905260240161082a565b505b60008b8b60405161267c9291906159ef565b604051809103902090506126b78d82604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b96506126c58d888b8b613b15565b97506126d0876137cf565b6127dd576040517f06ab5923000000000000000000000000000000000000000000000000000000008152600481018e9052602481018290523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906306ab5923906064016020604051808303816000875af1158015612761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278591906159b9565b506127d88d888e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d613b5b565b61282f565b61282f8d888e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d613c15565b5050505050509695505050505050565b8361284a81336133f7565b6128705760405163168ab55d60e31b81526004810182905233602482015260440161082a565b84601c600061287e83610871565b5091505063ffffffff82821616156128ac5760405163a2a7201360e01b81526004810184905260240161082a565b6040517fcf408823000000000000000000000000000000000000000000000000000000008152600481018990523060248201526001600160a01b03878116604483015267ffffffffffffffff871660648301527f0000000000000000000000000000000000000000000000000000000000000000169063cf40882390608401600060405180830381600087803b15801561294557600080fd5b505af1158015612959573d6000803e3d6000fd5b50505050600061296b8960001c610871565b5050905061298f81898b60001c6001604051806020016040528060008152506141e1565b505050505050505050565b604080516020808201869052818301859052825180830384018152606090920190925280519101206129cc81336133f7565b6129f25760405163168ab55d60e31b81526004810182905233602482015260440161082a565b7f6c32148f748aba23997146d7fe89e962e3cc30271290fb96f5f4337756c03b528401612a4b576040517f615a470300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382161580612a6957506001600160a01b03821630145b15612aab576040517f5949361a0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161082a565b60408051602080820187905281830186905282518083038401815260609092019092528051910120611b9c90611d74565b6000546001600160a01b03163314612b365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6001600160a01b03821660008181526003602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf8791015b60405180910390a25050565b60008484604051612bc69291906159ef565b60405190819003902090506000612c247f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae83604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9050600080612c328361438f565b6006546040517ff9547a9e0000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03169063f9547a9e90612c89908b908b908b90889088908d90600401615a2a565b600060405180830381600087803b158015612ca357600080fd5b505af1158015612cb7573d6000803e3d6000fd5b505050505050505050505050565b600080612d0c600087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506144249050565b915091506000612d558288888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506144db9050565b604080516020808201849052818301879052825180830384018152606090920190925280519101209091507f6c32148f748aba23997146d7fe89e962e3cc30271290fb96f5f4337756c03b528201612dd9576040517f615a470300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302571be390602401602060405180830381865afa158015612e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7e91906158d8565b90506001600160a01b0381163314801590612f3f57506040517fe985e9c50000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d91906159d2565b155b15612f665760405163168ab55d60e31b81526004810183905233602482015260440161082a565b6001600160a01b03861615613011576040517f1896f70a000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0387811660248301527f00000000000000000000000000000000000000000000000000000000000000001690631896f70a90604401600060405180830381600087803b158015612ff857600080fd5b505af115801561300c573d6000803e3d6000fd5b505050505b6040517f5b0fc9c3000000000000000000000000000000000000000000000000000000008152600481018390523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635b0fc9c390604401600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b5050505061298f828a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508d9350915081905061459a565b600084846040516130ff9291906159ef565b60405180910390209050600061313c8783604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b905060008061314a8361438f565b6006546040517f24c1af440000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b0316906324c1af44906131a6908c908c908c908c908c906000908b908b90600401615a80565b600060405180830381600087803b1580156131c057600080fd5b505af11580156131d4573d6000803e3d6000fd5b50505050505050505050505050565b6001600160a01b03841661325f5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161082a565b6001600160a01b03851633148061329957506001600160a01b038516600090815260026020908152604080832033845290915290205460ff165b61330b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161082a565b6115aa85858585856141e1565b6000546001600160a01b031633146133725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6001600160a01b0381166133ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161082a565b6124158161403f565b60008061340384611ba2565b9050826001600160a01b0316816001600160a01b0316148061344a57506001600160a01b0380821660009081526002602090815260408083209387168352929052205460ff165b949350505050565b60008087876040516134659291906159ef565b6040519081900381207f6352211e0000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156134ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351291906158d8565b90506001600160a01b03811633148015906135d357506040517fe985e9c50000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa1580156135ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d191906159d2565b155b1561364357604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae6020808301919091528183018590528251808303840181526060830193849052805191012063168ab55d60e31b909252606481019190915233608482015260a40161082a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152306024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90606401600060405180830381600087803b1580156136cc57600080fd5b505af11580156136e0573d6000803e3d6000fd5b50506040517f28ed4f6c000000000000000000000000000000000000000000000000000000008152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506328ed4f6c9150604401600060405180830381600087803b15801561376557600080fd5b505af1158015613779573d6000803e3d6000fd5b505050506137c289898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a9150899050886139bb565b9998505050505050505050565b6000806137db83611ba2565b6001600160a01b03161415801561086b57506040517f02571be30000000000000000000000000000000000000000000000000000000081526004810183905230906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa15801561386d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389191906158d8565b6001600160a01b03161492915050565b6000818152600160205260408120549060c082901c82428210156138c857600092506138d0565b60a081901c92505b509193909250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061396b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061086b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461086b565b8451602086012060009081613a177f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae83604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b90506000613a26828488614604565b97509150613a5d90507f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae838b8b60408c178b613b5b565b6001600160a01b03851615613b08576040517f1896f70a000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0386811660248301527f00000000000000000000000000000000000000000000000000000000000000001690631896f70a90604401600060405180830381600087803b158015613aef57600080fd5b505af1158015613b03573d6000803e3d6000fd5b505050505b5093979650505050505050565b600080613b2185610871565b92505050600080613b348860001c610871565b9250925050613b44878784613edc565b613b4f858483613f12565b98975050505050505050565b60008681526005602052604081208054613bfd918791613b7a90615885565b80601f0160208091040260200160405190810160405280929190818152602001828054613ba690615885565b8015613bf35780601f10613bc857610100808354040283529160200191613bf3565b820191906000526020600020905b815481529060010190602001808311613bd657829003601f168201915b50505050506146dc565b9050613c0c868286868661459a565b50505050505050565b6000613c2086611ba2565b90506000613c4686600560008b81526020019081526020016000208054613b7a90615885565b6000888152600560205260409020805491925090613c6390615885565b9050600003613c86576000878152600560205260409020613c848282615b2e565b505b613c9287838686613f5c565b6001600160a01b038516613cb057613cab8760006140a7565b611e17565b611e1782868960001c6001604051806020016040528060008152506141e1565b6001600160a01b0384163b15613ed4576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c8190613d2d9089908990889088908890600401615c2a565b6020604051808303816000875af1925050508015613d68575060408051601f3d908101601f19168201909252613d6591810190615c7c565b60015b613e1d57613d74615c99565b806308c379a003613dad5750613d88615cb5565b80613d935750613daf565b8060405162461bcd60e51b815260040161082a9190614db1565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161082a565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014613c0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161082a565b505050505050565b6040828116146001821615818015613ef15750805b156115aa5760405163a2a7201360e01b81526004810186905260240161082a565b60008167ffffffffffffffff168467ffffffffffffffff161115613f34578193505b8267ffffffffffffffff168467ffffffffffffffff161015613f54578293505b509192915050565b613f6884848484613fb8565b6040805163ffffffff8416815267ffffffffffffffff8316602082015285917f936318e296f824e203b086d97bb155a0200cec4847efea1fb4b9b7f924157355910160405180910390a250505050565b613fc28483614785565b60008481526001602052604090206001600160a01b03841677ffffffff000000000000000000000000000000000000000060a085901b16177fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b16179055611b9c565b60008061403583610871565b5090949350505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6140b28260016120cd565b156140d35760405163a2a7201360e01b81526004810183905260240161082a565b6140dc826147be565b6040517f5b0fc9c3000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382811660248301527f00000000000000000000000000000000000000000000000000000000000000001690635b0fc9c390604401600060405180830381600087803b15801561415f57600080fd5b505af1158015614173573d6000803e3d6000fd5b50506040516001600160a01b03841681528492507fee2ba1195c65bcf218a83d874335c6bf9d9067b4c672f3c3bf16cf40de7586c49150602001612ba8565b60408116156141dd5760405163168ab55d60e31b81526004810183905233602482015260440161082a565b5050565b60008060006141ef86610871565b925092509250614200826004161590565b6142205760405163a2a7201360e01b81526004810187905260240161082a565b8460011480156142415750876001600160a01b0316836001600160a01b0316145b6142b35760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161082a565b866001600160a01b0316836001600160a01b0316036142d4575050506115aa565b60008681526001602052604090206001600160a01b03881677ffffffff000000000000000000000000000000000000000060a085901b16177fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1617905560408051878152602081018790526001600160a01b03808a1692908b169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611e17338989898989614879565b60065460009081906001600160a01b03166143d6576040517f24c1d6d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6143e083336133f7565b6144065760405163168ab55d60e31b81526004810184905233602482015260440161082a565b61440f83610871565b909350915061441f9050836147be565b915091565b600080835183106144775760405162461bcd60e51b815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e64730000604482015260640161082a565b600084848151811061448b5761448b6158f5565b016020015160f81c905080156144b7576144b0856144aa866001615d5d565b836149d4565b92506144bc565b600092505b6144c68185615d5d565b6144d1906001615d5d565b9150509250929050565b60008060006144ea8585614424565b90925090508161455c57600185516145029190615d70565b84146145505760405162461bcd60e51b815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d65000000604482015260640161082a565b506000915061086b9050565b61456685826144db565b6040805160208101929092528101839052606001604051602081830303815290604052805190602001209250505092915050565b60008581526005602052604090206145b28582615b2e565b506145bf858484846149f8565b847f8ce7013e8abebc55c3890a68f5a27c67c3f7efa64e584de5fb22363c606fd340858585856040516145f59493929190615d83565b60405180910390a25050505050565b600080808061461287610871565b6040517fd6e4fa86000000000000000000000000000000000000000000000000000000008152600481018a905292965090945091506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d6e4fa8690602401602060405180830381865afa15801561469b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146bf91906159b9565b90506146cc868383613f12565b9550859250505093509350939050565b606060018351101561471a576040517f280dacb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff8351111561475857826040517fe3ba295f00000000000000000000000000000000000000000000000000000000815260040161082a9190614db1565b8251838360405160200161476e93929190615dcb565b604051602081830303815290604052905092915050565b63ffffffbf81161580159061479d5750604181811614155b156141dd5760405163a2a7201360e01b81526004810183905260240161082a565b60008060006147cc84610871565b600087815260016020526040902077ffffffff000000000000000000000000000000000000000060a084901b167fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b161790559194509250905060408051858152600160208201526000916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a450505050565b6001600160a01b0384163b15613ed4576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e61906148d69089908990889088908890600401615e2c565b6020604051808303816000875af1925050508015614911575060408051601f3d908101601f1916820190925261490e91810190615c7c565b60015b61491d57613d74615c99565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014613c0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161082a565b82516000906149e38385615d5d565b11156149ee57600080fd5b5091016020012090565b614a028483614785565b6000614a0d85611ba2565b90506001600160a01b03811615614a5e57614a27856147be565b6040516000815285907fee2ba1195c65bcf218a83d874335c6bf9d9067b4c672f3c3bf16cf40de7586c49060200160405180910390a25b6115aa858585858360008080614a7384610871565b9250925092508467ffffffffffffffff168167ffffffffffffffff161115614a99578094505b6001600160a01b03831615614af05760405162461bcd60e51b815260206004820152601f60248201527f455243313135353a206d696e74206f66206578697374696e6720746f6b656e00604482015260640161082a565b6001600160a01b038716614b6c5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161082a565b306001600160a01b03881603614bea5760405162461bcd60e51b815260206004820152603460248201527f455243313135353a206e65774f776e65722063616e6e6f74206265207468652060448201527f4e616d655772617070657220636f6e7472616374000000000000000000000000606482015260840161082a565b60008481526001602052604090206001600160a01b03881677ffffffff000000000000000000000000000000000000000088851760a01b16177fffffffffffffffff00000000000000000000000000000000000000000000000060c088901b1617905560408051858152600160208201526001600160a01b0389169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611e173360008987600160405180602001604052806000815250614879565b6001600160a01b038116811461241557600080fd5b60008060408385031215614cdd57600080fd5b8235614ce881614cb5565b946020939093013593505050565b600060208284031215614d0857600080fd5b5035919050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461241557600080fd5b600060208284031215614d4f57600080fd5b8135614d5a81614d0f565b9392505050565b60005b83811015614d7c578181015183820152602001614d64565b50506000910152565b60008151808452614d9d816020860160208601614d61565b601f01601f19169290920160200192915050565b602081526000614d5a6020830184614d85565b803567ffffffffffffffff81168114614ddc57600080fd5b919050565b60008060408385031215614df457600080fd5b82359150614e0460208401614dc4565b90509250929050565b60008083601f840112614e1f57600080fd5b50813567ffffffffffffffff811115614e3757600080fd5b602083019150836020828501011115614e4f57600080fd5b9250929050565b600080600080600060808688031215614e6e57600080fd5b8535614e7981614cb5565b94506020860135614e8981614cb5565b935060408601359250606086013567ffffffffffffffff811115614eac57600080fd5b614eb888828901614e0d565b969995985093965092949392505050565b600060208284031215614edb57600080fd5b8135614d5a81614cb5565b60008060408385031215614ef957600080fd5b823591506020830135614f0b81614cb5565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614f6b57614f6b614f16565b6040525050565b600067ffffffffffffffff821115614f8c57614f8c614f16565b50601f01601f191660200190565b600082601f830112614fab57600080fd5b8135614fb681614f72565b604051614fc38282614f45565b828152856020848701011115614fd857600080fd5b82602086016020830137600092810160200192909252509392505050565b803563ffffffff81168114614ddc57600080fd5b600080600080600080600060e0888a03121561502557600080fd5b87359650602088013567ffffffffffffffff81111561504357600080fd5b61504f8a828b01614f9a565b965050604088013561506081614cb5565b9450606088013561507081614cb5565b935061507e60808901614dc4565b925061508c60a08901614ff6565b915061509a60c08901614dc4565b905092959891949750929550565b600067ffffffffffffffff8211156150c2576150c2614f16565b5060051b60200190565b600082601f8301126150dd57600080fd5b813560206150ea826150a8565b6040516150f78282614f45565b83815260059390931b850182019282810191508684111561511757600080fd5b8286015b84811015615132578035835291830191830161511b565b509695505050505050565b600080600080600060a0868803121561515557600080fd5b853561516081614cb5565b9450602086013561517081614cb5565b9350604086013567ffffffffffffffff8082111561518d57600080fd5b61519989838a016150cc565b945060608801359150808211156151af57600080fd5b6151bb89838a016150cc565b935060808801359150808211156151d157600080fd5b506151de88828901614f9a565b9150509295509295909350565b6000806000806080858703121561520157600080fd5b843593506020850135925061521860408601614ff6565b915061522660608601614dc4565b905092959194509250565b6000806040838503121561524457600080fd5b823567ffffffffffffffff8082111561525c57600080fd5b818501915085601f83011261527057600080fd5b8135602061527d826150a8565b60405161528a8282614f45565b83815260059390931b85018201928281019150898411156152aa57600080fd5b948201945b838610156152d15785356152c281614cb5565b825294820194908201906152af565b965050860135925050808211156152e757600080fd5b506144d1858286016150cc565b600081518084526020808501945080840160005b8381101561532457815187529582019590820190600101615308565b509495945050505050565b602081526000614d5a60208301846152f4565b60008060006060848603121561535757600080fd5b833561536281614cb5565b9250602084013561537281614cb5565b929592945050506040919091013590565b60008060006060848603121561539857600080fd5b8335925060208401356153aa81614cb5565b915060408401356153ba81614cb5565b809150509250925092565b600080600080600080600060c0888a0312156153e057600080fd5b873567ffffffffffffffff8111156153f757600080fd5b6154038a828b01614e0d565b909850965050602088013561541781614cb5565b945060408801359350606088013561542e81614cb5565b925061543c60808901614ff6565b915061509a60a08901614dc4565b801515811461241557600080fd5b6000806040838503121561546b57600080fd5b823561547681614cb5565b91506020830135614f0b8161544a565b6000806040838503121561549957600080fd5b82359150614e0460208401614ff6565b60008060008060008060a087890312156154c257600080fd5b86359550602087013567ffffffffffffffff8111156154e057600080fd5b6154ec89828a01614e0d565b909650945050604087013561550081614cb5565b925061550e60608801614ff6565b915061551c60808801614dc4565b90509295509295509295565b6000806000806080858703121561553e57600080fd5b84359350602085013561555081614cb5565b9250604085013561521881614cb5565b60008060006060848603121561557557600080fd5b833592506020840135915060408401356153ba81614cb5565b600080600080606085870312156155a457600080fd5b843567ffffffffffffffff8111156155bb57600080fd5b6155c787828801614e0d565b90955093505060208501356155db81614cb5565b915060408501356155eb81614cb5565b939692955090935050565b6000806040838503121561560957600080fd5b823561561481614cb5565b91506020830135614f0b81614cb5565b60008060008060006080868803121561563c57600080fd5b85359450602086013567ffffffffffffffff81111561565a57600080fd5b61566688828901614e0d565b909550935050604086013561567a81614cb5565b9150606086013561568a81614cb5565b809150509295509295909350565b600080600080600060a086880312156156b057600080fd5b85356156bb81614cb5565b945060208601356156cb81614cb5565b93506040860135925060608601359150608086013567ffffffffffffffff8111156156f557600080fd5b6151de88828901614f9a565b60008060008060008060a0878903121561571a57600080fd5b863567ffffffffffffffff81111561573157600080fd5b61573d89828a01614e0d565b909750955050602087013561575181614cb5565b935061575f60408801614ff6565b925061576d60608801614dc4565b9150608087013561577d81614cb5565b809150509295509295509295565b60006020828403121561579d57600080fd5b815167ffffffffffffffff8111156157b457600080fd5b8201601f810184136157c557600080fd5b80516157d081614f72565b6040516157dd8282614f45565b8281528660208486010111156157f257600080fd5b615803836020830160208701614d61565b9695505050505050565b600080600080600060a0868803121561582557600080fd5b853567ffffffffffffffff81111561583c57600080fd5b61584888828901614f9a565b955050602086013561585981614cb5565b935061586760408701614ff6565b925061587560608701614dc4565b9150608086013561568a81614cb5565b600181811c9082168061589957607f821691505b6020821081036158d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156158ea57600080fd5b8151614d5a81614cb5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361598457615984615924565b5060010190565b60408152600061599e60408301856152f4565b82810360208401526159b081856152f4565b95945050505050565b6000602082840312156159cb57600080fd5b5051919050565b6000602082840312156159e457600080fd5b8151614d5a8161544a565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60a081526000615a3e60a08301888a6159ff565b90506001600160a01b03808716602084015263ffffffff8616604084015267ffffffffffffffff85166060840152808416608084015250979650505050505050565b88815260e060208201526000615a9a60e08301898b6159ff565b6001600160a01b03978816604084015295909616606082015267ffffffffffffffff938416608082015263ffffffff9290921660a083015290911660c090910152949350505050565b601f821115615b2957600081815260208120601f850160051c81016020861015615b0a5750805b601f850160051c820191505b81811015613ed457828155600101615b16565b505050565b815167ffffffffffffffff811115615b4857615b48614f16565b615b5c81615b568454615885565b84615ae3565b602080601f831160018114615baf5760008415615b795750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613ed4565b600085815260208120601f198616915b82811015615bde57888601518255948401946001909101908401615bbf565b5085821015615c1a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60006001600160a01b03808816835280871660208401525060a06040830152615c5660a08301866152f4565b8281036060840152615c6881866152f4565b90508281036080840152613b4f8185614d85565b600060208284031215615c8e57600080fd5b8151614d5a81614d0f565b600060033d1115615cb25760046000803e5060005160e01c5b90565b600060443d1015615cc35790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715615d1157505050505090565b8285019150815181811115615d295750505050505090565b843d8701016020828501011115615d435750505050505090565b615d5260208286010187614f45565b509095945050505050565b8082018082111561086b5761086b615924565b8181038181111561086b5761086b615924565b608081526000615d966080830187614d85565b6001600160a01b039590951660208301525063ffffffff92909216604083015267ffffffffffffffff16606090910152919050565b7fff000000000000000000000000000000000000000000000000000000000000008460f81b16815260008351615e08816001850160208801614d61565b835190830190615e1f816001840160208801614d61565b0160010195945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152615e6460a0830184614d85565b97965050505050505056fea2646970667358221220deb78ab8de98646fd2ce04d62c4add2b0ba8c3fed6dbe5eb810c65ecb6a839ea64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2F3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B4DFA75 GT PUSH2 0x191 JUMPI DUP1 PUSH4 0xE0DBA60F GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xEE7EBA78 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF44779B9 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF44779B9 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0xF9547A9E EQ PUSH2 0x771 JUMPI DUP1 PUSH4 0xFD0CD0D9 EQ PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xEE7EBA78 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x738 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE985E9C5 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6B6 JUMPI DUP1 PUSH4 0xEB8AE530 EQ PUSH2 0x6F2 JUMPI DUP1 PUSH4 0xED70554D EQ PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE0DBA60F EQ PUSH2 0x690 JUMPI DUP1 PUSH4 0xE72BF00F EQ PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6BCAD26 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xCF408823 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0xCF408823 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0xD8C9921A EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0xDA8C229E EQ PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6BCAD26 EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0xC20A2EB0 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xC658E086 EQ PUSH2 0x634 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9F56DAC6 GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x9F56DAC6 EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x5D3 JUMPI DUP1 PUSH4 0xADF4960A EQ PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8B4DFA75 EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x24C1AF44 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x47D2E9FE GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x5D3590D5 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x5D3590D5 EQ PUSH2 0x56E JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x581 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x47D2E9FE EQ PUSH2 0x528 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x53095467 EQ PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x4DB JUMPI DUP1 PUSH4 0x33C69EA9 EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x24C1AF44 EQ PUSH2 0x4A1 JUMPI DUP1 PUSH4 0x2B20E397 EQ PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AB9038 GT PUSH2 0x2AC JUMPI DUP1 PUSH4 0x1896F70A GT PUSH2 0x286 JUMPI DUP1 PUSH4 0x1896F70A EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x1F4E1504 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x20C38E2B EQ PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AB9038 EQ PUSH2 0x3E4 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x3F9 JUMPI DUP1 PUSH4 0x1534E177 EQ PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 GT PUSH2 0x2DD JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x178FE3F EQ PUSH2 0x31E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30B PUSH2 0x306 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCA JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x331 PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x871 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x373 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D3D JUMP JUMPDEST PUSH2 0x88C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x3C4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4E616D6557726170706572000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x4DB1 JUMP JUMPDEST PUSH2 0x3C4 PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x92E JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DE1 JUMP JUMPDEST PUSH2 0x9BB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x40C PUSH2 0x407 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E56 JUMP JUMPDEST PUSH2 0xAD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x44B CALLDATASIZE PUSH1 0x4 PUSH2 0x4EC9 JUMP JUMPDEST PUSH2 0xC7C JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x4EE6 JUMP JUMPDEST PUSH2 0xD10 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x476 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x3C4 PUSH2 0x49C CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0xDEB JUMP JUMPDEST PUSH2 0x30B PUSH2 0x4AF CALLDATASIZE PUSH1 0x4 PUSH2 0x500A JUMP JUMPDEST PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x476 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x4E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x513D JUMP JUMPDEST PUSH2 0x1213 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x51EB JUMP JUMPDEST PUSH2 0x15B1 JUMP JUMPDEST PUSH2 0x476 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x536 CALLDATASIZE PUSH1 0x4 PUSH2 0x51EB JUMP JUMPDEST PUSH2 0x17AA JUMP JUMPDEST PUSH2 0x54E PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x5231 JUMP JUMPDEST PUSH2 0x1978 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x532F JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x476 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x57C CALLDATASIZE PUSH1 0x4 PUSH2 0x5342 JUMP JUMPDEST PUSH2 0x1AB6 JUMP JUMPDEST PUSH2 0x476 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x1BA2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x1BAD JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x5383 JUMP JUMPDEST PUSH2 0x1C13 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x476 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x5CE CALLDATASIZE PUSH1 0x4 PUSH2 0x53C5 JUMP JUMPDEST PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x5458 JUMP JUMPDEST PUSH2 0x1FC5 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x5F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5486 JUMP JUMPDEST PUSH2 0x20CD JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x607 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EC9 JUMP JUMPDEST PUSH2 0x20F2 JUMP JUMPDEST PUSH2 0x61F PUSH2 0x61A CALLDATASIZE PUSH1 0x4 PUSH2 0x5486 JUMP JUMPDEST PUSH2 0x2418 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x642 CALLDATASIZE PUSH1 0x4 PUSH2 0x54A9 JUMP JUMPDEST PUSH2 0x24C3 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x5528 JUMP JUMPDEST PUSH2 0x283F JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x668 CALLDATASIZE PUSH1 0x4 PUSH2 0x5560 JUMP JUMPDEST PUSH2 0x299A JUMP JUMPDEST PUSH2 0x378 PUSH2 0x67B CALLDATASIZE PUSH1 0x4 PUSH2 0x4EC9 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x69E CALLDATASIZE PUSH1 0x4 PUSH2 0x5458 JUMP JUMPDEST PUSH2 0x2ADC JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x6B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x558E JUMP JUMPDEST PUSH2 0x2BB4 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x6C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x55F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x700 CALLDATASIZE PUSH1 0x4 PUSH2 0x558E JUMP JUMPDEST PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x30B PUSH2 0x713 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x733 CALLDATASIZE PUSH1 0x4 PUSH2 0x5624 JUMP JUMPDEST PUSH2 0x30ED JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x746 CALLDATASIZE PUSH1 0x4 PUSH2 0x5698 JUMP JUMPDEST PUSH2 0x31E3 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x759 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EC9 JUMP JUMPDEST PUSH2 0x3318 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x76C CALLDATASIZE PUSH1 0x4 PUSH2 0x4EE6 JUMP JUMPDEST PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x784 PUSH2 0x77F CALLDATASIZE PUSH1 0x4 PUSH2 0x5701 JUMP JUMPDEST PUSH2 0x3452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x315 JUMP JUMPDEST PUSH2 0x378 PUSH2 0x7AB CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x37CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2062616C616E636520717565727920666F7220746865207A PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65726F2061646472657373000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x83E DUP4 PUSH2 0x871 JUMP JUMPDEST POP POP SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x865 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x86B JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x87F DUP5 PUSH2 0x38A1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89C48DC00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x91F JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x86B JUMPI POP PUSH2 0x86B DUP3 PUSH2 0x38D8 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xE89341C SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x993 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x86B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x578B JUMP JUMPDEST DUP2 PUSH2 0x9C6 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x9EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP3 PUSH1 0x10 PUSH1 0x0 PUSH2 0x9FA DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH4 0xFFFFFFFF DUP3 DUP3 AND AND ISZERO PUSH2 0xA28 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x14AB903800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x14AB9038 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xB38 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1931A53800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0xB4A DUP8 DUP10 ADD DUP10 PUSH2 0x580D JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP7 ADD KECCAK256 SWAP5 SWAP10 POP SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP DUP10 SWAP1 DUP1 DUP3 EQ PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC65C3CCC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28ED4F6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x28ED4F6C SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xC49 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x39BB JUMP JUMPDEST POP PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xCD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xD1B DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0xD41 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP3 PUSH1 0x8 PUSH1 0x0 PUSH2 0xD4F DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH4 0xFFFFFFFF DUP3 DUP3 AND AND ISZERO PUSH2 0xD7D JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH2 0xA9A JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xE04 SWAP1 PUSH2 0x5885 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xE30 SWAP1 PUSH2 0x5885 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE7D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE52 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE7D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE60 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP8 PUSH2 0xE92 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0xEB8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP9 DUP9 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 PUSH2 0xEF4 DUP4 DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9C SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFE6 JUMPI PUSH1 0x0 PUSH2 0xFB7 DUP6 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x20 DUP2 AND ISZERO PUSH2 0xFE0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST POP PUSH2 0x101C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFF1 DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x40 DUP2 AND ISZERO PUSH2 0x101A JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST POP JUMPDEST DUP12 MLOAD PUSH1 0x20 DUP14 ADD KECCAK256 PUSH2 0x1054 DUP15 DUP3 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 POP PUSH2 0x1062 DUP15 DUP9 DUP12 DUP12 PUSH2 0x3B15 JUMP JUMPDEST SWAP8 POP PUSH2 0x106D DUP8 PUSH2 0x37CF JUMP JUMPDEST PUSH2 0x113C JUMPI PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP16 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1125 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1137 DUP15 DUP9 DUP16 DUP16 DUP14 DUP14 PUSH2 0x3B5B JUMP JUMPDEST PUSH2 0x1202 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5EF2C7F000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP16 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5EF2C7F0 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1202 DUP15 DUP9 DUP16 DUP16 DUP14 DUP14 PUSH2 0x3C15 JUMP JUMPDEST POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x128A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1306 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1340 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x13B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E736665722063616C6C6572206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572206E6F7220617070726F7665640000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1544 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x13D2 JUMPI PUSH2 0x13D2 PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x13F0 JUMPI PUSH2 0x13F0 PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1408 DUP6 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1419 DUP3 PUSH1 0x4 AND ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1439 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST DUP4 PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x145A JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x14CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 SWAP1 SHL AND OR PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP5 SWAP1 SHL AND OR SWAP1 SSTORE POP POP POP POP POP DUP1 PUSH2 0x153D SWAP1 PUSH2 0x5953 JUMP JUMPDEST SWAP1 POP PUSH2 0x13B5 JUMP JUMPDEST POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1594 SWAP3 SWAP2 SWAP1 PUSH2 0x598B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x15AA CALLER DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3CD0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 DUP1 DUP1 PUSH2 0x15E6 DUP5 PUSH2 0x871 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x0 DUP1 DUP1 PUSH2 0x15FA DUP12 PUSH2 0x871 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP PUSH32 0x6C32148F748ABA23997146D7FE89E962E3CC30271290FB96F5F4337756C03B52 DUP12 ADD PUSH2 0x1700 JUMPI PUSH2 0x1631 DUP8 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x1657 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD6E4FA8600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP12 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD6E4FA86 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16F9 SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST SWAP3 POP PUSH2 0x1734 JUMP JUMPDEST PUSH2 0x170A DUP12 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x1730 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP1 SWAP3 POP JUMPDEST PUSH2 0x173F DUP8 DUP11 DUP5 PUSH2 0x3EDC JUMP JUMPDEST PUSH2 0x174A DUP9 DUP6 DUP6 PUSH2 0x3F12 JUMP JUMPDEST SWAP8 POP PUSH1 0x40 DUP6 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x176C JUMPI POP DUP5 PUSH4 0xFFFFFFFF AND DUP10 DUP7 OR PUSH4 0xFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x178D JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST SWAP8 DUP5 OR SWAP8 PUSH2 0x179D DUP8 DUP8 DUP12 DUP12 PUSH2 0x3F5C JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x182F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C61626C653A2043616C6C6572206973206E6F74206120636F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E74726F6C6C6572000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP9 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0xC475ABFF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xC475ABFF SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1906 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x192A SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST SWAP2 POP PUSH2 0x1935 DUP2 PUSH2 0x37CF JUMP JUMPDEST ISZERO PUSH2 0x196F JUMPI PUSH1 0x0 DUP1 DUP1 PUSH2 0x1947 DUP5 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1958 DUP7 DUP3 DUP8 PUSH2 0x3F12 JUMP JUMPDEST SWAP6 POP PUSH2 0x196B DUP5 DUP5 PUSH1 0x40 DUP11 DUP7 OR OR DUP10 PUSH2 0x3FB8 JUMP JUMPDEST POP POP POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x19F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A0D JUMPI PUSH2 0x1A0D PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1A36 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1AAE JUMPI PUSH2 0x1A81 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A5A JUMPI PUSH2 0x1A5A PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A74 JUMPI PUSH2 0x1A74 PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x7B0 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A93 JUMPI PUSH2 0x1A93 PUSH2 0x58F5 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x1AA7 DUP2 PUSH2 0x5953 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A3C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1B10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B9C SWAP2 SWAP1 PUSH2 0x59D2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86B DUP3 PUSH2 0x4029 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1C07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x1C11 PUSH1 0x0 PUSH2 0x403F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1C67 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x1C8D JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1CD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5949361A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SUB PUSH2 0x1D25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5949361A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1D7A SWAP1 JUMPDEST DUP4 PUSH2 0x40A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x42842E0E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP7 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EA6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C61626C653A2043616C6C6572206973206E6F74206120636F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E74726F6C6C6572000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x1EB8 SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH32 0xFCA247AC00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xFCA247AC SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F4D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F71 SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST SWAP2 POP PUSH2 0x1FB8 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP3 POP DUP9 SWAP2 POP DUP8 SWAP1 POP DUP10 PUSH2 0x39BB JUMP JUMPDEST POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER SUB PUSH2 0x2043 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20D9 DUP5 PUSH2 0x871 JUMP JUMPDEST POP DUP5 AND PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP6 AND EQ SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x214C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x229E JUMPI PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xA22CB465 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xA22CB465 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2299 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x2415 JUMPI PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xA22CB465 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2375 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xA22CB465 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2425 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x244B JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP4 PUSH1 0x2 PUSH1 0x0 PUSH2 0x2459 DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH4 0xFFFFFFFF DUP3 DUP3 AND AND ISZERO PUSH2 0x2487 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x2491 DUP8 DUP8 PUSH2 0x41B2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x249E DUP11 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 DUP10 OR SWAP9 POP PUSH2 0x24B5 DUP11 DUP5 DUP12 DUP5 PUSH2 0x3F5C JUMP JUMPDEST POP SWAP7 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH2 0x24D0 DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x24F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2507 SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x2542 DUP4 DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25EA SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2634 JUMPI PUSH1 0x0 PUSH2 0x2605 DUP6 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x20 DUP2 AND ISZERO PUSH2 0x262E JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST POP PUSH2 0x266A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x263F DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x40 DUP2 AND ISZERO PUSH2 0x2668 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH2 0x267C SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH2 0x26B7 DUP14 DUP3 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 POP PUSH2 0x26C5 DUP14 DUP9 DUP12 DUP12 PUSH2 0x3B15 JUMP JUMPDEST SWAP8 POP PUSH2 0x26D0 DUP8 PUSH2 0x37CF JUMP JUMPDEST PUSH2 0x27DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x6AB592300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP15 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6AB5923 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2761 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2785 SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST POP PUSH2 0x27D8 DUP14 DUP9 DUP15 DUP15 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP14 DUP14 DUP14 PUSH2 0x3B5B JUMP JUMPDEST PUSH2 0x282F JUMP JUMPDEST PUSH2 0x282F DUP14 DUP9 DUP15 DUP15 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP14 DUP14 DUP14 PUSH2 0x3C15 JUMP JUMPDEST POP POP POP POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP4 PUSH2 0x284A DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x2870 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST DUP5 PUSH1 0x1C PUSH1 0x0 PUSH2 0x287E DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP2 POP POP PUSH4 0xFFFFFFFF DUP3 DUP3 AND AND ISZERO PUSH2 0x28AC JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCF40882300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xCF408823 SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2945 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x296B DUP10 PUSH1 0x0 SHR PUSH2 0x871 JUMP JUMPDEST POP POP SWAP1 POP PUSH2 0x298F DUP2 DUP10 DUP12 PUSH1 0x0 SHR PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x41E1 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP7 SWAP1 MSTORE DUP2 DUP4 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x29CC DUP2 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x29F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH32 0x6C32148F748ABA23997146D7FE89E962E3CC30271290FB96F5F4337756C03B52 DUP5 ADD PUSH2 0x2A4B JUMPI PUSH1 0x40 MLOAD PUSH32 0x615A470300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0x2A69 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ JUMPDEST ISZERO PUSH2 0x2AAB JUMPI PUSH1 0x40 MLOAD PUSH32 0x5949361A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1B9C SWAP1 PUSH2 0x1D74 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2B36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C97694570A07277810AF7E5669FFD5F6A2D6B74B6E9A274B8B870FD5114CF87 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x2BC6 SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x2C24 PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2C32 DUP4 PUSH2 0x438F JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF9547A9E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xF9547A9E SWAP1 PUSH2 0x2C89 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A2A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CB7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D0C PUSH1 0x0 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x4424 SWAP1 POP JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x2D55 DUP3 DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x44DB SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 SWAP2 POP PUSH32 0x6C32148F748ABA23997146D7FE89E962E3CC30271290FB96F5F4337756C03B52 DUP3 ADD PUSH2 0x2DD9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615A470300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E7E SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x2F3F JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F3D SWAP2 SWAP1 PUSH2 0x59D2 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x2F66 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO PUSH2 0x3011 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x300C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5B0FC9C300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x5B0FC9C3 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3092 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x298F DUP3 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP DUP14 SWAP4 POP SWAP2 POP DUP2 SWAP1 POP PUSH2 0x459A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x30FF SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x313C DUP8 DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x314A DUP4 PUSH2 0x438F JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0x24C1AF4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x24C1AF44 SWAP1 PUSH2 0x31A6 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x0 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x5A80 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x325F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x3299 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x330B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F74206F776E6572206E6F72 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20617070726F7665640000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x15AA DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x41E1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3372 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x33EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x2415 DUP2 PUSH2 0x403F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3403 DUP5 PUSH2 0x1BA2 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x344A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x3465 SWAP3 SWAP2 SWAP1 PUSH2 0x59EF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3512 SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x35D3 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35D1 SWAP2 SWAP1 PUSH2 0x59D2 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x3643 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP4 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP5 ADD DUP2 MSTORE PUSH1 0x60 DUP4 ADD SWAP4 DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH4 0x168AB55D PUSH1 0xE3 SHL SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLER PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x36E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x28ED4F6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP PUSH4 0x28ED4F6C SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3779 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x37C2 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP3 POP DUP11 SWAP2 POP DUP10 SWAP1 POP DUP9 PUSH2 0x39BB JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x37DB DUP4 PUSH2 0x1BA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x86B JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x386D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3891 SWAP2 SWAP1 PUSH2 0x58D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH1 0xC0 DUP3 SWAP1 SHR DUP3 TIMESTAMP DUP3 LT ISZERO PUSH2 0x38C8 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x38D0 JUMP JUMPDEST PUSH1 0xA0 DUP2 SWAP1 SHR SWAP3 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x396B JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x86B JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x86B JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP7 ADD KECCAK256 PUSH1 0x0 SWAP1 DUP2 PUSH2 0x3A17 PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE DUP4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A26 DUP3 DUP5 DUP9 PUSH2 0x4604 JUMP JUMPDEST SWAP8 POP SWAP2 POP PUSH2 0x3A5D SWAP1 POP PUSH32 0x93CDEB708B7545DC668EB9280176169D1C33CFD8ED6F04690A0BCC88A93FC4AE DUP4 DUP12 DUP12 PUSH1 0x40 DUP13 OR DUP12 PUSH2 0x3B5B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x3B08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1896F70A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x1896F70A SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3B03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B21 DUP6 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x0 DUP1 PUSH2 0x3B34 DUP9 PUSH1 0x0 SHR PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x3B44 DUP8 DUP8 DUP5 PUSH2 0x3EDC JUMP JUMPDEST PUSH2 0x3B4F DUP6 DUP5 DUP4 PUSH2 0x3F12 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x3BFD SWAP2 DUP8 SWAP2 PUSH2 0x3B7A SWAP1 PUSH2 0x5885 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3BA6 SWAP1 PUSH2 0x5885 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3BF3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3BC8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3BF3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3BD6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x46DC JUMP JUMPDEST SWAP1 POP PUSH2 0x3C0C DUP7 DUP3 DUP7 DUP7 DUP7 PUSH2 0x459A JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C20 DUP7 PUSH2 0x1BA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3C46 DUP7 PUSH1 0x5 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH2 0x3B7A SWAP1 PUSH2 0x5885 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x3C63 SWAP1 PUSH2 0x5885 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SUB PUSH2 0x3C86 JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3C84 DUP3 DUP3 PUSH2 0x5B2E JUMP JUMPDEST POP JUMPDEST PUSH2 0x3C92 DUP8 DUP4 DUP7 DUP7 PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3CB0 JUMPI PUSH2 0x3CAB DUP8 PUSH1 0x0 PUSH2 0x40A7 JUMP JUMPDEST PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x1E17 DUP3 DUP7 DUP10 PUSH1 0x0 SHR PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x41E1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x3ED4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0x3D2D SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C2A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3D68 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3D65 SWAP2 DUP2 ADD SWAP1 PUSH2 0x5C7C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x3E1D JUMPI PUSH2 0x3D74 PUSH2 0x5C99 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0x3DAD JUMPI POP PUSH2 0x3D88 PUSH2 0x5CB5 JUMP JUMPDEST DUP1 PUSH2 0x3D93 JUMPI POP PUSH2 0x3DAF JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82A SWAP2 SWAP1 PUSH2 0x4DB1 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x3C0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 DUP2 AND EQ PUSH1 0x1 DUP3 AND ISZERO DUP2 DUP1 ISZERO PUSH2 0x3EF1 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x15AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x3F34 JUMPI DUP2 SWAP4 POP JUMPDEST DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3F54 JUMPI DUP3 SWAP4 POP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3F68 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 AND DUP2 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP6 SWAP2 PUSH32 0x936318E296F824E203B086D97BB155A0200CEC4847EFEA1FB4B9B7F924157355 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH2 0x3FC2 DUP5 DUP4 PUSH2 0x4785 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 SWAP1 SHL AND OR PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP5 SWAP1 SHL AND OR SWAP1 SSTORE PUSH2 0x1B9C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4035 DUP4 PUSH2 0x871 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x40B2 DUP3 PUSH1 0x1 PUSH2 0x20CD JUMP JUMPDEST ISZERO PUSH2 0x40D3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x40DC DUP3 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5B0FC9C300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x5B0FC9C3 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x415F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4173 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE DUP5 SWAP3 POP PUSH32 0xEE2BA1195C65BCF218A83D874335C6BF9D9067B4C672F3C3BF16CF40DE7586C4 SWAP2 POP PUSH1 0x20 ADD PUSH2 0x2BA8 JUMP JUMPDEST PUSH1 0x40 DUP2 AND ISZERO PUSH2 0x41DD JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x41EF DUP7 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x4200 DUP3 PUSH1 0x4 AND ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x4220 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST DUP5 PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x4241 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x42B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x42D4 JUMPI POP POP POP PUSH2 0x15AA JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 SWAP1 SHL AND OR PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP5 SWAP1 SHL AND OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 SWAP1 DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1E17 CALLER DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x4879 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x43D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x24C1D6D400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x43E0 DUP4 CALLER PUSH2 0x33F7 JUMP JUMPDEST PUSH2 0x4406 JUMPI PUSH1 0x40 MLOAD PUSH4 0x168AB55D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x82A JUMP JUMPDEST PUSH2 0x440F DUP4 PUSH2 0x871 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x441F SWAP1 POP DUP4 PUSH2 0x47BE JUMP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD DUP4 LT PUSH2 0x4477 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726561644C6162656C3A20496E646578206F7574206F6620626F756E64730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x448B JUMPI PUSH2 0x448B PUSH2 0x58F5 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP DUP1 ISZERO PUSH2 0x44B7 JUMPI PUSH2 0x44B0 DUP6 PUSH2 0x44AA DUP7 PUSH1 0x1 PUSH2 0x5D5D JUMP JUMPDEST DUP4 PUSH2 0x49D4 JUMP JUMPDEST SWAP3 POP PUSH2 0x44BC JUMP JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST PUSH2 0x44C6 DUP2 DUP6 PUSH2 0x5D5D JUMP JUMPDEST PUSH2 0x44D1 SWAP1 PUSH1 0x1 PUSH2 0x5D5D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x44EA DUP6 DUP6 PUSH2 0x4424 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x455C JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x4502 SWAP2 SWAP1 PUSH2 0x5D70 JUMP JUMPDEST DUP5 EQ PUSH2 0x4550 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D65686173683A204A756E6B20617420656E64206F66206E616D65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x86B SWAP1 POP JUMP JUMPDEST PUSH2 0x4566 DUP6 DUP3 PUSH2 0x44DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x45B2 DUP6 DUP3 PUSH2 0x5B2E JUMP JUMPDEST POP PUSH2 0x45BF DUP6 DUP5 DUP5 DUP5 PUSH2 0x49F8 JUMP JUMPDEST DUP5 PUSH32 0x8CE7013E8ABEBC55C3890A68F5A27C67C3F7EFA64E584DE5FB22363C606FD340 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x45F5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D83 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x4612 DUP8 PUSH2 0x871 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD6E4FA8600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD6E4FA86 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x469B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46BF SWAP2 SWAP1 PUSH2 0x59B9 JUMP JUMPDEST SWAP1 POP PUSH2 0x46CC DUP7 DUP4 DUP4 PUSH2 0x3F12 JUMP JUMPDEST SWAP6 POP DUP6 SWAP3 POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP4 MLOAD LT ISZERO PUSH2 0x471A JUMPI PUSH1 0x40 MLOAD PUSH32 0x280DACB600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP4 MLOAD GT ISZERO PUSH2 0x4758 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0xE3BA295F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82A SWAP2 SWAP1 PUSH2 0x4DB1 JUMP JUMPDEST DUP3 MLOAD DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x476E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5DCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0xFFFFFFBF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x479D JUMPI POP PUSH1 0x41 DUP2 DUP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x41DD JUMPI PUSH1 0x40 MLOAD PUSH4 0xA2A72013 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x47CC DUP5 PUSH2 0x871 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA0 DUP5 SWAP1 SHL AND PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP5 SWAP1 SHL AND OR SWAP1 SSTORE SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x3ED4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0x48D6 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5E2C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x4911 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x490E SWAP2 DUP2 ADD SWAP1 PUSH2 0x5C7C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x491D JUMPI PUSH2 0x3D74 PUSH2 0x5C99 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x3C0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x49E3 DUP4 DUP6 PUSH2 0x5D5D JUMP JUMPDEST GT ISZERO PUSH2 0x49EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4A02 DUP5 DUP4 PUSH2 0x4785 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0D DUP6 PUSH2 0x1BA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x4A5E JUMPI PUSH2 0x4A27 DUP6 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE DUP6 SWAP1 PUSH32 0xEE2BA1195C65BCF218A83D874335C6BF9D9067B4C672F3C3BF16CF40DE7586C4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH2 0x15AA DUP6 DUP6 DUP6 DUP6 DUP4 PUSH1 0x0 DUP1 DUP1 PUSH2 0x4A73 DUP5 PUSH2 0x871 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x4A99 JUMPI DUP1 SWAP5 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x4AF0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E74206F66206578697374696E6720746F6B656E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x4B6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SUB PUSH2 0x4BEA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206E65774F776E65722063616E6E6F742062652074686520 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4E616D655772617070657220636F6E7472616374000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x82A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH24 0xFFFFFFFF0000000000000000000000000000000000000000 DUP9 DUP6 OR PUSH1 0xA0 SHL AND OR PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP9 SWAP1 SHL AND OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 SWAP2 CALLER SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1E17 CALLER PUSH1 0x0 DUP10 DUP8 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4879 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4CDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4CE8 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x2415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D5A DUP2 PUSH2 0x4D0F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D7C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4D64 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4D9D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4D61 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4D5A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D85 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4DF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x4E04 PUSH1 0x20 DUP5 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4E1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4E37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4E4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4E6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4E79 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4E89 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4EAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4EB8 DUP9 DUP3 DUP10 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4EDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D5A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4EF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4F0B DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4F6B JUMPI PUSH2 0x4F6B PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4F8C JUMPI PUSH2 0x4F8C PUSH2 0x4F16 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4FB6 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4FC3 DUP3 DUP3 PUSH2 0x4F45 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP6 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4FD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x5025 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5043 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x504F DUP11 DUP3 DUP12 ADD PUSH2 0x4F9A JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x5060 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x5070 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH2 0x507E PUSH1 0x80 DUP10 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP3 POP PUSH2 0x508C PUSH1 0xA0 DUP10 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP2 POP PUSH2 0x509A PUSH1 0xC0 DUP10 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x50C2 JUMPI PUSH2 0x50C2 PUSH2 0x4F16 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x50DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x50EA DUP3 PUSH2 0x50A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50F7 DUP3 DUP3 PUSH2 0x4F45 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0x5117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x5132 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x511B JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x5160 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x5170 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x518D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5199 DUP10 DUP4 DUP11 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x51AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x51BB DUP10 DUP4 DUP11 ADD PUSH2 0x50CC JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x51D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51DE DUP9 DUP3 DUP10 ADD PUSH2 0x4F9A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x5218 PUSH1 0x40 DUP7 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP2 POP PUSH2 0x5226 PUSH1 0x60 DUP7 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x525C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x527D DUP3 PUSH2 0x50A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x528A DUP3 DUP3 PUSH2 0x4F45 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x52AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x52D1 JUMPI DUP6 CALLDATALOAD PUSH2 0x52C2 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x52AF JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x52E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44D1 DUP6 DUP3 DUP7 ADD PUSH2 0x50CC JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5324 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5308 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4D5A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x52F4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x5362 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x5372 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x53AA DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x53BA DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x53E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5403 DUP11 DUP3 DUP12 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x5417 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x542E DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 POP PUSH2 0x543C PUSH1 0x80 DUP10 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP2 POP PUSH2 0x509A PUSH1 0xA0 DUP10 ADD PUSH2 0x4DC4 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x546B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5476 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4F0B DUP2 PUSH2 0x544A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x4E04 PUSH1 0x20 DUP5 ADD PUSH2 0x4FF6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x54C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54EC DUP10 DUP3 DUP11 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x5500 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 POP PUSH2 0x550E PUSH1 0x60 DUP9 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP2 POP PUSH2 0x551C PUSH1 0x80 DUP9 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x553E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x5550 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x5218 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x53BA DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x55A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55C7 DUP8 DUP3 DUP9 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x55DB DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x55EB DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5614 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4F0B DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x563C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x565A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5666 DUP9 DUP3 DUP10 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x567A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x568A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x56B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x56BB DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x56CB DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x56F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x51DE DUP9 DUP3 DUP10 ADD PUSH2 0x4F9A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x571A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x573D DUP10 DUP3 DUP11 ADD PUSH2 0x4E0D JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x5751 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH2 0x575F PUSH1 0x40 DUP9 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP3 POP PUSH2 0x576D PUSH1 0x60 DUP9 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x577D DUP2 PUSH2 0x4CB5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x579D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x57B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x57C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x57D0 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x57DD DUP3 DUP3 PUSH2 0x4F45 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP7 PUSH1 0x20 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x57F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5803 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x4D61 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x583C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5848 DUP9 DUP3 DUP10 ADD PUSH2 0x4F9A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x5859 DUP2 PUSH2 0x4CB5 JUMP JUMPDEST SWAP4 POP PUSH2 0x5867 PUSH1 0x40 DUP8 ADD PUSH2 0x4FF6 JUMP JUMPDEST SWAP3 POP PUSH2 0x5875 PUSH1 0x60 DUP8 ADD PUSH2 0x4DC4 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x568A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x5899 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x58D2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4D5A DUP2 PUSH2 0x4CB5 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x5984 JUMPI PUSH2 0x5984 PUSH2 0x5924 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x599E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x52F4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x59B0 DUP2 DUP6 PUSH2 0x52F4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4D5A DUP2 PUSH2 0x544A JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH1 0x0 PUSH2 0x5A3E PUSH1 0xA0 DUP4 ADD DUP9 DUP11 PUSH2 0x59FF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE DUP1 DUP5 AND PUSH1 0x80 DUP5 ADD MSTORE POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP9 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5A9A PUSH1 0xE0 DUP4 ADD DUP10 DUP12 PUSH2 0x59FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xC0 SWAP1 SWAP2 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x5B29 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x5B0A JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3ED4 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5B16 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B48 JUMPI PUSH2 0x5B48 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x5B5C DUP2 PUSH2 0x5B56 DUP5 SLOAD PUSH2 0x5885 JUMP JUMPDEST DUP5 PUSH2 0x5AE3 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x5BAF JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x5B79 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x3ED4 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5BDE JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x5BBF JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x5C1A JUMPI DUP8 DUP6 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x5C56 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x52F4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x5C68 DUP2 DUP7 PUSH2 0x52F4 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x3B4F DUP2 DUP6 PUSH2 0x4D85 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4D5A DUP2 PUSH2 0x4D0F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x5CB2 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x5CC3 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP1 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x5D11 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x5D29 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5D43 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x5D52 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x4F45 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x86B JUMPI PUSH2 0x86B PUSH2 0x5924 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x86B JUMPI PUSH2 0x86B PUSH2 0x5924 JUMP JUMPDEST PUSH1 0x80 DUP2 MSTORE PUSH1 0x0 PUSH2 0x5D96 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4D85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x60 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP5 PUSH1 0xF8 SHL AND DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x5E08 DUP2 PUSH1 0x1 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4D61 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x5E1F DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4D61 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x5E64 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4D85 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xB7 DUP11 0xB8 0xDE SWAP9 PUSH5 0x6FD2CE04D6 0x2C 0x4A 0xDD 0x2B SIGNEXTEND 0xA8 0xC3 INVALID 0xD6 0xDB 0xE5 0xEB DUP2 0xC PUSH6 0xECB6A839EA64 PUSH20 0x6F6C634300081100330000000000000000000000 ",
              "sourceMap": "1236:31158:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:392:97;;;;;;:::i;:::-;;:::i;:::-;;;639:25:111;;;627:2;612:18;2040:392:97;;;;;;;;3727:234:101;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;1076:55:111;;;1058:74;;1180:10;1168:23;;;1163:2;1148:18;;1141:51;1240:18;1228:31;1208:18;;;1201:59;1046:2;1031:18;3727:234:101;860:406:111;2726:354:101;;;;;;:::i;:::-;;:::i;:::-;;;1868:14:111;;1861:22;1843:41;;1831:2;1816:18;2726:354:101;1703:187:111;1608:43:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4438:127::-;;;;;;:::i;:::-;;:::i;21471:192::-;;;;;;:::i;:::-;;:::i;:::-;;24240:1027;;;;;;:::i;:::-;;:::i;:::-;;;4428:66:111;4416:79;;;4398:98;;4386:2;4371:18;24240:1027:101;4254:248:111;4136:151:101;;;;;;:::i;:::-;;:::i;21112:218::-;;;;;;:::i;:::-;;:::i;1892:42::-;;;;;-1:-1:-1;;;;;1892:42:101;;;;;;-1:-1:-1;;;;;5298:55:111;;;5280:74;;5268:2;5253:18;1892:42:101;5105:255:111;1555:47:101;;;;;;:::i;:::-;;:::i;19076:1113::-;;;;;;:::i;:::-;;:::i;1445:50::-;;;;;4942:1324:97;;;;;;:::i;:::-;;:::i;15896:1454:101:-;;;;;;:::i;:::-;;:::i;1406:33::-;;;;;9259:699;;;;;;:::i;:::-;;:::i;2589:542:97:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1501:48:101:-;;;;;-1:-1:-1;;;;;1501:48:101;;;633:171:90;;;;;;:::i;:::-;;:::i;3272:178:101:-;;;;;;:::i;:::-;;:::i;1668:101:2:-;;;:::i;11468:582:101:-;;;;;;:::i;:::-;;:::i;1036:85:2:-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:2;1036:85;;8385:476:101;;;;;;:::i;:::-;;:::i;3199:362:97:-;;;;;;:::i;:::-;;:::i;23532:232:101:-;;;;;;:::i;:::-;;:::i;4885:564::-;;;;;;:::i;:::-;;:::i;13191:429::-;;;;;;:::i;:::-;;:::i;:::-;;;17097:10:111;17085:23;;;17067:42;;17055:2;17040:18;13191:429:101;16923:192:111;17770:778:101;;;;;;:::i;:::-;;:::i;20467:483::-;;;;;;:::i;:::-;;:::i;12532:465::-;;;;;;:::i;:::-;;:::i;150:43:96:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;271:174;;;;;;:::i;:::-;;:::i;13988:454:101:-;;;;;;:::i;:::-;;:::i;3628:210:97:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3794:27:97;;;3767:4;3794:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3628:210;10333:761:101;;;;;;:::i;:::-;;:::i;985:42:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;14968:522:101;;;;;;:::i;:::-;;:::i;4416:454:97:-;;;;;;:::i;:::-;;:::i;1918:198:2:-;;;;;;:::i;:::-;;:::i;6013:250:101:-;;;;;;:::i;:::-;;:::i;6835:914::-;;;;;;:::i;:::-;;:::i;:::-;;;23343:18:111;23331:31;;;23313:50;;23301:2;23286:18;6835:914:101;23169:200:111;24045:189:101;;;;;;:::i;:::-;;:::i;2040:392:97:-;2166:7;-1:-1:-1;;;;;2210:21:97;;2189:111;;;;-1:-1:-1;;;2189:111:97;;23576:2:111;2189:111:97;;;23558:21:111;23615:2;23595:18;;;23588:30;23654:34;23634:18;;;23627:62;23725:13;23705:18;;;23698:41;23756:19;;2189:111:97;;;;;;;;;2311:13;2332:11;2340:2;2332:7;:11::i;:::-;2310:33;;;;2366:7;-1:-1:-1;;;;;2357:16:97;:5;-1:-1:-1;;;;;2357:16:97;;2353:55;;2396:1;2389:8;;;;;2353:55;2424:1;2417:8;;;2040:392;;;;;:::o;3727:234:101:-;3858:7;3879:6;3899;3937:17;3951:2;3937:13;:17::i;:::-;3930:24;;;;;;3727:234;;;;;:::o;2726:354::-;2873:4;2912:45;;;2927:30;2912:45;;:109;;-1:-1:-1;2973:48:101;;;2988:33;2973:48;2912:109;:161;;;;3037:36;3061:11;3037:23;:36::i;4438:127::-;4530:15;;;:28;;;;;;;;639:25:111;;;4498:13:101;;-1:-1:-1;;;;;4530:15:101;;;;:19;;612:18:111;;4530:28:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4530:28:101;;;;;;;;;;;;:::i;21471:192::-;21568:4;5658:40;5681:4;5687:10;5658:22;:40::i;:::-;5653:109;;5721:30;;-1:-1:-1;;;5721:30:101;;;;;24669:25:111;;;5740:10:101;24710:18:111;;;24703:83;24642:18;;5721:30:101;24495:297:111;5653:109:101;21599:4;412:2:99::1;21966:12:101;21984:22;21599:4:::0;21984:7:::1;:22::i;:::-;-1:-1:-1::0;21963:43:101;-1:-1:-1;;22020:21:101::1;:16:::0;;::::1;:21;::::0;22016:84:::1;;22064:25;::::0;-1:-1:-1;;;22064:25:101;;::::1;::::0;::::1;639::111::0;;;612:18;;22064:25:101::1;493:177:111::0;22016:84:101::1;21635:21:::2;::::0;;;;::::2;::::0;::::2;24969:25:111::0;;;25042:18;25030:31;;25010:18;;;25003:59;21635:3:101::2;-1:-1:-1::0;;;;;21635:10:101::2;::::0;::::2;::::0;24942:18:111;;21635:21:101::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;21953:164:::1;5772:1;;21471:192:::0;;;:::o;24240:1027::-;24388:6;24459:10;-1:-1:-1;;;;;24481:9:101;24459:32;;24455:90;;24514:20;;;;;;;;;;;;;;24455:90;24569:19;;;;;24711:60;;;;24722:4;24711:60;:::i;:::-;24856:23;;;;;;24555:216;;-1:-1:-1;24555:216:101;;-1:-1:-1;24555:216:101;;-1:-1:-1;24555:216:101;-1:-1:-1;24555:216:101;-1:-1:-1;24810:7:101;;24894:30;;;24890:111;;24947:43;;;;;;;;26012:25:111;;;26053:18;;;26046:34;;;25985:18;;24947:43:101;25838:248:111;24890:111:101;25084:52;;;;;;;;24669:25:111;;;25130:4:101;24710:18:111;;;24703:83;25084:9:101;-1:-1:-1;;;;;25084:17:101;;;;24642:18:111;;25084:52:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25147:50;25159:5;25166;25173;25180:6;25188:8;25147:11;:50::i;:::-;-1:-1:-1;25215:45:101;;24240:1027;-1:-1:-1;;;;;;;;;;;;;24240:1027:101:o;4136:151::-;1082:7:2;1108:6;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;26595:2:111;1240:68:2;;;26577:21:111;;;26614:18;;;26607:30;26673:34;26653:18;;;26646:62;26725:18;;1240:68:2;26393:356:111;1240:68:2;4246:15:101::1;:34:::0;;;::::1;-1:-1:-1::0;;;;;4246:34:101;;;::::1;::::0;;;::::1;::::0;;4136:151::o;21112:218::-;21220:4;5658:40;5681:4;5687:10;5658:22;:40::i;:::-;5653:109;;5721:30;;-1:-1:-1;;;5721:30:101;;;;;24669:25:111;;;5740:10:101;24710:18:111;;;24703:83;24642:18;;5721:30:101;24495:297:111;5653:109:101;21251:4;376:1:99::1;21966:12:101;21984:22;21251:4:::0;21984:7:::1;:22::i;:::-;-1:-1:-1::0;21963:43:101;-1:-1:-1;;22020:21:101::1;:16:::0;;::::1;:21;::::0;22016:84:::1;;22064:25;::::0;-1:-1:-1;;;22064:25:101;;::::1;::::0;::::1;639::111::0;;;612:18;;22064:25:101::1;493:177:111::0;22016:84:101::1;21292:31:::2;::::0;;;;::::2;::::0;::::2;24669:25:111::0;;;-1:-1:-1;;;;;24730:55:111;;;24710:18;;;24703:83;21292:3:101::2;:15;::::0;::::2;::::0;24642:18:111;;21292:31:101::2;24495:297:111::0;1555:47:101;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19076:1113::-;19414:12;19317:10;5658:40;5681:4;5687:10;5658:22;:40::i;:::-;5653:109;;5721:30;;-1:-1:-1;;;5721:30:101;;;;;24669:25:111;;;5740:10:101;24710:18:111;;;24703:83;24642:18;;5721:30:101;24495:297:111;5653:109:101;19360:10:::1;19388:5;19372:23;;;;;;22730:15;22748:26;22758:4;22764:9;25577:33:::0;;;;;;;38492:19:111;;;;38527:12;;;38520:28;;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;25567:44;;;;;;25439:179;22748:26:::1;22800:18;::::0;;;;::::1;::::0;::::1;639:25:111::0;;;22730:44:101;;-1:-1:-1;22784:13:101::1;::::0;-1:-1:-1;;;;;22800:3:101::1;:9;::::0;::::1;::::0;612:18:111;;22800::101::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22784:34:::0;-1:-1:-1;;;;;;22833:19:101;::::1;22829:428;;22871:12;22889:22;22905:4:::0;22889:7:::1;:22::i;:::-;-1:-1:-1::0;22868:43:101;-1:-1:-1;;458:2:99::1;22929:31:101::0;::::1;:36:::0;22925:110:::1;;22992:28;::::0;-1:-1:-1;;;22992:28:101;;::::1;::::0;::::1;639:25:111::0;;;612:18;;22992:28:101::1;493:177:111::0;22925:110:101::1;22854:191;22829:428;;;23068:19;23093:25;23109:7:::0;23093::::1;:25::i;:::-;-1:-1:-1::0;23065:53:101;-1:-1:-1;;502:2:99::1;23136:36:101::0;::::1;:41:::0;23132:115:::1;;23204:28;::::0;-1:-1:-1;;;23204:28:101;;::::1;::::0;::::1;639:25:111::0;;;612:18;;23204:28:101::1;493:177:111::0;23132:115:101::1;23051:206;22829:428;19462:23:::0;;::::2;::::0;::::2;::::0;19502:32:::2;19512:10:::0;19462:23;25577:33;;;;;;;38492:19:111;;;;38527:12;;;38520:28;;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;25567:44;;;;;;25439:179;19502:32:::2;19495:39;;19553:59;19580:10;19592:4;19598:5;19605:6;19553:26;:59::i;:::-;19544:68;;19627:15;19637:4;19627:9;:15::i;:::-;19622:561;;19658:167;::::0;;;;::::2;::::0;::::2;27709:25:111::0;;;27750:18;;;27743:34;;;19759:4:101::2;27854:18:111::0;;;27847:43;-1:-1:-1;;;;;27926:15:111;;;27906:18;;;27899:43;27991:18;27979:31;;27958:19;;;27951:60;19658:3:101::2;:20;::::0;::::2;::::0;27681:19:111;;19658:167:101::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;19839:63;19856:10;19868:4;19874:5;19881;19888;19895:6;19839:16;:63::i;:::-;19622:561;;;19933:167;::::0;;;;::::2;::::0;::::2;27709:25:111::0;;;27750:18;;;27743:34;;;20034:4:101::2;27854:18:111::0;;;27847:43;-1:-1:-1;;;;;27926:15:111;;;27906:18;;;27899:43;27991:18;27979:31;;27958:19;;;27951:60;19933:3:101::2;:20;::::0;::::2;::::0;27681:19:111;;19933:167:101::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;20114:58;20126:10;20138:4;20144:5;20151;20158;20165:6;20114:11;:58::i;:::-;19432:757;22720:555:::1;;5772:1;;19076:1113:::0;;;;;;;;;;:::o;4942:1324:97:-;5181:7;:14;5167:3;:10;:28;5146:115;;;;-1:-1:-1;;;5146:115:97;;28224:2:111;5146:115:97;;;28206:21:111;28263:2;28243:18;;;28236:30;28302:34;28282:18;;;28275:62;28373:10;28353:18;;;28346:38;28401:19;;5146:115:97;28022:404:111;5146:115:97;-1:-1:-1;;;;;5279:16:97;;5271:66;;;;-1:-1:-1;;;5271:66:97;;28633:2:111;5271:66:97;;;28615:21:111;28672:2;28652:18;;;28645:30;28711:34;28691:18;;;28684:62;28782:7;28762:18;;;28755:35;28807:19;;5271:66:97;28431:401:111;5271:66:97;-1:-1:-1;;;;;5368:18:97;;5376:10;5368:18;;:56;;-1:-1:-1;;;;;;3794:27:97;;3767:4;3794:27;;;:18;:27;;;;;;;;5413:10;3794:37;;;;;;;;;;5390:34;5347:153;;;;-1:-1:-1;;;5347:153:97;;29039:2:111;5347:153:97;;;29021:21:111;29078:2;29058:18;;;29051:30;29117:34;29097:18;;;29090:62;29188:20;29168:18;;;29161:48;29226:19;;5347:153:97;28837:414:111;5347:153:97;5516:9;5511:514;5535:3;:10;5531:1;:14;5511:514;;;5566:10;5579:3;5583:1;5579:6;;;;;;;;:::i;:::-;;;;;;;5566:19;;5599:14;5616:7;5624:1;5616:10;;;;;;;;:::i;:::-;;;;;;;5599:27;;5642:16;5660:12;5674:17;5695:11;5703:2;5695:7;:11::i;:::-;5641:65;;;;;;5726:19;5739:5;335:1:99;25398:23:101;:28;;25307:126;5726:19:97;5721:98;;5772:32;;-1:-1:-1;;;5772:32:97;;;;;639:25:111;;;612:18;;5772:32:97;493:177:111;5721:98:97;5858:6;5868:1;5858:11;:31;;;;;5885:4;-1:-1:-1;;;;;5873:16:97;:8;-1:-1:-1;;;;;5873:16:97;;5858:31;5833:132;;;;-1:-1:-1;;;5833:132:97;;29647:2:111;5833:132:97;;;29629:21:111;29686:2;29666:18;;;29659:30;29725:34;29705:18;;;29698:62;29796:12;29776:18;;;29769:40;29826:19;;5833:132:97;29445:406:111;5833:132:97;6677:16;;;;:7;:16;;;;;-1:-1:-1;;;;;6708:23:97;;6747:21;6765:3;6747:21;;;;6708:61;6785:22;6804:3;6785:22;;;;6708:100;6677:131;;5552:473;;;;;5547:3;;;;:::i;:::-;;;5511:514;;;;6072:2;-1:-1:-1;;;;;6040:49:97;6066:4;-1:-1:-1;;;;;6040:49:97;6054:10;-1:-1:-1;;;;;6040:49:97;;6076:3;6081:7;6040:49;;;;;;;:::i;:::-;;;;;;;;6100:159;6149:10;6173:4;6191:2;6207:3;6224:7;6245:4;6100:35;:159::i;:::-;4942:1324;;;;;:::o;15896:1454:101:-;25577:33;;;;;;;38492:19:111;;;38527:12;;;38520:28;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;;25567:44;;;;;16100:13;;;16152:44;16042:47;16152:7;:44::i;:::-;16099:97;;-1:-1:-1;16099:97:101;-1:-1:-1;16099:97:101;-1:-1:-1;16206:16:101;;;16278:50;16307:10;16278:7;:50::i;:::-;16232:96;;-1:-1:-1;16232:96:101;-1:-1:-1;;16342:22:101;;;16338:561;;16385:40;16408:4;16414:10;16385:22;:40::i;:::-;16380:117;;16452:30;;-1:-1:-1;;;16452:30:101;;;;;24669:25:111;;;16471:10:101;24710:18:111;;;24703:83;24642:18;;16452:30:101;24495:297:111;16380:117:101;16593:41;;;;;;;;639:25:111;;;16593:9:101;-1:-1:-1;;;;;16593:21:101;;;;612:18:111;;16593:41:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16574:61;;16338:561;;;16671:46;16694:10;16706;16671:22;:46::i;:::-;16666:123;;16744:30;;-1:-1:-1;;;16744:30:101;;;;;24669:25:111;;;16763:10:101;24710:18:111;;;24703:83;24642:18;;16744:30:101;24495:297:111;16666:123:101;16876:12;16864:24;;16338:561;16909:43;16927:4;16933:5;16940:11;16909:17;:43::i;:::-;16972:46;16989:6;16997:9;17008;16972:16;:46::i;:::-;16963:55;-1:-1:-1;502:2:99;17121:32:101;;:37;;;;:81;;;17194:8;17174:28;;17185:5;17174:8;:16;:28;;;;17121:81;17104:166;;;17234:25;;-1:-1:-1;;;17234:25:101;;;;;639::111;;;612:18;;17234:25:101;493:177:111;17104:166:101;17279:17;;;;17306:37;17316:4;17322:5;17279:17;17336:6;17306:9;:37::i;:::-;16032:1318;;;;;;;15896:1454;;;;:::o;9259:699::-;520:10:96;9418:15:101;508:23:96;;;:11;:23;;;;;;;;487:110;;;;-1:-1:-1;;;487:110:96;;31106:2:111;487:110:96;;;31088:21:111;31145:2;31125:18;;;31118:30;31184:34;31164:18;;;31157:62;31255:10;31235:18;;;31228:38;31283:19;;487:110:96;30904:404:111;487:110:96;25577:33:101;;;1702:66:::1;25577:33:::0;;;;38492:19:111;;;;38527:12;;;38520:28;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;;25567:44;;;;;9445:12:::1;::::0;9518:34:::1;::::0;;;;::::1;::::0;::::1;26012:25:111::0;;;26053:18;;;26046:34;;;9445:52:101;;-1:-1:-1;9518:9:101::1;-1:-1:-1::0;;;;;9518:15:101::1;::::0;::::1;::::0;25985:18:111;;9518:34:101::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9508:44;;9566:15;9576:4;9566:9;:15::i;:::-;9562:390;;;9598:13;::::0;;9650:52:::1;9683:4:::0;9650:7:::1;:52::i;:::-;9597:105;;;;;;9725:52;9742:6;9750:9;9768:7;9725:16;:52::i;:::-;9716:61;;9792:149;9818:4;9840:5;502:2:99;9874:5:101;9863:8;:16;:40;9921:6;9792:8;:149::i;:::-;9583:369;;;9562:390;9435:523;9259:699:::0;;;;;;:::o;2589:542:97:-;2740:16;2812:3;:10;2793:8;:15;:29;2772:117;;;;-1:-1:-1;;;2772:117:97;;31768:2:111;2772:117:97;;;31750:21:111;31807:2;31787:18;;;31780:30;31846:34;31826:18;;;31819:62;31917:11;31897:18;;;31890:39;31946:19;;2772:117:97;31566:405:111;2772:117:97;2900:30;2947:8;:15;2933:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2933:30:97;;2900:63;;2979:9;2974:120;2998:8;:15;2994:1;:19;2974:120;;;3053:30;3063:8;3072:1;3063:11;;;;;;;;:::i;:::-;;;;;;;3076:3;3080:1;3076:6;;;;;;;;:::i;:::-;;;;;;;3053:9;:30::i;:::-;3034:13;3048:1;3034:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;3015:3;;;:::i;:::-;;;2974:120;;;-1:-1:-1;3111:13:97;2589:542;-1:-1:-1;;;2589:542:97:o;633:171:90:-;1082:7:2;1108:6;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;26595:2:111;1240:68:2;;;26577:21:111;;;26614:18;;;26607:30;26673:34;26653:18;;;26646:62;26725:18;;1240:68:2;26393:356:111;1240:68:2;760:37:90::1;::::0;;;;-1:-1:-1;;;;;32168:55:111;;;760:37:90::1;::::0;::::1;32150:74:111::0;32240:18;;;32233:34;;;760:23:90;::::1;::::0;::::1;::::0;32123:18:111;;760:37:90::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;633:171:::0;;;:::o;3272:178:101:-;3390:13;3426:17;3440:2;3426:13;:17::i;1668:101:2:-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;26595:2:111;1240:68:2;;;26577:21:111;;;26614:18;;;26607:30;26673:34;26653:18;;;26646:62;26725:18;;1240:68:2;26393:356:111;1240:68:2;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;11468:582:101:-;25577:33;;;1702:66;25577:33;;;;38492:19:111;;;;38527:12;;;38520:28;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;;25567:44;;;;;5658:40;5681:4;5687:10;5658:22;:40::i;:::-;5653:109;;5721:30;;-1:-1:-1;;;5721:30:101;;;;;24669:25:111;;;5740:10:101;24710:18:111;;;24703:83;24642:18;;5721:30:101;24495:297:111;5653:109:101;-1:-1:-1;;;;;11656:26:101;::::1;11652:96;;11705:32;::::0;::::1;::::0;;-1:-1:-1;;;;;5298:55:111;;11705:32:101::1;::::0;::::1;5280:74:111::0;5253:18;;11705:32:101::1;5105:255:111::0;11652:96:101::1;11783:4;-1:-1:-1::0;;;;;11761:27:101;::::1;::::0;11757:97:::1;;11811:32;::::0;::::1;::::0;;-1:-1:-1;;;;;5298:55:111;;11811:32:101::1;::::0;::::1;5280:74:111::0;5253:18;;11811:32:101::1;5105:255:111::0;11757:97:101::1;25577:33:::0;;;1702:66:::1;25577:33:::0;;;;38492:19:111;;;;38527:12;;;38520:28;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;;25567:44;;;;;11863:51:::1;::::0;11871:30:::1;11903:10;11863:7;:51::i;:::-;11924:119;::::0;;;;11972:4:::1;11924:119;::::0;::::1;32791:34:111::0;-1:-1:-1;;;;;32861:15:111;;;32841:18;;;32834:43;32893:18;;;32886:34;;;11924:9:101::1;:26;::::0;::::1;::::0;32703:18:111;;11924:119:101::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11468:582:::0;;;;:::o;8385:476::-;520:10:96;8622:23:101;508::96;;;:11;:23;;;;;;;;487:110;;;;-1:-1:-1;;;487:110:96;;31106:2:111;487:110:96;;;31088:21:111;31145:2;31125:18;;;31118:30;31184:34;31164:18;;;31157:62;31255:10;31235:18;;;31228:38;31283:19;;487:110:96;30904:404:111;487:110:96;8657:15:101::1;8699:5;;8683:23;;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;8735:52;;;::::1;::::0;::::1;33409:25:111::0;;;8771:4:101::1;33450:18:111::0;;;33443:83;33542:18;;;33535:34;;;8683:23:101;-1:-1:-1;8735:9:101::1;-1:-1:-1::0;;;;;8735:18:101::1;::::0;::::1;::::0;33382::111;;8735:52:101::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8717:70;;8797:57;8809:5;;8797:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;8816:12:101;;-1:-1:-1;8830:5:101;;-1:-1:-1;8837:6:101;;-1:-1:-1;8845:8:101;8797:11:::1;:57::i;:::-;;8647:214;8385:476:::0;;;;;;;;;:::o;3199:362:97:-;-1:-1:-1;;;;;3342:22:97;;:10;:22;3321:110;;;;-1:-1:-1;;;3321:110:97;;33782:2:111;3321:110:97;;;33764:21:111;33821:2;33801:18;;;33794:30;33860:34;33840:18;;;33833:62;33931:11;33911:18;;;33904:39;33960:19;;3321:110:97;33580:405:111;3321:110:97;3461:10;3442:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;3442:40:97;;;;;;;;;;;;:51;;;;;;;;;;;;;3508:46;;1843:41:111;;;3442:40:97;;3461:10;3508:46;;1816:18:111;3508:46:97;;;;;;;3199:362;;:::o;23532:232:101:-;23649:4;;23690:22;23706:4;23690:7;:22::i;:::-;-1:-1:-1;23729:16:101;;:28;;;;;;;;;-1:-1:-1;;;23532:232:101;;;;:::o;4885:564::-;1082:7:2;1108:6;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;26595:2:111;1240:68:2;;;26577:21:111;;;26614:18;;;26607:30;26673:34;26653:18;;;26646:62;26725:18;;1240:68:2;26393:356:111;1240:68:2;5009:15:101::1;::::0;-1:-1:-1;;;;;5009:15:101::1;5001:38:::0;4997:197:::1;;5091:15;::::0;5055:60:::1;::::0;;;;-1:-1:-1;;;;;5091:15:101;;::::1;5055:60;::::0;::::1;34158:74:111::0;5091:15:101::1;34248:18:111::0;;;34241:50;5055:9:101::1;:27:::0;;::::1;::::0;::::1;::::0;34131:18:111;;5055:60:101::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5159:15:101::1;::::0;5129:54:::1;::::0;;;;-1:-1:-1;;;;;5159:15:101;;::::1;5129:54;::::0;::::1;34158:74:111::0;5159:15:101::1;34248:18:111::0;;;34241:50;5129:3:101::1;:21:::0;;::::1;::::0;-1:-1:-1;5129:21:101::1;::::0;-1:-1:-1;34131:18:111;;5129:54:101::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4997:197;5204:15;:33:::0;;;::::1;-1:-1:-1::0;;;;;5204:33:101;::::1;::::0;;::::1;::::0;;;5252:38;5248:195:::1;;5342:15;::::0;5306:59:::1;::::0;;;;-1:-1:-1;;;;;5342:15:101;;::::1;5306:59;::::0;::::1;34158:74:111::0;5342:15:101;34248:18:111;;;34241:50;5306:9:101::1;:27:::0;;::::1;::::0;::::1;::::0;34131:18:111;;5306:59:101::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5409:15:101::1;::::0;5379:53:::1;::::0;;;;-1:-1:-1;;;;;5409:15:101;;::::1;5379:53;::::0;::::1;34158:74:111::0;5409:15:101;34248:18:111;;;34241:50;5379:3:101::1;:21:::0;;::::1;::::0;-1:-1:-1;5379:21:101::1;::::0;-1:-1:-1;34131:18:111;;5379:53:101::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;5248:195;4885:564:::0;:::o;13191:429::-;13348:6;13275:4;5658:40;5681:4;5687:10;5658:22;:40::i;:::-;5653:109;;5721:30;;-1:-1:-1;;;5721:30:101;;;;;24669:25:111;;;5740:10:101;24710:18:111;;;24703:83;24642:18;;5721:30:101;24495:297:111;5653:109:101;13306:4;298:1:99::1;21966:12:101;21984:22;13306:4:::0;21984:7:::1;:22::i;:::-;-1:-1:-1::0;21963:43:101;-1:-1:-1;;22020:21:101::1;:16:::0;;::::1;:21;::::0;22016:84:::1;;22064:25;::::0;-1:-1:-1;;;22064:25:101;;::::1;::::0;::::1;639::111::0;;;612:18;;22064:25:101::1;493:177:111::0;22016:84:101::1;13370:41:::2;13399:4;13405:5;13370:28;:41::i;:::-;13423:13;::::0;;13472:44:::2;13501:4:::0;13472:7:::2;:44::i;:::-;13422:94;;;;;;13536:8;13527:17;;;;13554:37;13564:4;13570:5;13577;13584:6;13554:9;:37::i;:::-;-1:-1:-1::0;13608:5:101;;13191:429;-1:-1:-1;;;;;;;;13191:429:101:o;17770:778::-;18063:12;17966:10;5658:40;5681:4;5687:10;5658:22;:40::i;:::-;5653:109;;5721:30;;-1:-1:-1;;;5721:30:101;;;;;24669:25:111;;;5740:10:101;24710:18:111;;;24703:83;24642:18;;5721:30:101;24495:297:111;5653:109:101;18009:10:::1;18037:5;;18021:23;;;;;;;:::i;:::-;;;;;;;;22730:15;22748:26;22758:4;22764:9;25577:33:::0;;;;;;;38492:19:111;;;;38527:12;;;38520:28;;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;25567:44;;;;;;25439:179;22748:26:::1;22800:18;::::0;;;;::::1;::::0;::::1;639:25:111::0;;;22730:44:101;;-1:-1:-1;22784:13:101::1;::::0;-1:-1:-1;;;;;22800:3:101::1;:9;::::0;::::1;::::0;612:18:111;;22800::101::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22784:34:::0;-1:-1:-1;;;;;;22833:19:101;::::1;22829:428;;22871:12;22889:22;22905:4:::0;22889:7:::1;:22::i;:::-;-1:-1:-1::0;22868:43:101;-1:-1:-1;;458:2:99::1;22929:31:101::0;::::1;:36:::0;22925:110:::1;;22992:28;::::0;-1:-1:-1;;;22992:28:101;;::::1;::::0;::::1;639:25:111::0;;;612:18;;22992:28:101::1;493:177:111::0;22925:110:101::1;22854:191;22829:428;;;23068:19;23093:25;23109:7:::0;23093::::1;:25::i;:::-;-1:-1:-1::0;23065:53:101;-1:-1:-1;;502:2:99::1;23136:36:101::0;::::1;:41:::0;23132:115:::1;;23204:28;::::0;-1:-1:-1;;;23204:28:101;;::::1;::::0;::::1;639:25:111::0;;;612:18;;23204:28:101::1;493:177:111::0;23132:115:101::1;23051:206;22829:428;18091:17:::2;18127:5;;18111:23;;;;;;;:::i;:::-;;;;;;;;18091:43;;18151:32;18161:10;18173:9;25577:33:::0;;;;;;;38492:19:111;;;;38527:12;;;38520:28;;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;25567:44;;;;;;25439:179;18151:32:::2;18144:39;;18202:59;18229:10;18241:4;18247:5;18254:6;18202:26;:59::i;:::-;18193:68;;18277:15;18287:4;18277:9;:15::i;:::-;18272:270;;18308:57;::::0;;;;::::2;::::0;::::2;34504:25:111::0;;;34545:18;;;34538:34;;;18359:4:101::2;34588:18:111::0;;;34581:83;-1:-1:-1;;;;;18308:3:101::2;:19;::::0;::::2;::::0;34477:18:111;;18308:57:101::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18379:63;18396:10;18408:4;18414:5;;18379:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18421:5;18428;18435:6;18379:16;:63::i;:::-;18272:270;;;18473:58;18485:10;18497:4;18503:5;;18473:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18510:5;18517;18524:6;18473:11;:58::i;:::-;18081:467;22720:555:::1;;5772:1;;17770:778:::0;;;;;;;;;:::o;20467:483::-;20638:4;5658:40;5681:4;5687:10;5658:22;:40::i;:::-;5653:109;;5721:30;;-1:-1:-1;;;5721:30:101;;;;;24669:25:111;;;5740:10:101;24710:18:111;;;24703:83;24642:18;;5721:30:101;24495:297:111;5653:109:101;20682:4;20700:54;21966:12:::1;21984:22;20682:4:::0;21984:7:::1;:22::i;:::-;-1:-1:-1::0;21963:43:101;-1:-1:-1;;22020:21:101::1;:16:::0;;::::1;:21;::::0;22016:84:::1;;22064:25;::::0;-1:-1:-1;;;22064:25:101;;::::1;::::0;::::1;639::111::0;;;612:18;;22064:25:101::1;493:177:111::0;22016:84:101::1;20779:49:::2;::::0;;;;::::2;::::0;::::2;35093:25:111::0;;;20807:4:101::2;35195:18:111::0;;;35188:43;-1:-1:-1;;;;;35267:15:111;;;35247:18;;;35240:43;35331:18;35319:31;;35299:18;;;35292:59;20779:3:101::2;:13;::::0;::::2;::::0;35065:19:111;;20779:49:101::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;20839:16;20863:22;20879:4;20871:13;;20863:7;:22::i;:::-;20838:47;;;;20895:48;20905:8;20915:5;20930:4;20922:13;;20937:1;20895:48;;;;;;;;;;;::::0;:9:::2;:48::i;:::-;20769:181;21953:164:::1;5772:1;;20467:483:::0;;;;;:::o;12532:465::-;25577:33;;;;;;;38492:19:111;;;38527:12;;;38520:28;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;;25567:44;;;;;5658:40;5681:4;5687:10;5658:22;:40::i;:::-;5653:109;;5721:30;;-1:-1:-1;;;5721:30:101;;;;;24669:25:111;;;5740:10:101;24710:18:111;;;24703:83;24642:18;;5721:30:101;24495:297:111;5653:109:101;12716:22;;;12712:80:::1;;12761:20;;;;;;;;;;;;;;12712:80;-1:-1:-1::0;;;;;12805:26:101;::::1;::::0;;:57:::1;;-1:-1:-1::0;;;;;;12835:27:101;::::1;12857:4;12835:27;12805:57;12801:127;;;12885:32;::::0;::::1;::::0;;-1:-1:-1;;;;;5298:55:111;;12885:32:101::1;::::0;::::1;5280:74:111::0;5253:18;;12885:32:101::1;5105:255:111::0;12801:127:101::1;25577:33:::0;;;;;;;38492:19:111;;;38527:12;;;38520:28;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;;25567:44;;;;;12937:53:::1;::::0;12945:32:::1;25439:179:::0;271:174:96;1082:7:2;1108:6;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;26595:2:111;1240:68:2;;;26577:21:111;;;26614:18;;;26607:30;26673:34;26653:18;;;26646:62;26725:18;;1240:68:2;26393:356:111;1240:68:2;-1:-1:-1;;;;;354:23:96;::::1;;::::0;;;:11:::1;:23;::::0;;;;;;;;:32;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;401:37;;1843:41:111;;;401:37:96::1;::::0;1816:18:111;401:37:96::1;;;;;;;;271:174:::0;;:::o;13988:454:101:-;14121:17;14157:5;;14141:23;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;14174:12:101;14189:30;1702:66;14141:23;25577:33;;;;;;;38492:19:111;;;;38527:12;;;38520:28;;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;25567:44;;;;;;25439:179;14189:30;14174:45;;14230:12;14244:13;14261:21;14277:4;14261:15;:21::i;:::-;14293:15;;:142;;;;;14229:53;;-1:-1:-1;14229:53:101;;-1:-1:-1;;;;;;14293:15:101;;:26;;:142;;14333:5;;;;14352:12;;14229:53;;;;14417:8;;14293:142;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14111:331;;;;13988:454;;;;:::o;10333:761::-;10465:17;10484:14;10502:17;10517:1;10502:4;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10502:14:101;;:17;-1:-1:-1;;10502:14:101;:17;-1:-1:-1;10502:17:101:i;:::-;10464:55;;;;10529:18;10550:21;10564:6;10550:4;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10550:13:101;;:21;-1:-1:-1;;10550:13:101;:21;-1:-1:-1;10550:21:101:i;:::-;25577:33;;;;;;;38492:19:111;;;38527:12;;;38520:28;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;;25567:44;;;;;10529:42;;-1:-1:-1;10643:22:101;;;10639:80;;10688:20;;;;;;;;;;;;;;10639:80;10745:15;;;;;;;;639:25:111;;;10729:13:101;;10745:3;-1:-1:-1;;;;;10745:9:101;;;;612:18:111;;10745:15:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10729:31;-1:-1:-1;;;;;;10775:19:101;;10784:10;10775:19;;;;:63;;-1:-1:-1;10799:39:101;;;;;-1:-1:-1;;;;;36602:15:111;;;10799:39:101;;;36584:34:111;10827:10:101;36634:18:111;;;36627:43;10799:3:101;:20;;;;36496:18:111;;10799:39:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10798:40;10775:63;10771:131;;;10861:30;;-1:-1:-1;;;10861:30:101;;;;;24669:25:111;;;10880:10:101;24710:18:111;;;24703:83;24642:18;;10861:30:101;24495:297:111;10771:131:101;-1:-1:-1;;;;;10916:22:101;;;10912:84;;10954:31;;;;;;;;24669:25:111;;;-1:-1:-1;;;;;24730:55:111;;;24710:18;;;24703:83;10954:3:101;:15;;;;24642:18:111;;10954:31:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10912:84;11006:33;;;;;;;;24669:25:111;;;11033:4:101;24710:18:111;;;24703:83;11006:3:101;-1:-1:-1;;;;;11006:12:101;;;;24642:18:111;;11006:33:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11050:37;11056:4;11062;;11050:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11068:12:101;;-1:-1:-1;11050:37:101;-1:-1:-1;11050:37:101;;-1:-1:-1;11050:5:101;:37::i;14968:522::-;15123:17;15159:5;;15143:23;;;;;;;:::i;:::-;;;;;;;;15123:43;;15176:12;15191:32;15201:10;15213:9;25577:33;;;;;;;38492:19:111;;;;38527:12;;;38520:28;;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;25567:44;;;;;;25439:179;15191:32;15176:47;;15234:12;15248:13;15265:21;15281:4;15265:15;:21::i;:::-;15296:15;;:187;;;;;15233:53;;-1:-1:-1;15233:53:101;;-1:-1:-1;;;;;;15296:15:101;;:32;;:187;;15342:10;;15366:5;;;;15385:12;;15411:8;;15296:15;;15233:53;;;;15296:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15113:377;;;;14968:522;;;;;:::o;4416:454:97:-;-1:-1:-1;;;;;4603:16:97;;4595:66;;;;-1:-1:-1;;;4595:66:97;;28633:2:111;4595:66:97;;;28615:21:111;28672:2;28652:18;;;28645:30;28711:34;28691:18;;;28684:62;28782:7;28762:18;;;28755:35;28807:19;;4595:66:97;28431:401:111;4595:66:97;-1:-1:-1;;;;;4692:18:97;;4700:10;4692:18;;:56;;-1:-1:-1;;;;;;3794:27:97;;3767:4;3794:27;;;:18;:27;;;;;;;;4737:10;3794:37;;;;;;;;;;4714:34;4671:144;;;;-1:-1:-1;;;4671:144:97;;37720:2:111;4671:144:97;;;37702:21:111;37759:2;37739:18;;;37732:30;37798:34;37778:18;;;37771:62;37869:11;37849:18;;;37842:39;37898:19;;4671:144:97;37518:405:111;4671:144:97;4826:37;4836:4;4842:2;4846;4850:6;4858:4;4826:9;:37::i;1918:198:2:-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:2;719:10:14;1248:23:2;1240:68;;;;-1:-1:-1;;;1240:68:2;;26595:2:111;1240:68:2;;;26577:21:111;;;26614:18;;;26607:30;26673:34;26653:18;;;26646:62;26725:18;;1240:68:2;26393:356:111;1240:68:2;-1:-1:-1;;;;;2006:22:2;::::1;1998:73;;;::::0;-1:-1:-1;;;1998:73:2;;38130:2:111;1998:73:2::1;::::0;::::1;38112:21:111::0;38169:2;38149:18;;;38142:30;38208:34;38188:18;;;38181:62;38279:8;38259:18;;;38252:36;38305:19;;1998:73:2::1;37928:402:111::0;1998:73:2::1;2081:28;2100:8;2081:18;:28::i;6013:250:101:-:0;6135:4;;6171:22;6187:4;6171:7;:22::i;:::-;6155:38;;6219:4;-1:-1:-1;;;;;6210:13:101;:5;-1:-1:-1;;;;;6210:13:101;;:46;;;-1:-1:-1;;;;;;3794:27:97;;;3767:4;3794:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;6227:29:101;6203:53;6013:250;-1:-1:-1;;;;6013:250:101:o;6835:914::-;7018:6;7036:15;7078:5;;7062:23;;;;;;;:::i;:::-;;;;;;;;;7117:26;;;;;;639:25:111;;;7062:23:101;-1:-1:-1;7054:32:101;;7117:9;-1:-1:-1;;;;;7117:17:101;;;;612:18:111;;7117:26:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7096:47;-1:-1:-1;;;;;;7170:24:101;;7184:10;7170:24;;;;:91;;-1:-1:-1;7211:50:101;;;;;-1:-1:-1;;;;;36602:15:111;;;7211:50:101;;;36584:34:111;7250:10:101;36634:18:111;;;36627:43;7211:9:101;:26;;;;36496:18:111;;7211:50:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7210:51;7170:91;7153:260;;;25577:33;;;1702:66;25577:33;;;;38492:19:111;;;;38527:12;;;38520:28;;;25577:33:101;;;;;;;;;38564:12:111;;;25577:33:101;;;;25567:44;;;;;-1:-1:-1;;;7293:109:101;;;;;;24669:25:111;;;;7378:10:101;24710:18:111;;;24703:83;24642:18;;7293:109:101;24495:297:111;7153:260:101;7484:58;;;;;-1:-1:-1;;;;;32809:15:111;;;7484:58:101;;;32791:34:111;7527:4:101;32841:18:111;;;32834:43;32893:18;;;32886:34;;;7484:9:101;:22;;;;32703:18:111;;7484:58:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7626:41:101;;;;;;;;24669:25:111;;;7661:4:101;24710:18:111;;;24703:83;7626:9:101;-1:-1:-1;;;;;7626:17:101;;-1:-1:-1;7626:17:101;;-1:-1:-1;24642:18:111;;7626:41:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7685:57;7697:5;;7685:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7704:12:101;;-1:-1:-1;7718:5:101;;-1:-1:-1;7725:6:101;;-1:-1:-1;7733:8:101;7685:11;:57::i;:::-;7678:64;6835:914;-1:-1:-1;;;;;;;;;6835:914:101:o;24045:189::-;24108:4;;24143:22;24159:4;24143:7;:22::i;:::-;-1:-1:-1;;;;;24143:36:101;;;:84;;;;-1:-1:-1;24195:15:101;;;;;;;;639:25:111;;;24222:4:101;;-1:-1:-1;;;;;24195:3:101;:9;;;;612:18:111;;24195:15:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24195:32:101;;24124:103;24045:189;-1:-1:-1;;24045:189:101:o;3915:434:97:-;4023:13;4126:16;;;:7;:16;;;;;;;4210:3;4205:8;;;4126:16;4228:15;:24;-1:-1:-1;4224:119:97;;;4276:1;4268:9;;4224:119;;;4328:3;4323:1;:8;;4308:24;;4224:119;4104:245;3915:434;;;;;:::o;1549:349::-;1691:4;1730:41;;;1745:26;1730:41;;:109;;-1:-1:-1;1787:52:97;;;1802:37;1787:52;1730:109;:161;;;-1:-1:-1;952:25:16;937:40;;;;1855:36:97;829:155:16;30088:897:101;30436:23;;;;;;30262:6;;;30484:30;1702:66;30436:23;25577:33;;;;;;;38492:19:111;;;;38527:12;;;38520:28;;;;25577:33:101;;;;;;;;;38564:12:111;;;;25577:33:101;;25567:44;;;;;;25439:179;30484:30;30469:45;;30524:15;30573:103;30619:4;30637:9;30660:6;30573:32;:103::i;:::-;30550:126;-1:-1:-1;30550:126:101;-1:-1:-1;30687:174:101;;-1:-1:-1;1702:66:101;30739:4;30757:5;30776:12;502:2:99;30802:29:101;;30550:126;30687:16;:174::i;:::-;-1:-1:-1;;;;;30875:22:101;;;30871:84;;30913:31;;;;;;;;24669:25:111;;;-1:-1:-1;;;;;24730:55:111;;;24710:18;;;24703:83;30913:3:101;:15;;;;24642:18:111;;30913:31:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30871:84;-1:-1:-1;30972:6:101;;30088:897;-1:-1:-1;;;;;;;30088:897:101:o;28213:429::-;28373:6;;28416:22;28432:4;28416:7;:22::i;:::-;28391:47;;;;28451:18;28471:16;28491:28;28507:10;28499:19;;28491:7;:28::i;:::-;28448:71;;;;;28529:43;28547:4;28553:5;28560:11;28529:17;:43::i;:::-;28589:46;28606:6;28614:9;28625;28589:16;:46::i;:::-;28582:53;28213:429;-1:-1:-1;;;;;;;;28213:429:101:o;26795:309::-;26993:17;27030;;;:5;:17;;;;;27013:35;;;;27023:5;;27013:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9;:35::i;:::-;26993:55;;27058:39;27064:4;27070;27076:5;27083;27090:6;27058:5;:39::i;:::-;26983:121;26795:309;;;;;;:::o;27567:600::-;27760:16;27779:22;27795:4;27779:7;:22::i;:::-;27760:41;;27811:17;27831:35;27841:5;27848;:17;27854:10;27848:17;;;;;;;;;;;27831:35;;;;;:::i;:::-;27880:11;;;;:5;:11;;;;;:18;;27811:55;;-1:-1:-1;27880:11:101;:18;;;:::i;:::-;;;27902:1;27880:23;27876:72;;27919:11;;;;:5;:11;;;;;:18;27933:4;27919:11;:18;:::i;:::-;;27876:72;27957:40;27967:4;27973:8;27983:5;27990:6;27957:9;:40::i;:::-;-1:-1:-1;;;;;28011:19:101;;28007:154;;28046:25;28054:4;28068:1;28046:7;:25::i;:::-;28007:154;;;28102:48;28112:8;28122:5;28137:4;28129:13;;28144:1;28102:48;;;;;;;;;;;;:9;:48::i;9790:970:97:-;-1:-1:-1;;;;;10022:13:97;;1465:19:13;:23;10018:736:97;;10073:197;;;;;-1:-1:-1;;;;;10073:43:97;;;;;:197;;10138:8;;10168:4;;10194:3;;10219:7;;10248:4;;10073:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10073:197:97;;;;;;;;-1:-1:-1;;10073:197:97;;;;;;;;;;;;:::i;:::-;;;10053:691;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;10620:6;10613:14;;-1:-1:-1;;;10613:14:97;;;;;;;;:::i;10053:691::-;;;10667:62;;-1:-1:-1;;;10667:62:97;;43195:2:111;10667:62:97;;;43177:21:111;43234:2;43214:18;;;43207:30;43273:34;43253:18;;;43246:62;43344:22;43324:18;;;43317:50;43384:19;;10667:62:97;42993:416:111;10053:691:97;10352:84;;;10384:52;10352:84;10327:219;;10477:50;;-1:-1:-1;;;10477:50:97;;43616:2:111;10477:50:97;;;43598:21:111;43655:2;43635:18;;;43628:30;43694:34;43674:18;;;43667:62;43765:10;43745:18;;;43738:38;43793:19;;10477:50:97;43414:404:111;10053:691:97;9790:970;;;;;;:::o;28648:402:101:-;502:2:99;28797:29:101;;;:66;259:1:99;28902:27:101;;:32;28797:66;28949:36;;;;;28965:20;28949:36;28945:99;;;29008:25;;-1:-1:-1;;;29008:25:101;;;;;639::111;;;612:18;;29008:25:101;493:177:111;29592:490:101;29722:6;29873:9;29864:18;;:6;:18;;;29860:67;;;29907:9;29898:18;;29860:67;29998:9;29989:18;;:6;:18;;;29985:67;;;30032:9;30023:18;;29985:67;-1:-1:-1;30069:6:101;;29592:490;-1:-1:-1;;29592:490:101:o;31309:221::-;31443:36;31452:4;31458:5;31465;31472:6;31443:8;:36::i;:::-;31494:29;;;44023:10:111;44011:23;;43993:42;;44083:18;44071:31;;44066:2;44051:18;;44044:59;31503:4:101;;31494:29;;43966:18:111;31494:29:101;;;;;;;31309:221;;;;:::o;31536:231::-;31669:30;31687:4;31693:5;31669:17;:30::i;:::-;6677:16:97;;;;:7;:16;;;;;-1:-1:-1;;;;;6708:23:97;;6747:21;6765:3;6747:21;;;;6708:61;6785:22;6804:3;6785:22;;;;6708:100;6677:131;;31709:51:101;6533:282:97;1343:139;1401:7;1421:13;1442:11;1450:2;1442:7;:11::i;:::-;-1:-1:-1;1420:33:97;;1343:139;-1:-1:-1;;;;1343:139:97:o;2270:187:2:-;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:2;;;;;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;30991:312:101:-;31059:35;31074:4;259:1:99;31059:14:101;:35::i;:::-;31055:98;;;31117:25;;-1:-1:-1;;;31117:25:101;;;;;639::111;;;612:18;;31117:25:101;493:177:111;31055:98:101;31199:20;31213:4;31199:5;:20::i;:::-;31229:25;;;;;;;;24669::111;;;-1:-1:-1;;;;;24730:55:111;;;24710:18;;;24703:83;31229:3:101;:12;;;;24642:18:111;;31229:25:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31270:26:101;;-1:-1:-1;;;;;5298:55:111;;5280:74;;31284:4:101;;-1:-1:-1;31270:26:101;;-1:-1:-1;5268:2:111;5253:18;31270:26:101;5105:255:111;32102:290:101;502:2:99;32216:29:101;;:34;32212:174;;32345:30;;-1:-1:-1;;;32345:30:101;;;;;24669:25:111;;;32364:10:101;24710:18:111;;;24703:83;24642:18;;32345:30:101;24495:297:111;32212:174:101;32102:290;;:::o;8161:704:97:-;8319:16;8337:12;8351:13;8368:11;8376:2;8368:7;:11::i;:::-;8318:61;;;;;;8395:19;8408:5;335:1:99;25398:23:101;:28;;25307:126;8395:19:97;8390:90;;8437:32;;-1:-1:-1;;;8437:32:97;;;;;639:25:111;;;612:18;;8437:32:97;493:177:111;8390:90:97;8511:6;8521:1;8511:11;:31;;;;;8538:4;-1:-1:-1;;;;;8526:16:97;:8;-1:-1:-1;;;;;8526:16:97;;8511:31;8490:120;;;;-1:-1:-1;;;8490:120:97;;29647:2:111;8490:120:97;;;29629:21:111;29686:2;29666:18;;;29659:30;29725:34;29705:18;;;29698:62;29796:12;29776:18;;;29769:40;29826:19;;8490:120:97;29445:406:111;8490:120:97;8637:2;-1:-1:-1;;;;;8625:14:97;:8;-1:-1:-1;;;;;8625:14:97;;8621:51;;8655:7;;;;;8621:51;6677:16;;;;:7;:16;;;;;-1:-1:-1;;;;;6708:23:97;;6747:21;6765:3;6747:21;;;;6708:61;6785:22;6804:3;6785:22;;;;6708:100;6677:131;;8729:48;;;26012:25:111;;;26068:2;26053:18;;26046:34;;;-1:-1:-1;;;;;8729:48:97;;;;;;;;8744:10;;8729:48;;25985:18:111;8729:48:97;;;;;;;8788:70;8819:10;8831:4;8837:2;8841;8845:6;8853:4;8788:30;:70::i;27110:451:101:-;27237:15;;27182:12;;;;-1:-1:-1;;;;;27237:15:101;27225:91;;27290:15;;;;;;;;;;;;;;27225:91;27331:40;27354:4;27360:10;27331:22;:40::i;:::-;27326:109;;27394:30;;-1:-1:-1;;;27394:30:101;;;;;24669:25:111;;;27413:10:101;24710:18:111;;;24703:83;24642:18;;27394:30:101;24495:297:111;27326:109:101;27465:22;27481:4;27465:7;:22::i;:::-;27445:42;;-1:-1:-1;27445:42:101;-1:-1:-1;27534:20:101;;-1:-1:-1;27548:4:101;27534:5;:20::i;:::-;27110:451;;;:::o;1700:433:95:-;1798:17;1817:14;1861:4;:11;1855:3;:17;1847:60;;;;-1:-1:-1;;;1847:60:95;;44316:2:111;1847:60:95;;;44298:21:111;44355:2;44335:18;;;44328:30;44394:32;44374:18;;;44367:60;44444:18;;1847:60:95;44114:354:111;1847:60:95;1917:11;1945:4;1950:3;1945:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1970:7:95;;1966:129;;2005:26;2012:4;2018:7;:3;2024:1;2018:7;:::i;:::-;2027:3;2005:6;:26::i;:::-;1993:38;;1966:129;;;2082:1;;-1:-1:-1;1966:129:95;2113:9;2119:3;2113;:9;:::i;:::-;:13;;2125:1;2113:13;:::i;:::-;2104:22;;1837:296;1700:433;;;;;:::o;848:449::-;948:7;972:17;991;1012:23;1022:4;1028:6;1012:9;:23::i;:::-;971:64;;-1:-1:-1;971:64:95;-1:-1:-1;971:64:95;1045:152;;1120:1;1106:4;:11;:15;;;;:::i;:::-;1096:6;:25;1088:67;;;;-1:-1:-1;;;1088:67:95;;44938:2:111;1088:67:95;;;44920:21:111;44977:2;44957:18;;;44950:30;45016:31;44996:18;;;44989:59;45065:18;;1088:67:95;44736:353:111;1088:67:95;-1:-1:-1;1184:1:95;;-1:-1:-1;1169:17:95;;-1:-1:-1;1169:17:95;1045:152;1252:25;1261:4;1267:9;1252:8;:25::i;:::-;1235:54;;;;;;38492:19:111;;;;38527:12;;38520:28;;;38564:12;;1235:54:95;;;;;;;;;;;;1225:65;;;;;;1206:84;;;;848:449;;;;:::o;26483:306:101:-;26647:11;;;;:5;:11;;;;;:18;26661:4;26647:11;:18;:::i;:::-;;26675:40;26681:4;26687:12;26701:5;26708:6;26675:5;:40::i;:::-;26742:4;26730:52;26748:4;26754:12;26768:5;26775:6;26730:52;;;;;;;;;:::i;:::-;;;;;;;;26483:306;;;;;:::o;29056:530::-;29236:13;;;;29374:22;29390:4;29374:7;:22::i;:::-;29432:41;;;;;;;;639:25:111;;;29346:50:101;;-1:-1:-1;29346:50:101;;-1:-1:-1;29346:50:101;-1:-1:-1;29406:16:101;;29432:9;-1:-1:-1;;;;;29432:21:101;;;;612:18:111;;29432:41:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29406:68;;29494:46;29511:6;29519:9;29530;29494:16;:46::i;:::-;29485:55;-1:-1:-1;29485:55:101;;-1:-1:-1;;;29056:530:101;;;;;;;:::o;25624:385::-;25730:16;25788:1;25772:5;25766:19;:23;25762:76;;;25812:15;;;;;;;;;;;;;;25762:76;25873:3;25857:5;25851:19;:25;25847:82;;;25912:5;25899:19;;;;;;;;;;;:::i;25847:82::-;25974:5;25968:19;25990:5;25997:4;25945:57;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25938:64;;25624:385;;;;:::o;31773:323::-;31869:35;;;;;;;:153;;-1:-1:-1;31984:37:101;31920:47;;;:102;;31869:153;31852:238;;;32054:25;;-1:-1:-1;;;32054:25:101;;;;;639::111;;;612:18;;32054:25:101;493:177:111;7851:304:97;7911:13;7926:12;7940:13;7957:16;7965:7;7957;:16::i;:::-;8054:3;6677:16;;;:7;:16;;;;;6747:21;6765:3;6747:21;;;;6785:22;6804:3;6785:22;;;;6708:100;6677:131;;7910:63;;-1:-1:-1;7910:63:97;-1:-1:-1;7910:63:97;-1:-1:-1;8089:59:97;;;26012:25:111;;;8146:1:97;26068:2:111;26053:18;;26046:34;8131:3:97;;-1:-1:-1;;;;;8089:59:97;;;8104:10;;8089:59;;25985:18:111;8089:59:97;;;;;;;7900:255;;;7851:304;:::o;8871:913::-;-1:-1:-1;;;;;9078:13:97;;1465:19:13;:23;9074:704:97;;9129:190;;;;;-1:-1:-1;;;;;9129:38:97;;;;;:190;;9189:8;;9219:4;;9245:2;;9269:6;;9297:4;;9129:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9129:190:97;;;;;;;;-1:-1:-1;;9129:190:97;;;;;;;;;;;;:::i;:::-;;;9109:659;;;;:::i;:::-;9401:59;;;9413:47;9401:59;9376:194;;9501:50;;-1:-1:-1;;;9501:50:97;;43616:2:111;9501:50:97;;;43598:21:111;43655:2;43635:18;;;43628:30;43694:34;43674:18;;;43667:62;43765:10;43745:18;;;43738:38;43793:19;;9501:50:97;43414:404:111;343:274:95;507:11;;460;;491:12;500:3;491:6;:12;:::i;:::-;:27;;483:36;;;;;;-1:-1:-1;569:26:95;;583:2;569:26;559:42;;343:274::o;26015:462:101:-;26154:30;26172:4;26178:5;26154:17;:30::i;:::-;26194:16;26213:22;26229:4;26213:7;:22::i;:::-;26194:41;-1:-1:-1;;;;;;26249:22:101;;;26245:177;;26341:20;26355:4;26341:5;:20::i;:::-;26380:31;;26408:1;5280:74:111;;26394:4:101;;26380:31;;5268:2:111;5253:18;26380:31:101;;;;;;;26245:177;26431:39;26443:4;26449:5;26456;26463:6;7059:4:97;7033:15;;;7130:44;7059:4;7130:7;:44::i;:::-;7074:100;;;;;;7201:6;7189:18;;:9;:18;;;7185:67;;;7232:9;7223:18;;7185:67;-1:-1:-1;;;;;7270:22:97;;;7262:66;;;;-1:-1:-1;;;7262:66:97;;47320:2:111;7262:66:97;;;47302:21:111;47359:2;47339:18;;;47332:30;47398:33;47378:18;;;47371:61;47449:18;;7262:66:97;47118:355:111;7262:66:97;-1:-1:-1;;;;;7346:19:97;;7338:65;;;;-1:-1:-1;;;7338:65:97;;47680:2:111;7338:65:97;;;47662:21:111;47719:2;47699:18;;;47692:30;47758:34;47738:18;;;47731:62;47829:3;47809:18;;;47802:31;47850:19;;7338:65:97;47478:397:111;7338:65:97;7451:4;-1:-1:-1;;;;;7434:22:97;;;7413:121;;;;-1:-1:-1;;;7413:121:97;;48082:2:111;7413:121:97;;;48064:21:111;48121:2;48101:18;;;48094:30;48160:34;48140:18;;;48133:62;48231:22;48211:18;;;48204:50;48271:19;;7413:121:97;47880:416:111;7413:121:97;6677:16;;;;:7;:16;;;;;-1:-1:-1;;;;;6708:23:97;;6747:21;7570:16;;;6765:3;6747:21;;6708:61;6785:22;6804:3;6785:22;;;;6708:100;6677:131;;7610:59;;;26012:25:111;;;7667:1:97;26068:2:111;26053:18;;26046:34;-1:-1:-1;;;;;7610:59:97;;;7645:3;;7625:10;;7610:59;;25985:18:111;7610:59:97;;;;;;;7679:159;7723:10;7755:1;7771:5;7790:7;7811:1;7679:159;;;;;;;;;;;;:30;:159::i;14:154:111:-;-1:-1:-1;;;;;93:5:111;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:315;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;478:2;463:18;;;;450:32;;-1:-1:-1;;;173:315:111:o;675:180::-;734:6;787:2;775:9;766:7;762:23;758:32;755:52;;;803:1;800;793:12;755:52;-1:-1:-1;826:23:111;;675:180;-1:-1:-1;675:180:111:o;1271:177::-;1356:66;1349:5;1345:78;1338:5;1335:89;1325:117;;1438:1;1435;1428:12;1453:245;1511:6;1564:2;1552:9;1543:7;1539:23;1535:32;1532:52;;;1580:1;1577;1570:12;1532:52;1619:9;1606:23;1638:30;1662:5;1638:30;:::i;:::-;1687:5;1453:245;-1:-1:-1;;;1453:245:111:o;1895:250::-;1980:1;1990:113;2004:6;2001:1;1998:13;1990:113;;;2080:11;;;2074:18;2061:11;;;2054:39;2026:2;2019:10;1990:113;;;-1:-1:-1;;2137:1:111;2119:16;;2112:27;1895:250::o;2150:330::-;2192:3;2230:5;2224:12;2257:6;2252:3;2245:19;2273:76;2342:6;2335:4;2330:3;2326:14;2319:4;2312:5;2308:16;2273:76;:::i;:::-;2394:2;2382:15;-1:-1:-1;;2378:88:111;2369:98;;;;2469:4;2365:109;;2150:330;-1:-1:-1;;2150:330:111:o;2485:220::-;2634:2;2623:9;2616:21;2597:4;2654:45;2695:2;2684:9;2680:18;2672:6;2654:45;:::i;2710:171::-;2777:20;;2837:18;2826:30;;2816:41;;2806:69;;2871:1;2868;2861:12;2806:69;2710:171;;;:::o;2886:252::-;2953:6;2961;3014:2;3002:9;2993:7;2989:23;2985:32;2982:52;;;3030:1;3027;3020:12;2982:52;3066:9;3053:23;3043:33;;3095:37;3128:2;3117:9;3113:18;3095:37;:::i;:::-;3085:47;;2886:252;;;;;:::o;3143:347::-;3194:8;3204:6;3258:3;3251:4;3243:6;3239:17;3235:27;3225:55;;3276:1;3273;3266:12;3225:55;-1:-1:-1;3299:20:111;;3342:18;3331:30;;3328:50;;;3374:1;3371;3364:12;3328:50;3411:4;3403:6;3399:17;3387:29;;3463:3;3456:4;3447:6;3439;3435:19;3431:30;3428:39;3425:59;;;3480:1;3477;3470:12;3425:59;3143:347;;;;;:::o;3495:754::-;3592:6;3600;3608;3616;3624;3677:3;3665:9;3656:7;3652:23;3648:33;3645:53;;;3694:1;3691;3684:12;3645:53;3733:9;3720:23;3752:31;3777:5;3752:31;:::i;:::-;3802:5;-1:-1:-1;3859:2:111;3844:18;;3831:32;3872:33;3831:32;3872:33;:::i;:::-;3924:7;-1:-1:-1;3978:2:111;3963:18;;3950:32;;-1:-1:-1;4033:2:111;4018:18;;4005:32;4060:18;4049:30;;4046:50;;;4092:1;4089;4082:12;4046:50;4131:58;4181:7;4172:6;4161:9;4157:22;4131:58;:::i;:::-;3495:754;;;;-1:-1:-1;3495:754:111;;-1:-1:-1;4208:8:111;;4105:84;3495:754;-1:-1:-1;;;3495:754:111:o;4507:273::-;4592:6;4645:2;4633:9;4624:7;4620:23;4616:32;4613:52;;;4661:1;4658;4651:12;4613:52;4700:9;4687:23;4719:31;4744:5;4719:31;:::i;4785:315::-;4853:6;4861;4914:2;4902:9;4893:7;4889:23;4885:32;4882:52;;;4930:1;4927;4920:12;4882:52;4966:9;4953:23;4943:33;;5026:2;5015:9;5011:18;4998:32;5039:31;5064:5;5039:31;:::i;:::-;5089:5;5079:15;;;4785:315;;;;;:::o;5773:184::-;5825:77;5822:1;5815:88;5922:4;5919:1;5912:15;5946:4;5943:1;5936:15;5962:308;-1:-1:-1;;6063:2:111;6057:4;6053:13;6049:86;6041:6;6037:99;6202:6;6190:10;6187:22;6166:18;6154:10;6151:34;6148:62;6145:88;;;6213:18;;:::i;:::-;6249:2;6242:22;-1:-1:-1;;5962:308:111:o;6275:246::-;6324:4;6357:18;6349:6;6346:30;6343:56;;;6379:18;;:::i;:::-;-1:-1:-1;6436:2:111;6424:15;-1:-1:-1;;6420:88:111;6510:4;6416:99;;6275:246::o;6526:510::-;6569:5;6622:3;6615:4;6607:6;6603:17;6599:27;6589:55;;6640:1;6637;6630:12;6589:55;6676:6;6663:20;6702:32;6731:2;6702:32;:::i;:::-;6763:2;6757:9;6775:31;6803:2;6795:6;6775:31;:::i;:::-;6830:2;6822:6;6815:18;6876:3;6869:4;6864:2;6856:6;6852:15;6848:26;6845:35;6842:55;;;6893:1;6890;6883:12;6842:55;6957:2;6950:4;6942:6;6938:17;6931:4;6923:6;6919:17;6906:54;7004:1;6980:15;;;6997:4;6976:26;6969:37;;;;-1:-1:-1;6984:6:111;6526:510;-1:-1:-1;;;6526:510:111:o;7041:163::-;7108:20;;7168:10;7157:22;;7147:33;;7137:61;;7194:1;7191;7184:12;7209:886;7329:6;7337;7345;7353;7361;7369;7377;7430:3;7418:9;7409:7;7405:23;7401:33;7398:53;;;7447:1;7444;7437:12;7398:53;7483:9;7470:23;7460:33;;7544:2;7533:9;7529:18;7516:32;7571:18;7563:6;7560:30;7557:50;;;7603:1;7600;7593:12;7557:50;7626;7668:7;7659:6;7648:9;7644:22;7626:50;:::i;:::-;7616:60;;;7726:2;7715:9;7711:18;7698:32;7739:31;7764:5;7739:31;:::i;:::-;7789:5;-1:-1:-1;7846:2:111;7831:18;;7818:32;7859:33;7818:32;7859:33;:::i;:::-;7911:7;-1:-1:-1;7937:38:111;7970:3;7955:19;;7937:38;:::i;:::-;7927:48;;7994:38;8027:3;8016:9;8012:19;7994:38;:::i;:::-;7984:48;;8051:38;8084:3;8073:9;8069:19;8051:38;:::i;:::-;8041:48;;7209:886;;;;;;;;;;:::o;8537:183::-;8597:4;8630:18;8622:6;8619:30;8616:56;;;8652:18;;:::i;:::-;-1:-1:-1;8697:1:111;8693:14;8709:4;8689:25;;8537:183::o;8725:724::-;8779:5;8832:3;8825:4;8817:6;8813:17;8809:27;8799:55;;8850:1;8847;8840:12;8799:55;8886:6;8873:20;8912:4;8935:43;8975:2;8935:43;:::i;:::-;9007:2;9001:9;9019:31;9047:2;9039:6;9019:31;:::i;:::-;9085:18;;;9177:1;9173:10;;;;9161:23;;9157:32;;;9119:15;;;;-1:-1:-1;9201:15:111;;;9198:35;;;9229:1;9226;9219:12;9198:35;9265:2;9257:6;9253:15;9277:142;9293:6;9288:3;9285:15;9277:142;;;9359:17;;9347:30;;9397:12;;;;9310;;9277:142;;;-1:-1:-1;9437:6:111;8725:724;-1:-1:-1;;;;;;8725:724:111:o;9454:1072::-;9608:6;9616;9624;9632;9640;9693:3;9681:9;9672:7;9668:23;9664:33;9661:53;;;9710:1;9707;9700:12;9661:53;9749:9;9736:23;9768:31;9793:5;9768:31;:::i;:::-;9818:5;-1:-1:-1;9875:2:111;9860:18;;9847:32;9888:33;9847:32;9888:33;:::i;:::-;9940:7;-1:-1:-1;9998:2:111;9983:18;;9970:32;10021:18;10051:14;;;10048:34;;;10078:1;10075;10068:12;10048:34;10101:61;10154:7;10145:6;10134:9;10130:22;10101:61;:::i;:::-;10091:71;;10215:2;10204:9;10200:18;10187:32;10171:48;;10244:2;10234:8;10231:16;10228:36;;;10260:1;10257;10250:12;10228:36;10283:63;10338:7;10327:8;10316:9;10312:24;10283:63;:::i;:::-;10273:73;;10399:3;10388:9;10384:19;10371:33;10355:49;;10429:2;10419:8;10416:16;10413:36;;;10445:1;10442;10435:12;10413:36;;10468:52;10512:7;10501:8;10490:9;10486:24;10468:52;:::i;:::-;10458:62;;;9454:1072;;;;;;;;:::o;10531:393::-;10615:6;10623;10631;10639;10692:3;10680:9;10671:7;10667:23;10663:33;10660:53;;;10709:1;10706;10699:12;10660:53;10745:9;10732:23;10722:33;;10802:2;10791:9;10787:18;10774:32;10764:42;;10825:37;10858:2;10847:9;10843:18;10825:37;:::i;:::-;10815:47;;10881:37;10914:2;10903:9;10899:18;10881:37;:::i;:::-;10871:47;;10531:393;;;;;;;:::o;11571:1277::-;11689:6;11697;11750:2;11738:9;11729:7;11725:23;11721:32;11718:52;;;11766:1;11763;11756:12;11718:52;11806:9;11793:23;11835:18;11876:2;11868:6;11865:14;11862:34;;;11892:1;11889;11882:12;11862:34;11930:6;11919:9;11915:22;11905:32;;11975:7;11968:4;11964:2;11960:13;11956:27;11946:55;;11997:1;11994;11987:12;11946:55;12033:2;12020:16;12055:4;12078:43;12118:2;12078:43;:::i;:::-;12150:2;12144:9;12162:31;12190:2;12182:6;12162:31;:::i;:::-;12228:18;;;12316:1;12312:10;;;;12304:19;;12300:28;;;12262:15;;;;-1:-1:-1;12340:19:111;;;12337:39;;;12372:1;12369;12362:12;12337:39;12396:11;;;;12416:217;12432:6;12427:3;12424:15;12416:217;;;12512:3;12499:17;12529:31;12554:5;12529:31;:::i;:::-;12573:18;;12449:12;;;;12611;;;;12416:217;;;12652:6;-1:-1:-1;;12696:18:111;;12683:32;;-1:-1:-1;;12727:16:111;;;12724:36;;;12756:1;12753;12746:12;12724:36;;12779:63;12834:7;12823:8;12812:9;12808:24;12779:63;:::i;12853:435::-;12906:3;12944:5;12938:12;12971:6;12966:3;12959:19;12997:4;13026:2;13021:3;13017:12;13010:19;;13063:2;13056:5;13052:14;13084:1;13094:169;13108:6;13105:1;13102:13;13094:169;;;13169:13;;13157:26;;13203:12;;;;13238:15;;;;13130:1;13123:9;13094:169;;;-1:-1:-1;13279:3:111;;12853:435;-1:-1:-1;;;;;12853:435:111:o;13293:261::-;13472:2;13461:9;13454:21;13435:4;13492:56;13544:2;13533:9;13529:18;13521:6;13492:56;:::i;13816:456::-;13893:6;13901;13909;13962:2;13950:9;13941:7;13937:23;13933:32;13930:52;;;13978:1;13975;13968:12;13930:52;14017:9;14004:23;14036:31;14061:5;14036:31;:::i;:::-;14086:5;-1:-1:-1;14143:2:111;14128:18;;14115:32;14156:33;14115:32;14156:33;:::i;:::-;13816:456;;14208:7;;-1:-1:-1;;;14262:2:111;14247:18;;;;14234:32;;13816:456::o;14508:::-;14585:6;14593;14601;14654:2;14642:9;14633:7;14629:23;14625:32;14622:52;;;14670:1;14667;14660:12;14622:52;14706:9;14693:23;14683:33;;14766:2;14755:9;14751:18;14738:32;14779:31;14804:5;14779:31;:::i;:::-;14829:5;-1:-1:-1;14886:2:111;14871:18;;14858:32;14899:33;14858:32;14899:33;:::i;:::-;14951:7;14941:17;;;14508:456;;;;;:::o;14969:901::-;15083:6;15091;15099;15107;15115;15123;15131;15184:3;15172:9;15163:7;15159:23;15155:33;15152:53;;;15201:1;15198;15191:12;15152:53;15241:9;15228:23;15274:18;15266:6;15263:30;15260:50;;;15306:1;15303;15296:12;15260:50;15345:58;15395:7;15386:6;15375:9;15371:22;15345:58;:::i;:::-;15422:8;;-1:-1:-1;15319:84:111;-1:-1:-1;;15507:2:111;15492:18;;15479:32;15520:31;15479:32;15520:31;:::i;:::-;15570:5;-1:-1:-1;15622:2:111;15607:18;;15594:32;;-1:-1:-1;15678:2:111;15663:18;;15650:32;15691:33;15650:32;15691:33;:::i;:::-;15743:7;-1:-1:-1;15769:38:111;15802:3;15787:19;;15769:38;:::i;:::-;15759:48;;15826:38;15859:3;15848:9;15844:19;15826:38;:::i;15875:118::-;15961:5;15954:13;15947:21;15940:5;15937:32;15927:60;;15983:1;15980;15973:12;15998:382;16063:6;16071;16124:2;16112:9;16103:7;16099:23;16095:32;16092:52;;;16140:1;16137;16130:12;16092:52;16179:9;16166:23;16198:31;16223:5;16198:31;:::i;:::-;16248:5;-1:-1:-1;16305:2:111;16290:18;;16277:32;16318:30;16277:32;16318:30;:::i;16385:252::-;16452:6;16460;16513:2;16501:9;16492:7;16488:23;16484:32;16481:52;;;16529:1;16526;16519:12;16481:52;16565:9;16552:23;16542:33;;16594:37;16627:2;16616:9;16612:18;16594:37;:::i;17120:759::-;17225:6;17233;17241;17249;17257;17265;17318:3;17306:9;17297:7;17293:23;17289:33;17286:53;;;17335:1;17332;17325:12;17286:53;17371:9;17358:23;17348:33;;17432:2;17421:9;17417:18;17404:32;17459:18;17451:6;17448:30;17445:50;;;17491:1;17488;17481:12;17445:50;17530:58;17580:7;17571:6;17560:9;17556:22;17530:58;:::i;:::-;17607:8;;-1:-1:-1;17504:84:111;-1:-1:-1;;17692:2:111;17677:18;;17664:32;17705:31;17664:32;17705:31;:::i;:::-;17755:5;-1:-1:-1;17779:37:111;17812:2;17797:18;;17779:37;:::i;:::-;17769:47;;17835:38;17868:3;17857:9;17853:19;17835:38;:::i;:::-;17825:48;;17120:759;;;;;;;;:::o;17884:529::-;17969:6;17977;17985;17993;18046:3;18034:9;18025:7;18021:23;18017:33;18014:53;;;18063:1;18060;18053:12;18014:53;18099:9;18086:23;18076:33;;18159:2;18148:9;18144:18;18131:32;18172:31;18197:5;18172:31;:::i;:::-;18222:5;-1:-1:-1;18279:2:111;18264:18;;18251:32;18292:33;18251:32;18292:33;:::i;18418:383::-;18495:6;18503;18511;18564:2;18552:9;18543:7;18539:23;18535:32;18532:52;;;18580:1;18577;18570:12;18532:52;18616:9;18603:23;18593:33;;18673:2;18662:9;18658:18;18645:32;18635:42;;18727:2;18716:9;18712:18;18699:32;18740:31;18765:5;18740:31;:::i;19058:686::-;19147:6;19155;19163;19171;19224:2;19212:9;19203:7;19199:23;19195:32;19192:52;;;19240:1;19237;19230:12;19192:52;19280:9;19267:23;19313:18;19305:6;19302:30;19299:50;;;19345:1;19342;19335:12;19299:50;19384:58;19434:7;19425:6;19414:9;19410:22;19384:58;:::i;:::-;19461:8;;-1:-1:-1;19358:84:111;-1:-1:-1;;19546:2:111;19531:18;;19518:32;19559:31;19518:32;19559:31;:::i;:::-;19609:5;-1:-1:-1;19666:2:111;19651:18;;19638:32;19679:33;19638:32;19679:33;:::i;:::-;19058:686;;;;-1:-1:-1;19058:686:111;;-1:-1:-1;;19058:686:111:o;19749:388::-;19817:6;19825;19878:2;19866:9;19857:7;19853:23;19849:32;19846:52;;;19894:1;19891;19884:12;19846:52;19933:9;19920:23;19952:31;19977:5;19952:31;:::i;:::-;20002:5;-1:-1:-1;20059:2:111;20044:18;;20031:32;20072:33;20031:32;20072:33;:::i;20832:755::-;20930:6;20938;20946;20954;20962;21015:3;21003:9;20994:7;20990:23;20986:33;20983:53;;;21032:1;21029;21022:12;20983:53;21068:9;21055:23;21045:33;;21129:2;21118:9;21114:18;21101:32;21156:18;21148:6;21145:30;21142:50;;;21188:1;21185;21178:12;21142:50;21227:58;21277:7;21268:6;21257:9;21253:22;21227:58;:::i;:::-;21304:8;;-1:-1:-1;21201:84:111;-1:-1:-1;;21389:2:111;21374:18;;21361:32;21402:31;21361:32;21402:31;:::i;:::-;21452:5;-1:-1:-1;21509:2:111;21494:18;;21481:32;21522:33;21481:32;21522:33;:::i;:::-;21574:7;21564:17;;;20832:755;;;;;;;;:::o;21592:735::-;21696:6;21704;21712;21720;21728;21781:3;21769:9;21760:7;21756:23;21752:33;21749:53;;;21798:1;21795;21788:12;21749:53;21837:9;21824:23;21856:31;21881:5;21856:31;:::i;:::-;21906:5;-1:-1:-1;21963:2:111;21948:18;;21935:32;21976:33;21935:32;21976:33;:::i;:::-;22028:7;-1:-1:-1;22082:2:111;22067:18;;22054:32;;-1:-1:-1;22133:2:111;22118:18;;22105:32;;-1:-1:-1;22188:3:111;22173:19;;22160:33;22216:18;22205:30;;22202:50;;;22248:1;22245;22238:12;22202:50;22271;22313:7;22304:6;22293:9;22289:22;22271:50;:::i;22332:832::-;22437:6;22445;22453;22461;22469;22477;22530:3;22518:9;22509:7;22505:23;22501:33;22498:53;;;22547:1;22544;22537:12;22498:53;22587:9;22574:23;22620:18;22612:6;22609:30;22606:50;;;22652:1;22649;22642:12;22606:50;22691:58;22741:7;22732:6;22721:9;22717:22;22691:58;:::i;:::-;22768:8;;-1:-1:-1;22665:84:111;-1:-1:-1;;22853:2:111;22838:18;;22825:32;22866:31;22825:32;22866:31;:::i;:::-;22916:5;-1:-1:-1;22940:37:111;22973:2;22958:18;;22940:37;:::i;:::-;22930:47;;22996:37;23029:2;23018:9;23014:18;22996:37;:::i;:::-;22986:47;;23085:3;23074:9;23070:19;23057:33;23099;23124:7;23099:33;:::i;:::-;23151:7;23141:17;;;22332:832;;;;;;;;:::o;23786:704::-;23866:6;23919:2;23907:9;23898:7;23894:23;23890:32;23887:52;;;23935:1;23932;23925:12;23887:52;23968:9;23962:16;24001:18;23993:6;23990:30;23987:50;;;24033:1;24030;24023:12;23987:50;24056:22;;24109:4;24101:13;;24097:27;-1:-1:-1;24087:55:111;;24138:1;24135;24128:12;24087:55;24167:2;24161:9;24189:32;24218:2;24189:32;:::i;:::-;24250:2;24244:9;24262:31;24290:2;24282:6;24262:31;:::i;:::-;24317:2;24309:6;24302:18;24357:7;24352:2;24347;24343;24339:11;24335:20;24332:33;24329:53;;;24378:1;24375;24368:12;24329:53;24391:68;24456:2;24451;24443:6;24439:15;24434:2;24430;24426:11;24391:68;:::i;:::-;24478:6;23786:704;-1:-1:-1;;;;;;23786:704:111:o;25073:760::-;25192:6;25200;25208;25216;25224;25277:3;25265:9;25256:7;25252:23;25248:33;25245:53;;;25294:1;25291;25284:12;25245:53;25334:9;25321:23;25367:18;25359:6;25356:30;25353:50;;;25399:1;25396;25389:12;25353:50;25422;25464:7;25455:6;25444:9;25440:22;25422:50;:::i;:::-;25412:60;;;25522:2;25511:9;25507:18;25494:32;25535:31;25560:5;25535:31;:::i;:::-;25585:5;-1:-1:-1;25609:37:111;25642:2;25627:18;;25609:37;:::i;:::-;25599:47;;25665:37;25698:2;25687:9;25683:18;25665:37;:::i;:::-;25655:47;;25754:3;25743:9;25739:19;25726:33;25768;25793:7;25768:33;:::i;26754:437::-;26833:1;26829:12;;;;26876;;;26897:61;;26951:4;26943:6;26939:17;26929:27;;26897:61;27004:2;26996:6;26993:14;26973:18;26970:38;26967:218;;27041:77;27038:1;27031:88;27142:4;27139:1;27132:15;27170:4;27167:1;27160:15;26967:218;;26754:437;;;:::o;27196:251::-;27266:6;27319:2;27307:9;27298:7;27294:23;27290:32;27287:52;;;27335:1;27332;27325:12;27287:52;27367:9;27361:16;27386:31;27411:5;27386:31;:::i;29256:184::-;29308:77;29305:1;29298:88;29405:4;29402:1;29395:15;29429:4;29426:1;29419:15;29856:184;29908:77;29905:1;29898:88;30005:4;30002:1;29995:15;30029:4;30026:1;30019:15;30045:195;30084:3;30115:66;30108:5;30105:77;30102:103;;30185:18;;:::i;:::-;-1:-1:-1;30232:1:111;30221:13;;30045:195::o;30245:465::-;30502:2;30491:9;30484:21;30465:4;30528:56;30580:2;30569:9;30565:18;30557:6;30528:56;:::i;:::-;30632:9;30624:6;30620:22;30615:2;30604:9;30600:18;30593:50;30660:44;30697:6;30689;30660:44;:::i;:::-;30652:52;30245:465;-1:-1:-1;;;;;30245:465:111:o;30715:184::-;30785:6;30838:2;30826:9;30817:7;30813:23;30809:32;30806:52;;;30854:1;30851;30844:12;30806:52;-1:-1:-1;30877:16:111;;30715:184;-1:-1:-1;30715:184:111:o;32278:245::-;32345:6;32398:2;32386:9;32377:7;32373:23;32369:32;32366:52;;;32414:1;32411;32404:12;32366:52;32446:9;32440:16;32465:28;32487:5;32465:28;:::i;32931:271::-;33114:6;33106;33101:3;33088:33;33070:3;33140:16;;33165:13;;;33140:16;32931:271;-1:-1:-1;32931:271:111:o;35362:326::-;35451:6;35446:3;35439:19;35503:6;35496:5;35489:4;35484:3;35480:14;35467:43;;35555:1;35548:4;35539:6;35534:3;35530:16;35526:27;35519:38;35421:3;35677:4;-1:-1:-1;;35602:2:111;35594:6;35590:15;35586:88;35581:3;35577:98;35573:109;35566:116;;35362:326;;;;:::o;35693:651::-;35960:3;35949:9;35942:22;35923:4;35981:63;36039:3;36028:9;36024:19;36016:6;36008;35981:63;:::i;:::-;35973:71;;-1:-1:-1;;;;;36153:2:111;36145:6;36141:15;36136:2;36125:9;36121:18;36114:43;36205:10;36197:6;36193:23;36188:2;36177:9;36173:18;36166:51;36265:18;36257:6;36253:31;36248:2;36237:9;36233:18;36226:59;36334:2;36326:6;36322:15;36316:3;36305:9;36301:19;36294:44;;35693:651;;;;;;;;;:::o;36681:832::-;37011:6;37000:9;36993:25;37054:3;37049:2;37038:9;37034:18;37027:31;36974:4;37075:63;37133:3;37122:9;37118:19;37110:6;37102;37075:63;:::i;:::-;-1:-1:-1;;;;;37235:15:111;;;37230:2;37215:18;;37208:43;37287:15;;;;37282:2;37267:18;;37260:43;37322:18;37377:15;;;37371:3;37356:19;;37349:44;37442:10;37430:23;;;;37424:3;37409:19;;37402:52;37491:15;;;37485:3;37470:19;;;37463:44;37067:71;36681:832;-1:-1:-1;;;;36681:832:111:o;38712:544::-;38813:2;38808:3;38805:11;38802:448;;;38849:1;38874:5;38870:2;38863:17;38919:4;38915:2;38905:19;38989:2;38977:10;38973:19;38970:1;38966:27;38960:4;38956:38;39025:4;39013:10;39010:20;39007:47;;;-1:-1:-1;39048:4:111;39007:47;39103:2;39098:3;39094:12;39091:1;39087:20;39081:4;39077:31;39067:41;;39158:82;39176:2;39169:5;39166:13;39158:82;;;39221:17;;;39202:1;39191:13;39158:82;;38802:448;38712:544;;;:::o;39492:1467::-;39616:3;39610:10;39643:18;39635:6;39632:30;39629:56;;;39665:18;;:::i;:::-;39694:96;39783:6;39743:38;39775:4;39769:11;39743:38;:::i;:::-;39737:4;39694:96;:::i;:::-;39845:4;;39909:2;39898:14;;39926:1;39921:781;;;;40746:1;40763:6;40760:89;;;-1:-1:-1;40815:19:111;;;40809:26;40760:89;39398:66;39389:1;39385:11;;;39381:84;39377:89;39367:100;39473:1;39469:11;;;39364:117;40862:81;;39891:1062;;39921:781;38659:1;38652:14;;;38696:4;38683:18;;-1:-1:-1;;39957:79:111;;;40133:236;40147:7;40144:1;40141:14;40133:236;;;40236:19;;;40230:26;40215:42;;40328:27;;;;40296:1;40284:14;;;;40163:19;;40133:236;;;40137:3;40397:6;40388:7;40385:19;40382:261;;;40458:19;;;40452:26;40559:66;40541:1;40537:14;;;40553:3;40533:24;40529:97;40525:102;40510:118;40495:134;;40382:261;-1:-1:-1;;;;;40689:1:111;40673:14;;;40669:22;40656:36;;-1:-1:-1;39492:1467:111:o;40964:850::-;41286:4;-1:-1:-1;;;;;41396:2:111;41388:6;41384:15;41373:9;41366:34;41448:2;41440:6;41436:15;41431:2;41420:9;41416:18;41409:43;;41488:3;41483:2;41472:9;41468:18;41461:31;41515:57;41567:3;41556:9;41552:19;41544:6;41515:57;:::i;:::-;41620:9;41612:6;41608:22;41603:2;41592:9;41588:18;41581:50;41654:44;41691:6;41683;41654:44;:::i;:::-;41640:58;;41747:9;41739:6;41735:22;41729:3;41718:9;41714:19;41707:51;41775:33;41801:6;41793;41775:33;:::i;41819:249::-;41888:6;41941:2;41929:9;41920:7;41916:23;41912:32;41909:52;;;41957:1;41954;41947:12;41909:52;41989:9;41983:16;42008:30;42032:5;42008:30;:::i;42073:179::-;42108:3;42150:1;42132:16;42129:23;42126:120;;;42196:1;42193;42190;42175:23;-1:-1:-1;42233:1:111;42227:8;42222:3;42218:18;42126:120;42073:179;:::o;42257:731::-;42296:3;42338:4;42320:16;42317:26;42314:39;;;42257:731;:::o;42314:39::-;42380:2;42374:9;42402:66;42523:2;42505:16;42501:25;42498:1;42492:4;42477:50;42556:4;42550:11;42580:16;42615:18;42686:2;42679:4;42671:6;42667:17;42664:25;42659:2;42651:6;42648:14;42645:45;42642:58;;;42693:5;;;;;42257:731;:::o;42642:58::-;42730:6;42724:4;42720:17;42709:28;;42766:3;42760:10;42793:2;42785:6;42782:14;42779:27;;;42799:5;;;;;;42257:731;:::o;42779:27::-;42883:2;42864:16;42858:4;42854:27;42850:36;42843:4;42834:6;42829:3;42825:16;42821:27;42818:69;42815:82;;;42890:5;;;;;;42257:731;:::o;42815:82::-;42906:57;42957:4;42948:6;42940;42936:19;42932:30;42926:4;42906:57;:::i;:::-;-1:-1:-1;42979:3:111;;42257:731;-1:-1:-1;;;;;42257:731:111:o;44473:125::-;44538:9;;;44559:10;;;44556:36;;;44572:18;;:::i;44603:128::-;44670:9;;;44691:11;;;44688:37;;;44705:18;;:::i;45094:520::-;45321:3;45310:9;45303:22;45284:4;45342:46;45383:3;45372:9;45368:19;45360:6;45342:46;:::i;:::-;-1:-1:-1;;;;;45424:55:111;;;;45419:2;45404:18;;45397:83;-1:-1:-1;45528:10:111;45516:23;;;;45511:2;45496:18;;45489:51;45588:18;45576:31;45571:2;45556:18;;;45549:59;45334:54;45094:520;-1:-1:-1;45094:520:111:o;45619:644::-;45872:66;45863:6;45858:3;45854:16;45850:89;45845:3;45838:102;45820:3;45969:6;45963:13;45985:74;46052:6;46048:1;46043:3;46039:11;46032:4;46024:6;46020:17;45985:74;:::i;:::-;46119:13;;46078:16;;;;46141:75;46119:13;46203:1;46195:10;;46188:4;46176:17;;46141:75;:::i;:::-;46236:17;46255:1;46232:25;;45619:644;-1:-1:-1;;;;;45619:644:111:o;46529:584::-;46751:4;-1:-1:-1;;;;;46861:2:111;46853:6;46849:15;46838:9;46831:34;46913:2;46905:6;46901:15;46896:2;46885:9;46881:18;46874:43;;46953:6;46948:2;46937:9;46933:18;46926:34;46996:6;46991:2;46980:9;46976:18;46969:34;47040:3;47034;47023:9;47019:19;47012:32;47061:46;47102:3;47091:9;47087:19;47079:6;47061:46;:::i;:::-;47053:54;46529:584;-1:-1:-1;;;;;;;46529:584:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "4845800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "_tokens(uint256)": "2538",
                "allFusesBurned(bytes32,uint32)": "2887",
                "balanceOf(address,uint256)": "2912",
                "balanceOfBatch(address[],uint256[])": "infinite",
                "controllers(address)": "2636",
                "ens()": "infinite",
                "getData(uint256)": "2754",
                "isApprovedForAll(address,address)": "infinite",
                "isTokenOwnerOrApproved(bytes32,address)": "5250",
                "isWrapped(bytes32)": "infinite",
                "metadataService()": "2449",
                "name()": "infinite",
                "names(bytes32)": "infinite",
                "onERC721Received(address,address,uint256,bytes)": "infinite",
                "owner()": "2422",
                "ownerOf(uint256)": "2792",
                "recoverFunds(address,address,uint256)": "infinite",
                "registerAndWrapETH2LD(string,address,uint256,address,uint32,uint64)": "infinite",
                "registrar()": "infinite",
                "renew(uint256,uint256,uint32,uint64)": "infinite",
                "renounceOwnership()": "28210",
                "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "infinite",
                "safeTransferFrom(address,address,uint256,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "infinite",
                "setChildFuses(bytes32,bytes32,uint32,uint64)": "infinite",
                "setController(address,bool)": "infinite",
                "setFuses(bytes32,uint32)": "infinite",
                "setMetadataService(address)": "26803",
                "setRecord(bytes32,address,address,uint64)": "infinite",
                "setResolver(bytes32,address)": "infinite",
                "setSubnodeOwner(bytes32,string,address,uint32,uint64)": "infinite",
                "setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)": "infinite",
                "setTTL(bytes32,uint64)": "infinite",
                "setUpgradeContract(address)": "infinite",
                "supportsInterface(bytes4)": "infinite",
                "transferOwnership(address)": "infinite",
                "unwrap(bytes32,bytes32,address)": "infinite",
                "unwrapETH2LD(bytes32,address,address)": "infinite",
                "upgrade(bytes32,string,address,address)": "infinite",
                "upgradeContract()": "2427",
                "upgradeETH2LD(string,address,address)": "infinite",
                "uri(uint256)": "infinite",
                "wrap(bytes,address,address)": "infinite",
                "wrapETH2LD(string,address,uint32,uint64,address)": "infinite"
              },
              "internal": {
                "_addLabel(string memory,bytes memory)": "infinite",
                "_addLabelAndWrap(bytes32,bytes32,string memory,address,uint32,uint64)": "infinite",
                "_canFusesBeBurned(bytes32,uint32)": "infinite",
                "_canTransfer(uint32)": "infinite",
                "_checkForParentCannotControl(bytes32,uint32)": "infinite",
                "_checkParentFuses(bytes32,uint32,uint32)": "infinite",
                "_checkParentFusesAndExpiry(bytes32,bytes32,uint32,uint64)": "infinite",
                "_getETH2LDDataAndNormaliseExpiry(bytes32,bytes32,uint64)": "infinite",
                "_makeNode(bytes32,bytes32)": "infinite",
                "_mint(bytes32,address,uint32,uint64)": "infinite",
                "_normaliseExpiry(uint64,uint64,uint64)": "119",
                "_prepareUpgrade(bytes32)": "infinite",
                "_setData(bytes32,address,uint32,uint64)": "infinite",
                "_setFuses(bytes32,address,uint32,uint64)": "infinite",
                "_unwrap(bytes32,address)": "infinite",
                "_updateName(bytes32,bytes32,string memory,address,uint32,uint64)": "infinite",
                "_wrap(bytes32,bytes memory,address,uint32,uint64)": "infinite",
                "_wrapETH2LD(string memory,address,uint32,uint64,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "_tokens(uint256)": "ed70554d",
              "allFusesBurned(bytes32,uint32)": "adf4960a",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "controllers(address)": "da8c229e",
              "ens()": "3f15457f",
              "getData(uint256)": "0178fe3f",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isTokenOwnerOrApproved(bytes32,address)": "f44779b9",
              "isWrapped(bytes32)": "fd0cd0d9",
              "metadataService()": "53095467",
              "name()": "06fdde03",
              "names(bytes32)": "20c38e2b",
              "onERC721Received(address,address,uint256,bytes)": "150b7a02",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "recoverFunds(address,address,uint256)": "5d3590d5",
              "registerAndWrapETH2LD(string,address,uint256,address,uint32,uint64)": "9f56dac6",
              "registrar()": "2b20e397",
              "renew(uint256,uint256,uint32,uint64)": "47d2e9fe",
              "renounceOwnership()": "715018a6",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setChildFuses(bytes32,bytes32,uint32,uint64)": "33c69ea9",
              "setController(address,bool)": "e0dba60f",
              "setFuses(bytes32,uint32)": "c20a2eb0",
              "setMetadataService(address)": "1534e177",
              "setRecord(bytes32,address,address,uint64)": "cf408823",
              "setResolver(bytes32,address)": "1896f70a",
              "setSubnodeOwner(bytes32,string,address,uint32,uint64)": "c658e086",
              "setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)": "24c1af44",
              "setTTL(bytes32,uint64)": "14ab9038",
              "setUpgradeContract(address)": "b6bcad26",
              "supportsInterface(bytes4)": "01ffc9a7",
              "transferOwnership(address)": "f2fde38b",
              "unwrap(bytes32,bytes32,address)": "d8c9921a",
              "unwrapETH2LD(bytes32,address,address)": "8b4dfa75",
              "upgrade(bytes32,string,address,address)": "ee7eba78",
              "upgradeContract()": "1f4e1504",
              "upgradeETH2LD(string,address,address)": "e72bf00f",
              "uri(uint256)": "0e89341c",
              "wrap(bytes,address,address)": "eb8ae530",
              "wrapETH2LD(string,address,uint32,uint64,address)": "f9547a9e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"_ens\",\"type\":\"address\"},{\"internalType\":\"contract IBaseRegistrar\",\"name\":\"_registrar\",\"type\":\"address\"},{\"internalType\":\"contract IMetadataService\",\"name\":\"_metadataService\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotUpgrade\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleParent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"IncorrectTargetOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedLabelhash\",\"type\":\"bytes32\"}],\"name\":\"LabelMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"LabelTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LabelTooShort\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"OperationProhibited\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"Unauthorised\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"name\":\"ControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"FusesSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NameUnwrapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"NameWrapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"_tokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"fuseMask\",\"type\":\"uint32\"}],\"name\":\"allFusesBurned\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"controllers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isTokenOwnerOrApproved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"isWrapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metadataService\",\"outputs\":[{\"internalType\":\"contract IMetadataService\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"names\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"registerAndWrapETH2LD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"registrarExpiry\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registrar\",\"outputs\":[{\"internalType\":\"contract IBaseRegistrar\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"renew\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"labelhash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"setChildFuses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"name\":\"setController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"}],\"name\":\"setFuses\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMetadataService\",\"name\":\"_metadataService\",\"type\":\"address\"}],\"name\":\"setMetadataService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INameWrapperUpgrade\",\"name\":\"_upgradeAddress\",\"type\":\"address\"}],\"name\":\"setUpgradeContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"labelhash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"labelhash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"unwrapETH2LD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upgradeContract\",\"outputs\":[{\"internalType\":\"contract INameWrapperUpgrade\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"upgradeETH2LD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"wrapETH2LD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allFusesBurned(bytes32,uint32)\":{\"params\":{\"fuseMask\":\"The fuses you want to check\",\"node\":\"Namehash of the name\"},\"returns\":{\"_0\":\"Boolean of whether or not all the selected fuses are burned\"}},\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"getData(uint256)\":{\"params\":{\"id\":\"Label as a string of the .eth domain to wrap\"},\"returns\":{\"_0\":\"address The owner of the name\",\"_1\":\"uint32 Fuses of the name\",\"_2\":\"uint64 Expiry of when the fuses expire for the name\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isTokenOwnerOrApproved(bytes32,address)\":{\"params\":{\"addr\":\"which address to check permissions for\",\"node\":\"namehash of the name to check\"},\"returns\":{\"_0\":\"whether or not is owner or approved\"}},\"isWrapped(bytes32)\":{\"details\":\"Both of these checks need to be true to be considered wrapped if checked without this contract\",\"params\":{\"node\":\"Namehash of the name\"},\"returns\":{\"_0\":\"Boolean of whether or not the name is wrapped\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"params\":{\"id\":\"Label as a string of the .eth domain to wrap\"},\"returns\":{\"owner\":\"The owner of the name\"}},\"recoverFunds(address,address,uint256)\":{\"details\":\"The contract is Ownable and only the owner can call the recover function.\",\"params\":{\"_amount\":\"The amount of tokens to recover.\",\"_to\":\"The address to send the tokens to.\",\"_token\":\"The address of the ERC20 token to recover\"}},\"registerAndWrapETH2LD(string,address,uint256,address,uint32,uint64)\":{\"details\":\"Registers a new .eth second-level domain and wraps it.      Only callable by authorised controllers.\",\"params\":{\"duration\":\"The duration, in seconds, to register the name for.\",\"expiry\":\"When the fuses will expire\",\"fuses\":\"Initial fuses to set\",\"label\":\"The label to register (Eg, 'foo' for 'foo.eth').\",\"resolver\":\"The resolver address to set on the ENS registry (optional).\",\"wrappedOwner\":\"The owner of the wrapped name.\"},\"returns\":{\"registrarExpiry\":\"The expiry date of the new name on the .eth registrar, in seconds since the Unix epoch.\"}},\"renew(uint256,uint256,uint32,uint64)\":{\"details\":\"Only callable by authorised controllers.\",\"params\":{\"duration\":\"The number of seconds to renew the name for.\",\"tokenId\":\"The hash of the label to register (eg, `keccak256('foo')`, for 'foo.eth').\"},\"returns\":{\"expires\":\"The expiry date of the name on the .eth registrar, in seconds since the Unix epoch.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setChildFuses(bytes32,bytes32,uint32,uint64)\":{\"params\":{\"expiry\":\"When the fuses will expire\",\"fuses\":\"Fuses to burn\",\"labelhash\":\"Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')\",\"parentNode\":\"Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')\"}},\"setFuses(bytes32,uint32)\":{\"params\":{\"fuses\":\"Fuses to burn (cannot burn PARENT_CANNOT_CONTROL)\",\"node\":\"Namehash of the name\"},\"returns\":{\"_0\":\"New fuses\"}},\"setMetadataService(address)\":{\"params\":{\"_metadataService\":\"The new metadata service\"}},\"setRecord(bytes32,address,address,uint64)\":{\"params\":{\"node\":\"Namehash of the name to set a record for\",\"owner\":\"New owner in the registry\",\"resolver\":\"Resolver contract\",\"ttl\":\"Time to live in the registry\"}},\"setResolver(bytes32,address)\":{\"params\":{\"node\":\"namehash of the name\",\"resolver\":\"the resolver contract\"}},\"setSubnodeOwner(bytes32,string,address,uint32,uint64)\":{\"params\":{\"expiry\":\"When the fuses will expire\",\"fuses\":\"Initial fuses for the wrapped subdomain\",\"label\":\"Label of the subdomain as a string\",\"owner\":\"New owner in the wrapper\",\"parentNode\":\"Parent namehash of the subdomain\"},\"returns\":{\"node\":\"Namehash of the subdomain\"}},\"setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)\":{\"params\":{\"expiry\":\"expiry date for the domain\",\"fuses\":\"initial fuses for the wrapped subdomain\",\"label\":\"label of the subdomain as a string\",\"owner\":\"new owner in the wrapper\",\"parentNode\":\"parent namehash of the subdomain\",\"resolver\":\"resolver contract in the registry\",\"ttl\":\"ttl in the regsitry\"},\"returns\":{\"node\":\"Namehash of the subdomain\"}},\"setTTL(bytes32,uint64)\":{\"params\":{\"node\":\"Namehash of the name\",\"ttl\":\"TTL in the registry\"}},\"setUpgradeContract(address)\":{\"details\":\"The default value of upgradeContract is the 0 address. Use the 0 address at any time to make the contract not upgradable.\",\"params\":{\"_upgradeAddress\":\"address of an upgraded contract\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unwrap(bytes32,bytes32,address)\":{\"details\":\"Can be called by the owner in the wrapper or an authorised caller in the wrapper\",\"params\":{\"controller\":\"Sets the owner in the registry to this address\",\"labelhash\":\"Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')\",\"parentNode\":\"Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')\"}},\"unwrapETH2LD(bytes32,address,address)\":{\"details\":\"Can be called by the owner in the wrapper or an authorised caller in the wrapper\",\"params\":{\"controller\":\"Sets the owner in the registry to this address\",\"labelhash\":\"Labelhash of the .eth domain\",\"registrant\":\"Sets the owner in the .eth registrar to this address\"}},\"upgrade(bytes32,string,address,address)\":{\"details\":\"Can be called by the owner or an authorised caller Requires upgraded Namewrapper to permit old Namewrapper to call `setSubnodeRecord` for all names\",\"params\":{\"label\":\"Label as a string of the name to upgrade\",\"parentNode\":\"Namehash of the parent name\",\"resolver\":\"Resolver contract for this name\",\"wrappedOwner\":\"Owner of the name in this contract\"}},\"upgradeETH2LD(string,address,address)\":{\"details\":\"Can be called by the owner of the name in this contract\",\"params\":{\"label\":\"Label as a string of the .eth name to upgrade\",\"wrappedOwner\":\"The owner of the wrapped name\"}},\"uri(uint256)\":{\"params\":{\"tokenId\":\"The id of the token\"},\"returns\":{\"_0\":\"string uri of the metadata service\"}},\"wrap(bytes,address,address)\":{\"details\":\"Can be called by the owner in the registry or an authorised caller in the registry\",\"params\":{\"name\":\"The name to wrap, in DNS format\",\"resolver\":\"Resolver contract\",\"wrappedOwner\":\"Owner of the name in this contract\"}},\"wrapETH2LD(string,address,uint32,uint64,address)\":{\"details\":\"Can be called by the owner of the name on the .eth registrar or an authorised caller on the registrar\",\"params\":{\"expiry\":\"When the fuses will expire\",\"fuses\":\"Initial fuses to set\",\"label\":\"Label as a string of the .eth domain to wrap\",\"resolver\":\"Resolver contract address\",\"wrappedOwner\":\"Owner of the name in this contract\"},\"returns\":{\"_0\":\"Normalised expiry of when the fuses expire\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allFusesBurned(bytes32,uint32)\":{\"notice\":\"Checks all Fuses in the mask are burned for the node\"},\"getData(uint256)\":{\"notice\":\"Gets the data for a name\"},\"isTokenOwnerOrApproved(bytes32,address)\":{\"notice\":\"Checks if owner or approved by owner\"},\"isWrapped(bytes32)\":{\"notice\":\"Checks if a name is wrapped or not\"},\"ownerOf(uint256)\":{\"notice\":\"Gets the owner of a name\"},\"recoverFunds(address,address,uint256)\":{\"notice\":\"Recover ERC20 tokens sent to the contract by mistake.\"},\"renew(uint256,uint256,uint32,uint64)\":{\"notice\":\"Renews a .eth second-level domain.\"},\"setChildFuses(bytes32,bytes32,uint32,uint64)\":{\"notice\":\"Sets fuses of a name that you own the parent of. Can also be called by the owner of a .eth name\"},\"setFuses(bytes32,uint32)\":{\"notice\":\"Sets fuses of a name\"},\"setMetadataService(address)\":{\"notice\":\"Set the metadata service. Only the owner can do this\"},\"setRecord(bytes32,address,address,uint64)\":{\"notice\":\"Sets records for the name in the ENS Registry\"},\"setResolver(bytes32,address)\":{\"notice\":\"Sets resolver contract in the registry\"},\"setSubnodeOwner(bytes32,string,address,uint32,uint64)\":{\"notice\":\"Sets the subdomain owner in the registry and then wraps the subdomain\"},\"setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)\":{\"notice\":\"Sets the subdomain owner in the registry with records and then wraps the subdomain\"},\"setTTL(bytes32,uint64)\":{\"notice\":\"Sets TTL in the registry\"},\"setUpgradeContract(address)\":{\"notice\":\"Set the address of the upgradeContract of the contract. only admin can do this\"},\"unwrap(bytes32,bytes32,address)\":{\"notice\":\"Unwraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\"},\"unwrapETH2LD(bytes32,address,address)\":{\"notice\":\"Unwraps a .eth domain. e.g. vitalik.eth\"},\"upgrade(bytes32,string,address,address)\":{\"notice\":\"Upgrades a non .eth domain of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\"},\"upgradeETH2LD(string,address,address)\":{\"notice\":\"Upgrades a .eth wrapped domain by calling the wrapETH2LD function of the upgradeContract     and burning the token of this contract\"},\"uri(uint256)\":{\"notice\":\"Get the metadata uri\"},\"wrap(bytes,address,address)\":{\"notice\":\"Wraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\"},\"wrapETH2LD(string,address,uint32,uint64,address)\":{\"notice\":\"Wraps a .eth domain, creating a new token and sending the original ERC721 token to this contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/NameWrapper.sol\":\"NameWrapper\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n    /**\\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\\n     *\\n     * NOTE: To accept the transfer, this must return\\n     * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n     * (i.e. 0xf23a6e61, or its own function selector).\\n     *\\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param id The ID of the token being transferred\\n     * @param value The amount of tokens being transferred\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256 value,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n\\n    /**\\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\\n     * been updated.\\n     *\\n     * NOTE: To accept the transfer(s), this must return\\n     * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n     * (i.e. 0xbc197c81, or its own function selector).\\n     *\\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155BatchReceived(\\n        address operator,\\n        address from,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n    /**\\n     * @dev Returns the URI for token type `id`.\\n     *\\n     * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n     * clients with the actual token type ID.\\n     */\\n    function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/utils/ERC20Recoverable.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\n/**\\n    @notice Contract is used to recover ERC20 tokens sent to the contract by mistake.\\n */\\n\\ncontract ERC20Recoverable is Ownable {\\n    /**\\n    @notice Recover ERC20 tokens sent to the contract by mistake.\\n    @dev The contract is Ownable and only the owner can call the recover function.\\n    @param _to The address to send the tokens to.\\n@param _token The address of the ERC20 token to recover\\n    @param _amount The amount of tokens to recover.\\n */\\n    function recoverFunds(\\n        address _token,\\n        address _to,\\n        uint256 _amount\\n    ) external onlyOwner {\\n        IERC20(_token).transfer(_to, _amount);\\n    }\\n}\\n\",\"keccak256\":\"0x793a38091e1f81499a29ddba82c2b2f3cdd07071b81a832886e8e02a45ff352a\",\"license\":\"MIT\"},\"contracts/wrapper/BytesUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the ENS namehash of a DNS-encoded name.\\n     * @param self The DNS-encoded name to hash.\\n     * @param offset The offset at which to start hashing.\\n     * @return The namehash of the name.\\n     */\\n    function namehash(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        (bytes32 labelhash, uint256 newOffset) = readLabel(self, offset);\\n        if (labelhash == bytes32(0)) {\\n            require(offset == self.length - 1, \\\"namehash: Junk at end of name\\\");\\n            return bytes32(0);\\n        }\\n        return\\n            keccak256(abi.encodePacked(namehash(self, newOffset), labelhash));\\n    }\\n\\n    /**\\n     * @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\\n     * @param self The byte string to read a label from.\\n     * @param idx The index to read a label at.\\n     * @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\\n     * @return newIdx The index of the start of the next label.\\n     */\\n    function readLabel(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 labelhash, uint256 newIdx)\\n    {\\n        require(idx < self.length, \\\"readLabel: Index out of bounds\\\");\\n        uint256 len = uint256(uint8(self[idx]));\\n        if (len > 0) {\\n            labelhash = keccak(self, idx + 1, len);\\n        } else {\\n            labelhash = bytes32(0);\\n        }\\n        newIdx = idx + len + 1;\\n    }\\n}\\n\",\"keccak256\":\"0xc0d13fcaccd6c3af927106b2ea48eec83c5d0a18d608bde013a53742ac058526\",\"license\":\"MIT\"},\"contracts/wrapper/Controllable.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract Controllable is Ownable {\\n    mapping(address => bool) public controllers;\\n\\n    event ControllerChanged(address indexed controller, bool active);\\n\\n    function setController(address controller, bool active) public onlyOwner {\\n        controllers[controller] = active;\\n        emit ControllerChanged(controller, active);\\n    }\\n\\n    modifier onlyController() {\\n        require(\\n            controllers[msg.sender],\\n            \\\"Controllable: Caller is not a controller\\\"\\n        );\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x9a9191656a82eda6763cda29ce893ddbfddb6c43559ff3b90c00a184e14e1fa1\",\"license\":\"MIT\"},\"contracts/wrapper/ERC1155Fuse.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/* This contract is a variation on ERC1155 with the additions of _setData, getData and _canTransfer and ownerOf. _setData and getData allows the use of the other 96 bits next to the address of the owner for extra data. We use this to store 'fuses' that control permissions that can be burnt. 32 bits are used for the fuses themselves and 64 bits are used for the expiry of the name. When a name has expired, its fuses will be be set back to 0 */\\n\\nerror OperationProhibited(bytes32 node);\\n\\nabstract contract ERC1155Fuse is ERC165, IERC1155, IERC1155MetadataURI {\\n    using Address for address;\\n    mapping(uint256 => uint256) public _tokens;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**************************************************************************\\n     * ERC721 methods\\n     *************************************************************************/\\n\\n    function ownerOf(uint256 id) public view virtual returns (address) {\\n        (address owner, , ) = getData(id);\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId)\\n        public\\n        view\\n        virtual\\n        override(ERC165, IERC165)\\n        returns (bool)\\n    {\\n        return\\n            interfaceId == type(IERC1155).interfaceId ||\\n            interfaceId == type(IERC1155MetadataURI).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (uint256)\\n    {\\n        require(\\n            account != address(0),\\n            \\\"ERC1155: balance query for the zero address\\\"\\n        );\\n        (address owner, , ) = getData(id);\\n        if (owner == account) {\\n            return 1;\\n        }\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-balanceOfBatch}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (uint256[] memory)\\n    {\\n        require(\\n            accounts.length == ids.length,\\n            \\\"ERC1155: accounts and ids length mismatch\\\"\\n        );\\n\\n        uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n        for (uint256 i = 0; i < accounts.length; ++i) {\\n            batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n        }\\n\\n        return batchBalances;\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved)\\n        public\\n        virtual\\n        override\\n    {\\n        require(\\n            msg.sender != operator,\\n            \\\"ERC1155: setting approval status for self\\\"\\n        );\\n\\n        _operatorApprovals[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return _operatorApprovals[account][operator];\\n    }\\n\\n    /**\\n     * @dev Returns the Name's owner address and fuses\\n     */\\n    function getData(uint256 tokenId)\\n        public\\n        view\\n        virtual\\n        returns (\\n            address owner,\\n            uint32 fuses,\\n            uint64 expiry\\n        )\\n    {\\n        uint256 t = _tokens[tokenId];\\n        owner = address(uint160(t));\\n        expiry = uint64(t >> 192);\\n        if (block.timestamp > expiry) {\\n            fuses = 0;\\n        } else {\\n            fuses = uint32(t >> 160);\\n        }\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes memory data\\n    ) public virtual override {\\n        require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n        require(\\n            from == msg.sender || isApprovedForAll(from, msg.sender),\\n            \\\"ERC1155: caller is not owner nor approved\\\"\\n        );\\n\\n        _transfer(from, to, id, amount, data);\\n    }\\n\\n    /**\\n     * @dev See {IERC1155-safeBatchTransferFrom}.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] memory ids,\\n        uint256[] memory amounts,\\n        bytes memory data\\n    ) public virtual override {\\n        require(\\n            ids.length == amounts.length,\\n            \\\"ERC1155: ids and amounts length mismatch\\\"\\n        );\\n        require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n        require(\\n            from == msg.sender || isApprovedForAll(from, msg.sender),\\n            \\\"ERC1155: transfer caller is not owner nor approved\\\"\\n        );\\n\\n        for (uint256 i = 0; i < ids.length; ++i) {\\n            uint256 id = ids[i];\\n            uint256 amount = amounts[i];\\n\\n            (address oldOwner, uint32 fuses, uint64 expiration) = getData(id);\\n\\n            if (!_canTransfer(fuses)) {\\n                revert OperationProhibited(bytes32(id));\\n            }\\n\\n            require(\\n                amount == 1 && oldOwner == from,\\n                \\\"ERC1155: insufficient balance for transfer\\\"\\n            );\\n            _setData(id, to, fuses, expiration);\\n        }\\n\\n        emit TransferBatch(msg.sender, from, to, ids, amounts);\\n\\n        _doSafeBatchTransferAcceptanceCheck(\\n            msg.sender,\\n            from,\\n            to,\\n            ids,\\n            amounts,\\n            data\\n        );\\n    }\\n\\n    /**************************************************************************\\n     * Internal/private methods\\n     *************************************************************************/\\n\\n    /**\\n     * @dev Sets the Name's owner address and fuses\\n     */\\n    function _setData(\\n        uint256 tokenId,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal virtual {\\n        _tokens[tokenId] =\\n            uint256(uint160(owner)) |\\n            (uint256(fuses) << 160) |\\n            (uint256(expiry) << 192);\\n    }\\n\\n    function _canTransfer(uint32 fuses) internal virtual returns (bool);\\n\\n    function _mint(\\n        bytes32 node,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal virtual {\\n        uint256 tokenId = uint256(node);\\n        (address oldOwner, uint32 oldFuses, uint64 oldExpiry) = getData(\\n            uint256(node)\\n        );\\n\\n        if (oldExpiry > expiry) {\\n            expiry = oldExpiry;\\n        }\\n\\n        require(oldOwner == address(0), \\\"ERC1155: mint of existing token\\\");\\n        require(owner != address(0), \\\"ERC1155: mint to the zero address\\\");\\n        require(\\n            owner != address(this),\\n            \\\"ERC1155: newOwner cannot be the NameWrapper contract\\\"\\n        );\\n\\n        _setData(tokenId, owner, fuses | oldFuses, expiry);\\n        emit TransferSingle(msg.sender, address(0x0), owner, tokenId, 1);\\n        _doSafeTransferAcceptanceCheck(\\n            msg.sender,\\n            address(0),\\n            owner,\\n            tokenId,\\n            1,\\n            \\\"\\\"\\n        );\\n    }\\n\\n    function _burn(uint256 tokenId) internal virtual {\\n        (address owner, uint32 fuses, uint64 expiry) = getData(tokenId);\\n        // Fuses and expiry are kept on burn\\n        _setData(tokenId, address(0x0), fuses, expiry);\\n        emit TransferSingle(msg.sender, owner, address(0x0), tokenId, 1);\\n    }\\n\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes memory data\\n    ) internal {\\n        (address oldOwner, uint32 fuses, uint64 expiry) = getData(id);\\n\\n        if (!_canTransfer(fuses)) {\\n            revert OperationProhibited(bytes32(id));\\n        }\\n\\n        require(\\n            amount == 1 && oldOwner == from,\\n            \\\"ERC1155: insufficient balance for transfer\\\"\\n        );\\n\\n        if (oldOwner == to) {\\n            return;\\n        }\\n\\n        _setData(id, to, fuses, expiry);\\n\\n        emit TransferSingle(msg.sender, from, to, id, amount);\\n\\n        _doSafeTransferAcceptanceCheck(msg.sender, from, to, id, amount, data);\\n    }\\n\\n    function _doSafeTransferAcceptanceCheck(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes memory data\\n    ) private {\\n        if (to.isContract()) {\\n            try\\n                IERC1155Receiver(to).onERC1155Received(\\n                    operator,\\n                    from,\\n                    id,\\n                    amount,\\n                    data\\n                )\\n            returns (bytes4 response) {\\n                if (\\n                    response != IERC1155Receiver(to).onERC1155Received.selector\\n                ) {\\n                    revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n                }\\n            } catch Error(string memory reason) {\\n                revert(reason);\\n            } catch {\\n                revert(\\\"ERC1155: transfer to non ERC1155Receiver implementer\\\");\\n            }\\n        }\\n    }\\n\\n    function _doSafeBatchTransferAcceptanceCheck(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256[] memory ids,\\n        uint256[] memory amounts,\\n        bytes memory data\\n    ) private {\\n        if (to.isContract()) {\\n            try\\n                IERC1155Receiver(to).onERC1155BatchReceived(\\n                    operator,\\n                    from,\\n                    ids,\\n                    amounts,\\n                    data\\n                )\\n            returns (bytes4 response) {\\n                if (\\n                    response !=\\n                    IERC1155Receiver(to).onERC1155BatchReceived.selector\\n                ) {\\n                    revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n                }\\n            } catch Error(string memory reason) {\\n                revert(reason);\\n            } catch {\\n                revert(\\\"ERC1155: transfer to non ERC1155Receiver implementer\\\");\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5af84ab27b3f359527255d8d3f19ad9ea428165ab632a2ab4ad6fdeb8b48389d\",\"license\":\"MIT\"},\"contracts/wrapper/IMetadataService.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface IMetadataService {\\n    function uri(uint256) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xb3f1cf6df01ed7b15e5f2318f6823afbdb586ca38c2124c67955c645647ae9a2\",\"license\":\"MIT\"},\"contracts/wrapper/INameWrapper.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"../ethregistrar/IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"./IMetadataService.sol\\\";\\n\\nuint32 constant CANNOT_UNWRAP = 1;\\nuint32 constant CANNOT_BURN_FUSES = 2;\\nuint32 constant CANNOT_TRANSFER = 4;\\nuint32 constant CANNOT_SET_RESOLVER = 8;\\nuint32 constant CANNOT_SET_TTL = 16;\\nuint32 constant CANNOT_CREATE_SUBDOMAIN = 32;\\nuint32 constant PARENT_CANNOT_CONTROL = 64;\\nuint32 constant CAN_DO_EVERYTHING = 0;\\n\\ninterface INameWrapper is IERC1155 {\\n    event NameWrapped(\\n        bytes32 indexed node,\\n        bytes name,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    );\\n\\n    event NameUnwrapped(bytes32 indexed node, address owner);\\n\\n    event FusesSet(bytes32 indexed node, uint32 fuses, uint64 expiry);\\n\\n    function ens() external view returns (ENS);\\n\\n    function registrar() external view returns (IBaseRegistrar);\\n\\n    function metadataService() external view returns (IMetadataService);\\n\\n    function names(bytes32) external view returns (bytes memory);\\n\\n    function wrap(\\n        bytes calldata name,\\n        address wrappedOwner,\\n        address resolver\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 _expiry,\\n        address resolver\\n    ) external returns (uint64 expiry);\\n\\n    function registerAndWrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint256 duration,\\n        address resolver,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 registrarExpiry);\\n\\n    function renew(\\n        uint256 labelHash,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 expires);\\n\\n    function unwrap(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external;\\n\\n    function unwrapETH2LD(\\n        bytes32 label,\\n        address newRegistrant,\\n        address newController\\n    ) external;\\n\\n    function setFuses(bytes32 node, uint32 fuses)\\n        external\\n        returns (uint32 newFuses);\\n\\n    function setChildFuses(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        string calldata label,\\n        address newOwner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\\n        external\\n        returns (bool);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function ownerOf(uint256 id) external returns (address owner);\\n\\n    function getData(uint256 id)\\n        external\\n        returns (\\n            address,\\n            uint32,\\n            uint64\\n        );\\n\\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\\n        external\\n        view\\n        returns (bool);\\n\\n    function isWrapped(bytes32 node) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9c0ff4675d7faf51638138ecfc76a1f50c1005d1005bfba31c1cac7990a43c30\",\"license\":\"MIT\"},\"contracts/wrapper/INameWrapperUpgrade.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface INameWrapperUpgrade {\\n    function setSubnodeRecord(\\n        bytes32 parentNode,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 expiry,\\n        address resolver\\n    ) external;\\n}\\n\",\"keccak256\":\"0x40b2719f8a3c5f037dd7c827fd5e694d0e5485bbbca4e66aa9334e097f3d2854\",\"license\":\"MIT\"},\"contracts/wrapper/NameWrapper.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport {ERC1155Fuse, IERC165, OperationProhibited} from \\\"./ERC1155Fuse.sol\\\";\\nimport {Controllable} from \\\"./Controllable.sol\\\";\\nimport {INameWrapper, CANNOT_UNWRAP, CANNOT_BURN_FUSES, CANNOT_TRANSFER, CANNOT_SET_RESOLVER, CANNOT_SET_TTL, CANNOT_CREATE_SUBDOMAIN, PARENT_CANNOT_CONTROL, CAN_DO_EVERYTHING} from \\\"./INameWrapper.sol\\\";\\nimport {INameWrapperUpgrade} from \\\"./INameWrapperUpgrade.sol\\\";\\nimport {IMetadataService} from \\\"./IMetadataService.sol\\\";\\nimport {ENS} from \\\"../registry/ENS.sol\\\";\\nimport {IBaseRegistrar} from \\\"../ethregistrar/IBaseRegistrar.sol\\\";\\nimport {IERC721Receiver} from \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport {Ownable} from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport {BytesUtils} from \\\"./BytesUtils.sol\\\";\\nimport {ERC20Recoverable} from \\\"../utils/ERC20Recoverable.sol\\\";\\n\\nerror Unauthorised(bytes32 node, address addr);\\nerror NameNotFound();\\nerror IncompatibleParent();\\nerror IncompatibleName(bytes name);\\nerror IncorrectTokenType();\\nerror LabelMismatch(bytes32 labelHash, bytes32 expectedLabelhash);\\nerror LabelTooShort();\\nerror LabelTooLong(string label);\\nerror IncorrectTargetOwner(address owner);\\nerror CannotUpgrade();\\n\\ncontract NameWrapper is\\n    Ownable,\\n    ERC1155Fuse,\\n    INameWrapper,\\n    Controllable,\\n    IERC721Receiver,\\n    ERC20Recoverable\\n{\\n    using BytesUtils for bytes;\\n    ENS public immutable override ens;\\n    IBaseRegistrar public immutable override registrar;\\n    IMetadataService public override metadataService;\\n    mapping(bytes32 => bytes) public override names;\\n    string public constant name = \\\"NameWrapper\\\";\\n\\n    bytes32 private constant ETH_NODE =\\n        0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae;\\n    bytes32 private constant ROOT_NODE =\\n        0x0000000000000000000000000000000000000000000000000000000000000000;\\n\\n    INameWrapperUpgrade public upgradeContract;\\n    uint64 private constant MAX_EXPIRY = type(uint64).max;\\n\\n    constructor(\\n        ENS _ens,\\n        IBaseRegistrar _registrar,\\n        IMetadataService _metadataService\\n    ) {\\n        ens = _ens;\\n        registrar = _registrar;\\n        metadataService = _metadataService;\\n\\n        /* Burn PARENT_CANNOT_CONTROL and CANNOT_UNWRAP fuses for ROOT_NODE and ETH_NODE */\\n\\n        _setData(\\n            uint256(ETH_NODE),\\n            address(0),\\n            uint32(PARENT_CANNOT_CONTROL | CANNOT_UNWRAP),\\n            MAX_EXPIRY\\n        );\\n        _setData(\\n            uint256(ROOT_NODE),\\n            address(0),\\n            uint32(PARENT_CANNOT_CONTROL | CANNOT_UNWRAP),\\n            MAX_EXPIRY\\n        );\\n        names[ROOT_NODE] = \\\"\\\\x00\\\";\\n        names[ETH_NODE] = \\\"\\\\x03eth\\\\x00\\\";\\n    }\\n\\n    function supportsInterface(bytes4 interfaceId)\\n        public\\n        view\\n        virtual\\n        override(ERC1155Fuse, IERC165)\\n        returns (bool)\\n    {\\n        return\\n            interfaceId == type(INameWrapper).interfaceId ||\\n            interfaceId == type(IERC721Receiver).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /* ERC1155 Fuse */\\n\\n    /**\\n     * @notice Gets the owner of a name\\n     * @param id Label as a string of the .eth domain to wrap\\n     * @return owner The owner of the name\\n     */\\n\\n    function ownerOf(uint256 id)\\n        public\\n        view\\n        override(ERC1155Fuse, INameWrapper)\\n        returns (address owner)\\n    {\\n        return super.ownerOf(id);\\n    }\\n\\n    /**\\n     * @notice Gets the data for a name\\n     * @param id Label as a string of the .eth domain to wrap\\n     * @return address The owner of the name\\n     * @return uint32 Fuses of the name\\n     * @return uint64 Expiry of when the fuses expire for the name\\n     */\\n\\n    function getData(uint256 id)\\n        public\\n        view\\n        override(ERC1155Fuse, INameWrapper)\\n        returns (\\n            address,\\n            uint32,\\n            uint64\\n        )\\n    {\\n        return super.getData(id);\\n    }\\n\\n    /* Metadata service */\\n\\n    /**\\n     * @notice Set the metadata service. Only the owner can do this\\n     * @param _metadataService The new metadata service\\n     */\\n\\n    function setMetadataService(IMetadataService _metadataService)\\n        public\\n        onlyOwner\\n    {\\n        metadataService = _metadataService;\\n    }\\n\\n    /**\\n     * @notice Get the metadata uri\\n     * @param tokenId The id of the token\\n     * @return string uri of the metadata service\\n     */\\n\\n    function uri(uint256 tokenId) public view override returns (string memory) {\\n        return metadataService.uri(tokenId);\\n    }\\n\\n    /**\\n     * @notice Set the address of the upgradeContract of the contract. only admin can do this\\n     * @dev The default value of upgradeContract is the 0 address. Use the 0 address at any time\\n     * to make the contract not upgradable.\\n     * @param _upgradeAddress address of an upgraded contract\\n     */\\n\\n    function setUpgradeContract(INameWrapperUpgrade _upgradeAddress)\\n        public\\n        onlyOwner\\n    {\\n        if (address(upgradeContract) != address(0)) {\\n            registrar.setApprovalForAll(address(upgradeContract), false);\\n            ens.setApprovalForAll(address(upgradeContract), false);\\n        }\\n\\n        upgradeContract = _upgradeAddress;\\n\\n        if (address(upgradeContract) != address(0)) {\\n            registrar.setApprovalForAll(address(upgradeContract), true);\\n            ens.setApprovalForAll(address(upgradeContract), true);\\n        }\\n    }\\n\\n    /**\\n     * @notice Checks if msg.sender is the owner or approved by the owner of a name\\n     * @param node namehash of the name to check\\n     */\\n\\n    modifier onlyTokenOwner(bytes32 node) {\\n        if (!isTokenOwnerOrApproved(node, msg.sender)) {\\n            revert Unauthorised(node, msg.sender);\\n        }\\n\\n        _;\\n    }\\n\\n    /**\\n     * @notice Checks if owner or approved by owner\\n     * @param node namehash of the name to check\\n     * @param addr which address to check permissions for\\n     * @return whether or not is owner or approved\\n     */\\n\\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\\n        public\\n        view\\n        override\\n        returns (bool)\\n    {\\n        address owner = ownerOf(uint256(node));\\n        return owner == addr || isApprovedForAll(owner, addr);\\n    }\\n\\n    /**\\n     * @notice Wraps a .eth domain, creating a new token and sending the original ERC721 token to this contract\\n     * @dev Can be called by the owner of the name on the .eth registrar or an authorised caller on the registrar\\n     * @param label Label as a string of the .eth domain to wrap\\n     * @param wrappedOwner Owner of the name in this contract\\n     * @param fuses Initial fuses to set\\n     * @param expiry When the fuses will expire\\n     * @param resolver Resolver contract address\\n     * @return Normalised expiry of when the fuses expire\\n     */\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 expiry,\\n        address resolver\\n    ) public override returns (uint64) {\\n        uint256 tokenId = uint256(keccak256(bytes(label)));\\n        address registrant = registrar.ownerOf(tokenId);\\n        if (\\n            registrant != msg.sender &&\\n            !registrar.isApprovedForAll(registrant, msg.sender)\\n        ) {\\n            revert Unauthorised(\\n                _makeNode(ETH_NODE, bytes32(tokenId)),\\n                msg.sender\\n            );\\n        }\\n\\n        // transfer the token from the user to this contract\\n        registrar.transferFrom(registrant, address(this), tokenId);\\n\\n        // transfer the ens record back to the new owner (this contract)\\n        registrar.reclaim(tokenId, address(this));\\n\\n        return _wrapETH2LD(label, wrappedOwner, fuses, expiry, resolver);\\n    }\\n\\n    /**\\n     * @dev Registers a new .eth second-level domain and wraps it.\\n     *      Only callable by authorised controllers.\\n     * @param label The label to register (Eg, 'foo' for 'foo.eth').\\n     * @param wrappedOwner The owner of the wrapped name.\\n     * @param duration The duration, in seconds, to register the name for.\\n     * @param resolver The resolver address to set on the ENS registry (optional).\\n     * @param fuses Initial fuses to set\\n     * @param expiry When the fuses will expire\\n     * @return registrarExpiry The expiry date of the new name on the .eth registrar, in seconds since the Unix epoch.\\n     */\\n\\n    function registerAndWrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint256 duration,\\n        address resolver,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external override onlyController returns (uint256 registrarExpiry) {\\n        uint256 tokenId = uint256(keccak256(bytes(label)));\\n        registrarExpiry = registrar.register(tokenId, address(this), duration);\\n        _wrapETH2LD(label, wrappedOwner, fuses, expiry, resolver);\\n    }\\n\\n    /**\\n     * @notice Renews a .eth second-level domain.\\n     * @dev Only callable by authorised controllers.\\n     * @param tokenId The hash of the label to register (eg, `keccak256('foo')`, for 'foo.eth').\\n     * @param duration The number of seconds to renew the name for.\\n     * @return expires The expiry date of the name on the .eth registrar, in seconds since the Unix epoch.\\n     */\\n\\n    function renew(\\n        uint256 tokenId,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external override onlyController returns (uint256 expires) {\\n        bytes32 node = _makeNode(ETH_NODE, bytes32(tokenId));\\n\\n        expires = registrar.renew(tokenId, duration);\\n        if (isWrapped(node)) {\\n            (address owner, uint32 oldFuses, uint64 oldExpiry) = getData(\\n                uint256(node)\\n            );\\n            expiry = _normaliseExpiry(expiry, oldExpiry, uint64(expires));\\n\\n            _setData(\\n                node,\\n                owner,\\n                oldFuses | fuses | PARENT_CANNOT_CONTROL,\\n                expiry\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @notice Wraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\\n     * @dev Can be called by the owner in the registry or an authorised caller in the registry\\n     * @param name The name to wrap, in DNS format\\n     * @param wrappedOwner Owner of the name in this contract\\n     * @param resolver Resolver contract\\n     */\\n\\n    function wrap(\\n        bytes calldata name,\\n        address wrappedOwner,\\n        address resolver\\n    ) public override {\\n        (bytes32 labelhash, uint256 offset) = name.readLabel(0);\\n        bytes32 parentNode = name.namehash(offset);\\n        bytes32 node = _makeNode(parentNode, labelhash);\\n\\n        if (parentNode == ETH_NODE) {\\n            revert IncompatibleParent();\\n        }\\n\\n        address owner = ens.owner(node);\\n\\n        if (owner != msg.sender && !ens.isApprovedForAll(owner, msg.sender)) {\\n            revert Unauthorised(node, msg.sender);\\n        }\\n\\n        if (resolver != address(0)) {\\n            ens.setResolver(node, resolver);\\n        }\\n\\n        ens.setOwner(node, address(this));\\n\\n        _wrap(node, name, wrappedOwner, 0, 0);\\n    }\\n\\n    /**\\n     * @notice Unwraps a .eth domain. e.g. vitalik.eth\\n     * @dev Can be called by the owner in the wrapper or an authorised caller in the wrapper\\n     * @param labelhash Labelhash of the .eth domain\\n     * @param registrant Sets the owner in the .eth registrar to this address\\n     * @param controller Sets the owner in the registry to this address\\n     */\\n\\n    function unwrapETH2LD(\\n        bytes32 labelhash,\\n        address registrant,\\n        address controller\\n    ) public override onlyTokenOwner(_makeNode(ETH_NODE, labelhash)) {\\n        if (controller == address(0x0)) {\\n            revert IncorrectTargetOwner(controller);\\n        }\\n        if (registrant == address(this)) {\\n            revert IncorrectTargetOwner(registrant);\\n        }\\n        _unwrap(_makeNode(ETH_NODE, labelhash), controller);\\n        registrar.safeTransferFrom(\\n            address(this),\\n            registrant,\\n            uint256(labelhash)\\n        );\\n    }\\n\\n    /**\\n     * @notice Unwraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\\n     * @dev Can be called by the owner in the wrapper or an authorised caller in the wrapper\\n     * @param parentNode Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')\\n     * @param labelhash Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')\\n     * @param controller Sets the owner in the registry to this address\\n     */\\n\\n    function unwrap(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        address controller\\n    ) public override onlyTokenOwner(_makeNode(parentNode, labelhash)) {\\n        if (parentNode == ETH_NODE) {\\n            revert IncompatibleParent();\\n        }\\n        if (controller == address(0x0) || controller == address(this)) {\\n            revert IncorrectTargetOwner(controller);\\n        }\\n        _unwrap(_makeNode(parentNode, labelhash), controller);\\n    }\\n\\n    /**\\n     * @notice Sets fuses of a name\\n     * @param node Namehash of the name\\n     * @param fuses Fuses to burn (cannot burn PARENT_CANNOT_CONTROL)\\n     * @return New fuses\\n     */\\n\\n    function setFuses(bytes32 node, uint32 fuses)\\n        public\\n        onlyTokenOwner(node)\\n        operationAllowed(node, CANNOT_BURN_FUSES)\\n        returns (uint32)\\n    {\\n        _checkForParentCannotControl(node, fuses);\\n\\n        (address owner, uint32 oldFuses, uint64 expiry) = getData(\\n            uint256(node)\\n        );\\n\\n        fuses |= oldFuses;\\n        _setFuses(node, owner, fuses, expiry);\\n        return fuses;\\n    }\\n\\n    /**\\n     * @notice Upgrades a .eth wrapped domain by calling the wrapETH2LD function of the upgradeContract\\n     *     and burning the token of this contract\\n     * @dev Can be called by the owner of the name in this contract\\n     * @param label Label as a string of the .eth name to upgrade\\n     * @param wrappedOwner The owner of the wrapped name\\n     */\\n\\n    function upgradeETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        address resolver\\n    ) public {\\n        bytes32 labelhash = keccak256(bytes(label));\\n        bytes32 node = _makeNode(ETH_NODE, labelhash);\\n        (uint32 fuses, uint64 expiry) = _prepareUpgrade(node);\\n\\n        upgradeContract.wrapETH2LD(\\n            label,\\n            wrappedOwner,\\n            fuses,\\n            expiry,\\n            resolver\\n        );\\n    }\\n\\n    /**\\n     * @notice Upgrades a non .eth domain of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\\n     * @dev Can be called by the owner or an authorised caller\\n     * Requires upgraded Namewrapper to permit old Namewrapper to call `setSubnodeRecord` for all names\\n     * @param parentNode Namehash of the parent name\\n     * @param label Label as a string of the name to upgrade\\n     * @param wrappedOwner Owner of the name in this contract\\n     * @param resolver Resolver contract for this name\\n     */\\n\\n    function upgrade(\\n        bytes32 parentNode,\\n        string calldata label,\\n        address wrappedOwner,\\n        address resolver\\n    ) public {\\n        bytes32 labelhash = keccak256(bytes(label));\\n        bytes32 node = _makeNode(parentNode, labelhash);\\n        (uint32 fuses, uint64 expiry) = _prepareUpgrade(node);\\n        upgradeContract.setSubnodeRecord(\\n            parentNode,\\n            label,\\n            wrappedOwner,\\n            resolver,\\n            0,\\n            fuses,\\n            expiry\\n        );\\n    }\\n\\n    /** \\n    /* @notice Sets fuses of a name that you own the parent of. Can also be called by the owner of a .eth name\\n     * @param parentNode Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')\\n     * @param labelhash Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')\\n     * @param fuses Fuses to burn\\n     * @param expiry When the fuses will expire\\n     */\\n\\n    function setChildFuses(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) public {\\n        bytes32 node = _makeNode(parentNode, labelhash);\\n        (address owner, uint32 oldFuses, uint64 oldExpiry) = getData(\\n            uint256(node)\\n        );\\n        uint64 maxExpiry;\\n        (, uint32 parentFuses, uint64 parentExpiry) = getData(\\n            uint256(parentNode)\\n        );\\n        if (parentNode == ETH_NODE) {\\n            if (!isTokenOwnerOrApproved(node, msg.sender)) {\\n                revert Unauthorised(node, msg.sender);\\n            }\\n            // max expiry is set to the expiry on the registrar\\n            maxExpiry = uint64(registrar.nameExpires(uint256(labelhash)));\\n        } else {\\n            if (!isTokenOwnerOrApproved(parentNode, msg.sender)) {\\n                revert Unauthorised(node, msg.sender);\\n            }\\n\\n            // max expiry is set to the expiry of the parent\\n            maxExpiry = parentExpiry;\\n        }\\n\\n        _checkParentFuses(node, fuses, parentFuses);\\n\\n        expiry = _normaliseExpiry(expiry, oldExpiry, maxExpiry);\\n\\n        // if PARENT_CANNOT_CONTROL has been burned and fuses have changed\\n        if (\\n            oldFuses & PARENT_CANNOT_CONTROL != 0 &&\\n            oldFuses | fuses != oldFuses\\n        ) {\\n            revert OperationProhibited(node);\\n        }\\n        fuses |= oldFuses;\\n        _setFuses(node, owner, fuses, expiry);\\n    }\\n\\n    /**\\n     * @notice Sets the subdomain owner in the registry and then wraps the subdomain\\n     * @param parentNode Parent namehash of the subdomain\\n     * @param label Label of the subdomain as a string\\n     * @param owner New owner in the wrapper\\n     * @param fuses Initial fuses for the wrapped subdomain\\n     * @param expiry When the fuses will expire\\n     * @return node Namehash of the subdomain\\n     */\\n\\n    function setSubnodeOwner(\\n        bytes32 parentNode,\\n        string calldata label,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    )\\n        public\\n        onlyTokenOwner(parentNode)\\n        canCallSetSubnodeOwner(parentNode, keccak256(bytes(label)))\\n        returns (bytes32 node)\\n    {\\n        bytes32 labelhash = keccak256(bytes(label));\\n        node = _makeNode(parentNode, labelhash);\\n        expiry = _checkParentFusesAndExpiry(parentNode, node, fuses, expiry);\\n\\n        if (!isWrapped(node)) {\\n            ens.setSubnodeOwner(parentNode, labelhash, address(this));\\n            _addLabelAndWrap(parentNode, node, label, owner, fuses, expiry);\\n        } else {\\n            _updateName(parentNode, node, label, owner, fuses, expiry);\\n        }\\n    }\\n\\n    /**\\n     * @notice Sets the subdomain owner in the registry with records and then wraps the subdomain\\n     * @param parentNode parent namehash of the subdomain\\n     * @param label label of the subdomain as a string\\n     * @param owner new owner in the wrapper\\n     * @param resolver resolver contract in the registry\\n     * @param ttl ttl in the regsitry\\n     * @param fuses initial fuses for the wrapped subdomain\\n     * @param expiry expiry date for the domain\\n     * @return node Namehash of the subdomain\\n     */\\n\\n    function setSubnodeRecord(\\n        bytes32 parentNode,\\n        string memory label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    )\\n        public\\n        onlyTokenOwner(parentNode)\\n        canCallSetSubnodeOwner(parentNode, keccak256(bytes(label)))\\n        returns (bytes32 node)\\n    {\\n        bytes32 labelhash = keccak256(bytes(label));\\n        node = _makeNode(parentNode, labelhash);\\n        expiry = _checkParentFusesAndExpiry(parentNode, node, fuses, expiry);\\n        if (!isWrapped(node)) {\\n            ens.setSubnodeRecord(\\n                parentNode,\\n                labelhash,\\n                address(this),\\n                resolver,\\n                ttl\\n            );\\n            _addLabelAndWrap(parentNode, node, label, owner, fuses, expiry);\\n        } else {\\n            ens.setSubnodeRecord(\\n                parentNode,\\n                labelhash,\\n                address(this),\\n                resolver,\\n                ttl\\n            );\\n            _updateName(parentNode, node, label, owner, fuses, expiry);\\n        }\\n    }\\n\\n    /**\\n     * @notice Sets records for the name in the ENS Registry\\n     * @param node Namehash of the name to set a record for\\n     * @param owner New owner in the registry\\n     * @param resolver Resolver contract\\n     * @param ttl Time to live in the registry\\n     */\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    )\\n        public\\n        override\\n        onlyTokenOwner(node)\\n        operationAllowed(\\n            node,\\n            CANNOT_TRANSFER | CANNOT_SET_RESOLVER | CANNOT_SET_TTL\\n        )\\n    {\\n        ens.setRecord(node, address(this), resolver, ttl);\\n        (address oldOwner, , ) = getData(uint256(node));\\n        _transfer(oldOwner, owner, uint256(node), 1, \\\"\\\");\\n    }\\n\\n    /**\\n     * @notice Sets resolver contract in the registry\\n     * @param node namehash of the name\\n     * @param resolver the resolver contract\\n     */\\n\\n    function setResolver(bytes32 node, address resolver)\\n        public\\n        override\\n        onlyTokenOwner(node)\\n        operationAllowed(node, CANNOT_SET_RESOLVER)\\n    {\\n        ens.setResolver(node, resolver);\\n    }\\n\\n    /**\\n     * @notice Sets TTL in the registry\\n     * @param node Namehash of the name\\n     * @param ttl TTL in the registry\\n     */\\n\\n    function setTTL(bytes32 node, uint64 ttl)\\n        public\\n        override\\n        onlyTokenOwner(node)\\n        operationAllowed(node, CANNOT_SET_TTL)\\n    {\\n        ens.setTTL(node, ttl);\\n    }\\n\\n    /**\\n     * @dev Allows an operation only if none of the specified fuses are burned.\\n     * @param node The namehash of the name to check fuses on.\\n     * @param fuseMask A bitmask of fuses that must not be burned.\\n     */\\n\\n    modifier operationAllowed(bytes32 node, uint32 fuseMask) {\\n        (, uint32 fuses, ) = getData(uint256(node));\\n        if (fuses & fuseMask != 0) {\\n            revert OperationProhibited(node);\\n        }\\n        _;\\n    }\\n\\n    /**\\n     * @notice Check whether a name can call setSubnodeOwner/setSubnodeRecord\\n     * @dev Checks both CANNOT_CREATE_SUBDOMAIN and PARENT_CANNOT_CONTROL and whether not they have been burnt\\n     *      and checks whether the owner of the subdomain is 0x0 for creating or already exists for\\n     *      replacing a subdomain. If either conditions are true, then it is possible to call\\n     *      setSubnodeOwner\\n     * @param node Namehash of the name to check\\n     * @param labelhash Labelhash of the name to check\\n     */\\n\\n    modifier canCallSetSubnodeOwner(bytes32 node, bytes32 labelhash) {\\n        bytes32 subnode = _makeNode(node, labelhash);\\n        address owner = ens.owner(subnode);\\n\\n        if (owner == address(0)) {\\n            (, uint32 fuses, ) = getData(uint256(node));\\n            if (fuses & CANNOT_CREATE_SUBDOMAIN != 0) {\\n                revert OperationProhibited(subnode);\\n            }\\n        } else {\\n            (, uint32 subnodeFuses, ) = getData(uint256(subnode));\\n            if (subnodeFuses & PARENT_CANNOT_CONTROL != 0) {\\n                revert OperationProhibited(subnode);\\n            }\\n        }\\n\\n        _;\\n    }\\n\\n    /**\\n     * @notice Checks all Fuses in the mask are burned for the node\\n     * @param node Namehash of the name\\n     * @param fuseMask The fuses you want to check\\n     * @return Boolean of whether or not all the selected fuses are burned\\n     */\\n\\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\\n        public\\n        view\\n        override\\n        returns (bool)\\n    {\\n        (, uint32 fuses, ) = getData(uint256(node));\\n        return fuses & fuseMask == fuseMask;\\n    }\\n\\n    /**\\n     * @notice Checks if a name is wrapped or not\\n     * @dev Both of these checks need to be true to be considered wrapped if checked without this contract\\n     * @param node Namehash of the name\\n     * @return Boolean of whether or not the name is wrapped\\n     */\\n\\n    function isWrapped(bytes32 node) public view override returns (bool) {\\n        return\\n            ownerOf(uint256(node)) != address(0) &&\\n            ens.owner(node) == address(this);\\n    }\\n\\n    function onERC721Received(\\n        address to,\\n        address,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) public override returns (bytes4) {\\n        //check if it's the eth registrar ERC721\\n        if (msg.sender != address(registrar)) {\\n            revert IncorrectTokenType();\\n        }\\n\\n        (\\n            string memory label,\\n            address owner,\\n            uint32 fuses,\\n            uint64 expiry,\\n            address resolver\\n        ) = abi.decode(data, (string, address, uint32, uint64, address));\\n\\n        bytes32 labelhash = bytes32(tokenId);\\n        bytes32 labelhashFromData = keccak256(bytes(label));\\n\\n        if (labelhashFromData != labelhash) {\\n            revert LabelMismatch(labelhashFromData, labelhash);\\n        }\\n\\n        // transfer the ens record back to the new owner (this contract)\\n        registrar.reclaim(uint256(labelhash), address(this));\\n\\n        _wrapETH2LD(label, owner, fuses, expiry, resolver);\\n\\n        return IERC721Receiver(to).onERC721Received.selector;\\n    }\\n\\n    /***** Internal functions */\\n\\n    function _canTransfer(uint32 fuses) internal pure override returns (bool) {\\n        return fuses & CANNOT_TRANSFER == 0;\\n    }\\n\\n    function _makeNode(bytes32 node, bytes32 labelhash)\\n        private\\n        pure\\n        returns (bytes32)\\n    {\\n        return keccak256(abi.encodePacked(node, labelhash));\\n    }\\n\\n    function _addLabel(string memory label, bytes memory name)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        if (bytes(label).length < 1) {\\n            revert LabelTooShort();\\n        }\\n        if (bytes(label).length > 255) {\\n            revert LabelTooLong(label);\\n        }\\n        return abi.encodePacked(uint8(bytes(label).length), label, name);\\n    }\\n\\n    function _mint(\\n        bytes32 node,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal override {\\n        _canFusesBeBurned(node, fuses);\\n        address oldOwner = ownerOf(uint256(node));\\n        if (oldOwner != address(0)) {\\n            // burn and unwrap old token of old owner\\n            _burn(uint256(node));\\n            emit NameUnwrapped(node, address(0));\\n        }\\n        super._mint(node, owner, fuses, expiry);\\n    }\\n\\n    function _wrap(\\n        bytes32 node,\\n        bytes memory name,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal {\\n        names[node] = name;\\n        _mint(node, wrappedOwner, fuses, expiry);\\n        emit NameWrapped(node, name, wrappedOwner, fuses, expiry);\\n    }\\n\\n    function _addLabelAndWrap(\\n        bytes32 parentNode,\\n        bytes32 node,\\n        string memory label,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal {\\n        bytes memory name = _addLabel(label, names[parentNode]);\\n        _wrap(node, name, owner, fuses, expiry);\\n    }\\n\\n    function _prepareUpgrade(bytes32 node)\\n        private\\n        returns (uint32 fuses, uint64 expiry)\\n    {\\n        if (address(upgradeContract) == address(0)) {\\n            revert CannotUpgrade();\\n        }\\n\\n        if (!isTokenOwnerOrApproved(node, msg.sender)) {\\n            revert Unauthorised(node, msg.sender);\\n        }\\n\\n        (, fuses, expiry) = getData(uint256(node));\\n\\n        // burn token and fuse data\\n        _burn(uint256(node));\\n    }\\n\\n    function _updateName(\\n        bytes32 parentNode,\\n        bytes32 node,\\n        string memory label,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal {\\n        address oldOwner = ownerOf(uint256(node));\\n        bytes memory name = _addLabel(label, names[parentNode]);\\n        if (names[node].length == 0) {\\n            names[node] = name;\\n        }\\n        _setFuses(node, oldOwner, fuses, expiry);\\n        if (owner == address(0)) {\\n            _unwrap(node, address(0));\\n        } else {\\n            _transfer(oldOwner, owner, uint256(node), 1, \\\"\\\");\\n        }\\n    }\\n\\n    // wrapper function for stack limit\\n    function _checkParentFusesAndExpiry(\\n        bytes32 parentNode,\\n        bytes32 node,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal view returns (uint64) {\\n        (, , uint64 oldExpiry) = getData(uint256(node));\\n        (, uint32 parentFuses, uint64 maxExpiry) = getData(uint256(parentNode));\\n        _checkParentFuses(node, fuses, parentFuses);\\n        return _normaliseExpiry(expiry, oldExpiry, maxExpiry);\\n    }\\n\\n    function _checkParentFuses(\\n        bytes32 node,\\n        uint32 fuses,\\n        uint32 parentFuses\\n    ) internal pure {\\n        bool isBurningPCC = fuses & PARENT_CANNOT_CONTROL ==\\n            PARENT_CANNOT_CONTROL;\\n\\n        bool parentHasNotBurnedCU = parentFuses & CANNOT_UNWRAP == 0;\\n\\n        if (isBurningPCC && parentHasNotBurnedCU) {\\n            revert OperationProhibited(node);\\n        }\\n    }\\n\\n    function _getETH2LDDataAndNormaliseExpiry(\\n        bytes32 node,\\n        bytes32 labelhash,\\n        uint64 expiry\\n    )\\n        internal\\n        view\\n        returns (\\n            address owner,\\n            uint32 fuses,\\n            uint64\\n        )\\n    {\\n        uint64 oldExpiry;\\n        (owner, fuses, oldExpiry) = getData(uint256(node));\\n        uint64 maxExpiry = uint64(registrar.nameExpires(uint256(labelhash)));\\n\\n        expiry = _normaliseExpiry(expiry, oldExpiry, maxExpiry);\\n        return (owner, fuses, expiry);\\n    }\\n\\n    function _normaliseExpiry(\\n        uint64 expiry,\\n        uint64 oldExpiry,\\n        uint64 maxExpiry\\n    ) internal pure returns (uint64) {\\n        // Expiry cannot be more than maximum allowed\\n        // .eth names will check registrar, non .eth check parent\\n        if (expiry > maxExpiry) {\\n            expiry = maxExpiry;\\n        }\\n        // Expiry cannot be less than old expiry\\n        if (expiry < oldExpiry) {\\n            expiry = oldExpiry;\\n        }\\n\\n        return expiry;\\n    }\\n\\n    function _wrapETH2LD(\\n        string memory label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 expiry,\\n        address resolver\\n    ) private returns (uint64) {\\n        // Mint a new ERC1155 token with fuses\\n        // Set PARENT_CANNOT_REPLACE to reflect wrapper + registrar control over the 2LD\\n        bytes32 labelhash = keccak256(bytes(label));\\n        bytes32 node = _makeNode(ETH_NODE, labelhash);\\n        uint32 oldFuses;\\n\\n        (, oldFuses, expiry) = _getETH2LDDataAndNormaliseExpiry(\\n            node,\\n            labelhash,\\n            expiry\\n        );\\n\\n        _addLabelAndWrap(\\n            ETH_NODE,\\n            node,\\n            label,\\n            wrappedOwner,\\n            fuses | PARENT_CANNOT_CONTROL,\\n            expiry\\n        );\\n        if (resolver != address(0)) {\\n            ens.setResolver(node, resolver);\\n        }\\n\\n        return expiry;\\n    }\\n\\n    function _unwrap(bytes32 node, address owner) private {\\n        if (allFusesBurned(node, CANNOT_UNWRAP)) {\\n            revert OperationProhibited(node);\\n        }\\n\\n        // Burn token and fuse data\\n        _burn(uint256(node));\\n        ens.setOwner(node, owner);\\n\\n        emit NameUnwrapped(node, owner);\\n    }\\n\\n    function _setFuses(\\n        bytes32 node,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal {\\n        _setData(node, owner, fuses, expiry);\\n        emit FusesSet(node, fuses, expiry);\\n    }\\n\\n    function _setData(\\n        bytes32 node,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) internal {\\n        _canFusesBeBurned(node, fuses);\\n        super._setData(uint256(node), owner, fuses, expiry);\\n    }\\n\\n    function _canFusesBeBurned(bytes32 node, uint32 fuses) internal pure {\\n        if (\\n            fuses & ~PARENT_CANNOT_CONTROL != 0 &&\\n            fuses & (PARENT_CANNOT_CONTROL | CANNOT_UNWRAP) !=\\n            (PARENT_CANNOT_CONTROL | CANNOT_UNWRAP)\\n        ) {\\n            revert OperationProhibited(node);\\n        }\\n    }\\n\\n    function _checkForParentCannotControl(bytes32 node, uint32 fuses)\\n        internal\\n        view\\n    {\\n        if (fuses & PARENT_CANNOT_CONTROL != 0) {\\n            // Only the parent can burn the PARENT_CANNOT_CONTROL fuse.\\n            revert Unauthorised(node, msg.sender);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2d914dbf091532a0675ebd4ab7e6e30f67d4087c6e748efc1ac552667435c41b\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 545,
                "contract": "contracts/wrapper/NameWrapper.sol:NameWrapper",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 16890,
                "contract": "contracts/wrapper/NameWrapper.sol:NameWrapper",
                "label": "_tokens",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 16896,
                "contract": "contracts/wrapper/NameWrapper.sol:NameWrapper",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 16826,
                "contract": "contracts/wrapper/NameWrapper.sol:NameWrapper",
                "label": "controllers",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_bool)"
              },
              {
                "astId": 18158,
                "contract": "contracts/wrapper/NameWrapper.sol:NameWrapper",
                "label": "metadataService",
                "offset": 0,
                "slot": "4",
                "type": "t_contract(IMetadataService)17752"
              },
              {
                "astId": 18163,
                "contract": "contracts/wrapper/NameWrapper.sol:NameWrapper",
                "label": "names",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_bytes32,t_bytes_storage)"
              },
              {
                "astId": 18175,
                "contract": "contracts/wrapper/NameWrapper.sol:NameWrapper",
                "label": "upgradeContract",
                "offset": 0,
                "slot": "6",
                "type": "t_contract(INameWrapperUpgrade)18063"
              }
            ],
            "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_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_contract(IMetadataService)17752": {
                "encoding": "inplace",
                "label": "contract IMetadataService",
                "numberOfBytes": "20"
              },
              "t_contract(INameWrapperUpgrade)18063": {
                "encoding": "inplace",
                "label": "contract INameWrapperUpgrade",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_bytes32,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "allFusesBurned(bytes32,uint32)": {
                "notice": "Checks all Fuses in the mask are burned for the node"
              },
              "getData(uint256)": {
                "notice": "Gets the data for a name"
              },
              "isTokenOwnerOrApproved(bytes32,address)": {
                "notice": "Checks if owner or approved by owner"
              },
              "isWrapped(bytes32)": {
                "notice": "Checks if a name is wrapped or not"
              },
              "ownerOf(uint256)": {
                "notice": "Gets the owner of a name"
              },
              "recoverFunds(address,address,uint256)": {
                "notice": "Recover ERC20 tokens sent to the contract by mistake."
              },
              "renew(uint256,uint256,uint32,uint64)": {
                "notice": "Renews a .eth second-level domain."
              },
              "setChildFuses(bytes32,bytes32,uint32,uint64)": {
                "notice": "Sets fuses of a name that you own the parent of. Can also be called by the owner of a .eth name"
              },
              "setFuses(bytes32,uint32)": {
                "notice": "Sets fuses of a name"
              },
              "setMetadataService(address)": {
                "notice": "Set the metadata service. Only the owner can do this"
              },
              "setRecord(bytes32,address,address,uint64)": {
                "notice": "Sets records for the name in the ENS Registry"
              },
              "setResolver(bytes32,address)": {
                "notice": "Sets resolver contract in the registry"
              },
              "setSubnodeOwner(bytes32,string,address,uint32,uint64)": {
                "notice": "Sets the subdomain owner in the registry and then wraps the subdomain"
              },
              "setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)": {
                "notice": "Sets the subdomain owner in the registry with records and then wraps the subdomain"
              },
              "setTTL(bytes32,uint64)": {
                "notice": "Sets TTL in the registry"
              },
              "setUpgradeContract(address)": {
                "notice": "Set the address of the upgradeContract of the contract. only admin can do this"
              },
              "unwrap(bytes32,bytes32,address)": {
                "notice": "Unwraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain"
              },
              "unwrapETH2LD(bytes32,address,address)": {
                "notice": "Unwraps a .eth domain. e.g. vitalik.eth"
              },
              "upgrade(bytes32,string,address,address)": {
                "notice": "Upgrades a non .eth domain of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain"
              },
              "upgradeETH2LD(string,address,address)": {
                "notice": "Upgrades a .eth wrapped domain by calling the wrapETH2LD function of the upgradeContract     and burning the token of this contract"
              },
              "uri(uint256)": {
                "notice": "Get the metadata uri"
              },
              "wrap(bytes,address,address)": {
                "notice": "Wraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain"
              },
              "wrapETH2LD(string,address,uint32,uint64,address)": {
                "notice": "Wraps a .eth domain, creating a new token and sending the original ERC721 token to this contract"
              }
            },
            "version": 1
          }
        }
      },
      "contracts/wrapper/mocks/ERC1155ReceiverMock.sol": {
        "ERC1155ReceiverMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "recRetval",
                  "type": "bytes4"
                },
                {
                  "internalType": "bool",
                  "name": "recReverts",
                  "type": "bool"
                },
                {
                  "internalType": "bytes4",
                  "name": "batRetval",
                  "type": "bytes4"
                },
                {
                  "internalType": "bool",
                  "name": "batReverts",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "BatchReceived",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "Received",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": {
                "details": "Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81, or its own function selector).",
                "params": {
                  "data": "Additional data with no specified format",
                  "from": "The address which previously owned the token",
                  "ids": "An array containing ids of each token being transferred (order and length must match values array)",
                  "operator": "The address which initiated the batch transfer (i.e. msg.sender)",
                  "values": "An array containing amounts of each token being transferred (order and length must match ids array)"
                },
                "returns": {
                  "_0": "`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"
                }
              },
              "onERC1155Received(address,address,uint256,uint256,bytes)": {
                "details": "Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61, or its own function selector).",
                "params": {
                  "data": "Additional data with no specified format",
                  "from": "The address which previously owned the token",
                  "id": "The ID of the token being transferred",
                  "operator": "The address which initiated the transfer (i.e. msg.sender)",
                  "value": "The amount of tokens being transferred"
                },
                "returns": {
                  "_0": "`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"
                }
              },
              "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_20580": {
                  "entryPoint": null,
                  "id": 20580,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "abi_decode_bool_fromMemory": {
                  "entryPoint": 173,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bytes4_fromMemory": {
                  "entryPoint": 144,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4t_boolt_bytes4t_bool_fromMemory": {
                  "entryPoint": 189,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:815:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "73:118:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "83:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "98:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "92:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "92:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "83:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "127:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "138:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "149:3:111",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "154:10:111",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "145:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "145:20:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "134:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "134:32:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "124:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "124:43:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "117:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "117:51:111"
                              },
                              "nodeType": "YulIf",
                              "src": "114:71:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "52:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "63:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "253:107:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "263:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "278:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "272:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "272:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "263:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "338:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "347:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "350:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "340:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "340:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "340:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "307:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "328:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "321:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "321:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "314:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "314:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "304:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "304:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "297:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "297:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "294:60:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "232:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "243:5:111",
                            "type": ""
                          }
                        ],
                        "src": "196:164:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "489:324:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "536:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "545:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "548:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "538:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "538:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "538:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "510:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "519:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "506:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "506:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "531:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "502:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "502:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "499:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "561:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "600:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "571:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "571:39:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "561:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "619:56:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "660:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "671:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "656:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "656:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "629:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "629:46:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "619:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "684:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "727:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "738:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "723:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "723:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes4_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "694:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "694:48:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "684:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "751:56:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "792:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "803:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "788:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "788:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "761:26:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "761:46:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "751:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4t_boolt_bytes4t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "431:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "442:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "454:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "462:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "470:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "478:6:111",
                            "type": ""
                          }
                        ],
                        "src": "365:448:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes4_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4t_boolt_bytes4t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_bytes4_fromMemory(headStart)\n        value1 := abi_decode_bool_fromMemory(add(headStart, 32))\n        value2 := abi_decode_bytes4_fromMemory(add(headStart, 64))\n        value3 := abi_decode_bool_fromMemory(add(headStart, 96))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516107dc3803806107dc83398101604081905261002f916100bd565b6000805491151569010000000000000000000260ff60481b1960e094851c65010000000000021664ffffffffff60281b199515156401000000000264ffffffffff199094169690941c95909517919091179290921617919091179055610111565b80516001600160e01b0319811681146100a857600080fd5b919050565b805180151581146100a857600080fd5b600080600080608085870312156100d357600080fd5b6100dc85610090565b93506100ea602086016100ad565b92506100f860408601610090565b9150610106606086016100ad565b905092959194509250565b6106bc806101206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c81146100b0578063f23a6e61146100f4575b600080fd5b61009b6100543660046102fc565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6100c36100be3660046103fc565b610107565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100a7565b6100c36101023660046104b7565b61020e565b600080546901000000000000000000900460ff16156101ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433131353552656365697665724d6f636b3a20726576657274696e67206f60448201527f6e2062617463682072656365697665000000000000000000000000000000000060648201526084015b60405180910390fd5b7f9facaeece8596899cc39b65f0d1e262008ade8403076a2dfb6df2004fc8d965289898989898989896040516101ea9897969594939291906105c3565b60405180910390a15060005465010000000000900460e01b98975050505050505050565b60008054640100000000900460ff16156102aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433131353552656365697665724d6f636b3a20726576657274696e67206f60448201527f6e2072656365697665000000000000000000000000000000000000000000000060648201526084016101a4565b7fe4b060c773f3fcca980bf840b0e2856ca36598bb4da2c0c3913b89050630df378787878787876040516102e396959493929190610634565b60405180910390a15060005460e01b9695505050505050565b60006020828403121561030e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461033e57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461036957600080fd5b919050565b60008083601f84011261038057600080fd5b50813567ffffffffffffffff81111561039857600080fd5b6020830191508360208260051b85010111156103b357600080fd5b9250929050565b60008083601f8401126103cc57600080fd5b50813567ffffffffffffffff8111156103e457600080fd5b6020830191508360208285010111156103b357600080fd5b60008060008060008060008060a0898b03121561041857600080fd5b61042189610345565b975061042f60208a01610345565b9650604089013567ffffffffffffffff8082111561044c57600080fd5b6104588c838d0161036e565b909850965060608b013591508082111561047157600080fd5b61047d8c838d0161036e565b909650945060808b013591508082111561049657600080fd5b506104a38b828c016103ba565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156104d057600080fd5b6104d987610345565b95506104e760208801610345565b94506040870135935060608701359250608087013567ffffffffffffffff81111561051157600080fd5b61051d89828a016103ba565b979a9699509497509295939492505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561056157600080fd5b8260051b80836020870137939093016020019392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a060408301526105fd60a08301888a61052f565b828103606084015261061081878961052f565b9050828103608084015261062581858761057a565b9b9a5050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261067a60a08301848661057a565b9897505050505050505056fea2646970667358221220a7e7a713c8674b7c90614ae5a14bdaa748ababaecd8d3339fc367007a6ec897564736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x7DC CODESIZE SUB DUP1 PUSH2 0x7DC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xBD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH10 0x1000000000000000000 MUL PUSH1 0xFF PUSH1 0x48 SHL NOT PUSH1 0xE0 SWAP5 DUP6 SHR PUSH6 0x10000000000 MUL AND PUSH5 0xFFFFFFFFFF PUSH1 0x28 SHL NOT SWAP6 ISZERO ISZERO PUSH5 0x100000000 MUL PUSH5 0xFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP7 SWAP1 SWAP5 SHR SWAP6 SWAP1 SWAP6 OR SWAP2 SWAP1 SWAP2 OR SWAP3 SWAP1 SWAP3 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x111 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC DUP6 PUSH2 0x90 JUMP JUMPDEST SWAP4 POP PUSH2 0xEA PUSH1 0x20 DUP7 ADD PUSH2 0xAD JUMP JUMPDEST SWAP3 POP PUSH2 0xF8 PUSH1 0x40 DUP7 ADD PUSH2 0x90 JUMP JUMPDEST SWAP2 POP PUSH2 0x106 PUSH1 0x60 DUP7 ADD PUSH2 0xAD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x6BC DUP1 PUSH2 0x120 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0xF4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC3 PUSH2 0xBE CALLDATASIZE PUSH1 0x4 PUSH2 0x3FC JUMP JUMPDEST PUSH2 0x107 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA7 JUMP JUMPDEST PUSH2 0xC3 PUSH2 0x102 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B7 JUMP JUMPDEST PUSH2 0x20E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH10 0x1000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665724D6F636B3A20726576657274696E67206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E20626174636820726563656976650000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x9FACAEECE8596899CC39B65F0D1E262008ADE8403076A2DFB6DF2004FC8D9652 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1EA SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x0 SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH1 0xE0 SHL SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665724D6F636B3A20726576657274696E67206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E20726563656976650000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A4 JUMP JUMPDEST PUSH32 0xE4B060C773F3FCCA980BF840B0E2856CA36598BB4DA2C0C3913B89050630DF37 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2E3 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x634 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x0 SLOAD PUSH1 0xE0 SHL SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x33E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x421 DUP10 PUSH2 0x345 JUMP JUMPDEST SWAP8 POP PUSH2 0x42F PUSH1 0x20 DUP11 ADD PUSH2 0x345 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x458 DUP13 DUP4 DUP14 ADD PUSH2 0x36E JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47D DUP13 DUP4 DUP14 ADD PUSH2 0x36E JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A3 DUP12 DUP3 DUP13 ADD PUSH2 0x3BA JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D9 DUP8 PUSH2 0x345 JUMP JUMPDEST SWAP6 POP PUSH2 0x4E7 PUSH1 0x20 DUP9 ADD PUSH2 0x345 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x51D DUP10 DUP3 DUP11 ADD PUSH2 0x3BA JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x561 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x5 SHL DUP1 DUP4 PUSH1 0x20 DUP8 ADD CALLDATACOPY SWAP4 SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP12 AND DUP4 MSTORE DUP1 DUP11 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x5FD PUSH1 0xA0 DUP4 ADD DUP9 DUP11 PUSH2 0x52F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x610 DUP2 DUP8 DUP10 PUSH2 0x52F JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x625 DUP2 DUP6 DUP8 PUSH2 0x57A JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP6 PUSH1 0x40 DUP4 ADD MSTORE DUP5 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x67A PUSH1 0xA0 DUP4 ADD DUP5 DUP7 PUSH2 0x57A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xE7 0xA7 SGT 0xC8 PUSH8 0x4B7C90614AE5A14B 0xDA 0xA7 BASEFEE 0xAB 0xAB 0xAE 0xCD DUP14 CALLER CODECOPY 0xFC CALLDATASIZE PUSH17 0x7A6EC897564736F6C6343000811003300 ",
              "sourceMap": "359:1529:102:-:0;;;831:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;961:10;:22;;1059:24;;;;;-1:-1:-1;;;;961:22:102;1027;;;;;1059:24;-1:-1:-1;;;;993:24:102;;;;;-1:-1:-1;;993:24:102;;;961:22;;;;993:24;;;;;;;;1059;;;;;;;;;;;359:1529;;14:177:111;92:13;;-1:-1:-1;;;;;;134:32:111;;124:43;;114:71;;181:1;178;171:12;114:71;14:177;;;:::o;196:164::-;272:13;;321;;314:21;304:32;;294:60;;350:1;347;340:12;365:448;454:6;462;470;478;531:3;519:9;510:7;506:23;502:33;499:53;;;548:1;545;538:12;499:53;571:39;600:9;571:39;:::i;:::-;561:49;;629:46;671:2;660:9;656:18;629:46;:::i;:::-;619:56;;694:48;738:2;727:9;723:18;694:48;:::i;:::-;684:58;;761:46;803:2;792:9;788:18;761:46;:::i;:::-;751:56;;365:448;;;;;;;:::o;:::-;359:1529:102;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@onERC1155BatchReceived_20648": {
                  "entryPoint": 263,
                  "id": 20648,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "@onERC1155Received_20613": {
                  "entryPoint": 526,
                  "id": 20613,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@supportsInterface_3081": {
                  "entryPoint": null,
                  "id": 3081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 837,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_uint256_dyn_calldata": {
                  "entryPoint": 878,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 954,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 1020,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 8
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 1207,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 764,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_uint256_dyn_calldata": {
                  "entryPoint": 1327,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_bytes_calldata": {
                  "entryPoint": 1402,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr_t_bytes_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1475,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1588,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_28b84c4ed279ffb88476777a67b487aa734a98b71976220822fd64bc4c37ff03__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3e72644f1ec2e45850282bf7e40f58bed4cd632f58748543bbee2b7062f07e6f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:6702:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "592:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "602:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "624:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "611:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "611:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "602:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "717:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "726:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "729:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "719:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "719:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "653:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "664:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "671:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "660:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "660:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "650:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "650:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "643:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "643:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "640:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "571:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "582:5:111",
                            "type": ""
                          }
                        ],
                        "src": "543:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "828:283:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "877:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "886:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "889:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "879:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "879:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "856:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "864:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "852:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "852:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "871:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "848:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "848:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "841:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "841:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "838:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "902:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "925:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "912:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "912:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "902:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "975:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "984:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "987:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "977:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "977:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "977:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "947:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "955:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "944:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "944:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "941:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1000:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1016:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1024:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1012:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1012:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1000:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1089:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1098:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1101:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1091:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1091:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1091:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1052:6:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1064:1:111",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1067:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1060:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1060:14:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1048:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1048:27:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1077:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1044:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1044:38:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1084:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1041:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1041:47:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1038:67:111"
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "791:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "799:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "807:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "817:6:111",
                            "type": ""
                          }
                        ],
                        "src": "744:367:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1188:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1237:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1246:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1249:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1239:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1239:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1239:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1216:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1224:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1212:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1212:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1231:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1208:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1208:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1198:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1262:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1285:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1272:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1272:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1262:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1335:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1344:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1347:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1337:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1337:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1337:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1307:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1315:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1304:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1304:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1301:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1360:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1376:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1384:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1372:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1372:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1360:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1441:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1450:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1453:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1443:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1443:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1443:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1412:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1420:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1408:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1408:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1429:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1404:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1404:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1436:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1401:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1401:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1398:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1151:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1159:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "1167:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1177:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1116:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1695:983:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1742:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1751:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1754:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1744:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1744:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1744:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1716:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1725:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1712:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1712:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1737:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1708:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1708:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1705:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1767:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1796:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1777:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1777:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1767:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1848:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1859:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1844:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1844:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1825:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1825:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1872:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1903:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1914:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1899:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1899:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1886:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1886:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1876:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1927:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1937:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1931:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1982:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1991:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1994:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1984:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1984:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1984:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1970:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1978:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1967:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1967:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1964:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2007:96:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2075:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2086:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2071:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2071:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2095:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2033:37:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2033:70:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2011:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2021:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2112:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "2122:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2112:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2139:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "2149:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2139:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2166:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2199:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2210:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2195:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2195:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2182:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2182:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2170:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2243:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2252:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2255:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2245:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2245:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2245:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2229:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2239:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2226:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2226:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2223:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2268:98:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2336:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2347:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2332:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2332:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2358:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2294:37:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2294:72:111"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2272:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2282:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2375:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "2385:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2375:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2402:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "2412:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "2402:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2429:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2462:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2473:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2458:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2458:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2445:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2445:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2433:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2507:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2516:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2519:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2509:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2509:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2509:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2493:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2503:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2490:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2490:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2487:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2532:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2588:9:111"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2599:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2584:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2584:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2610:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2558:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2558:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value6_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2536:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value7_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2546:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2627:18:111",
                              "value": {
                                "name": "value6_1",
                                "nodeType": "YulIdentifier",
                                "src": "2637:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2627:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2654:18:111",
                              "value": {
                                "name": "value7_1",
                                "nodeType": "YulIdentifier",
                                "src": "2664:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "2654:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1605:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1616:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1628:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1636:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1644:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1652:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1660:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "1668:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "1676:6:111",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "1684:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1468:1210:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2782:149:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2792:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2804:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2815:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2800:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2800:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2792:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2834:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2849:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2857:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2845:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2845:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2827:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2827:98:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2827:98:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2751:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2762:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2773:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2683:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3093:538:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3140:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3149:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3152:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3142:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3142:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3142:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3114:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3123:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3110:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3110:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3135:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3106:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3106:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3103:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3165:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3194:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3175:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3175:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3165:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3213:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3246:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3257:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3242:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3242:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3223:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3223:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3213:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3270:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3297:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3308:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3293:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3293:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3280:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3280:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3270:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3321:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3348:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3359:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3344:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3344:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3331:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3331:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3321:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3372:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3403:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3414:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3399:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3399:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3386:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3386:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3376:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3462:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3471:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3474:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3464:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3464:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3464:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3434:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3442:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3431:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3431:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3428:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3487:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3543:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3554:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3539:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3539:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3563:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "3513:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3513:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3491:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3501:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3580:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "3590:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3580:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3607:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "3617:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "3607:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3019:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3030:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3042:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3050:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3058:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3066:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3074:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3082:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2936:695:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3810:237:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3827:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3838:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3820:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3820:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3820:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3861:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3872:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3857:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3857:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3877:2:111",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3850:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3850:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3850:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3900:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3911:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3896:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3896:18:111"
                                  },
                                  {
                                    "hexValue": "4552433131353552656365697665724d6f636b3a20726576657274696e67206f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3916:34:111",
                                    "type": "",
                                    "value": "ERC1155ReceiverMock: reverting o"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3889:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3889:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3889:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3971:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3982:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3967:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3967:18:111"
                                  },
                                  {
                                    "hexValue": "6e2062617463682072656365697665",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3987:17:111",
                                    "type": "",
                                    "value": "n batch receive"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3960:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3960:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3960:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4014:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4026:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4037:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4022:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4022:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4014:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3e72644f1ec2e45850282bf7e40f58bed4cd632f58748543bbee2b7062f07e6f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3787:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3801:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3636:411:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4130:280:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4147:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4152:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4140:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4140:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4140:19:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4250:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4259:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4262:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4252:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4252:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4252:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4174:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4182:66:111",
                                    "type": "",
                                    "value": "0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4171:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4171:78:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4168:98:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4275:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4295:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4298:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "4291:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4291:14:111"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4279:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4331:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4336:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4327:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4327:14:111"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "4343:5:111"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4350:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4314:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4314:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4314:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4368:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4383:3:111"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4388:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4379:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4379:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4399:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4375:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4375:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4368:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_uint256_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "4099:5:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4106:6:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4114:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4122:3:111",
                            "type": ""
                          }
                        ],
                        "src": "4052:358:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4481:259:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4498:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4503:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4491:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4491:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4536:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4541:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4532:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4532:14:111"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "4548:5:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4555:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4519:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4519:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4519:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "4586:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "4591:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4582:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4582:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4600:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4578:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4578:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4607:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4571:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4571:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4571:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4618:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4633:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "4646:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4654:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4642:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4642:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4659:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4638:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4638:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4629:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4629:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4729:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4625:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4625:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4618:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "4450:5:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4457:6:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4465:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4473:3:111",
                            "type": ""
                          }
                        ],
                        "src": "4415:325:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5106:569:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5116:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5126:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5120:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5184:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5199:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5207:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5195:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5195:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5177:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5177:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5177:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5231:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5242:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5227:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5227:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5251:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5259:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5247:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5247:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5220:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5220:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5220:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5283:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5294:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5279:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5279:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5299:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5272:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5272:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5272:31:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5312:88:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5364:6:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5372:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5384:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5395:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5380:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5380:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "5326:37:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5326:74:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5316:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5420:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5431:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5416:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5416:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5440:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5448:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5436:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5436:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5409:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5409:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5409:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5468:75:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "5520:6:111"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "5528:6:111"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5536:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "5482:37:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5482:61:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5472:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5563:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5574:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5559:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5559:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5584:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5592:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5580:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5580:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5552:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5552:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5552:51:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5612:57:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "5646:6:111"
                                  },
                                  {
                                    "name": "value7",
                                    "nodeType": "YulIdentifier",
                                    "src": "5654:6:111"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5662:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "5620:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5620:49:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5612:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr_t_bytes_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5019:9:111",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "5030:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "5038:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "5046:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5054:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5062:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5070:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5078:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5086:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5097:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4745:930:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5854:231:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5871:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5882:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5864:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5864:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5864:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5905:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5916:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5901:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5901:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5921:2:111",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5894:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5894:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5894:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5944:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5955:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5940:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5940:18:111"
                                  },
                                  {
                                    "hexValue": "4552433131353552656365697665724d6f636b3a20726576657274696e67206f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5960:34:111",
                                    "type": "",
                                    "value": "ERC1155ReceiverMock: reverting o"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5933:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5933:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5933:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6015:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6026:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6011:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6011:18:111"
                                  },
                                  {
                                    "hexValue": "6e2072656365697665",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6031:11:111",
                                    "type": "",
                                    "value": "n receive"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6004:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6004:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6004:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6052:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6064:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6075:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6060:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6060:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6052:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_28b84c4ed279ffb88476777a67b487aa734a98b71976220822fd64bc4c37ff03__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5831:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5845:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5680:405:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6331:369:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6341:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6351:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6345:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6409:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6424:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6432:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6420:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6420:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6402:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6402:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6402:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6456:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6467:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6452:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6452:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6476:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6484:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6472:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6472:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6445:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6445:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6445:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6508:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6519:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6504:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6504:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6524:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6497:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6497:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6497:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6551:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6562:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6547:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6547:18:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6567:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6540:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6540:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6540:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6594:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6605:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6590:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6590:19:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6611:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6583:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6583:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6583:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6624:70:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "6658:6:111"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "6666:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6678:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6689:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6674:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6674:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "6632:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6632:62:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6624:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6260:9:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "6271:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6279:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6287:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6295:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6303:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6311:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6322:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6090:610:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_array_uint256_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value6_1, value7_1 := abi_decode_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value6 := value6_1\n        value7 := value7_1\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_encode_tuple_t_stringliteral_3e72644f1ec2e45850282bf7e40f58bed4cd632f58748543bbee2b7062f07e6f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC1155ReceiverMock: reverting o\")\n        mstore(add(headStart, 96), \"n batch receive\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_array_uint256_dyn_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert(0, 0) }\n        let length_1 := shl(5, length)\n        calldatacopy(add(pos, 0x20), start, length_1)\n        end := add(add(pos, length_1), 0x20)\n    }\n    function abi_encode_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr_t_bytes_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_array_uint256_dyn_calldata(value2, value3, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn_calldata(value4, value5, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_bytes_calldata(value6, value7, tail_2)\n    }\n    function abi_encode_tuple_t_stringliteral_28b84c4ed279ffb88476777a67b487aa734a98b71976220822fd64bc4c37ff03__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155ReceiverMock: reverting o\")\n        mstore(add(headStart, 96), \"n receive\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_bytes_calldata(value4, value5, add(headStart, 160))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c81146100b0578063f23a6e61146100f4575b600080fd5b61009b6100543660046102fc565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6100c36100be3660046103fc565b610107565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100a7565b6100c36101023660046104b7565b61020e565b600080546901000000000000000000900460ff16156101ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433131353552656365697665724d6f636b3a20726576657274696e67206f60448201527f6e2062617463682072656365697665000000000000000000000000000000000060648201526084015b60405180910390fd5b7f9facaeece8596899cc39b65f0d1e262008ade8403076a2dfb6df2004fc8d965289898989898989896040516101ea9897969594939291906105c3565b60405180910390a15060005465010000000000900460e01b98975050505050505050565b60008054640100000000900460ff16156102aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433131353552656365697665724d6f636b3a20726576657274696e67206f60448201527f6e2072656365697665000000000000000000000000000000000000000000000060648201526084016101a4565b7fe4b060c773f3fcca980bf840b0e2856ca36598bb4da2c0c3913b89050630df378787878787876040516102e396959493929190610634565b60405180910390a15060005460e01b9695505050505050565b60006020828403121561030e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461033e57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461036957600080fd5b919050565b60008083601f84011261038057600080fd5b50813567ffffffffffffffff81111561039857600080fd5b6020830191508360208260051b85010111156103b357600080fd5b9250929050565b60008083601f8401126103cc57600080fd5b50813567ffffffffffffffff8111156103e457600080fd5b6020830191508360208285010111156103b357600080fd5b60008060008060008060008060a0898b03121561041857600080fd5b61042189610345565b975061042f60208a01610345565b9650604089013567ffffffffffffffff8082111561044c57600080fd5b6104588c838d0161036e565b909850965060608b013591508082111561047157600080fd5b61047d8c838d0161036e565b909650945060808b013591508082111561049657600080fd5b506104a38b828c016103ba565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156104d057600080fd5b6104d987610345565b95506104e760208801610345565b94506040870135935060608701359250608087013567ffffffffffffffff81111561051157600080fd5b61051d89828a016103ba565b979a9699509497509295939492505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561056157600080fd5b8260051b80836020870137939093016020019392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a060408301526105fd60a08301888a61052f565b828103606084015261061081878961052f565b9050828103608084015261062581858761057a565b9b9a5050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261067a60a08301848661057a565b9897505050505050505056fea2646970667358221220a7e7a713c8674b7c90614ae5a14bdaa748ababaecd8d3339fc367007a6ec897564736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0xF4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC3 PUSH2 0xBE CALLDATASIZE PUSH1 0x4 PUSH2 0x3FC JUMP JUMPDEST PUSH2 0x107 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA7 JUMP JUMPDEST PUSH2 0xC3 PUSH2 0x102 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B7 JUMP JUMPDEST PUSH2 0x20E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH10 0x1000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665724D6F636B3A20726576657274696E67206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E20626174636820726563656976650000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x9FACAEECE8596899CC39B65F0D1E262008ADE8403076A2DFB6DF2004FC8D9652 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1EA SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x0 SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH1 0xE0 SHL SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433131353552656365697665724D6F636B3A20726576657274696E67206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E20726563656976650000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A4 JUMP JUMPDEST PUSH32 0xE4B060C773F3FCCA980BF840B0E2856CA36598BB4DA2C0C3913B89050630DF37 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2E3 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x634 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x0 SLOAD PUSH1 0xE0 SHL SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x33E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x421 DUP10 PUSH2 0x345 JUMP JUMPDEST SWAP8 POP PUSH2 0x42F PUSH1 0x20 DUP11 ADD PUSH2 0x345 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x458 DUP13 DUP4 DUP14 ADD PUSH2 0x36E JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47D DUP13 DUP4 DUP14 ADD PUSH2 0x36E JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A3 DUP12 DUP3 DUP13 ADD PUSH2 0x3BA JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D9 DUP8 PUSH2 0x345 JUMP JUMPDEST SWAP6 POP PUSH2 0x4E7 PUSH1 0x20 DUP9 ADD PUSH2 0x345 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x51D DUP10 DUP3 DUP11 ADD PUSH2 0x3BA JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x561 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x5 SHL DUP1 DUP4 PUSH1 0x20 DUP8 ADD CALLDATACOPY SWAP4 SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP12 AND DUP4 MSTORE DUP1 DUP11 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x5FD PUSH1 0xA0 DUP4 ADD DUP9 DUP11 PUSH2 0x52F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x610 DUP2 DUP8 DUP10 PUSH2 0x52F JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x625 DUP2 DUP6 DUP8 PUSH2 0x57A JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP6 PUSH1 0x40 DUP4 ADD MSTORE DUP5 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x67A PUSH1 0xA0 DUP4 ADD DUP5 DUP7 PUSH2 0x57A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xE7 0xA7 SGT 0xC8 PUSH8 0x4B7C90614AE5A14B 0xDA 0xA7 BASEFEE 0xAB 0xAB 0xAE 0xCD DUP14 CALLER CODECOPY 0xFC CALLDATASIZE PUSH17 0x7A6EC897564736F6C6343000811003300 ",
              "sourceMap": "359:1529:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;829:155:16;;;;;;:::i;:::-;937:40;;952:25;937:40;;829:155;;;;516:14:111;;509:22;491:41;;479:2;464:18;829:155:16;;;;;;;;1456:430:102;;;;;;:::i;:::-;;:::i;:::-;;;2857:66:111;2845:79;;;2827:98;;2815:2;2800:18;1456:430:102;2683:248:111;1096:354:102;;;;;;:::i;:::-;;:::i;1456:430::-;1665:6;1705:11;;;;;;;1704:12;1683:106;;;;;;;3838:2:111;1683:106:102;;;3820:21:111;3877:2;3857:18;;;3850:30;3916:34;3896:18;;;3889:62;3987:17;3967:18;;;3960:45;4022:19;;1683:106:102;;;;;;;;;1804:48;1818:8;1828:4;1834:3;;1839:6;;1847:4;;1804:48;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1869:10:102;;;;;;;1456:430;;;;;;;;;;:::o;1096:354::-;1276:6;1303:11;;;;;;;1302:12;1294:66;;;;;;;5882:2:111;1294:66:102;;;5864:21:111;5921:2;5901:18;;;5894:30;5960:34;5940:18;;;5933:62;6031:11;6011:18;;;6004:39;6060:19;;1294:66:102;5680:405:111;1294:66:102;1375:41;1384:8;1394:4;1400:2;1404:5;1411:4;;1375:41;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1433:10:102;;;;1096:354;;;;;;;;:::o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:111:o;543:196::-;611:20;;671:42;660:54;;650:65;;640:93;;729:1;726;719:12;640:93;543:196;;;:::o;744:367::-;807:8;817:6;871:3;864:4;856:6;852:17;848:27;838:55;;889:1;886;879:12;838:55;-1:-1:-1;912:20:111;;955:18;944:30;;941:50;;;987:1;984;977:12;941:50;1024:4;1016:6;1012:17;1000:29;;1084:3;1077:4;1067:6;1064:1;1060:14;1052:6;1048:27;1044:38;1041:47;1038:67;;;1101:1;1098;1091:12;1038:67;744:367;;;;;:::o;1116:347::-;1167:8;1177:6;1231:3;1224:4;1216:6;1212:17;1208:27;1198:55;;1249:1;1246;1239:12;1198:55;-1:-1:-1;1272:20:111;;1315:18;1304:30;;1301:50;;;1347:1;1344;1337:12;1301:50;1384:4;1376:6;1372:17;1360:29;;1436:3;1429:4;1420:6;1412;1408:19;1404:30;1401:39;1398:59;;;1453:1;1450;1443:12;1468:1210;1628:6;1636;1644;1652;1660;1668;1676;1684;1737:3;1725:9;1716:7;1712:23;1708:33;1705:53;;;1754:1;1751;1744:12;1705:53;1777:29;1796:9;1777:29;:::i;:::-;1767:39;;1825:38;1859:2;1848:9;1844:18;1825:38;:::i;:::-;1815:48;;1914:2;1903:9;1899:18;1886:32;1937:18;1978:2;1970:6;1967:14;1964:34;;;1994:1;1991;1984:12;1964:34;2033:70;2095:7;2086:6;2075:9;2071:22;2033:70;:::i;:::-;2122:8;;-1:-1:-1;2007:96:111;-1:-1:-1;2210:2:111;2195:18;;2182:32;;-1:-1:-1;2226:16:111;;;2223:36;;;2255:1;2252;2245:12;2223:36;2294:72;2358:7;2347:8;2336:9;2332:24;2294:72;:::i;:::-;2385:8;;-1:-1:-1;2268:98:111;-1:-1:-1;2473:3:111;2458:19;;2445:33;;-1:-1:-1;2490:16:111;;;2487:36;;;2519:1;2516;2509:12;2487:36;;2558:60;2610:7;2599:8;2588:9;2584:24;2558:60;:::i;:::-;1468:1210;;;;-1:-1:-1;1468:1210:111;;-1:-1:-1;1468:1210:111;;;;;;2637:8;-1:-1:-1;;;1468:1210:111:o;2936:695::-;3042:6;3050;3058;3066;3074;3082;3135:3;3123:9;3114:7;3110:23;3106:33;3103:53;;;3152:1;3149;3142:12;3103:53;3175:29;3194:9;3175:29;:::i;:::-;3165:39;;3223:38;3257:2;3246:9;3242:18;3223:38;:::i;:::-;3213:48;;3308:2;3297:9;3293:18;3280:32;3270:42;;3359:2;3348:9;3344:18;3331:32;3321:42;;3414:3;3403:9;3399:19;3386:33;3442:18;3434:6;3431:30;3428:50;;;3474:1;3471;3464:12;3428:50;3513:58;3563:7;3554:6;3543:9;3539:22;3513:58;:::i;:::-;2936:695;;;;-1:-1:-1;2936:695:111;;-1:-1:-1;2936:695:111;;3590:8;;2936:695;-1:-1:-1;;;2936:695:111:o;4052:358::-;4152:6;4147:3;4140:19;4122:3;4182:66;4174:6;4171:78;4168:98;;;4262:1;4259;4252:12;4168:98;4298:6;4295:1;4291:14;4350:8;4343:5;4336:4;4331:3;4327:14;4314:45;4379:18;;;;4399:4;4375:29;;4052:358;-1:-1:-1;;;4052:358:111:o;4415:325::-;4503:6;4498:3;4491:19;4555:6;4548:5;4541:4;4536:3;4532:14;4519:43;;4607:1;4600:4;4591:6;4586:3;4582:16;4578:27;4571:38;4473:3;4729:4;4659:66;4654:2;4646:6;4642:15;4638:88;4633:3;4629:98;4625:109;4618:116;;4415:325;;;;:::o;4745:930::-;5097:4;5126:42;5207:2;5199:6;5195:15;5184:9;5177:34;5259:2;5251:6;5247:15;5242:2;5231:9;5227:18;5220:43;;5299:3;5294:2;5283:9;5279:18;5272:31;5326:74;5395:3;5384:9;5380:19;5372:6;5364;5326:74;:::i;:::-;5448:9;5440:6;5436:22;5431:2;5420:9;5416:18;5409:50;5482:61;5536:6;5528;5520;5482:61;:::i;:::-;5468:75;;5592:9;5584:6;5580:22;5574:3;5563:9;5559:19;5552:51;5620:49;5662:6;5654;5646;5620:49;:::i;:::-;5612:57;4745:930;-1:-1:-1;;;;;;;;;;;4745:930:111:o;6090:610::-;6322:4;6351:42;6432:2;6424:6;6420:15;6409:9;6402:34;6484:2;6476:6;6472:15;6467:2;6456:9;6452:18;6445:43;;6524:6;6519:2;6508:9;6504:18;6497:34;6567:6;6562:2;6551:9;6547:18;6540:34;6611:3;6605;6594:9;6590:19;6583:32;6632:62;6689:3;6678:9;6674:19;6666:6;6658;6632:62;:::i;:::-;6624:70;6090:610;-1:-1:-1;;;;;;;;6090:610:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "344800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "infinite",
                "onERC1155Received(address,address,uint256,uint256,bytes)": "infinite",
                "supportsInterface(bytes4)": "288"
              }
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"recRetval\",\"type\":\"bytes4\"},{\"internalType\":\"bool\",\"name\":\"recReverts\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"batRetval\",\"type\":\"bytes4\"},{\"internalType\":\"bool\",\"name\":\"batReverts\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"BatchReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Received\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/mocks/ERC1155ReceiverMock.sol\":\"ERC1155ReceiverMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n    /**\\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\\n     *\\n     * NOTE: To accept the transfer, this must return\\n     * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n     * (i.e. 0xf23a6e61, or its own function selector).\\n     *\\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param id The ID of the token being transferred\\n     * @param value The amount of tokens being transferred\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256 value,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n\\n    /**\\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\\n     * been updated.\\n     *\\n     * NOTE: To accept the transfer(s), this must return\\n     * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n     * (i.e. 0xbc197c81, or its own function selector).\\n     *\\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155BatchReceived(\\n        address operator,\\n        address from,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/wrapper/mocks/ERC1155ReceiverMock.sol\":{\"content\":\"// Based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.1.0/test/token/ERC1155/ERC1155.behaviour.js\\n// Copyright (c) 2016-2020 zOS Global Limited\\n\\n// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\ncontract ERC1155ReceiverMock is IERC1155Receiver, ERC165 {\\n    bytes4 private _recRetval;\\n    bool private _recReverts;\\n    bytes4 private _batRetval;\\n    bool private _batReverts;\\n\\n    event Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256 value,\\n        bytes data\\n    );\\n    event BatchReceived(\\n        address operator,\\n        address from,\\n        uint256[] ids,\\n        uint256[] values,\\n        bytes data\\n    );\\n\\n    constructor(\\n        bytes4 recRetval,\\n        bool recReverts,\\n        bytes4 batRetval,\\n        bool batReverts\\n    ) {\\n        _recRetval = recRetval;\\n        _recReverts = recReverts;\\n        _batRetval = batRetval;\\n        _batReverts = batReverts;\\n    }\\n\\n    function onERC1155Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256 value,\\n        bytes calldata data\\n    ) external override returns (bytes4) {\\n        require(!_recReverts, \\\"ERC1155ReceiverMock: reverting on receive\\\");\\n        emit Received(operator, from, id, value, data);\\n        return _recRetval;\\n    }\\n\\n    function onERC1155BatchReceived(\\n        address operator,\\n        address from,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external override returns (bytes4) {\\n        require(\\n            !_batReverts,\\n            \\\"ERC1155ReceiverMock: reverting on batch receive\\\"\\n        );\\n        emit BatchReceived(operator, from, ids, values, data);\\n        return _batRetval;\\n    }\\n}\\n\",\"keccak256\":\"0xbfae321d0e0e6aca10afaffa5923ec4c4513d254008711454e42687c2ab2467a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 20520,
                "contract": "contracts/wrapper/mocks/ERC1155ReceiverMock.sol:ERC1155ReceiverMock",
                "label": "_recRetval",
                "offset": 0,
                "slot": "0",
                "type": "t_bytes4"
              },
              {
                "astId": 20522,
                "contract": "contracts/wrapper/mocks/ERC1155ReceiverMock.sol:ERC1155ReceiverMock",
                "label": "_recReverts",
                "offset": 4,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 20524,
                "contract": "contracts/wrapper/mocks/ERC1155ReceiverMock.sol:ERC1155ReceiverMock",
                "label": "_batRetval",
                "offset": 5,
                "slot": "0",
                "type": "t_bytes4"
              },
              {
                "astId": 20526,
                "contract": "contracts/wrapper/mocks/ERC1155ReceiverMock.sol:ERC1155ReceiverMock",
                "label": "_batReverts",
                "offset": 9,
                "slot": "0",
                "type": "t_bool"
              }
            ],
            "types": {
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes4": {
                "encoding": "inplace",
                "label": "bytes4",
                "numberOfBytes": "4"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/mocks/UpgradedNameWrapperMock.sol": {
        "UpgradedNameWrapperMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_oldNameWrapper",
                  "type": "address"
                },
                {
                  "internalType": "contract ENS",
                  "name": "_ens",
                  "type": "address"
                },
                {
                  "internalType": "contract IBaseRegistrar",
                  "name": "_registrar",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "SetSubnodeRecord",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "WrapETH2LD",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "oldNameWrapper",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "registrar",
              "outputs": [
                {
                  "internalType": "contract IBaseRegistrar",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "ttl",
                  "type": "uint64"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "label",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "wrappedOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "fuses",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "expiry",
                  "type": "uint64"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                }
              ],
              "name": "wrapETH2LD",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_20686": {
                  "entryPoint": null,
                  "id": 20686,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_addresst_contract$_ENS_$12157t_contract$_IBaseRegistrar_$11222_fromMemory": {
                  "entryPoint": 100,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "validator_revert_address": {
                  "entryPoint": 76,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:708:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "59:86:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "82:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "93:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "108:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "113:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "104:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "104:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "117:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "100:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "100:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "89:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "89:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "79:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "79:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "72:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "72:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "69:70:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "48:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:131:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "302:404:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "348:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "357:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "360:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "350:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "350:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "350:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "323:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "332:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "319:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "319:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "344:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "315:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "315:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "312:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "373:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "392:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "386:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "386:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "377:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "436:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "411:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "411:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "411:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "451:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "461:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "451:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "475:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "500:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "511:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "496:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "496:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "490:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "490:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "479:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "549:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "524:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "524:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "524:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "566:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "576:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "566:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "592:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "617:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "628:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "613:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "613:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "607:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "607:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "596:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "666:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "641:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "641:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "641:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "683:17:111",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "693:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "683:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_contract$_ENS_$12157t_contract$_IBaseRegistrar_$11222_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "252:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "263:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "275:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "283:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "291:6:111",
                            "type": ""
                          }
                        ],
                        "src": "150:556:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_contract$_ENS_$12157t_contract$_IBaseRegistrar_$11222_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60e060405234801561001057600080fd5b50604051610e0e380380610e0e83398101604081905261002f91610064565b6001600160a01b0392831660805290821660a0521660c0526100b1565b6001600160a01b038116811461006157600080fd5b50565b60008060006060848603121561007957600080fd5b83516100848161004c565b60208501519093506100958161004c565b60408501519092506100a68161004c565b809150509250925092565b60805160a05160c051610cf961011560003960008181608601528181610524015281816105f90152818161068a015261076701526000818160d6015281816101d0015281816102e7015261041801526000818160fd01526102550152610cf96000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80633f15457f116100505780633f15457f146100d15780639bb73e9e146100f8578063f9547a9e1461011f57600080fd5b806324c1af441461006c5780632b20e39714610081575b600080fd5b61007f61007a366004610913565b610132565b005b6100a87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100a87f000000000000000000000000000000000000000000000000000000000000000081565b6100a87f000000000000000000000000000000000000000000000000000000000000000081565b61007f61012d366004610a3f565b6104d8565b8551602080880191909120604080519283018a9052820181905290600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101207f02571be300000000000000000000000000000000000000000000000000000000825260048201819052915060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023b9190610af5565b90503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610296575073ffffffffffffffffffffffffffffffffffffffff811633145b8061035257506040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190610b19565b6103e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4e6f74206f776e65722f617070726f766564206f722070726576696f7573206e60448201527f616d655772617070657220636f6e74726f6c6c6572000000000000000000000060648201526084015b60405180910390fd5b6040517f5b0fc9c3000000000000000000000000000000000000000000000000000000008152600481018390523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635b0fc9c390604401600060405180830381600087803b15801561047157600080fd5b505af1158015610485573d6000803e3d6000fd5b505050507f68b62ced075679cd06e8bec73ce876151221dc2a8b4f2f166371859837bb91848a8a8a8a8a8a8a6040516104c49796959493929190610b3b565b60405180910390a150505050505050505050565b600086866040516104ea929190610c22565b6040519081900381207f6352211e0000000000000000000000000000000000000000000000000000000082526004820181905291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a49190610af5565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152306024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd90606401600060405180830381600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b50506040517f28ed4f6c000000000000000000000000000000000000000000000000000000008152600481018590523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692506328ed4f6c9150604401600060405180830381600087803b1580156106e557600080fd5b505af11580156106f9573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff81163314806107d257506040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d29190610b19565b610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f7269736564000000000000000000000000000000000000000060448201526064016103da565b7f2dacb9d9fb1aa0f64303648a47866cb480ff876892dd74ab0500f18ac5b875ca88888888888860405161087196959493929190610c32565b60405180910390a15050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146108d457600080fd5b50565b80356108e2816108b2565b919050565b803567ffffffffffffffff811681146108e257600080fd5b803563ffffffff811681146108e257600080fd5b600080600080600080600060e0888a03121561092e57600080fd5b87359650602088013567ffffffffffffffff8082111561094d57600080fd5b818a0191508a601f83011261096157600080fd5b81358181111561097357610973610883565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156109b9576109b9610883565b816040528281528d60208487010111156109d257600080fd5b82602086016020830137600060208483010152809a5050505050506109f9604089016108d7565b9450610a07606089016108d7565b9350610a15608089016108e7565b9250610a2360a089016108ff565b9150610a3160c089016108e7565b905092959891949750929550565b60008060008060008060a08789031215610a5857600080fd5b863567ffffffffffffffff80821115610a7057600080fd5b818901915089601f830112610a8457600080fd5b813581811115610a9357600080fd5b8a6020828501011115610aa557600080fd5b60209283019850965050870135610abb816108b2565b9350610ac9604088016108ff565b9250610ad7606088016108e7565b91506080870135610ae7816108b2565b809150509295509295509295565b600060208284031215610b0757600080fd5b8151610b12816108b2565b9392505050565b600060208284031215610b2b57600080fd5b81518015158114610b1257600080fd5b8781526000602060e08184015288518060e085015260005b81811015610b70578a810183015185820161010001528201610b53565b5061010091506000828286010152817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050610bce604083018873ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff8616606083015267ffffffffffffffff8516608083015263ffffffff841660a083015267ffffffffffffffff831660c083015298975050505050505050565b8183823760009101908152919050565b60a081528560a0820152858760c0830137600060c087830181019190915273ffffffffffffffffffffffffffffffffffffffff958616602083015263ffffffff94909416604082015267ffffffffffffffff9290921660608301529092166080830152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010191905056fea2646970667358221220d8016466469ea9bebcd4164670f88281f48b29a5ade6e123f19441b5bf2b8c3a64736f6c63430008110033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xE0E CODESIZE SUB DUP1 PUSH2 0xE0E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x64 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x80 MSTORE SWAP1 DUP3 AND PUSH1 0xA0 MSTORE AND PUSH1 0xC0 MSTORE PUSH2 0xB1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x84 DUP2 PUSH2 0x4C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x95 DUP2 PUSH2 0x4C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xA6 DUP2 PUSH2 0x4C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0xCF9 PUSH2 0x115 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0x86 ADD MSTORE DUP2 DUP2 PUSH2 0x524 ADD MSTORE DUP2 DUP2 PUSH2 0x5F9 ADD MSTORE DUP2 DUP2 PUSH2 0x68A ADD MSTORE PUSH2 0x767 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH1 0xD6 ADD MSTORE DUP2 DUP2 PUSH2 0x1D0 ADD MSTORE DUP2 DUP2 PUSH2 0x2E7 ADD MSTORE PUSH2 0x418 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH1 0xFD ADD MSTORE PUSH2 0x255 ADD MSTORE PUSH2 0xCF9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3F15457F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x9BB73E9E EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0xF9547A9E EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x24C1AF44 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2B20E397 EQ PUSH2 0x81 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA8 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xA8 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0xA3F JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x20 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 ADD DUP11 SWAP1 MSTORE DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x217 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23B SWAP2 SWAP1 PUSH2 0xAF5 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ DUP1 PUSH2 0x296 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ JUMPDEST DUP1 PUSH2 0x352 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x352 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x35 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206F776E65722F617070726F766564206F722070726576696F7573206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616D655772617070657220636F6E74726F6C6C65720000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5B0FC9C300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x5B0FC9C3 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x485 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH32 0x68B62CED075679CD06E8BEC73CE876151221DC2A8B4F2F166371859837BB9184 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x4C4 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x4EA SWAP3 SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x580 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5A4 SWAP2 SWAP1 PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x653 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x28ED4F6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0x28ED4F6C SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ DUP1 PUSH2 0x7D2 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D2 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST PUSH2 0x838 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E617574686F72697365640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3DA JUMP JUMPDEST PUSH32 0x2DACB9D9FB1AA0F64303648A47866CB480FF876892DD74AB0500F18AC5B875CA DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x871 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x8E2 DUP2 PUSH2 0x8B2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x94D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x973 JUMPI PUSH2 0x973 PUSH2 0x883 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x9B9 JUMPI PUSH2 0x9B9 PUSH2 0x883 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP14 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP11 POP POP POP POP POP POP PUSH2 0x9F9 PUSH1 0x40 DUP10 ADD PUSH2 0x8D7 JUMP JUMPDEST SWAP5 POP PUSH2 0xA07 PUSH1 0x60 DUP10 ADD PUSH2 0x8D7 JUMP JUMPDEST SWAP4 POP PUSH2 0xA15 PUSH1 0x80 DUP10 ADD PUSH2 0x8E7 JUMP JUMPDEST SWAP3 POP PUSH2 0xA23 PUSH1 0xA0 DUP10 ADD PUSH2 0x8FF JUMP JUMPDEST SWAP2 POP PUSH2 0xA31 PUSH1 0xC0 DUP10 ADD PUSH2 0x8E7 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xA58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xA93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 POP SWAP7 POP POP DUP8 ADD CALLDATALOAD PUSH2 0xABB DUP2 PUSH2 0x8B2 JUMP JUMPDEST SWAP4 POP PUSH2 0xAC9 PUSH1 0x40 DUP9 ADD PUSH2 0x8FF JUMP JUMPDEST SWAP3 POP PUSH2 0xAD7 PUSH1 0x60 DUP9 ADD PUSH2 0x8E7 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0xAE7 DUP2 PUSH2 0x8B2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB12 DUP2 PUSH2 0x8B2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 DUP2 DUP5 ADD MSTORE DUP9 MLOAD DUP1 PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB70 JUMPI DUP11 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH2 0x100 ADD MSTORE DUP3 ADD PUSH2 0xB53 JUMP JUMPDEST POP PUSH2 0x100 SWAP2 POP PUSH1 0x0 DUP3 DUP3 DUP7 ADD ADD MSTORE DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP PUSH2 0xBCE PUSH1 0x40 DUP4 ADD DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE DUP6 PUSH1 0xA0 DUP3 ADD MSTORE DUP6 DUP8 PUSH1 0xC0 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xC0 DUP8 DUP4 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD8 ADD PUSH5 0x66469EA9BE 0xBC 0xD4 AND CHAINID PUSH17 0xF88281F48B29A5ADE6E123F19441B5BF2B DUP13 GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "167:2229:103:-:0;;;329:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;443:32:103;;;;;485:10;;;;;505:22;;;167:2229;;14:131:111;-1:-1:-1;;;;;89:31:111;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:556::-;275:6;283;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;392:9;386:16;411:31;436:5;411:31;:::i;:::-;511:2;496:18;;490:25;461:5;;-1:-1:-1;524:33:111;490:25;524:33;:::i;:::-;628:2;613:18;;607:25;576:7;;-1:-1:-1;641:33:111;607:25;641:33;:::i;:::-;693:7;683:17;;;150:556;;;;;:::o;:::-;167:2229:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ens_20659": {
                  "entryPoint": null,
                  "id": 20659,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@oldNameWrapper_20656": {
                  "entryPoint": null,
                  "id": 20656,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@registrar_20662": {
                  "entryPoint": null,
                  "id": 20662,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setSubnodeRecord_20875": {
                  "entryPoint": 306,
                  "id": 20875,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@wrapETH2LD_20791": {
                  "entryPoint": 1240,
                  "id": 20791,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 2263,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 2805,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 2841,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_string_memory_ptrt_addresst_addresst_uint64t_uint32t_uint64": {
                  "entryPoint": 2323,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint32t_uint64t_address": {
                  "entryPoint": 2623,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_uint32": {
                  "entryPoint": 2303,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint64": {
                  "entryPoint": 2279,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 3106,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__to_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__fromStack_reversed": {
                  "entryPoint": 2875,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBaseRegistrar_$11222__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint32_t_uint64_t_address__to_t_string_memory_ptr_t_address_t_uint32_t_uint64_t_address__fromStack_reversed": {
                  "entryPoint": 3122,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_40bd7efd8eb18d3c0684353e84f337b88c8c7ee778c5dbf71fbef8454e46189e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5f0a93f24d3028381be5acbc4ed821462983ec319f1f822e408afc4413b15341__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_uint32": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_uint64": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 2179,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 2226,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:9869:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "66:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "160:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "163:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "153:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "153:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "153:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "184:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "187:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "177:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "177:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "177:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "248:109:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "335:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "344:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "347:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "337:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "337:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "337:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "271:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "282:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "289:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "278:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "278:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "268:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "268:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "261:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "261:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "258:93:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "237:5:111",
                            "type": ""
                          }
                        ],
                        "src": "203:154:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "411:85:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "421:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "443:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "430:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "430:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "421:5:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "484:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "459:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "459:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "459:31:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "390:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "401:5:111",
                            "type": ""
                          }
                        ],
                        "src": "362:134:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "549:123:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "559:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "581:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "568:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "568:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "559:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "650:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "659:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "662:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "652:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "652:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "652:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "610:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "621:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "628:18:111",
                                            "type": "",
                                            "value": "0xffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "617:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "617:30:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "607:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "607:41:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "600:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "600:49:111"
                              },
                              "nodeType": "YulIf",
                              "src": "597:69:111"
                            }
                          ]
                        },
                        "name": "abi_decode_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "528:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "539:5:111",
                            "type": ""
                          }
                        ],
                        "src": "501:171:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "725:115:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "735:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "757:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "744:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "744:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "735:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "818:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "827:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "830:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "820:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "820:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "820:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "786:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "797:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "804:10:111",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "793:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "793:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "783:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "783:33:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "776:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "776:41:111"
                              },
                              "nodeType": "YulIf",
                              "src": "773:61:111"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "704:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "715:5:111",
                            "type": ""
                          }
                        ],
                        "src": "677:163:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1024:1238:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1071:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1080:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1083:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1073:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1073:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1073:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1045:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1054:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1041:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1041:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1066:3:111",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1037:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1037:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1034:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1096:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1119:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1106:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1106:23:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1096:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1138:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1169:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1180:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1165:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1165:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1152:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1152:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1142:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1193:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1203:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1197:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1248:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1257:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1260:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1250:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1250:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1250:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1236:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1244:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1233:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1233:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1230:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1273:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1287:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1298:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1283:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1283:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1277:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1353:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1362:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1365:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1355:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1355:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1355:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1332:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1336:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1328:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1328:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1343:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1324:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1324:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1317:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1314:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1378:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1401:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1388:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1388:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1382:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1427:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1429:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1429:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1429:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1419:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1423:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1416:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1416:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1413:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1458:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1468:66:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1462:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1543:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1563:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1557:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1557:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1547:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1575:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1597:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1621:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1625:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1617:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1617:13:111"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1632:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1613:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1613:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1637:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1609:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1609:31:111"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1642:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1605:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1605:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1593:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1593:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1579:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1705:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1707:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1707:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1664:10:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1676:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1661:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1661:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1684:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1696:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1681:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1681:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1658:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1658:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1655:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1743:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1747:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1736:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1736:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1736:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1774:6:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1782:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1767:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1767:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1767:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1831:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1840:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1843:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1833:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1833:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1833:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1808:2:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1812:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1804:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1804:11:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1817:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1800:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1800:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1822:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1797:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1797:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1794:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1873:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1881:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1869:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1869:15:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1890:2:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1894:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1886:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1886:11:111"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1899:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1856:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1856:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1856:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1926:6:111"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1934:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1922:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1922:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1939:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1918:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1918:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1944:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1911:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1911:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1911:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1955:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1965:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1955:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1980:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2013:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2024:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2009:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2009:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1990:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1990:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1980:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2037:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2070:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2081:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2066:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2066:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2047:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2047:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2037:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2094:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2126:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2137:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2122:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2122:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "2104:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2104:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2094:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2151:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2183:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2194:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2179:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2179:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "2161:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2161:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "2151:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2208:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2240:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2251:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2236:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2236:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "2218:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2218:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2208:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_memory_ptrt_addresst_addresst_uint64t_uint32t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "942:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "953:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "965:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "973:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "981:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "989:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "997:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "1005:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "1013:6:111",
                            "type": ""
                          }
                        ],
                        "src": "845:1417:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2392:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2402:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2414:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2425:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2410:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2410:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2402:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2444:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2459:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2467:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2455:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2455:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2437:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2437:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2437:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBaseRegistrar_$11222__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2361:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2372:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2383:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2267:250:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2636:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2646:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2658:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2669:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2654:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2654:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2646:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2688:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2703:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2711:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2699:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2699:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2681:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2681:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2681:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2605:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2616:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2627:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2522:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2810:83:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2827:3:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2836:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2843:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2832:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2832:54:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2820:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2820:67:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2820:67:111"
                            }
                          ]
                        },
                        "name": "abi_encode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2794:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2801:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2766:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2999:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3009:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3021:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3032:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3017:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3017:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3009:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3051:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3066:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3062:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3062:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3044:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3044:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3044:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2968:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2979:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2990:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2898:226:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3285:864:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3332:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3341:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3344:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3334:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3334:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3334:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3306:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3315:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3302:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3302:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3327:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3298:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3298:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3295:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3357:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3384:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3371:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3371:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3361:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3403:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3413:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3407:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3458:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3467:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3470:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3460:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3460:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3460:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3446:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3454:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3443:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3443:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3440:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3483:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3497:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3508:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3493:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3493:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3487:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3563:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3572:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3575:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3565:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3565:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3565:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3542:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3546:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3538:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3538:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3553:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3534:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3534:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3527:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3527:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3524:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3588:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3615:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3602:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3602:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3592:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3645:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3654:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3657:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3647:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3647:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3647:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3633:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3641:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3630:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3630:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3627:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3713:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3722:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3725:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3715:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3715:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3715:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3684:2:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "3688:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3680:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3680:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3697:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3676:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3676:26:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3704:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3673:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3673:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3670:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3738:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3752:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3756:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3748:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3748:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3738:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3770:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "3780:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3770:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3795:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3825:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3836:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3821:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3821:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3808:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3808:34:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3799:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3876:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3851:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3851:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3851:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3891:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3901:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3891:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3915:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3947:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3958:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3943:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3943:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "3925:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3925:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3915:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3971:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4003:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4014:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3999:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3999:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "3981:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3981:37:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3971:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4027:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4059:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4070:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4055:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4055:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4042:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4042:33:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4031:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4109:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4084:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4084:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4084:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4126:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4136:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4126:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint32t_uint64t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3211:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3222:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3234:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3242:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3250:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3258:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3266:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3274:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3129:1020:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4301:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4318:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4323:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4311:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4311:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4311:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4350:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4355:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4346:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4346:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4360:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4339:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4339:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4339:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4376:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4387:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4392:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4383:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4383:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4376:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4269:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4274:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4282:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4293:3:111",
                            "type": ""
                          }
                        ],
                        "src": "4154:247:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4507:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4517:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4529:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4540:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4525:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4525:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4517:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4559:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4570:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4552:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4552:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4552:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4476:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4487:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4498:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4406:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4669:170:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4715:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4724:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4727:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4717:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4717:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4717:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4690:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4699:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4686:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4686:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4711:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4682:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4682:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4679:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4740:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4759:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4753:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4753:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4744:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4803:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4778:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4778:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4778:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4818:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4828:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4818:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4635:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4646:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4658:6:111",
                            "type": ""
                          }
                        ],
                        "src": "4588:251:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4973:198:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4983:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4995:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5006:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4991:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4991:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4983:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5018:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5028:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5022:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5086:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5101:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5109:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5097:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5097:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5079:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5079:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5079:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5133:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5144:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5129:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5129:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5153:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5161:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5149:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5149:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5122:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5122:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5122:43:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4934:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4945:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4953:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4964:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4844:327:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5254:199:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5275:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5284:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5271:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5271:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5296:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5267:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5267:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5264:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5325:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5344:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5338:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5338:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5329:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5407:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5416:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5419:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5409:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5409:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5409:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5376:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "5397:5:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5390:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5390:13:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5383:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5383:21:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5373:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5373:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5366:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5366:40:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5363:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5432:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5442:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5432:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5220:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5231:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5243:6:111",
                            "type": ""
                          }
                        ],
                        "src": "5176:277:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5632:243:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5649:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5660:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5642:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5642:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5642:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5683:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5694:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5679:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5679:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5699:2:111",
                                    "type": "",
                                    "value": "53"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5672:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5672:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5672:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5722:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5733:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5718:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5718:18:111"
                                  },
                                  {
                                    "hexValue": "4e6f74206f776e65722f617070726f766564206f722070726576696f7573206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5738:34:111",
                                    "type": "",
                                    "value": "Not owner/approved or previous n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5711:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5711:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5711:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5793:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5804:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5789:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5789:18:111"
                                  },
                                  {
                                    "hexValue": "616d655772617070657220636f6e74726f6c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5809:23:111",
                                    "type": "",
                                    "value": "ameWrapper controller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5782:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5782:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5782:51:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5842:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5854:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5865:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5850:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5850:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5842:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_40bd7efd8eb18d3c0684353e84f337b88c8c7ee778c5dbf71fbef8454e46189e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5609:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5623:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5458:417:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6009:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6019:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6031:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6042:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6027:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6027:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6019:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6061:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6072:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6054:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6054:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6054:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6099:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6110:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6095:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6095:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6119:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6127:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6115:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6115:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6088:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6088:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6088:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5970:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5981:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5989:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6000:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5880:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6225:59:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6242:3:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6251:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6258:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6247:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6247:30:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6235:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6235:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6235:43:111"
                            }
                          ]
                        },
                        "name": "abi_encode_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6209:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6216:3:111",
                            "type": ""
                          }
                        ],
                        "src": "6182:102:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6332:51:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6349:3:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6358:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6365:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6354:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6354:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6342:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6342:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6342:35:111"
                            }
                          ]
                        },
                        "name": "abi_encode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6316:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6323:3:111",
                            "type": ""
                          }
                        ],
                        "src": "6289:94:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6671:829:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6688:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6699:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6681:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6681:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6681:25:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6715:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6725:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6719:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6747:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6758:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6743:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6743:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6763:3:111",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6736:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6736:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6736:31:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6776:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6796:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6790:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6790:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6780:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6823:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6834:3:111",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6819:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6819:19:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6840:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6812:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6812:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6812:35:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6856:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6865:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6860:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6925:91:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6954:9:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6965:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6950:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6950:17:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6969:3:111",
                                              "type": "",
                                              "value": "256"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6946:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6946:27:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6989:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6997:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6985:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6985:14:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7001:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6981:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6981:23:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6975:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6975:30:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6939:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6939:67:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6939:67:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6886:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6889:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6883:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6883:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6897:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6899:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6908:1:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6911:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6904:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6904:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6899:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6879:3:111",
                                "statements": []
                              },
                              "src": "6875:141:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7025:13:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7035:3:111",
                                "type": "",
                                "value": "256"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7029:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7062:9:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "7073:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7058:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7058:22:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7082:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7054:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7054:31:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7087:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7047:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7047:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7047:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7098:121:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7114:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7133:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7141:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7129:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7129:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7146:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7125:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7125:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7110:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7110:104:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7216:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7106:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7106:113:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7098:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7247:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7259:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7270:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7255:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7255:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7228:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7228:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7228:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7302:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7314:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7325:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7310:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7310:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7283:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7283:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7283:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "7356:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7368:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7379:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7364:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7364:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "7338:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7338:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7338:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "7411:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7423:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7434:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7419:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7419:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "7393:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7393:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7393:46:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "7466:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7478:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7489:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7474:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7474:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_uint64",
                                  "nodeType": "YulIdentifier",
                                  "src": "7448:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7448:46:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7448:46:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__to_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6592:9:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "6603:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "6611:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6619:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6627:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6635:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6643:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6651:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6662:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6388:1112:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7652:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7675:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7680:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7688:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "7662:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7662:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7662:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7704:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7718:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7723:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7714:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7714:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7708:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7746:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7750:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7739:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7739:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7739:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7761:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "7768:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7761:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7620:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7625:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7633:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7644:3:111",
                            "type": ""
                          }
                        ],
                        "src": "7505:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7882:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7892:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7904:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7915:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7900:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7900:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7892:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7934:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7945:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7927:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7927:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7927:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7851:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7862:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7873:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7781:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8120:241:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8130:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8142:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8153:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8138:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8138:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8130:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8165:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8175:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8169:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8233:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8248:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8256:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8244:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8244:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8226:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8226:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8226:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8280:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8291:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8276:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8276:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8300:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8308:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8296:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8296:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8269:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8269:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8269:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8332:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8343:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8328:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8328:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8348:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8321:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8321:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8321:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8073:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8084:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8092:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8100:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8111:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7963:398:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8495:168:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8505:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8517:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8528:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8513:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8513:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8505:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8547:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8558:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8540:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8540:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8540:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8585:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8596:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8581:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8581:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8605:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8613:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8601:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8601:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8574:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8574:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8574:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8456:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8467:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8475:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8486:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8366:297:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8842:162:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8859:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8870:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8852:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8852:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8852:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8893:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8904:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8889:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8889:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8909:2:111",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8882:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8882:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8882:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8932:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8943:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8928:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8928:18:111"
                                  },
                                  {
                                    "hexValue": "556e617574686f7269736564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8948:14:111",
                                    "type": "",
                                    "value": "Unauthorised"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8921:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8921:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8921:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8972:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8984:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8995:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8980:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8980:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8972:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5f0a93f24d3028381be5acbc4ed821462983ec319f1f822e408afc4413b15341__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8819:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8833:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8668:336:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9248:619:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9265:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9276:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9258:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9258:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9258:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9300:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9311:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9296:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9296:19:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9317:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9289:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9289:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9289:35:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9350:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9361:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9346:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9346:19:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9367:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9375:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "9333:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9333:49:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9333:49:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "9406:9:111"
                                          },
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9417:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9402:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9402:22:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9426:3:111",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9398:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9398:32:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9432:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9391:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9391:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9391:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9443:122:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9459:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "9478:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9486:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "9474:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9474:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9491:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "9470:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9470:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9455:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9455:104:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9561:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9451:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9451:114:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9443:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9574:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9584:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9578:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9646:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9657:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9642:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9642:20:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9668:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9676:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9664:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9664:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9635:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9635:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9635:45:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9700:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9711:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9696:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9696:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "9720:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9728:10:111",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9716:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9716:23:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9689:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9689:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9689:51:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9760:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9771:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9756:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9756:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "9780:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9788:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9776:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9776:31:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9749:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9749:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9749:59:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9828:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9839:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9824:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9824:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "9849:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9857:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9845:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9845:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9817:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9817:44:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9817:44:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint32_t_uint64_t_address__to_t_string_memory_ptr_t_address_t_uint32_t_uint64_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9177:9:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "9188:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9196:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9204:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9212:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9220:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9228:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9239:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9009:858:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_string_memory_ptrt_addresst_addresst_uint64t_uint32t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value1 := memPtr\n        value2 := abi_decode_address(add(headStart, 64))\n        value3 := abi_decode_address(add(headStart, 96))\n        value4 := abi_decode_uint64(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n        value6 := abi_decode_uint64(add(headStart, 192))\n    }\n    function abi_encode_tuple_t_contract$_IBaseRegistrar_$11222__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_address(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_addresst_uint32t_uint64t_address(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 0x20), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 0x20)\n        value1 := length\n        let value := calldataload(add(headStart, 0x20))\n        validator_revert_address(value)\n        value2 := value\n        value3 := abi_decode_uint32(add(headStart, 64))\n        value4 := abi_decode_uint64(add(headStart, 96))\n        let value_1 := calldataload(add(headStart, 128))\n        validator_revert_address(value_1)\n        value5 := value_1\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_40bd7efd8eb18d3c0684353e84f337b88c8c7ee778c5dbf71fbef8454e46189e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 53)\n        mstore(add(headStart, 64), \"Not owner/approved or previous n\")\n        mstore(add(headStart, 96), \"ameWrapper controller\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_uint64(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffffffffffff))\n    }\n    function abi_encode_uint32(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__to_t_bytes32_t_string_memory_ptr_t_address_t_address_t_uint64_t_uint32_t_uint64__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        let _1 := 32\n        mstore(add(headStart, _1), 224)\n        let length := mload(value1)\n        mstore(add(headStart, 224), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 256), mload(add(add(value1, i), _1)))\n        }\n        let _2 := 256\n        mstore(add(add(headStart, length), _2), 0)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), _2)\n        abi_encode_address(value2, add(headStart, 64))\n        abi_encode_address(value3, add(headStart, 96))\n        abi_encode_uint64(value4, add(headStart, 128))\n        abi_encode_uint32(value5, add(headStart, 160))\n        abi_encode_uint64(value6, add(headStart, 192))\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_5f0a93f24d3028381be5acbc4ed821462983ec319f1f822e408afc4413b15341__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Unauthorised\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_address_t_uint32_t_uint64_t_address__to_t_string_memory_ptr_t_address_t_uint32_t_uint64_t_address__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 160)\n        mstore(add(headStart, 160), value1)\n        calldatacopy(add(headStart, 192), value0, value1)\n        mstore(add(add(headStart, value1), 192), 0)\n        tail := add(add(headStart, and(add(value1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 192)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 0x20), and(value2, _1))\n        mstore(add(headStart, 64), and(value3, 0xffffffff))\n        mstore(add(headStart, 96), and(value4, 0xffffffffffffffff))\n        mstore(add(headStart, 128), and(value5, _1))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "20656": [
                  {
                    "length": 32,
                    "start": 253
                  },
                  {
                    "length": 32,
                    "start": 597
                  }
                ],
                "20659": [
                  {
                    "length": 32,
                    "start": 214
                  },
                  {
                    "length": 32,
                    "start": 464
                  },
                  {
                    "length": 32,
                    "start": 743
                  },
                  {
                    "length": 32,
                    "start": 1048
                  }
                ],
                "20662": [
                  {
                    "length": 32,
                    "start": 134
                  },
                  {
                    "length": 32,
                    "start": 1316
                  },
                  {
                    "length": 32,
                    "start": 1529
                  },
                  {
                    "length": 32,
                    "start": 1674
                  },
                  {
                    "length": 32,
                    "start": 1895
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c80633f15457f116100505780633f15457f146100d15780639bb73e9e146100f8578063f9547a9e1461011f57600080fd5b806324c1af441461006c5780632b20e39714610081575b600080fd5b61007f61007a366004610913565b610132565b005b6100a87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100a87f000000000000000000000000000000000000000000000000000000000000000081565b6100a87f000000000000000000000000000000000000000000000000000000000000000081565b61007f61012d366004610a3f565b6104d8565b8551602080880191909120604080519283018a9052820181905290600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101207f02571be300000000000000000000000000000000000000000000000000000000825260048201819052915060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023b9190610af5565b90503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610296575073ffffffffffffffffffffffffffffffffffffffff811633145b8061035257506040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190610b19565b6103e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4e6f74206f776e65722f617070726f766564206f722070726576696f7573206e60448201527f616d655772617070657220636f6e74726f6c6c6572000000000000000000000060648201526084015b60405180910390fd5b6040517f5b0fc9c3000000000000000000000000000000000000000000000000000000008152600481018390523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635b0fc9c390604401600060405180830381600087803b15801561047157600080fd5b505af1158015610485573d6000803e3d6000fd5b505050507f68b62ced075679cd06e8bec73ce876151221dc2a8b4f2f166371859837bb91848a8a8a8a8a8a8a6040516104c49796959493929190610b3b565b60405180910390a150505050505050505050565b600086866040516104ea929190610c22565b6040519081900381207f6352211e0000000000000000000000000000000000000000000000000000000082526004820181905291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a49190610af5565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152306024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd90606401600060405180830381600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b50506040517f28ed4f6c000000000000000000000000000000000000000000000000000000008152600481018590523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692506328ed4f6c9150604401600060405180830381600087803b1580156106e557600080fd5b505af11580156106f9573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff81163314806107d257506040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063e985e9c590604401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d29190610b19565b610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f7269736564000000000000000000000000000000000000000060448201526064016103da565b7f2dacb9d9fb1aa0f64303648a47866cb480ff876892dd74ab0500f18ac5b875ca88888888888860405161087196959493929190610c32565b60405180910390a15050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146108d457600080fd5b50565b80356108e2816108b2565b919050565b803567ffffffffffffffff811681146108e257600080fd5b803563ffffffff811681146108e257600080fd5b600080600080600080600060e0888a03121561092e57600080fd5b87359650602088013567ffffffffffffffff8082111561094d57600080fd5b818a0191508a601f83011261096157600080fd5b81358181111561097357610973610883565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156109b9576109b9610883565b816040528281528d60208487010111156109d257600080fd5b82602086016020830137600060208483010152809a5050505050506109f9604089016108d7565b9450610a07606089016108d7565b9350610a15608089016108e7565b9250610a2360a089016108ff565b9150610a3160c089016108e7565b905092959891949750929550565b60008060008060008060a08789031215610a5857600080fd5b863567ffffffffffffffff80821115610a7057600080fd5b818901915089601f830112610a8457600080fd5b813581811115610a9357600080fd5b8a6020828501011115610aa557600080fd5b60209283019850965050870135610abb816108b2565b9350610ac9604088016108ff565b9250610ad7606088016108e7565b91506080870135610ae7816108b2565b809150509295509295509295565b600060208284031215610b0757600080fd5b8151610b12816108b2565b9392505050565b600060208284031215610b2b57600080fd5b81518015158114610b1257600080fd5b8781526000602060e08184015288518060e085015260005b81811015610b70578a810183015185820161010001528201610b53565b5061010091506000828286010152817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050610bce604083018873ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff8616606083015267ffffffffffffffff8516608083015263ffffffff841660a083015267ffffffffffffffff831660c083015298975050505050505050565b8183823760009101908152919050565b60a081528560a0820152858760c0830137600060c087830181019190915273ffffffffffffffffffffffffffffffffffffffff958616602083015263ffffffff94909416604082015267ffffffffffffffff9290921660608301529092166080830152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010191905056fea2646970667358221220d8016466469ea9bebcd4164670f88281f48b29a5ade6e123f19441b5bf2b8c3a64736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3F15457F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x9BB73E9E EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0xF9547A9E EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x24C1AF44 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2B20E397 EQ PUSH2 0x81 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA8 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xA8 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0xA3F JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x20 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 ADD DUP11 SWAP1 MSTORE DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH32 0x2571BE300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2571BE3 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x217 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23B SWAP2 SWAP1 PUSH2 0xAF5 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ DUP1 PUSH2 0x296 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ JUMPDEST DUP1 PUSH2 0x352 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x352 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x35 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206F776E65722F617070726F766564206F722070726576696F7573206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616D655772617070657220636F6E74726F6C6C65720000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5B0FC9C300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x5B0FC9C3 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x485 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH32 0x68B62CED075679CD06E8BEC73CE876151221DC2A8B4F2F166371859837BB9184 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x4C4 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x4EA SWAP3 SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x580 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5A4 SWAP2 SWAP1 PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x653 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x28ED4F6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0x28ED4F6C SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ DUP1 PUSH2 0x7D2 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE985E9C5 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D2 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST PUSH2 0x838 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E617574686F72697365640000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3DA JUMP JUMPDEST PUSH32 0x2DACB9D9FB1AA0F64303648A47866CB480FF876892DD74AB0500F18AC5B875CA DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x871 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x8E2 DUP2 PUSH2 0x8B2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x94D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x973 JUMPI PUSH2 0x973 PUSH2 0x883 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x9B9 JUMPI PUSH2 0x9B9 PUSH2 0x883 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP14 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP11 POP POP POP POP POP POP PUSH2 0x9F9 PUSH1 0x40 DUP10 ADD PUSH2 0x8D7 JUMP JUMPDEST SWAP5 POP PUSH2 0xA07 PUSH1 0x60 DUP10 ADD PUSH2 0x8D7 JUMP JUMPDEST SWAP4 POP PUSH2 0xA15 PUSH1 0x80 DUP10 ADD PUSH2 0x8E7 JUMP JUMPDEST SWAP3 POP PUSH2 0xA23 PUSH1 0xA0 DUP10 ADD PUSH2 0x8FF JUMP JUMPDEST SWAP2 POP PUSH2 0xA31 PUSH1 0xC0 DUP10 ADD PUSH2 0x8E7 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xA58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xA93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 POP SWAP7 POP POP DUP8 ADD CALLDATALOAD PUSH2 0xABB DUP2 PUSH2 0x8B2 JUMP JUMPDEST SWAP4 POP PUSH2 0xAC9 PUSH1 0x40 DUP9 ADD PUSH2 0x8FF JUMP JUMPDEST SWAP3 POP PUSH2 0xAD7 PUSH1 0x60 DUP9 ADD PUSH2 0x8E7 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0xAE7 DUP2 PUSH2 0x8B2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB12 DUP2 PUSH2 0x8B2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 DUP2 DUP5 ADD MSTORE DUP9 MLOAD DUP1 PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB70 JUMPI DUP11 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH2 0x100 ADD MSTORE DUP3 ADD PUSH2 0xB53 JUMP JUMPDEST POP PUSH2 0x100 SWAP2 POP PUSH1 0x0 DUP3 DUP3 DUP7 ADD ADD MSTORE DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP PUSH2 0xBCE PUSH1 0x40 DUP4 ADD DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE DUP6 PUSH1 0xA0 DUP3 ADD MSTORE DUP6 DUP8 PUSH1 0xC0 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xC0 DUP8 DUP4 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD8 ADD PUSH5 0x66469EA9BE 0xBC 0xD4 AND CHAINID PUSH17 0xF88281F48B29A5ADE6E123F19441B5BF2B DUP13 GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "167:2229:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1542:852;;;;;;:::i;:::-;;:::i;:::-;;281:41;;;;;;;;2467:42:111;2455:55;;;2437:74;;2425:2;2410:18;281:41:103;;;;;;;251:24;;;;;206:39;;;;;894:642;;;;;;:::i;:::-;;:::i;1542:852::-;1785:23;;;;;;;;;;1843:39;;;;;;4311:19:111;;;4346:12;;4339:28;;;1785:23:103;1765:17;;4383:12:111;;1843:39:103;;;;;;;;;;;;;;1833:50;;1843:39;1833:50;;;;1909:15;;;;;;4552:25:111;;;1833:50:103;-1:-1:-1;1893:13:103;;1909:9;:3;:9;;;;4525:18:111;;1909:15:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1893:31;-1:-1:-1;1955:10:103;:28;1969:14;1955:28;;;:67;;-1:-1:-1;2003:19:103;;;2012:10;2003:19;1955:67;:126;;;-1:-1:-1;2042:39:103;;;;;:20;5097:15:111;;;2042:39:103;;;5079:34:111;2070:10:103;5129:18:111;;;5122:43;2042:3:103;:20;;;;4991:18:111;;2042:39:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1934:226;;;;;;;5660:2:111;1934:226:103;;;5642:21:111;5699:2;5679:18;;;5672:30;5738:34;5718:18;;;5711:62;5809:23;5789:18;;;5782:51;5850:19;;1934:226:103;;;;;;;;;2170:33;;;;;;;;6054:25:111;;;2197:4:103;6095:18:111;;;6088:83;2170:3:103;:12;;;;;6027:18:111;;2170:33:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2218:169;2248:10;2272:5;2291:8;2313;2335:3;2352:5;2371:6;2218:169;;;;;;;;;;;;:::i;:::-;;;;;;;;1755:639;;;1542:852;;;;;;;:::o;894:642::-;1069:15;1111:5;;1095:23;;;;;;;:::i;:::-;;;;;;;;;1150:26;;;;;;4552:25:111;;;1095:23:103;-1:-1:-1;1087:32:103;;1150:9;:17;;;;;4525:18:111;;1150:26:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1186:58;;;;;:22;8244:15:111;;;1186:58:103;;;8226:34:111;1229:4:103;8276:18:111;;;8269:43;8328:18;;;8321:34;;;1129:47:103;;-1:-1:-1;1186:9:103;:22;;;;;;8138:18:111;;1186:58:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1254:41:103;;;;;;;;6054:25:111;;;1289:4:103;6095:18:111;;;6088:83;1254:9:103;:17;;;-1:-1:-1;1254:17:103;;-1:-1:-1;6027:18:111;;1254:41:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1326:24:103;;;1340:10;1326:24;;:94;;-1:-1:-1;1370:50:103;;;;;:26;5097:15:111;;;1370:50:103;;;5079:34:111;1409:10:103;5129:18:111;;;5122:43;1370:9:103;:26;;;;4991:18:111;;1370:50:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1305:153;;;;;;;8870:2:111;1305:153:103;;;8852:21:111;8909:2;8889:18;;;8882:30;8948:14;8928:18;;;8921:42;8980:18;;1305:153:103;8668:336:111;1305:153:103;1473:56;1484:5;;1491:12;1505:5;1512:6;1520:8;1473:56;;;;;;;;;;;:::i;:::-;;;;;;;;1059:477;;894:642;;;;;;:::o;14:184:111:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:154;289:42;282:5;278:54;271:5;268:65;258:93;;347:1;344;337:12;258:93;203:154;:::o;362:134::-;430:20;;459:31;430:20;459:31;:::i;:::-;362:134;;;:::o;501:171::-;568:20;;628:18;617:30;;607:41;;597:69;;662:1;659;652:12;677:163;744:20;;804:10;793:22;;783:33;;773:61;;830:1;827;820:12;845:1417;965:6;973;981;989;997;1005;1013;1066:3;1054:9;1045:7;1041:23;1037:33;1034:53;;;1083:1;1080;1073:12;1034:53;1119:9;1106:23;1096:33;;1180:2;1169:9;1165:18;1152:32;1203:18;1244:2;1236:6;1233:14;1230:34;;;1260:1;1257;1250:12;1230:34;1298:6;1287:9;1283:22;1273:32;;1343:7;1336:4;1332:2;1328:13;1324:27;1314:55;;1365:1;1362;1355:12;1314:55;1401:2;1388:16;1423:2;1419;1416:10;1413:36;;;1429:18;;:::i;:::-;1563:2;1557:9;1625:4;1617:13;;1468:66;1613:22;;;1637:2;1609:31;1605:40;1593:53;;;1661:18;;;1681:22;;;1658:46;1655:72;;;1707:18;;:::i;:::-;1747:10;1743:2;1736:22;1782:2;1774:6;1767:18;1822:7;1817:2;1812;1808;1804:11;1800:20;1797:33;1794:53;;;1843:1;1840;1833:12;1794:53;1899:2;1894;1890;1886:11;1881:2;1873:6;1869:15;1856:46;1944:1;1939:2;1934;1926:6;1922:15;1918:24;1911:35;1965:6;1955:16;;;;;;;1990:38;2024:2;2013:9;2009:18;1990:38;:::i;:::-;1980:48;;2047:38;2081:2;2070:9;2066:18;2047:38;:::i;:::-;2037:48;;2104:38;2137:3;2126:9;2122:19;2104:38;:::i;:::-;2094:48;;2161:38;2194:3;2183:9;2179:19;2161:38;:::i;:::-;2151:48;;2218:38;2251:3;2240:9;2236:19;2218:38;:::i;:::-;2208:48;;845:1417;;;;;;;;;;:::o;3129:1020::-;3234:6;3242;3250;3258;3266;3274;3327:3;3315:9;3306:7;3302:23;3298:33;3295:53;;;3344:1;3341;3334:12;3295:53;3384:9;3371:23;3413:18;3454:2;3446:6;3443:14;3440:34;;;3470:1;3467;3460:12;3440:34;3508:6;3497:9;3493:22;3483:32;;3553:7;3546:4;3542:2;3538:13;3534:27;3524:55;;3575:1;3572;3565:12;3524:55;3615:2;3602:16;3641:2;3633:6;3630:14;3627:34;;;3657:1;3654;3647:12;3627:34;3704:7;3697:4;3688:6;3684:2;3680:15;3676:26;3673:39;3670:59;;;3725:1;3722;3715:12;3670:59;3756:4;3748:13;;;;-1:-1:-1;3780:6:111;-1:-1:-1;;3821:20:111;;3808:34;3851:31;3808:34;3851:31;:::i;:::-;3901:5;-1:-1:-1;3925:37:111;3958:2;3943:18;;3925:37;:::i;:::-;3915:47;;3981:37;4014:2;4003:9;3999:18;3981:37;:::i;:::-;3971:47;;4070:3;4059:9;4055:19;4042:33;4084;4109:7;4084:33;:::i;:::-;4136:7;4126:17;;;3129:1020;;;;;;;;:::o;4588:251::-;4658:6;4711:2;4699:9;4690:7;4686:23;4682:32;4679:52;;;4727:1;4724;4717:12;4679:52;4759:9;4753:16;4778:31;4803:5;4778:31;:::i;:::-;4828:5;4588:251;-1:-1:-1;;;4588:251:111:o;5176:277::-;5243:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:52;;;5312:1;5309;5302:12;5264:52;5344:9;5338:16;5397:5;5390:13;5383:21;5376:5;5373:32;5363:60;;5419:1;5416;5409:12;6388:1112;6699:6;6688:9;6681:25;6662:4;6725:2;6763:3;6758:2;6747:9;6743:18;6736:31;6796:6;6790:13;6840:6;6834:3;6823:9;6819:19;6812:35;6865:1;6875:141;6889:6;6886:1;6883:13;6875:141;;;6985:14;;;6981:23;;6975:30;6950:17;;;6969:3;6946:27;6939:67;6904:10;;6875:141;;;6879:3;7035;7025:13;;7087:1;7082:2;7073:6;7062:9;7058:22;7054:31;7047:42;7216:2;7146:66;7141:2;7133:6;7129:15;7125:88;7114:9;7110:104;7106:113;7098:121;;;;7228:46;7270:2;7259:9;7255:18;7247:6;2843:42;2832:54;2820:67;;2766:127;7228:46;2843:42;2832:54;;7325:2;7310:18;;2820:67;6258:18;6247:30;;7379:3;7364:19;;6235:43;6365:10;6354:22;;7434:3;7419:19;;6342:35;6258:18;6247:30;;7489:3;7474:19;;6235:43;6388:1112;;;;;;;;;;:::o;7505:271::-;7688:6;7680;7675:3;7662:33;7644:3;7714:16;;7739:13;;;7714:16;7505:271;-1:-1:-1;7505:271:111:o;9009:858::-;9276:3;9265:9;9258:22;9317:6;9311:3;9300:9;9296:19;9289:35;9375:6;9367;9361:3;9350:9;9346:19;9333:49;9432:1;9426:3;9402:22;;;9398:32;;9391:43;;;;9584:42;9664:15;;;9657:4;9642:20;;9635:45;9728:10;9716:23;;;;9711:2;9696:18;;9689:51;9788:18;9776:31;;;;9771:2;9756:18;;9749:59;9845:15;;;9839:3;9824:19;;9817:44;9486:2;9474:15;;;-1:-1:-1;9470:88:111;9455:104;9451:114;;;-1:-1:-1;9009:858:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "664200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "ens()": "infinite",
                "oldNameWrapper()": "infinite",
                "registrar()": "infinite",
                "setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)": "infinite",
                "wrapETH2LD(string,address,uint32,uint64,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "ens()": "3f15457f",
              "oldNameWrapper()": "9bb73e9e",
              "registrar()": "2b20e397",
              "setSubnodeRecord(bytes32,string,address,address,uint64,uint32,uint64)": "24c1af44",
              "wrapETH2LD(string,address,uint32,uint64,address)": "f9547a9e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oldNameWrapper\",\"type\":\"address\"},{\"internalType\":\"contract ENS\",\"name\":\"_ens\",\"type\":\"address\"},{\"internalType\":\"contract IBaseRegistrar\",\"name\":\"_registrar\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"SetSubnodeRecord\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"WrapETH2LD\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oldNameWrapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registrar\",\"outputs\":[{\"internalType\":\"contract IBaseRegistrar\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"wrappedOwner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"fuses\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"wrapETH2LD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/mocks/UpgradedNameWrapperMock.sol\":\"UpgradedNameWrapperMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/wrapper/IMetadataService.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface IMetadataService {\\n    function uri(uint256) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xb3f1cf6df01ed7b15e5f2318f6823afbdb586ca38c2124c67955c645647ae9a2\",\"license\":\"MIT\"},\"contracts/wrapper/INameWrapper.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"../ethregistrar/IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"./IMetadataService.sol\\\";\\n\\nuint32 constant CANNOT_UNWRAP = 1;\\nuint32 constant CANNOT_BURN_FUSES = 2;\\nuint32 constant CANNOT_TRANSFER = 4;\\nuint32 constant CANNOT_SET_RESOLVER = 8;\\nuint32 constant CANNOT_SET_TTL = 16;\\nuint32 constant CANNOT_CREATE_SUBDOMAIN = 32;\\nuint32 constant PARENT_CANNOT_CONTROL = 64;\\nuint32 constant CAN_DO_EVERYTHING = 0;\\n\\ninterface INameWrapper is IERC1155 {\\n    event NameWrapped(\\n        bytes32 indexed node,\\n        bytes name,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    );\\n\\n    event NameUnwrapped(bytes32 indexed node, address owner);\\n\\n    event FusesSet(bytes32 indexed node, uint32 fuses, uint64 expiry);\\n\\n    function ens() external view returns (ENS);\\n\\n    function registrar() external view returns (IBaseRegistrar);\\n\\n    function metadataService() external view returns (IMetadataService);\\n\\n    function names(bytes32) external view returns (bytes memory);\\n\\n    function wrap(\\n        bytes calldata name,\\n        address wrappedOwner,\\n        address resolver\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 _expiry,\\n        address resolver\\n    ) external returns (uint64 expiry);\\n\\n    function registerAndWrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint256 duration,\\n        address resolver,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 registrarExpiry);\\n\\n    function renew(\\n        uint256 labelHash,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 expires);\\n\\n    function unwrap(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external;\\n\\n    function unwrapETH2LD(\\n        bytes32 label,\\n        address newRegistrant,\\n        address newController\\n    ) external;\\n\\n    function setFuses(bytes32 node, uint32 fuses)\\n        external\\n        returns (uint32 newFuses);\\n\\n    function setChildFuses(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        string calldata label,\\n        address newOwner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\\n        external\\n        returns (bool);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function ownerOf(uint256 id) external returns (address owner);\\n\\n    function getData(uint256 id)\\n        external\\n        returns (\\n            address,\\n            uint32,\\n            uint64\\n        );\\n\\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\\n        external\\n        view\\n        returns (bool);\\n\\n    function isWrapped(bytes32 node) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9c0ff4675d7faf51638138ecfc76a1f50c1005d1005bfba31c1cac7990a43c30\",\"license\":\"MIT\"},\"contracts/wrapper/mocks/UpgradedNameWrapperMock.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\nimport \\\"../INameWrapper.sol\\\";\\nimport \\\"../../registry/ENS.sol\\\";\\nimport \\\"../../ethregistrar/IBaseRegistrar.sol\\\";\\n\\ncontract UpgradedNameWrapperMock {\\n    address public immutable oldNameWrapper;\\n    ENS public immutable ens;\\n    IBaseRegistrar public immutable registrar;\\n\\n    constructor(\\n        address _oldNameWrapper,\\n        ENS _ens,\\n        IBaseRegistrar _registrar\\n    ) {\\n        oldNameWrapper = _oldNameWrapper;\\n        ens = _ens;\\n        registrar = _registrar;\\n    }\\n\\n    event SetSubnodeRecord(\\n        bytes32 parentNode,\\n        string label,\\n        address newOwner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    );\\n\\n    event WrapETH2LD(\\n        string label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 expiry,\\n        address resolver\\n    );\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 expiry,\\n        address resolver\\n    ) public {\\n        uint256 tokenId = uint256(keccak256(bytes(label)));\\n        address registrant = registrar.ownerOf(tokenId);\\n        registrar.transferFrom(registrant, address(this), tokenId);\\n        registrar.reclaim(tokenId, address(this));\\n        require(\\n            registrant == msg.sender ||\\n                registrar.isApprovedForAll(registrant, msg.sender),\\n            \\\"Unauthorised\\\"\\n        );\\n        emit WrapETH2LD(label, wrappedOwner, fuses, expiry, resolver);\\n    }\\n\\n    function setSubnodeRecord(\\n        bytes32 parentNode,\\n        string memory label,\\n        address newOwner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) public {\\n        bytes32 labelhash = keccak256(bytes(label));\\n        bytes32 node = keccak256(abi.encodePacked(parentNode, labelhash));\\n        address owner = ens.owner(node);\\n        require(\\n            msg.sender == oldNameWrapper ||\\n                owner == msg.sender ||\\n                ens.isApprovedForAll(owner, msg.sender),\\n            \\\"Not owner/approved or previous nameWrapper controller\\\"\\n        );\\n        ens.setOwner(node, address(this));\\n        emit SetSubnodeRecord(\\n            parentNode,\\n            label,\\n            newOwner,\\n            resolver,\\n            ttl,\\n            fuses,\\n            expiry\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0xcab19f01e0d549b21bba317f9e61ef3aa50ed54164c8e479bdad68e56b26fab7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/test/NameGriefer.sol": {
        "NameGriefer": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract INameWrapper",
                  "name": "_wrapper",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                }
              ],
              "name": "destroy",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ens",
              "outputs": [
                {
                  "internalType": "contract ENS",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "wrapper",
              "outputs": [
                {
                  "internalType": "contract INameWrapper",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_20928": {
                  "entryPoint": null,
                  "id": 20928,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_INameWrapper_$18030_fromMemory": {
                  "entryPoint": 310,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "validator_revert_contract_INameWrapper": {
                  "entryPoint": 286,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1025:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "73:86:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "137:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "146:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "149:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "139:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "139:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "139:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "96:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "107:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "122:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "127:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "118:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "118:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "131:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "114:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "114:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "103:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "103:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "93:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "93:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "86:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "86:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "83:70:111"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_INameWrapper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "62:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:145:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "267:184:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "313:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "322:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "325:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "315:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "315:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "315:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "288:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "297:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "284:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "284:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "309:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "280:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "280:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "277:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "338:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "357:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "351:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "351:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "342:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "415:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_INameWrapper",
                                  "nodeType": "YulIdentifier",
                                  "src": "376:38:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "376:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "376:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "430:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "440:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "430:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_INameWrapper_$18030_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "233:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "244:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "256:6:111",
                            "type": ""
                          }
                        ],
                        "src": "164:287:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "550:184:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "596:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "605:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "608:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "598:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "598:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "598:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "571:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "580:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "567:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "567:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "592:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "563:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "563:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "560:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "621:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "640:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "634:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "634:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "625:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "698:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_INameWrapper",
                                  "nodeType": "YulIdentifier",
                                  "src": "659:38:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "659:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "659:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "713:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "723:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "713:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_ENS_$12157_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "516:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "527:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "539:6:111",
                            "type": ""
                          }
                        ],
                        "src": "456:278:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "862:161:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "872:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "884:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "895:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "880:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "880:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "872:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "914:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "929:6:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "945:3:111",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "950:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "941:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "941:11:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "954:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "937:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "937:19:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "925:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "925:32:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "907:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "907:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "907:51:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "978:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "989:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "974:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "974:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1008:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1001:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1001:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "994:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "994:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "967:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "967:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "967:50:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "823:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "834:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "842:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "853:4:111",
                            "type": ""
                          }
                        ],
                        "src": "739:284:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_contract_INameWrapper(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_INameWrapper_$18030_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_INameWrapper(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_ENS_$12157_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_INameWrapper(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b50604051610ddf380380610ddf83398101604081905261002f91610136565b806001600160a01b031660a0816001600160a01b0316815250506000816001600160a01b0316633f15457f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ad9190610136565b6001600160a01b03818116608081905260405163a22cb46560e01b815291851660048301526001602483015291925063a22cb46590604401600060405180830381600087803b1580156100ff57600080fd5b505af1158015610113573d6000803e3d6000fd5b50505050505061015a565b6001600160a01b038116811461013357600080fd5b50565b60006020828403121561014857600080fd5b81516101538161011e565b9392505050565b60805160a051610c4c610193600039600081816101050152818161027c0152818161042401526105250152600060b90152610c4c6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ac210cc711610050578063ac210cc714610100578063bc197c8114610127578063f23a6e611461019357600080fd5b806301ffc9a7146100775780631ca8f08e1461009f5780633f15457f146100b4575b600080fd5b61008a610085366004610794565b6101a6565b60405190151581526020015b60405180910390f35b6100b26100ad366004610826565b61023f565b005b6100db7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100db7f000000000000000000000000000000000000000000000000000000000000000081565b6101626101353660046108d6565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610096565b6101626101a1366004610991565b6102ee565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061023957507f4e2312e0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517feb8ae53000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063eb8ae530906102b890859085903090600090600401610a09565b600060405180830381600087803b1580156102d257600080fd5b505af11580156102e6573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff87163014610374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f70657261746f72206d7573742062652075730000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8616156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f546f6b656e206d757374206265206e6577000000000000000000000000000000604482015260640161036b565b6040517f20c38e2b000000000000000000000000000000000000000000000000000000008152600481018690526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906320c38e2b90602401600060405180830381865afa158015610480573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104c69190810190610aaa565b90506000806104d583826105c6565b909250905060006104e68483610697565b6040517fd8c9921a00000000000000000000000000000000000000000000000000000000815260048101829052602481018590523060448201529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d8c9921a90606401600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b507ff23a6e61000000000000000000000000000000000000000000000000000000009e9d5050505050505050505050505050565b60008083518310610633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e64730000604482015260640161036b565b600084848151811061064757610647610b92565b016020015160f81c905080156106735761066c85610666866001610bf0565b83610770565b9250610678565b600092505b6106828185610bf0565b61068d906001610bf0565b9150509250929050565b60008060006106a685856105c6565b90925090508161073257600185516106be9190610c03565b8414610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d65000000604482015260640161036b565b50600091506102399050565b61073c8582610697565b6040805160208101929092528101839052606001604051602081830303815290604052805190602001209250505092915050565b825160009061077f8385610bf0565b111561078a57600080fd5b5091016020012090565b6000602082840312156107a657600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107d657600080fd5b9392505050565b60008083601f8401126107ef57600080fd5b50813567ffffffffffffffff81111561080757600080fd5b60208301915083602082850101111561081f57600080fd5b9250929050565b6000806020838503121561083957600080fd5b823567ffffffffffffffff81111561085057600080fd5b61085c858286016107dd565b90969095509350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461088c57600080fd5b919050565b60008083601f8401126108a357600080fd5b50813567ffffffffffffffff8111156108bb57600080fd5b6020830191508360208260051b850101111561081f57600080fd5b60008060008060008060008060a0898b0312156108f257600080fd5b6108fb89610868565b975061090960208a01610868565b9650604089013567ffffffffffffffff8082111561092657600080fd5b6109328c838d01610891565b909850965060608b013591508082111561094b57600080fd5b6109578c838d01610891565b909650945060808b013591508082111561097057600080fd5b5061097d8b828c016107dd565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156109aa57600080fd5b6109b387610868565b95506109c160208801610868565b94506040870135935060608701359250608087013567ffffffffffffffff8111156109eb57600080fd5b6109f789828a016107dd565b979a9699509497509295939492505050565b60608152836060820152838560808301376000608085830181019190915273ffffffffffffffffffffffffffffffffffffffff9384166020830152919092166040830152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020808385031215610abd57600080fd5b825167ffffffffffffffff80821115610ad557600080fd5b818501915085601f830112610ae957600080fd5b815181811115610afb57610afb610a7b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610b4157610b41610a7b565b816040528281528886848701011115610b5957600080fd5b600093505b82841015610b7b5784840186015181850187015292850192610b5e565b600086848301015280965050505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561023957610239610bc1565b8181038181111561023957610239610bc156fea2646970667358221220f7ff13e98213c879918afb25e3b1526eb52acf5e52780280a1e90654c2b22ad464736f6c63430008110033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xDDF CODESIZE SUB DUP1 PUSH2 0xDDF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3F15457F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x136 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x40 MLOAD PUSH4 0xA22CB465 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP6 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH4 0xA22CB465 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x15A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x153 DUP2 PUSH2 0x11E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0xC4C PUSH2 0x193 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x105 ADD MSTORE DUP2 DUP2 PUSH2 0x27C ADD MSTORE DUP2 DUP2 PUSH2 0x424 ADD MSTORE PUSH2 0x525 ADD MSTORE PUSH1 0x0 PUSH1 0xB9 ADD MSTORE PUSH2 0xC4C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAC210CC7 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x1CA8F08E EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x794 JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0xAD CALLDATASIZE PUSH1 0x4 PUSH2 0x826 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xDB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xDB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0x8D6 JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x991 JUMP JUMPDEST PUSH2 0x2EE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0x239 JUMPI POP PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEB8AE53000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xEB8AE530 SWAP1 PUSH2 0x2B8 SWAP1 DUP6 SWAP1 DUP6 SWAP1 ADDRESS SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND ADDRESS EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F70657261746F72206D75737420626520757300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206D757374206265206E6577000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x36B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x20C38E2B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x20C38E2B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x480 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4C6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xAAA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x4D5 DUP4 DUP3 PUSH2 0x5C6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x4E6 DUP5 DUP4 PUSH2 0x697 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD8C9921A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xD8C9921A SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x592 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD DUP4 LT PUSH2 0x633 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726561644C6162656C3A20496E646578206F7574206F6620626F756E64730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x36B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x647 JUMPI PUSH2 0x647 PUSH2 0xB92 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP DUP1 ISZERO PUSH2 0x673 JUMPI PUSH2 0x66C DUP6 PUSH2 0x666 DUP7 PUSH1 0x1 PUSH2 0xBF0 JUMP JUMPDEST DUP4 PUSH2 0x770 JUMP JUMPDEST SWAP3 POP PUSH2 0x678 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST PUSH2 0x682 DUP2 DUP6 PUSH2 0xBF0 JUMP JUMPDEST PUSH2 0x68D SWAP1 PUSH1 0x1 PUSH2 0xBF0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x6A6 DUP6 DUP6 PUSH2 0x5C6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x732 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x6BE SWAP2 SWAP1 PUSH2 0xC03 JUMP JUMPDEST DUP5 EQ PUSH2 0x726 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D65686173683A204A756E6B20617420656E64206F66206E616D65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x36B JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x239 SWAP1 POP JUMP JUMPDEST PUSH2 0x73C DUP6 DUP3 PUSH2 0x697 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x77F DUP4 DUP6 PUSH2 0xBF0 JUMP JUMPDEST GT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x7EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x850 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x85C DUP6 DUP3 DUP7 ADD PUSH2 0x7DD JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8FB DUP10 PUSH2 0x868 JUMP JUMPDEST SWAP8 POP PUSH2 0x909 PUSH1 0x20 DUP11 ADD PUSH2 0x868 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x932 DUP13 DUP4 DUP14 ADD PUSH2 0x891 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x957 DUP13 DUP4 DUP14 ADD PUSH2 0x891 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x97D DUP12 DUP3 DUP13 ADD PUSH2 0x7DD JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x9AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B3 DUP8 PUSH2 0x868 JUMP JUMPDEST SWAP6 POP PUSH2 0x9C1 PUSH1 0x20 DUP9 ADD PUSH2 0x868 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F7 DUP10 DUP3 DUP11 ADD PUSH2 0x7DD JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE DUP4 PUSH1 0x60 DUP3 ADD MSTORE DUP4 DUP6 PUSH1 0x80 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x80 DUP6 DUP4 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xAE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xAFB JUMPI PUSH2 0xAFB PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xB41 JUMPI PUSH2 0xB41 PUSH2 0xA7B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xB59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0xB7B JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH2 0xB5E JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x239 JUMPI PUSH2 0x239 PUSH2 0xBC1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x239 JUMPI PUSH2 0x239 PUSH2 0xBC1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 SELFDESTRUCT SGT 0xE9 DUP3 SGT 0xC8 PUSH26 0x918AFB25E3B1526EB52ACF5E52780280A1E90654C2B22AD46473 PUSH16 0x6C634300081100330000000000000000 ",
              "sourceMap": "291:2004:104:-:0;;;441:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;496:8;-1:-1:-1;;;;;486:18:104;;;-1:-1:-1;;;;;486:18:104;;;;;514:8;525;-1:-1:-1;;;;;525:12:104;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;549:10:104;;;;;;;569:47;;-1:-1:-1;;;569:47:104;;925:32:111;;;569:47:104;;;907:51:111;611:4:104;974:18:111;;;967:50;549:10:104;;-1:-1:-1;569:22:104;;880:18:111;;569:47:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;476:147;441:182;291:2004;;14:145:111;-1:-1:-1;;;;;103:31:111;;93:42;;83:70;;149:1;146;139:12;83:70;14:145;:::o;164:287::-;256:6;309:2;297:9;288:7;284:23;280:32;277:52;;;325:1;322;315:12;277:52;357:9;351:16;376:45;415:5;376:45;:::i;:::-;440:5;164:287;-1:-1:-1;;;164:287:111:o;739:284::-;291:2004:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@destroy_20948": {
                  "entryPoint": 575,
                  "id": 20948,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@ens_20893": {
                  "entryPoint": null,
                  "id": 20893,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@keccak_16698": {
                  "entryPoint": 1904,
                  "id": 16698,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@namehash_16752": {
                  "entryPoint": 1687,
                  "id": 16752,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@onERC1155BatchReceived_21049": {
                  "entryPoint": null,
                  "id": 21049,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "@onERC1155Received_21026": {
                  "entryPoint": 750,
                  "id": 21026,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@readLabel_16816": {
                  "entryPoint": 1478,
                  "id": 16816,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@supportsInterface_21066": {
                  "entryPoint": 422,
                  "id": 21066,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@wrapper_20896": {
                  "entryPoint": null,
                  "id": 20896,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 2152,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_uint256_dyn_calldata": {
                  "entryPoint": 2193,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 2013,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 2262,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 8
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 2449,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 1940,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 2086,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 2730,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_calldata_ptr_t_address_t_address__to_t_bytes_memory_ptr_t_address_t_address__fromStack_reversed": {
                  "entryPoint": 2569,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_INameWrapper_$18030__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2e352f30d7ae55afec051558c4813ce120c9ffc625a314a5588a877b346408e5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c5f7637c1dfbb4bf38cd27dbcf7233563de769fef77091aa2f578b0a78cea172__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3056,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 3075,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3009,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 2962,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 2683,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:9375:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "615:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "664:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "673:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "676:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "666:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "666:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "666:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "643:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "651:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "639:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "639:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "658:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "635:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "635:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "628:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "628:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "625:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "689:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "712:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "699:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "699:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "762:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "771:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "774:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "764:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "764:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "764:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "734:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "742:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "731:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "731:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "728:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "787:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "803:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "811:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "799:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "787:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "868:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "877:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "880:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "870:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "870:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "839:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "847:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "835:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "835:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "856:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "831:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "831:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "863:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "828:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "828:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "825:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "578:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "586:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "594:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "604:6:111",
                            "type": ""
                          }
                        ],
                        "src": "543:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "984:320:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1030:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1039:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1042:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1032:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1032:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1032:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1005:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1014:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1001:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1001:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1026:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "997:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "997:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "994:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1055:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1082:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1069:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1069:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1059:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1135:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1144:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1147:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1137:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1137:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1137:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1107:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1115:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1104:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1104:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1101:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1160:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1216:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1227:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1212:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1212:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1236:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1186:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1186:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1164:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1174:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1253:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "1263:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1253:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1280:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1290:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1280:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "942:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "953:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "965:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "973:6:111",
                            "type": ""
                          }
                        ],
                        "src": "895:409:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1423:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1433:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1445:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1456:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1441:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1441:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1433:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1475:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1490:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1498:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1486:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1486:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1468:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1468:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1468:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1392:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1403:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1414:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1309:239:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1676:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1686:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1709:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1694:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1694:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1686:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1728:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1743:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1751:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1739:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1739:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1721:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1721:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1721:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_INameWrapper_$18030__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1645:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1656:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1667:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1553:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1855:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1865:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1887:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1874:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1874:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1865:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1980:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1989:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1992:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1982:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1982:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1982:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1916:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1927:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1934:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1923:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1923:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1913:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1913:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1906:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1906:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1903:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1834:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1845:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1806:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2091:283:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2140:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2149:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2152:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2142:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2142:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2142:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2119:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2127:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2115:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2115:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2134:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2111:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2111:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2104:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2104:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2101:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2165:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2188:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2175:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2175:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2165:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2238:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2247:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2250:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2240:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2240:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2240:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2210:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2218:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2207:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2207:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2204:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2263:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2279:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2287:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2275:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2275:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "2263:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2352:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2361:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2364:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2354:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2354:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2354:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2315:6:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2327:1:111",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2330:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2323:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2323:14:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2311:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2311:27:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2340:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2307:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2307:38:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "2347:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2304:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2304:47:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2301:67:111"
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2054:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2062:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "2070:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2080:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2007:367:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2606:983:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2653:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2662:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2665:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2655:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2655:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2655:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2627:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2636:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2623:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2623:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2648:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2619:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2619:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2616:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2678:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2707:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2688:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2688:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2678:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2726:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2759:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2770:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2755:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2755:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2736:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2736:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2726:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2783:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2814:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2825:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2810:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2810:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2787:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2838:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2848:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2842:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2893:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2902:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2905:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2895:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2895:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2895:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2881:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2889:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2878:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2878:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2875:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2918:96:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2986:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2997:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2982:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2982:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3006:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2944:37:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2944:70:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2922:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2932:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3023:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "3033:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3023:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3050:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "3060:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3050:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3077:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3110:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3121:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3106:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3106:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3093:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3093:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3081:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3154:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3163:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3166:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3156:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3156:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3156:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3140:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3150:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3137:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3137:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3134:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3179:98:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3247:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3258:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3243:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3243:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3269:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "3205:37:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3205:72:111"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3183:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3193:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3286:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "3296:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3286:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3313:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "3323:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "3313:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3340:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3373:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3384:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3369:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3369:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3356:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3356:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3344:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3418:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3427:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3430:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3420:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3420:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3420:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3404:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3414:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3401:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3401:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3398:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3443:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3499:9:111"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3510:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3495:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3495:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3521:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "3469:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3469:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value6_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3447:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value7_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3457:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3538:18:111",
                              "value": {
                                "name": "value6_1",
                                "nodeType": "YulIdentifier",
                                "src": "3548:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3538:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3565:18:111",
                              "value": {
                                "name": "value7_1",
                                "nodeType": "YulIdentifier",
                                "src": "3575:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "3565:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2516:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2527:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2539:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2547:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2555:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2563:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2571:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "2579:6:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "2587:6:111",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "2595:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2379:1210:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3693:149:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3703:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3715:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3726:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3711:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3711:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3703:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3745:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3760:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3768:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3756:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3756:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3738:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3738:98:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3738:98:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3662:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3673:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3684:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3594:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4004:538:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4051:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4060:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4063:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4053:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4053:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4053:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4025:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4034:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4021:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4021:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4046:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4017:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4017:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4014:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4076:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4105:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4086:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4086:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4076:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4124:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4157:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4168:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4153:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4153:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4134:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4134:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4124:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4181:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4208:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4219:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4204:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4204:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4191:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4191:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4181:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4232:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4259:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4270:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4255:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4255:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4242:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4242:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4232:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4283:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4314:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4325:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4310:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4310:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4297:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4297:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4287:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4373:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4382:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4385:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4375:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4375:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4375:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4345:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4353:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4342:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4342:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4339:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4398:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4454:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4465:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4450:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4450:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4474:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4424:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4424:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4402:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4412:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4491:18:111",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "4501:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4491:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4518:18:111",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "4528:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4518:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3930:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3941:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3953:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3961:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3969:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3977:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3985:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3993:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3847:695:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4732:488:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4749:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4760:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4742:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4742:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4742:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4783:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4794:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4779:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4779:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4799:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4772:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4772:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4772:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4832:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4843:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4828:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4828:19:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4849:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4857:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4815:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4815:49:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4815:49:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "4888:9:111"
                                          },
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "4899:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4884:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4884:22:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4908:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4880:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4880:32:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4914:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4873:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4873:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4873:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4925:122:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4941:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "4960:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4968:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4956:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4956:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4973:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4952:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4952:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4937:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4937:104:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5043:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4933:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4933:114:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4925:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5056:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5066:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5060:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5128:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5139:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5124:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5124:20:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5150:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5158:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5146:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5146:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5117:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5117:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5117:45:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5182:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5193:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5178:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5178:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5202:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5210:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5198:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5198:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5171:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5171:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5171:43:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_calldata_ptr_t_address_t_address__to_t_bytes_memory_ptr_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4677:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4688:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4696:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4704:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4712:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4723:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4547:673:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5399:169:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5416:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5427:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5409:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5409:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5409:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5450:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5461:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5446:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5446:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5466:2:111",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5439:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5439:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5439:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5489:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5500:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5485:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5485:18:111"
                                  },
                                  {
                                    "hexValue": "4f70657261746f72206d757374206265207573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5505:21:111",
                                    "type": "",
                                    "value": "Operator must be us"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5478:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5478:49:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5478:49:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5536:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5548:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5559:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5544:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5544:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5536:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c5f7637c1dfbb4bf38cd27dbcf7233563de769fef77091aa2f578b0a78cea172__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5376:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5390:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5225:343:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5747:167:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5764:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5775:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5757:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5757:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5757:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5798:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5809:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5794:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5794:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5814:2:111",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5787:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5787:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5787:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5837:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5848:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5833:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5833:18:111"
                                  },
                                  {
                                    "hexValue": "546f6b656e206d757374206265206e6577",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5853:19:111",
                                    "type": "",
                                    "value": "Token must be new"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5826:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5826:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5826:47:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5882:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5894:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5905:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5890:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5890:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5882:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2e352f30d7ae55afec051558c4813ce120c9ffc625a314a5588a877b346408e5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5724:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5738:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5573:341:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6020:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6030:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6042:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6053:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6038:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6038:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6030:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6072:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6083:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6065:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6065:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6065:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5989:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6000:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6011:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5919:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6133:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6150:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6153:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6143:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6143:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6143:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6247:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6250:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6240:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6240:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6240:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6271:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6274:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6264:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6264:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6264:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6101:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6380:1010:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6390:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6400:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6394:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6447:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6456:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6459:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6449:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6449:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6449:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6422:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6431:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6418:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6418:23:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6443:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6414:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6414:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6411:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6472:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6492:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6486:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6476:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6511:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6521:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6515:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6566:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6575:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6578:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6568:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6568:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6568:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6554:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6562:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6551:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6551:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6548:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6591:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6605:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6616:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6601:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6601:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "6595:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6671:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6680:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6683:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6673:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6673:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6673:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "6650:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6654:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6646:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6646:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6661:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6642:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6642:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6635:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6635:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6632:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6696:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6712:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6706:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6706:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "6700:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6738:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "6740:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6740:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6740:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "6730:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6734:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6727:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6727:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6724:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6769:76:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6779:66:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "6773:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6854:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6874:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6868:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6868:9:111"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6858:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6886:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6908:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_4",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6932:2:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "6936:4:111",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6928:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6928:13:111"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "6943:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "6924:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6924:22:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6948:2:111",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6920:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6920:31:111"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "6953:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6916:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6916:40:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6904:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6904:53:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6890:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7016:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7018:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7018:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7018:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6975:10:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6987:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6972:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6972:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6995:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7007:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6992:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6992:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "6969:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6969:46:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6966:72:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7054:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7058:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7047:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7047:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7047:22:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7085:6:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "7093:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7078:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7078:18:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7078:18:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7142:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7151:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7154:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7144:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7144:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7144:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "7119:2:111"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "7123:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7115:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7115:11:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7128:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7111:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7111:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7133:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7108:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7108:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7105:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7167:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7176:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7171:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7232:83:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7261:6:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7269:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7257:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7257:14:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "7273:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7253:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7253:23:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7292:2:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7296:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7288:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7288:10:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7300:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7284:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7284:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7278:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7278:26:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7246:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7246:59:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7246:59:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7197:1:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "7200:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7194:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7194:9:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7204:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7206:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7215:1:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7218:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7211:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7211:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7206:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7190:3:111",
                                "statements": []
                              },
                              "src": "7186:129:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "7339:6:111"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "7347:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7335:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7335:15:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7352:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7331:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7331:24:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7357:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7324:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7324:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7324:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7368:16:111",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "7378:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7368:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6346:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6357:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6369:6:111",
                            "type": ""
                          }
                        ],
                        "src": "6290:1100:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7552:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7562:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7574:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7585:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7570:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7570:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7562:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7604:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7615:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7597:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7597:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7597:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7642:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7653:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7638:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7638:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7658:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7631:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7631:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7631:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7685:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7696:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7681:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7681:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7705:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7713:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7701:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7701:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7674:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7674:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7674:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7505:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7516:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7524:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7532:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7543:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7395:368:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7942:180:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7959:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7970:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7952:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7952:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7952:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7993:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8004:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7989:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8009:2:111",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7982:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7982:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7982:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8032:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8043:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8028:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8028:18:111"
                                  },
                                  {
                                    "hexValue": "726561644c6162656c3a20496e646578206f7574206f6620626f756e6473",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8048:32:111",
                                    "type": "",
                                    "value": "readLabel: Index out of bounds"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8021:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8021:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8021:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8090:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8102:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8113:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8098:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8098:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8090:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7919:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7933:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7768:354:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8159:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8176:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8179:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8169:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8169:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8169:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8273:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8276:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8266:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8266:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8266:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8297:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8300:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8290:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8290:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8290:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8127:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8348:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8365:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8368:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8358:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8358:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8358:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8462:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8465:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8455:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8455:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8455:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8486:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8489:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8479:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8479:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8479:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8316:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8553:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8563:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8574:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8577:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8570:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8570:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "8563:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8602:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8604:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8604:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8604:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8594:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "8597:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8591:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8591:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8588:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "8536:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "8539:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "8545:3:111",
                            "type": ""
                          }
                        ],
                        "src": "8505:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8684:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8694:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8706:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8709:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "8702:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8702:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "8694:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8735:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8737:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8737:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8737:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "8726:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8732:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8723:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8723:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "8720:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "8666:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "8669:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "8675:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8635:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8942:179:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8959:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8970:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8952:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8952:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8952:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8993:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9004:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8989:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9009:2:111",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8982:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8982:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8982:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9032:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9043:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9028:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9028:18:111"
                                  },
                                  {
                                    "hexValue": "6e616d65686173683a204a756e6b20617420656e64206f66206e616d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9048:31:111",
                                    "type": "",
                                    "value": "namehash: Junk at end of name"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9021:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9021:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9021:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9089:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9101:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9112:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9097:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9097:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9089:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8919:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8933:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8768:353:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9273:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "9290:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9295:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9283:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9283:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9283:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9322:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9327:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9318:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9318:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9332:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9311:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9311:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9311:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9348:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "9359:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9364:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9355:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9355:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "9348:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "9241:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9246:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9254:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9265:3:111",
                            "type": ""
                          }
                        ],
                        "src": "9126:247:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_contract$_ENS_$12157__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_INameWrapper_$18030__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_array_uint256_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value6_1, value7_1 := abi_decode_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value6 := value6_1\n        value7 := value7_1\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr_t_address_t_address__to_t_bytes_memory_ptr_t_address_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        mstore(add(headStart, 96), value1)\n        calldatacopy(add(headStart, 128), value0, value1)\n        mstore(add(add(headStart, value1), 128), 0)\n        tail := add(add(headStart, and(add(value1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 0x20), and(value2, _1))\n        mstore(add(headStart, 64), and(value3, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_c5f7637c1dfbb4bf38cd27dbcf7233563de769fef77091aa2f578b0a78cea172__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Operator must be us\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2e352f30d7ae55afec051558c4813ce120c9ffc625a314a5588a877b346408e5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Token must be new\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _4) { i := add(i, _1) }\n        {\n            mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n        }\n        mstore(add(add(memPtr, _4), _1), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"readLabel: Index out of bounds\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"namehash: Junk at end of name\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "20893": [
                  {
                    "length": 32,
                    "start": 185
                  }
                ],
                "20896": [
                  {
                    "length": 32,
                    "start": 261
                  },
                  {
                    "length": 32,
                    "start": 636
                  },
                  {
                    "length": 32,
                    "start": 1060
                  },
                  {
                    "length": 32,
                    "start": 1317
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100725760003560e01c8063ac210cc711610050578063ac210cc714610100578063bc197c8114610127578063f23a6e611461019357600080fd5b806301ffc9a7146100775780631ca8f08e1461009f5780633f15457f146100b4575b600080fd5b61008a610085366004610794565b6101a6565b60405190151581526020015b60405180910390f35b6100b26100ad366004610826565b61023f565b005b6100db7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100db7f000000000000000000000000000000000000000000000000000000000000000081565b6101626101353660046108d6565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610096565b6101626101a1366004610991565b6102ee565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061023957507f4e2312e0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517feb8ae53000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063eb8ae530906102b890859085903090600090600401610a09565b600060405180830381600087803b1580156102d257600080fd5b505af11580156102e6573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff87163014610374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f70657261746f72206d7573742062652075730000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8616156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f546f6b656e206d757374206265206e6577000000000000000000000000000000604482015260640161036b565b6040517f20c38e2b000000000000000000000000000000000000000000000000000000008152600481018690526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906320c38e2b90602401600060405180830381865afa158015610480573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104c69190810190610aaa565b90506000806104d583826105c6565b909250905060006104e68483610697565b6040517fd8c9921a00000000000000000000000000000000000000000000000000000000815260048101829052602481018590523060448201529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d8c9921a90606401600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b507ff23a6e61000000000000000000000000000000000000000000000000000000009e9d5050505050505050505050505050565b60008083518310610633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e64730000604482015260640161036b565b600084848151811061064757610647610b92565b016020015160f81c905080156106735761066c85610666866001610bf0565b83610770565b9250610678565b600092505b6106828185610bf0565b61068d906001610bf0565b9150509250929050565b60008060006106a685856105c6565b90925090508161073257600185516106be9190610c03565b8414610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d65000000604482015260640161036b565b50600091506102399050565b61073c8582610697565b6040805160208101929092528101839052606001604051602081830303815290604052805190602001209250505092915050565b825160009061077f8385610bf0565b111561078a57600080fd5b5091016020012090565b6000602082840312156107a657600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107d657600080fd5b9392505050565b60008083601f8401126107ef57600080fd5b50813567ffffffffffffffff81111561080757600080fd5b60208301915083602082850101111561081f57600080fd5b9250929050565b6000806020838503121561083957600080fd5b823567ffffffffffffffff81111561085057600080fd5b61085c858286016107dd565b90969095509350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461088c57600080fd5b919050565b60008083601f8401126108a357600080fd5b50813567ffffffffffffffff8111156108bb57600080fd5b6020830191508360208260051b850101111561081f57600080fd5b60008060008060008060008060a0898b0312156108f257600080fd5b6108fb89610868565b975061090960208a01610868565b9650604089013567ffffffffffffffff8082111561092657600080fd5b6109328c838d01610891565b909850965060608b013591508082111561094b57600080fd5b6109578c838d01610891565b909650945060808b013591508082111561097057600080fd5b5061097d8b828c016107dd565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156109aa57600080fd5b6109b387610868565b95506109c160208801610868565b94506040870135935060608701359250608087013567ffffffffffffffff8111156109eb57600080fd5b6109f789828a016107dd565b979a9699509497509295939492505050565b60608152836060820152838560808301376000608085830181019190915273ffffffffffffffffffffffffffffffffffffffff9384166020830152919092166040830152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020808385031215610abd57600080fd5b825167ffffffffffffffff80821115610ad557600080fd5b818501915085601f830112610ae957600080fd5b815181811115610afb57610afb610a7b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610b4157610b41610a7b565b816040528281528886848701011115610b5957600080fd5b600093505b82841015610b7b5784840186015181850187015292850192610b5e565b600086848301015280965050505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561023957610239610bc1565b8181038181111561023957610239610bc156fea2646970667358221220f7ff13e98213c879918afb25e3b1526eb52acf5e52780280a1e90654c2b22ad464736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAC210CC7 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x1CA8F08E EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x3F15457F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x794 JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0xAD CALLDATASIZE PUSH1 0x4 PUSH2 0x826 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xDB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xDB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0x8D6 JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x991 JUMP JUMPDEST PUSH2 0x2EE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0x239 JUMPI POP PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEB8AE53000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xEB8AE530 SWAP1 PUSH2 0x2B8 SWAP1 DUP6 SWAP1 DUP6 SWAP1 ADDRESS SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND ADDRESS EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F70657261746F72206D75737420626520757300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206D757374206265206E6577000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x36B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x20C38E2B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x20C38E2B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x480 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4C6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xAAA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x4D5 DUP4 DUP3 PUSH2 0x5C6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x4E6 DUP5 DUP4 PUSH2 0x697 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD8C9921A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xD8C9921A SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x592 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD DUP4 LT PUSH2 0x633 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726561644C6162656C3A20496E646578206F7574206F6620626F756E64730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x36B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x647 JUMPI PUSH2 0x647 PUSH2 0xB92 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP DUP1 ISZERO PUSH2 0x673 JUMPI PUSH2 0x66C DUP6 PUSH2 0x666 DUP7 PUSH1 0x1 PUSH2 0xBF0 JUMP JUMPDEST DUP4 PUSH2 0x770 JUMP JUMPDEST SWAP3 POP PUSH2 0x678 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST PUSH2 0x682 DUP2 DUP6 PUSH2 0xBF0 JUMP JUMPDEST PUSH2 0x68D SWAP1 PUSH1 0x1 PUSH2 0xBF0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x6A6 DUP6 DUP6 PUSH2 0x5C6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x732 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x6BE SWAP2 SWAP1 PUSH2 0xC03 JUMP JUMPDEST DUP5 EQ PUSH2 0x726 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D65686173683A204A756E6B20617420656E64206F66206E616D65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x36B JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x239 SWAP1 POP JUMP JUMPDEST PUSH2 0x73C DUP6 DUP3 PUSH2 0x697 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x77F DUP4 DUP6 PUSH2 0xBF0 JUMP JUMPDEST GT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x7EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x850 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x85C DUP6 DUP3 DUP7 ADD PUSH2 0x7DD JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8FB DUP10 PUSH2 0x868 JUMP JUMPDEST SWAP8 POP PUSH2 0x909 PUSH1 0x20 DUP11 ADD PUSH2 0x868 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x932 DUP13 DUP4 DUP14 ADD PUSH2 0x891 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x957 DUP13 DUP4 DUP14 ADD PUSH2 0x891 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x97D DUP12 DUP3 DUP13 ADD PUSH2 0x7DD JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x9AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B3 DUP8 PUSH2 0x868 JUMP JUMPDEST SWAP6 POP PUSH2 0x9C1 PUSH1 0x20 DUP9 ADD PUSH2 0x868 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F7 DUP10 DUP3 DUP11 ADD PUSH2 0x7DD JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE DUP4 PUSH1 0x60 DUP3 ADD MSTORE DUP4 DUP6 PUSH1 0x80 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x80 DUP6 DUP4 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xAE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xAFB JUMPI PUSH2 0xAFB PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xB41 JUMPI PUSH2 0xB41 PUSH2 0xA7B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xB59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0xB7B JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH2 0xB5E JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x239 JUMPI PUSH2 0x239 PUSH2 0xBC1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x239 JUMPI PUSH2 0x239 PUSH2 0xBC1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 SELFDESTRUCT SGT 0xE9 DUP3 SGT 0xC8 PUSH26 0x918AFB25E3B1526EB52ACF5E52780280A1E90654C2B22AD46473 PUSH16 0x6C634300081100330000000000000000 ",
              "sourceMap": "291:2004:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1774:519;;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;1774:519:104;;;;;;;;629:107;;;;;;:::i;:::-;;:::i;:::-;;367:24;;;;;;;;1498:42:111;1486:55;;;1468:74;;1456:2;1441:18;367:24:104;1309:239:111;397:37:104;;;;;1514:254;;;;;;:::i;:::-;1718:43;1514:254;;;;;;;;;;;;;;3768:66:111;3756:79;;;3738:98;;3726:2;3711:18;1514:254:104;3594:248:111;742:766:104;;;;;;:::i;:::-;;:::i;1774:519::-;1885:4;1924:25;;;;;;:142;;-1:-1:-1;2041:25:104;;;;;1924:142;1905:161;1774:519;-1:-1:-1;;1774:519:104:o;629:107::-;684:45;;;;;:12;:7;:12;;;;:45;;697:4;;;;711;;726:1;;684:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;629:107;;:::o;742:766::-;911:6;937:25;;;957:4;937:25;929:57;;;;;;;5427:2:111;929:57:104;;;5409:21:111;5466:2;5446:18;;;5439:30;5505:21;5485:18;;;5478:49;5544:18;;929:57:104;;;;;;;;;1004:18;;;;996:48;;;;;;;5775:2:111;996:48:104;;;5757:21:111;5814:2;5794:18;;;5787:30;5853:19;5833:18;;;5826:47;5890:18;;996:48:104;5573:341:111;996:48:104;1102:26;;;;;;;;6065:25:111;;;1082:17:104;;1102:7;:13;;;;;6038:18:111;;1102:26:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1082:46;-1:-1:-1;1139:17:104;;1176;1082:46;1139:17;1176:14;:17::i;:::-;1138:55;;-1:-1:-1;1138:55:104;-1:-1:-1;1203:18:104;1224:21;:4;1138:55;1224:13;:21::i;:::-;1255:52;;;;;;;;7597:25:111;;;7638:18;;;7631:34;;;1301:4:104;7681:18:111;;;7674:83;1203:42:104;;-1:-1:-1;1255:7:104;:14;;;;;7570:18:111;;1255:52:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1463:38:104;;742:766;-1:-1:-1;;;;;;;;;;;;;;742:766:104:o;1700:433:95:-;1798:17;1817:14;1861:4;:11;1855:3;:17;1847:60;;;;;;;7970:2:111;1847:60:95;;;7952:21:111;8009:2;7989:18;;;7982:30;8048:32;8028:18;;;8021:60;8098:18;;1847:60:95;7768:354:111;1847:60:95;1917:11;1945:4;1950:3;1945:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1970:7:95;;1966:129;;2005:26;2012:4;2018:7;:3;2024:1;2018:7;:::i;:::-;2027:3;2005:6;:26::i;:::-;1993:38;;1966:129;;;2082:1;;-1:-1:-1;1966:129:95;2113:9;2119:3;2113;:9;:::i;:::-;:13;;2125:1;2113:13;:::i;:::-;2104:22;;1837:296;1700:433;;;;;:::o;848:449::-;948:7;972:17;991;1012:23;1022:4;1028:6;1012:9;:23::i;:::-;971:64;;-1:-1:-1;971:64:95;-1:-1:-1;971:64:95;1045:152;;1120:1;1106:4;:11;:15;;;;:::i;:::-;1096:6;:25;1088:67;;;;;;;8970:2:111;1088:67:95;;;8952:21:111;9009:2;8989:18;;;8982:30;9048:31;9028:18;;;9021:59;9097:18;;1088:67:95;8768:353:111;1088:67:95;-1:-1:-1;1184:1:95;;-1:-1:-1;1169:17:95;;-1:-1:-1;1169:17:95;1045:152;1252:25;1261:4;1267:9;1252:8;:25::i;:::-;1235:54;;;;;;9283:19:111;;;;9318:12;;9311:28;;;9355:12;;1235:54:95;;;;;;;;;;;;1225:65;;;;;;1206:84;;;;848:449;;;;:::o;343:274::-;507:11;;460;;491:12;500:3;491:6;:12;:::i;:::-;:27;;483:36;;;;;;-1:-1:-1;569:26:95;;583:2;569:26;559:42;;343:274::o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:111:o;543:347::-;594:8;604:6;658:3;651:4;643:6;639:17;635:27;625:55;;676:1;673;666:12;625:55;-1:-1:-1;699:20:111;;742:18;731:30;;728:50;;;774:1;771;764:12;728:50;811:4;803:6;799:17;787:29;;863:3;856:4;847:6;839;835:19;831:30;828:39;825:59;;;880:1;877;870:12;825:59;543:347;;;;;:::o;895:409::-;965:6;973;1026:2;1014:9;1005:7;1001:23;997:32;994:52;;;1042:1;1039;1032:12;994:52;1082:9;1069:23;1115:18;1107:6;1104:30;1101:50;;;1147:1;1144;1137:12;1101:50;1186:58;1236:7;1227:6;1216:9;1212:22;1186:58;:::i;:::-;1263:8;;1160:84;;-1:-1:-1;895:409:111;-1:-1:-1;;;;895:409:111:o;1806:196::-;1874:20;;1934:42;1923:54;;1913:65;;1903:93;;1992:1;1989;1982:12;1903:93;1806:196;;;:::o;2007:367::-;2070:8;2080:6;2134:3;2127:4;2119:6;2115:17;2111:27;2101:55;;2152:1;2149;2142:12;2101:55;-1:-1:-1;2175:20:111;;2218:18;2207:30;;2204:50;;;2250:1;2247;2240:12;2204:50;2287:4;2279:6;2275:17;2263:29;;2347:3;2340:4;2330:6;2327:1;2323:14;2315:6;2311:27;2307:38;2304:47;2301:67;;;2364:1;2361;2354:12;2379:1210;2539:6;2547;2555;2563;2571;2579;2587;2595;2648:3;2636:9;2627:7;2623:23;2619:33;2616:53;;;2665:1;2662;2655:12;2616:53;2688:29;2707:9;2688:29;:::i;:::-;2678:39;;2736:38;2770:2;2759:9;2755:18;2736:38;:::i;:::-;2726:48;;2825:2;2814:9;2810:18;2797:32;2848:18;2889:2;2881:6;2878:14;2875:34;;;2905:1;2902;2895:12;2875:34;2944:70;3006:7;2997:6;2986:9;2982:22;2944:70;:::i;:::-;3033:8;;-1:-1:-1;2918:96:111;-1:-1:-1;3121:2:111;3106:18;;3093:32;;-1:-1:-1;3137:16:111;;;3134:36;;;3166:1;3163;3156:12;3134:36;3205:72;3269:7;3258:8;3247:9;3243:24;3205:72;:::i;:::-;3296:8;;-1:-1:-1;3179:98:111;-1:-1:-1;3384:3:111;3369:19;;3356:33;;-1:-1:-1;3401:16:111;;;3398:36;;;3430:1;3427;3420:12;3398:36;;3469:60;3521:7;3510:8;3499:9;3495:24;3469:60;:::i;:::-;2379:1210;;;;-1:-1:-1;2379:1210:111;;-1:-1:-1;2379:1210:111;;;;;;3548:8;-1:-1:-1;;;2379:1210:111:o;3847:695::-;3953:6;3961;3969;3977;3985;3993;4046:3;4034:9;4025:7;4021:23;4017:33;4014:53;;;4063:1;4060;4053:12;4014:53;4086:29;4105:9;4086:29;:::i;:::-;4076:39;;4134:38;4168:2;4157:9;4153:18;4134:38;:::i;:::-;4124:48;;4219:2;4208:9;4204:18;4191:32;4181:42;;4270:2;4259:9;4255:18;4242:32;4232:42;;4325:3;4314:9;4310:19;4297:33;4353:18;4345:6;4342:30;4339:50;;;4385:1;4382;4375:12;4339:50;4424:58;4474:7;4465:6;4454:9;4450:22;4424:58;:::i;:::-;3847:695;;;;-1:-1:-1;3847:695:111;;-1:-1:-1;3847:695:111;;4501:8;;3847:695;-1:-1:-1;;;3847:695:111:o;4547:673::-;4760:2;4749:9;4742:21;4799:6;4794:2;4783:9;4779:18;4772:34;4857:6;4849;4843:3;4832:9;4828:19;4815:49;4914:1;4908:3;4884:22;;;4880:32;;4873:43;;;;5066:42;5146:15;;;5139:4;5124:20;;5117:45;5198:15;;;;5193:2;5178:18;;5171:43;4968:2;4956:15;;;-1:-1:-1;4952:88:111;4937:104;4933:114;;;-1:-1:-1;4547:673:111:o;6101:184::-;6153:77;6150:1;6143:88;6250:4;6247:1;6240:15;6274:4;6271:1;6264:15;6290:1100;6369:6;6400:2;6443;6431:9;6422:7;6418:23;6414:32;6411:52;;;6459:1;6456;6449:12;6411:52;6492:9;6486:16;6521:18;6562:2;6554:6;6551:14;6548:34;;;6578:1;6575;6568:12;6548:34;6616:6;6605:9;6601:22;6591:32;;6661:7;6654:4;6650:2;6646:13;6642:27;6632:55;;6683:1;6680;6673:12;6632:55;6712:2;6706:9;6734:2;6730;6727:10;6724:36;;;6740:18;;:::i;:::-;6874:2;6868:9;6936:4;6928:13;;6779:66;6924:22;;;6948:2;6920:31;6916:40;6904:53;;;6972:18;;;6992:22;;;6969:46;6966:72;;;7018:18;;:::i;:::-;7058:10;7054:2;7047:22;7093:2;7085:6;7078:18;7133:7;7128:2;7123;7119;7115:11;7111:20;7108:33;7105:53;;;7154:1;7151;7144:12;7105:53;7176:1;7167:10;;7186:129;7200:2;7197:1;7194:9;7186:129;;;7288:10;;;7284:19;;7278:26;7257:14;;;7253:23;;7246:59;7211:10;;;;7186:129;;;7357:1;7352:2;7347;7339:6;7335:15;7331:24;7324:35;7378:6;7368:16;;;;;;;;6290:1100;;;;:::o;8127:184::-;8179:77;8176:1;8169:88;8276:4;8273:1;8266:15;8300:4;8297:1;8290:15;8316:184;8368:77;8365:1;8358:88;8465:4;8462:1;8455:15;8489:4;8486:1;8479:15;8505:125;8570:9;;;8591:10;;;8588:36;;;8604:18;;:::i;8635:128::-;8702:9;;;8723:11;;;8720:37;;;8737:18;;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "629600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "destroy(bytes)": "infinite",
                "ens()": "infinite",
                "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "infinite",
                "onERC1155Received(address,address,uint256,uint256,bytes)": "infinite",
                "supportsInterface(bytes4)": "370",
                "wrapper()": "infinite"
              }
            },
            "methodIdentifiers": {
              "destroy(bytes)": "1ca8f08e",
              "ens()": "3f15457f",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "supportsInterface(bytes4)": "01ffc9a7",
              "wrapper()": "ac210cc7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract INameWrapper\",\"name\":\"_wrapper\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"}],\"name\":\"destroy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapper\",\"outputs\":[{\"internalType\":\"contract INameWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/test/NameGriefer.sol\":\"NameGriefer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n    /**\\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\\n     *\\n     * NOTE: To accept the transfer, this must return\\n     * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n     * (i.e. 0xf23a6e61, or its own function selector).\\n     *\\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param id The ID of the token being transferred\\n     * @param value The amount of tokens being transferred\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256 value,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n\\n    /**\\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\\n     * been updated.\\n     *\\n     * NOTE: To accept the transfer(s), this must return\\n     * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n     * (i.e. 0xbc197c81, or its own function selector).\\n     *\\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155BatchReceived(\\n        address operator,\\n        address from,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/wrapper/BytesUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the ENS namehash of a DNS-encoded name.\\n     * @param self The DNS-encoded name to hash.\\n     * @param offset The offset at which to start hashing.\\n     * @return The namehash of the name.\\n     */\\n    function namehash(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        (bytes32 labelhash, uint256 newOffset) = readLabel(self, offset);\\n        if (labelhash == bytes32(0)) {\\n            require(offset == self.length - 1, \\\"namehash: Junk at end of name\\\");\\n            return bytes32(0);\\n        }\\n        return\\n            keccak256(abi.encodePacked(namehash(self, newOffset), labelhash));\\n    }\\n\\n    /**\\n     * @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\\n     * @param self The byte string to read a label from.\\n     * @param idx The index to read a label at.\\n     * @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\\n     * @return newIdx The index of the start of the next label.\\n     */\\n    function readLabel(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 labelhash, uint256 newIdx)\\n    {\\n        require(idx < self.length, \\\"readLabel: Index out of bounds\\\");\\n        uint256 len = uint256(uint8(self[idx]));\\n        if (len > 0) {\\n            labelhash = keccak(self, idx + 1, len);\\n        } else {\\n            labelhash = bytes32(0);\\n        }\\n        newIdx = idx + len + 1;\\n    }\\n}\\n\",\"keccak256\":\"0xc0d13fcaccd6c3af927106b2ea48eec83c5d0a18d608bde013a53742ac058526\",\"license\":\"MIT\"},\"contracts/wrapper/IMetadataService.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface IMetadataService {\\n    function uri(uint256) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xb3f1cf6df01ed7b15e5f2318f6823afbdb586ca38c2124c67955c645647ae9a2\",\"license\":\"MIT\"},\"contracts/wrapper/INameWrapper.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"../ethregistrar/IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"./IMetadataService.sol\\\";\\n\\nuint32 constant CANNOT_UNWRAP = 1;\\nuint32 constant CANNOT_BURN_FUSES = 2;\\nuint32 constant CANNOT_TRANSFER = 4;\\nuint32 constant CANNOT_SET_RESOLVER = 8;\\nuint32 constant CANNOT_SET_TTL = 16;\\nuint32 constant CANNOT_CREATE_SUBDOMAIN = 32;\\nuint32 constant PARENT_CANNOT_CONTROL = 64;\\nuint32 constant CAN_DO_EVERYTHING = 0;\\n\\ninterface INameWrapper is IERC1155 {\\n    event NameWrapped(\\n        bytes32 indexed node,\\n        bytes name,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    );\\n\\n    event NameUnwrapped(bytes32 indexed node, address owner);\\n\\n    event FusesSet(bytes32 indexed node, uint32 fuses, uint64 expiry);\\n\\n    function ens() external view returns (ENS);\\n\\n    function registrar() external view returns (IBaseRegistrar);\\n\\n    function metadataService() external view returns (IMetadataService);\\n\\n    function names(bytes32) external view returns (bytes memory);\\n\\n    function wrap(\\n        bytes calldata name,\\n        address wrappedOwner,\\n        address resolver\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 _expiry,\\n        address resolver\\n    ) external returns (uint64 expiry);\\n\\n    function registerAndWrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint256 duration,\\n        address resolver,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 registrarExpiry);\\n\\n    function renew(\\n        uint256 labelHash,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 expires);\\n\\n    function unwrap(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external;\\n\\n    function unwrapETH2LD(\\n        bytes32 label,\\n        address newRegistrant,\\n        address newController\\n    ) external;\\n\\n    function setFuses(bytes32 node, uint32 fuses)\\n        external\\n        returns (uint32 newFuses);\\n\\n    function setChildFuses(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        string calldata label,\\n        address newOwner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\\n        external\\n        returns (bool);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function ownerOf(uint256 id) external returns (address owner);\\n\\n    function getData(uint256 id)\\n        external\\n        returns (\\n            address,\\n            uint32,\\n            uint64\\n        );\\n\\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\\n        external\\n        view\\n        returns (bool);\\n\\n    function isWrapped(bytes32 node) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9c0ff4675d7faf51638138ecfc76a1f50c1005d1005bfba31c1cac7990a43c30\",\"license\":\"MIT\"},\"contracts/wrapper/test/NameGriefer.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport {BytesUtils} from \\\"../BytesUtils.sol\\\";\\nimport {INameWrapper} from \\\"../INameWrapper.sol\\\";\\nimport {ENS} from \\\"../../registry/ENS.sol\\\";\\nimport {IERC1155Receiver} from \\\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\\\";\\n\\ncontract NameGriefer is IERC1155Receiver {\\n    using BytesUtils for *;\\n\\n    ENS public immutable ens;\\n    INameWrapper public immutable wrapper;\\n\\n    constructor(INameWrapper _wrapper) {\\n        wrapper = _wrapper;\\n        ENS _ens = _wrapper.ens();\\n        ens = _ens;\\n        _ens.setApprovalForAll(address(_wrapper), true);\\n    }\\n\\n    function destroy(bytes calldata name) public {\\n        wrapper.wrap(name, address(this), address(0));\\n    }\\n\\n    function onERC1155Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256,\\n        bytes calldata\\n    ) external override returns (bytes4) {\\n        require(operator == address(this), \\\"Operator must be us\\\");\\n        require(from == address(0), \\\"Token must be new\\\");\\n\\n        // Unwrap the name\\n        bytes memory name = wrapper.names(bytes32(id));\\n        (bytes32 labelhash, uint256 offset) = name.readLabel(0);\\n        bytes32 parentNode = name.namehash(offset);\\n        wrapper.unwrap(parentNode, labelhash, address(this));\\n\\n        // Here we can do something with the name before it's permanently burned, like\\n        // set the resolver or create subdomains.\\n\\n        return NameGriefer.onERC1155Received.selector;\\n    }\\n\\n    function onERC1155BatchReceived(\\n        address,\\n        address,\\n        uint256[] calldata,\\n        uint256[] calldata,\\n        bytes calldata\\n    ) external override returns (bytes4) {\\n        return NameGriefer.onERC1155BatchReceived.selector;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID)\\n        external\\n        view\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceID == 0x01ffc9a7 || // ERC-165 support (i.e. `bytes4(keccak256('supportsInterface(bytes4)'))`).\\n            interfaceID == 0x4e2312e0; // ERC-1155 `ERC1155TokenReceiver` support (i.e. `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\")) ^ bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`).\\n    }\\n}\\n\",\"keccak256\":\"0x890fe9e6832f7755498895d3c0d8bc64c435254a88cb4782e7289faf8174bdba\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/test/TestBytesUtils.sol": {
        "TestBytesUtils": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "offset",
                  "type": "uint256"
                }
              ],
              "name": "namehash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "offset",
                  "type": "uint256"
                }
              ],
              "name": "readLabel",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061042e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806390497d231461003b578063ecc4401d14610068575b600080fd5b61004e6100493660046102fc565b610089565b604080519283526020830191909152015b60405180910390f35b61007b6100763660046102fc565b6100db565b60405190815260200161005f565b6000806100cf8386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506101289050565b91509150935093915050565b60006101208285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506101fe9050565b949350505050565b6000808351831061019a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e6473000060448201526064015b60405180910390fd5b60008484815181106101ae576101ae610374565b016020015160f81c905080156101da576101d3856101cd8660016103d2565b836102d8565b92506101df565b600092505b6101e981856103d2565b6101f49060016103d2565b9150509250929050565b600080600061020d8585610128565b909250905081610299576001855161022591906103e5565b841461028d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d650000006044820152606401610191565b50600091506102d29050565b6102a385826101fe565b604080516020810192909252810183905260600160405160208183030381529060405280519060200120925050505b92915050565b82516000906102e783856103d2565b11156102f257600080fd5b5091016020012090565b60008060006040848603121561031157600080fd5b833567ffffffffffffffff8082111561032957600080fd5b818601915086601f83011261033d57600080fd5b81358181111561034c57600080fd5b87602082850101111561035e57600080fd5b6020928301989097509590910135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102d2576102d26103a3565b818103818111156102d2576102d26103a356fea264697066735822122032e1e3bce27f8d5d1ff50a8b0ef7976136d1fe1b6cc042317d90d538a5ff84d764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42E DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90497D23 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xECC4401D EQ PUSH2 0x68 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC JUMP JUMPDEST PUSH2 0x89 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7B PUSH2 0x76 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC JUMP JUMPDEST PUSH2 0xDB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCF DUP4 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x128 SWAP1 POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x1FE SWAP1 POP JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD DUP4 LT PUSH2 0x19A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726561644C6162656C3A20496E646578206F7574206F6620626F756E64730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AE JUMPI PUSH2 0x1AE PUSH2 0x374 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH2 0x1D3 DUP6 PUSH2 0x1CD DUP7 PUSH1 0x1 PUSH2 0x3D2 JUMP JUMPDEST DUP4 PUSH2 0x2D8 JUMP JUMPDEST SWAP3 POP PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST PUSH2 0x1E9 DUP2 DUP6 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x1F4 SWAP1 PUSH1 0x1 PUSH2 0x3D2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x20D DUP6 DUP6 PUSH2 0x128 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x299 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x225 SWAP2 SWAP1 PUSH2 0x3E5 JUMP JUMPDEST DUP5 EQ PUSH2 0x28D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D65686173683A204A756E6B20617420656E64206F66206E616D65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x191 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x2D2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A3 DUP6 DUP3 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2E7 DUP4 DUP6 PUSH2 0x3D2 JUMP JUMPDEST GT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2D2 JUMPI PUSH2 0x2D2 PUSH2 0x3A3 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2D2 JUMPI PUSH2 0x2D2 PUSH2 0x3A3 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xE1 0xE3 0xBC 0xE2 PUSH32 0x8D5D1FF50A8B0EF7976136D1FE1B6CC042317D90D538A5FF84D764736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "104:394:105:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@keccak_16698": {
                  "entryPoint": 728,
                  "id": 16698,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@namehash_16752": {
                  "entryPoint": 510,
                  "id": 16752,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@namehash_21105": {
                  "entryPoint": 219,
                  "id": 21105,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@readLabel_16816": {
                  "entryPoint": 296,
                  "id": 16816,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@readLabel_21090": {
                  "entryPoint": 137,
                  "id": 21090,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_uint256": {
                  "entryPoint": 764,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 978,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 997,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 931,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 884,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2726:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "120:559:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "166:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "175:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "168:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "168:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "168:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "141:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "150:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "137:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "137:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "162:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "133:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "133:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "130:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "191:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "218:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "205:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "205:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "195:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "237:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "247:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "241:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "292:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "301:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "304:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "294:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "294:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "294:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "280:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "288:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "277:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "277:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "274:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "317:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "331:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "342:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "327:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "327:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "321:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "397:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "406:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "409:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "399:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "399:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "399:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "376:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "380:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "372:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "372:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "387:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "368:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "368:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "361:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "361:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "358:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "422:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "449:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "436:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "436:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "426:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "479:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "488:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "491:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "481:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "481:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "481:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "467:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "475:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "461:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "547:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "556:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "559:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "549:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "549:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "549:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "518:2:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "522:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "514:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "514:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "531:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "510:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "510:26:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "507:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "507:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "504:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "572:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "586:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "590:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "582:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "582:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "572:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "604:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "614:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "604:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "629:44:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "656:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "667:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "652:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "652:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "639:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "639:34:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "629:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "70:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "81:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "93:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "101:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "109:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:665:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "813:119:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "823:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "835:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "846:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "831:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "831:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "823:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "865:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "876:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "858:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "858:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "858:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "903:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "914:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "899:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "899:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "919:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "892:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "892:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "892:34:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "774:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "785:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "793:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "804:4:111",
                            "type": ""
                          }
                        ],
                        "src": "684:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1038:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1048:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1060:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1071:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1056:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1056:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1048:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1090:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1101:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1083:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1083:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1083:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1007:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1018:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1029:4:111",
                            "type": ""
                          }
                        ],
                        "src": "937:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1293:180:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1310:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1321:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1303:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1303:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1303:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1344:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1355:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1340:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1340:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1360:2:111",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1333:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1333:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1333:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1383:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1394:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1379:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1379:18:111"
                                  },
                                  {
                                    "hexValue": "726561644c6162656c3a20496e646578206f7574206f6620626f756e6473",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1399:32:111",
                                    "type": "",
                                    "value": "readLabel: Index out of bounds"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1372:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1372:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1372:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1441:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1453:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1464:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1449:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1449:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1441:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1270:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1284:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1119:354:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1510:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1527:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1530:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1624:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1627:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1617:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1617:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1617:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1648:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1651:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1641:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1641:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1641:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1478:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1699:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1716:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1719:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1709:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1709:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1709:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1813:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1816:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1806:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1806:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1806:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1837:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1840:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1830:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1830:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1830:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1667:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1904:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1914:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1925:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1928:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1921:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1921:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "1914:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1953:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "1955:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1955:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1955:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1945:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "1948:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1942:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1942:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1939:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1887:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1890:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "1896:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1856:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2035:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2045:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2057:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2060:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "2053:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2053:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "2045:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2086:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2088:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2088:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2088:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "2077:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2083:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2074:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2074:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2071:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2017:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2020:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "2026:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1986:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2293:179:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2310:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2321:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2303:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2303:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2303:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2344:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2355:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2340:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2340:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2360:2:111",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2333:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2333:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2333:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2383:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2394:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2379:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2379:18:111"
                                  },
                                  {
                                    "hexValue": "6e616d65686173683a204a756e6b20617420656e64206f66206e616d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2399:31:111",
                                    "type": "",
                                    "value": "namehash: Junk at end of name"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2372:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2372:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2372:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2440:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2452:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2463:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2448:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2448:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2440:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2270:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2284:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2119:353:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2624:100:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2641:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2646:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2634:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2634:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2634:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2673:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2678:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2669:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2669:12:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2683:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2662:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2662:28:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2662:28:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2699:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2710:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2715:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2706:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2706:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2699:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2592:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2597:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2605:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2616:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2477:247:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 0x20), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 0x20)\n        value1 := length\n        value2 := calldataload(add(headStart, 0x20))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"readLabel: Index out of bounds\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"namehash: Junk at end of name\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c806390497d231461003b578063ecc4401d14610068575b600080fd5b61004e6100493660046102fc565b610089565b604080519283526020830191909152015b60405180910390f35b61007b6100763660046102fc565b6100db565b60405190815260200161005f565b6000806100cf8386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506101289050565b91509150935093915050565b60006101208285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506101fe9050565b949350505050565b6000808351831061019a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e6473000060448201526064015b60405180910390fd5b60008484815181106101ae576101ae610374565b016020015160f81c905080156101da576101d3856101cd8660016103d2565b836102d8565b92506101df565b600092505b6101e981856103d2565b6101f49060016103d2565b9150509250929050565b600080600061020d8585610128565b909250905081610299576001855161022591906103e5565b841461028d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d650000006044820152606401610191565b50600091506102d29050565b6102a385826101fe565b604080516020810192909252810183905260600160405160208183030381529060405280519060200120925050505b92915050565b82516000906102e783856103d2565b11156102f257600080fd5b5091016020012090565b60008060006040848603121561031157600080fd5b833567ffffffffffffffff8082111561032957600080fd5b818601915086601f83011261033d57600080fd5b81358181111561034c57600080fd5b87602082850101111561035e57600080fd5b6020928301989097509590910135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102d2576102d26103a3565b818103818111156102d2576102d26103a356fea264697066735822122032e1e3bce27f8d5d1ff50a8b0ef7976136d1fe1b6cc042317d90d538a5ff84d764736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90497D23 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xECC4401D EQ PUSH2 0x68 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC JUMP JUMPDEST PUSH2 0x89 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7B PUSH2 0x76 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC JUMP JUMPDEST PUSH2 0xDB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCF DUP4 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x128 SWAP1 POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 SWAP3 POP POP PUSH2 0x1FE SWAP1 POP JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD DUP4 LT PUSH2 0x19A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726561644C6162656C3A20496E646578206F7574206F6620626F756E64730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AE JUMPI PUSH2 0x1AE PUSH2 0x374 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH2 0x1D3 DUP6 PUSH2 0x1CD DUP7 PUSH1 0x1 PUSH2 0x3D2 JUMP JUMPDEST DUP4 PUSH2 0x2D8 JUMP JUMPDEST SWAP3 POP PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST PUSH2 0x1E9 DUP2 DUP6 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x1F4 SWAP1 PUSH1 0x1 PUSH2 0x3D2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x20D DUP6 DUP6 PUSH2 0x128 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x299 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x225 SWAP2 SWAP1 PUSH2 0x3E5 JUMP JUMPDEST DUP5 EQ PUSH2 0x28D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D65686173683A204A756E6B20617420656E64206F66206E616D65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x191 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH2 0x2D2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A3 DUP6 DUP3 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2E7 DUP4 DUP6 PUSH2 0x3D2 JUMP JUMPDEST GT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2D2 JUMPI PUSH2 0x2D2 PUSH2 0x3A3 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2D2 JUMPI PUSH2 0x2D2 PUSH2 0x3A3 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xE1 0xE3 0xBC 0xE2 PUSH32 0x8D5D1FF50A8B0EF7976136D1FE1B6CC042317D90D538A5FF84D764736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "104:394:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;163:169;;;;;;:::i;:::-;;:::i;:::-;;;;858:25:111;;;914:2;899:18;;892:34;;;;831:18;163:169:105;;;;;;;;338:158;;;;;;:::i;:::-;;:::i;:::-;;;1083:25:111;;;1071:2;1056:18;338:158:105;937:177:111;163:169:105;264:7;273;303:22;318:6;303:4;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;303:14:105;;:22;-1:-1:-1;;303:14:105;:22;-1:-1:-1;303:22:105:i;:::-;296:29;;;;163:169;;;;;;:::o;338:158::-;438:7;468:21;482:6;468:4;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;468:13:105;;:21;-1:-1:-1;;468:13:105;:21;-1:-1:-1;468:21:105:i;:::-;461:28;338:158;-1:-1:-1;;;;338:158:105:o;1700:433:95:-;1798:17;1817:14;1861:4;:11;1855:3;:17;1847:60;;;;;;;1321:2:111;1847:60:95;;;1303:21:111;1360:2;1340:18;;;1333:30;1399:32;1379:18;;;1372:60;1449:18;;1847:60:95;;;;;;;;;1917:11;1945:4;1950:3;1945:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1970:7:95;;1966:129;;2005:26;2012:4;2018:7;:3;2024:1;2018:7;:::i;:::-;2027:3;2005:6;:26::i;:::-;1993:38;;1966:129;;;2082:1;;-1:-1:-1;1966:129:95;2113:9;2119:3;2113;:9;:::i;:::-;:13;;2125:1;2113:13;:::i;:::-;2104:22;;1837:296;1700:433;;;;;:::o;848:449::-;948:7;972:17;991;1012:23;1022:4;1028:6;1012:9;:23::i;:::-;971:64;;-1:-1:-1;971:64:95;-1:-1:-1;971:64:95;1045:152;;1120:1;1106:4;:11;:15;;;;:::i;:::-;1096:6;:25;1088:67;;;;;;;2321:2:111;1088:67:95;;;2303:21:111;2360:2;2340:18;;;2333:30;2399:31;2379:18;;;2372:59;2448:18;;1088:67:95;2119:353:111;1088:67:95;-1:-1:-1;1184:1:95;;-1:-1:-1;1169:17:95;;-1:-1:-1;1169:17:95;1045:152;1252:25;1261:4;1267:9;1252:8;:25::i;:::-;1235:54;;;;;;2634:19:111;;;;2669:12;;2662:28;;;2706:12;;1235:54:95;;;;;;;;;;;;1225:65;;;;;;1206:84;;;;848:449;;;;;:::o;343:274::-;507:11;;460;;491:12;500:3;491:6;:12;:::i;:::-;:27;;483:36;;;;;;-1:-1:-1;569:26:95;;583:2;569:26;559:42;;343:274::o;14:665:111:-;93:6;101;109;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;218:9;205:23;247:18;288:2;280:6;277:14;274:34;;;304:1;301;294:12;274:34;342:6;331:9;327:22;317:32;;387:7;380:4;376:2;372:13;368:27;358:55;;409:1;406;399:12;358:55;449:2;436:16;475:2;467:6;464:14;461:34;;;491:1;488;481:12;461:34;538:7;531:4;522:6;518:2;514:15;510:26;507:39;504:59;;;559:1;556;549:12;504:59;590:4;582:13;;;;614:6;;-1:-1:-1;652:20:111;;;;639:34;;14:665;-1:-1:-1;;;;14:665:111:o;1478:184::-;1530:77;1527:1;1520:88;1627:4;1624:1;1617:15;1651:4;1648:1;1641:15;1667:184;1719:77;1716:1;1709:88;1816:4;1813:1;1806:15;1840:4;1837:1;1830:15;1856:125;1921:9;;;1942:10;;;1939:36;;;1955:18;;:::i;1986:128::-;2053:9;;;2074:11;;;2071:37;;;2088:18;;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "214000",
                "executionCost": "257",
                "totalCost": "214257"
              },
              "external": {
                "namehash(bytes,uint256)": "infinite",
                "readLabel(bytes,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "namehash(bytes,uint256)": "ecc4401d",
              "readLabel(bytes,uint256)": "90497d23"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"namehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"readLabel\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/test/TestBytesUtils.sol\":\"TestBytesUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/wrapper/BytesUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the ENS namehash of a DNS-encoded name.\\n     * @param self The DNS-encoded name to hash.\\n     * @param offset The offset at which to start hashing.\\n     * @return The namehash of the name.\\n     */\\n    function namehash(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        (bytes32 labelhash, uint256 newOffset) = readLabel(self, offset);\\n        if (labelhash == bytes32(0)) {\\n            require(offset == self.length - 1, \\\"namehash: Junk at end of name\\\");\\n            return bytes32(0);\\n        }\\n        return\\n            keccak256(abi.encodePacked(namehash(self, newOffset), labelhash));\\n    }\\n\\n    /**\\n     * @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\\n     * @param self The byte string to read a label from.\\n     * @param idx The index to read a label at.\\n     * @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\\n     * @return newIdx The index of the start of the next label.\\n     */\\n    function readLabel(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 labelhash, uint256 newIdx)\\n    {\\n        require(idx < self.length, \\\"readLabel: Index out of bounds\\\");\\n        uint256 len = uint256(uint8(self[idx]));\\n        if (len > 0) {\\n            labelhash = keccak(self, idx + 1, len);\\n        } else {\\n            labelhash = bytes32(0);\\n        }\\n        newIdx = idx + len + 1;\\n    }\\n}\\n\",\"keccak256\":\"0xc0d13fcaccd6c3af927106b2ea48eec83c5d0a18d608bde013a53742ac058526\",\"license\":\"MIT\"},\"contracts/wrapper/test/TestBytesUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport {BytesUtils} from \\\"../BytesUtils.sol\\\";\\n\\ncontract TestBytesUtils {\\n    using BytesUtils for *;\\n\\n    function readLabel(bytes calldata name, uint256 offset)\\n        public\\n        pure\\n        returns (bytes32, uint256)\\n    {\\n        return name.readLabel(offset);\\n    }\\n\\n    function namehash(bytes calldata name, uint256 offset)\\n        public\\n        pure\\n        returns (bytes32)\\n    {\\n        return name.namehash(offset);\\n    }\\n}\\n\",\"keccak256\":\"0x77f748641acfff2f2ed6d500db5dc074d0bf87dbccdbdd25b946ae42b9d46fdc\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/wrapper/test/TestNameWrapperReentrancy.sol": {
        "TestNameWrapperReentrancy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "contract INameWrapper",
                  "name": "_nameWrapper",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "_parentNode",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "_labelHash",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "claimToOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_21155": {
                  "entryPoint": null,
                  "id": 21155,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_addresst_contract$_INameWrapper_$18030t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 133,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "validator_revert_address": {
                  "entryPoint": 109,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:682:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "59:86:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "82:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "93:5:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "108:3:111",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "113:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "104:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "104:11:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "117:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "100:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "100:19:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "89:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "89:31:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "79:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "79:42:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "72:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "72:50:111"
                              },
                              "nodeType": "YulIf",
                              "src": "69:70:111"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "48:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14:131:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "304:376:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "351:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "360:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "363:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "353:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "353:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "353:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "325:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "334:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "321:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "321:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "346:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "317:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "317:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "314:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "376:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "395:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "389:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "389:16:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "380:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "439:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "414:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "414:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "414:31:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "454:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "464:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "454:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "478:40:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "503:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "514:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "499:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "499:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:25:111"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "482:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "552:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "527:24:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "527:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "527:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "569:17:111",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "579:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "569:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "595:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "615:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "626:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "611:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "611:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "605:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "605:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "595:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "639:35:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "659:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "670:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "655:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "655:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "649:25:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "639:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_contract$_INameWrapper_$18030t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "246:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "257:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "269:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "277:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "285:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "293:6:111",
                            "type": ""
                          }
                        ],
                        "src": "150:530:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_contract$_INameWrapper_$18030t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161075e38038061075e83398101604081905261002f91610085565b600180546001600160a01b039586166001600160a01b03199182161790915560008054949095169316929092179092556002919091556003556100cd565b6001600160a01b038116811461008257600080fd5b50565b6000806000806080858703121561009b57600080fd5b84516100a68161006d565b60208601519094506100b78161006d565b6040860151606090960151949790965092505050565b610682806100dc6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063905783c614610079578063bc197c8114610083578063f23a6e61146100ec575b600080fd5b61006461005f366004610318565b6100ff565b60405190151581526020015b60405180910390f35b610081610198565b005b6100bb610091366004610488565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610070565b6100bb6100fa3660046105a6565b61024b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061019257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000805460018054600480546040517ff242432a000000000000000000000000000000000000000000000000000000008152309281019290925273ffffffffffffffffffffffffffffffffffffffff92831660248301526044820152606481019290925260a0608483015260a482019390935291169063f242432a9060c401600060405180830381600087803b15801561023157600080fd5b505af1158015610245573d6000803e3d6000fd5b50505050565b6004848155600080546002546003546001546040517fd8c9921a00000000000000000000000000000000000000000000000000000000815295860192909252602485015273ffffffffffffffffffffffffffffffffffffffff9081166044850152919291169063d8c9921a90606401600060405180830381600087803b1580156102d457600080fd5b505af11580156102e8573d6000803e3d6000fd5b507ff23a6e61000000000000000000000000000000000000000000000000000000009a9950505050505050505050565b60006020828403121561032a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461035a57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461038557600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156104005761040061038a565b604052919050565b600082601f83011261041957600080fd5b8135602067ffffffffffffffff8211156104355761043561038a565b8160051b6104448282016103b9565b928352848101820192828101908785111561045e57600080fd5b83870192505b8483101561047d57823582529183019190830190610464565b979650505050505050565b600080600080600060a086880312156104a057600080fd5b6104a986610361565b945060206104b8818801610361565b9450604087013567ffffffffffffffff808211156104d557600080fd5b6104e18a838b01610408565b955060608901359150808211156104f757600080fd5b6105038a838b01610408565b9450608089013591508082111561051957600080fd5b818901915089601f83011261052d57600080fd5b81358181111561053f5761053f61038a565b61056f847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016103b9565b91508082528a8482850101111561058557600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008060008060008060a087890312156105bf57600080fd5b6105c887610361565b95506105d660208801610361565b94506040870135935060608701359250608087013567ffffffffffffffff8082111561060157600080fd5b818901915089601f83011261061557600080fd5b81358181111561062457600080fd5b8a602082850101111561063657600080fd5b602083019450809350505050929550929550929556fea2646970667358221220eba7e94f7a9b7d522535ca9d16d83059c74af9a644554234554021c31455f6d864736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x75E CODESIZE SUB DUP1 PUSH2 0x75E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x85 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x0 DUP1 SLOAD SWAP5 SWAP1 SWAP6 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 SSTORE PUSH2 0xCD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH2 0xA6 DUP2 PUSH2 0x6D JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0xB7 DUP2 PUSH2 0x6D JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x682 DUP1 PUSH2 0xDC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x905783C6 EQ PUSH2 0x79 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x83 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x318 JUMP JUMPDEST PUSH2 0xFF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x81 PUSH2 0x198 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xBB PUSH2 0x91 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x70 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x192 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0xA4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH1 0xC4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x245 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP5 DUP2 SSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xD8C9921A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP6 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP6 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE SWAP2 SWAP3 SWAP2 AND SWAP1 PUSH4 0xD8C9921A SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x400 JUMPI PUSH2 0x400 PUSH2 0x38A JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x435 JUMPI PUSH2 0x435 PUSH2 0x38A JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0x444 DUP3 DUP3 ADD PUSH2 0x3B9 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x47D JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x464 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A9 DUP7 PUSH2 0x361 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 PUSH2 0x4B8 DUP2 DUP9 ADD PUSH2 0x361 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E1 DUP11 DUP4 DUP12 ADD PUSH2 0x408 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x503 DUP11 DUP4 DUP12 ADD PUSH2 0x408 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x53F JUMPI PUSH2 0x53F PUSH2 0x38A JUMP JUMPDEST PUSH2 0x56F DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x3B9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP11 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5C8 DUP8 PUSH2 0x361 JUMP JUMPDEST SWAP6 POP PUSH2 0x5D6 PUSH1 0x20 DUP9 ADD PUSH2 0x361 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB 0xA7 0xE9 0x4F PUSH27 0x9B7D522535CA9D16D83059C74AF9A644554234554021C31455F6D8 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "222:1429:106:-:0;;;409:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;553:5;:14;;-1:-1:-1;;;;;553:14:106;;;-1:-1:-1;;;;;;553:14:106;;;;;;;:5;577:26;;;;;;;;;;;;;;;613:10;:24;;;;647:9;:22;222:1429;;14:131:111;-1:-1:-1;;;;;89:31:111;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:530::-;269:6;277;285;293;346:3;334:9;325:7;321:23;317:33;314:53;;;363:1;360;353:12;314:53;395:9;389:16;414:31;439:5;414:31;:::i;:::-;514:2;499:18;;493:25;464:5;;-1:-1:-1;527:33:111;493:25;527:33;:::i;:::-;626:2;611:18;;605:25;670:2;655:18;;;649:25;150:530;;579:7;;-1:-1:-1;150:530:111;-1:-1:-1;;;150:530:111:o;:::-;222:1429:106;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@claimToOwner_21251": {
                  "entryPoint": 408,
                  "id": 21251,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@onERC1155BatchReceived_21234": {
                  "entryPoint": null,
                  "id": 21234,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@onERC1155Received_21211": {
                  "entryPoint": 587,
                  "id": 21211,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@supportsInterface_21178": {
                  "entryPoint": 255,
                  "id": 21178,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_3081": {
                  "entryPoint": null,
                  "id": 3081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 865,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_uint256_dyn": {
                  "entryPoint": 1032,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr": {
                  "entryPoint": 1160,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 1446,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 792,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_rational_1_by_1_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 953,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 906,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:5586:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "592:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "602:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "624:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "611:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "611:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "602:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "717:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "726:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "729:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "719:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "719:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "653:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "664:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "671:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "660:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "660:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "650:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "650:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "643:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "643:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "640:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "571:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "582:5:111",
                            "type": ""
                          }
                        ],
                        "src": "543:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "776:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "793:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "796:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "786:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "786:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "786:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "890:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "893:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "883:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "883:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "883:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "914:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "917:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "907:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "907:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "907:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "744:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "978:289:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "988:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1004:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "998:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "998:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "988:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1016:117:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1038:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "1054:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1060:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1050:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1050:13:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1065:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1046:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1046:86:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1034:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1034:99:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1020:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1208:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1210:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1210:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1210:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1151:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1163:18:111",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1148:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1148:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1187:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1199:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1184:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1184:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1145:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1145:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1142:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1246:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1250:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1239:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1239:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1239:22:111"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "958:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "967:6:111",
                            "type": ""
                          }
                        ],
                        "src": "933:334:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1336:648:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1385:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1394:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1397:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1387:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1387:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1387:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1364:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1372:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1360:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1360:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1379:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1356:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1356:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1349:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1349:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1346:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1410:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1433:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1420:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1420:20:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1414:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1449:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1459:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1453:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1502:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1504:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1504:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1504:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1478:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1482:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1475:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1475:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1472:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1533:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1547:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1550:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1543:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1543:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1537:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1562:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "1593:2:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1597:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1589:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1589:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1573:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1573:28:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1566:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1610:16:111",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "1623:3:111"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1614:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "1642:3:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1647:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1635:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1635:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1635:15:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1659:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "1670:3:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1675:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1666:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1666:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1659:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1687:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1709:6:111"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "1717:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1705:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1705:15:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1722:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1701:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1701:24:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "1691:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1753:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1762:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1765:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1755:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1755:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1755:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1740:6:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1748:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1737:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1737:15:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1734:35:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1778:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1793:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1801:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1789:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1789:15:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "1782:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1869:86:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1890:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1908:3:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1895:12:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1895:17:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1883:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1883:30:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1883:30:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1926:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1937:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "1942:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1933:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1933:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1926:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1824:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1829:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1821:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1821:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1837:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1839:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1850:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "1855:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1846:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1846:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1839:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1817:3:111",
                                "statements": []
                              },
                              "src": "1813:142:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1964:14:111",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "1973:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1964:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1310:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1318:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1326:5:111",
                            "type": ""
                          }
                        ],
                        "src": "1272:712:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2186:1227:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2233:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2242:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2245:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2235:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2235:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2235:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2207:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2216:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2203:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2203:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2228:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2199:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2199:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2196:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2258:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2287:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2268:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2268:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2258:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2306:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2316:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2310:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2327:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2360:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2371:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2356:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2356:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2337:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2337:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2327:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2384:46:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2415:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2426:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2411:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2411:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2398:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2398:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2388:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2439:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2449:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2443:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2494:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2503:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2506:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2496:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2496:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2496:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2482:6:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2490:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2479:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2479:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2476:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2519:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2562:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2573:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2558:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2558:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2582:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2529:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2529:61:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2519:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2599:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2632:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2643:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2628:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2628:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2615:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2615:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2603:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2676:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2685:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2688:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2678:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2678:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2678:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2662:8:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2672:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2659:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2659:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2656:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2701:73:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2744:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2755:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2740:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2740:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2766:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2711:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2711:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2701:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2783:49:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2816:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2827:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2812:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2812:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2799:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2799:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2787:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2861:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2870:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2873:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2863:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2863:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2863:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2847:8:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2857:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2844:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2844:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2841:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2886:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2900:9:111"
                                  },
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2911:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2896:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2896:24:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2890:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2968:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2977:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2980:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2970:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2970:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2970:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2947:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2951:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2943:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2943:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2958:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2939:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2939:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2932:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2932:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2929:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2993:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3016:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3003:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3003:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2997:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3042:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3044:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3044:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3044:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "3034:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3038:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3031:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3031:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3028:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3073:125:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "3114:2:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3118:4:111",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3110:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3110:13:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3125:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3106:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3106:86:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3194:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3102:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3102:95:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3086:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3086:112:111"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "3077:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "3214:5:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "3221:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3207:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3207:17:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3207:17:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3270:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3279:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3282:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3272:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3272:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3272:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3247:2:111"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "3251:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3243:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3243:11:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3256:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3239:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3239:20:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3261:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3236:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3236:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3233:53:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "3312:5:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3319:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3308:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3308:14:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "3328:2:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3332:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3324:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3324:11:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "3337:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3295:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3295:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3295:45:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "3364:5:111"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "3371:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3360:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3360:14:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3376:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3356:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3356:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3381:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3349:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3349:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3349:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3392:15:111",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "3402:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3392:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2120:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2131:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2143:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2151:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2159:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2167:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2175:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1989:1424:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3517:149:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3527:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3539:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3550:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3535:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3535:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3527:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3569:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3584:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3592:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3580:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3580:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3562:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3562:98:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3562:98:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3486:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3497:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3508:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3418:248:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3828:720:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3875:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3884:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3887:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3877:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3877:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3877:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3849:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3858:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3845:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3845:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3870:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3841:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3841:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3838:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3900:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3929:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3910:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3910:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3900:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3948:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3981:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3992:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3977:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3977:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3958:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3958:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3948:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4005:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4032:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4043:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4028:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4028:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4015:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4015:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4005:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4056:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4083:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4094:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4079:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4079:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4066:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4066:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4056:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4107:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4138:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4149:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4134:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4134:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4121:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4121:33:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4111:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4163:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4173:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4167:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4218:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4227:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4230:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4220:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4220:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4220:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4206:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4214:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4203:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4203:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4200:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4243:32:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4257:9:111"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4268:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4253:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4253:22:111"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4247:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4323:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4332:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4335:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4325:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4325:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4325:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4302:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4306:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4298:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4298:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4313:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4294:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4294:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4287:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4287:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4284:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4348:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4375:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4362:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4362:16:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4352:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4405:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4414:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4417:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4407:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4407:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4407:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4393:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4401:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4390:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4390:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4387:34:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4471:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4480:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4483:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4473:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4473:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4473:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4444:2:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "4448:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4440:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4440:15:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4457:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4436:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4436:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4462:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4433:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4433:37:111"
                              },
                              "nodeType": "YulIf",
                              "src": "4430:57:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4496:21:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4510:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4514:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4506:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4506:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4496:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4526:16:111",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "4536:6:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4526:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3754:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3765:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3777:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3785:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3793:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3801:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3809:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3817:6:111",
                            "type": ""
                          }
                        ],
                        "src": "3671:877:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4846:365:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4856:52:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4866:42:111",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4860:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4924:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4939:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4947:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4935:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4935:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4917:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4917:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4917:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4971:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4982:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4967:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4967:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4991:6:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4999:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4987:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4987:15:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4960:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4960:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4960:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5023:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5034:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5019:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5019:18:111"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5039:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5012:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5012:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5012:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5066:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5077:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5062:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5062:18:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5082:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5055:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5055:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5055:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5109:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5120:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5105:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5105:19:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5098:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5098:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5098:32:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5150:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5161:3:111",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5146:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5146:19:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5167:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5139:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5139:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5139:30:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5178:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5190:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5201:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5186:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5186:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5178:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_rational_1_by_1_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4791:9:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4802:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4810:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4818:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4826:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4837:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4553:658:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5373:211:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5383:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5395:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5406:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5391:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5391:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5383:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5425:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5436:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5418:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5418:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5418:25:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5463:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5474:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5459:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5459:18:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5479:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5452:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5452:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5452:34:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5506:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5517:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5502:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5502:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5526:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5534:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5522:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5522:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5495:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5495:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5495:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5326:9:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5337:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5345:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5353:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5364:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5216:368:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let _3 := shl(5, _1)\n        let dst := allocate_memory(add(_3, _2))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, _3), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let _1 := 32\n        value1 := abi_decode_address(add(headStart, _1))\n        let offset := calldataload(add(headStart, 64))\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _2) { revert(0, 0) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset_2)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := calldataload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(_4, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _1))\n        mstore(array, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, _1), add(_3, _1), _4)\n        mstore(add(add(array, _4), _1), 0)\n        value4 := array\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value4 := add(_2, 32)\n        value5 := length\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_rational_1_by_1_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        mstore(add(headStart, 160), 0)\n        tail := add(headStart, 192)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063905783c614610079578063bc197c8114610083578063f23a6e61146100ec575b600080fd5b61006461005f366004610318565b6100ff565b60405190151581526020015b60405180910390f35b610081610198565b005b6100bb610091366004610488565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610070565b6100bb6100fa3660046105a6565b61024b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061019257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000805460018054600480546040517ff242432a000000000000000000000000000000000000000000000000000000008152309281019290925273ffffffffffffffffffffffffffffffffffffffff92831660248301526044820152606481019290925260a0608483015260a482019390935291169063f242432a9060c401600060405180830381600087803b15801561023157600080fd5b505af1158015610245573d6000803e3d6000fd5b50505050565b6004848155600080546002546003546001546040517fd8c9921a00000000000000000000000000000000000000000000000000000000815295860192909252602485015273ffffffffffffffffffffffffffffffffffffffff9081166044850152919291169063d8c9921a90606401600060405180830381600087803b1580156102d457600080fd5b505af11580156102e8573d6000803e3d6000fd5b507ff23a6e61000000000000000000000000000000000000000000000000000000009a9950505050505050505050565b60006020828403121561032a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461035a57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461038557600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156104005761040061038a565b604052919050565b600082601f83011261041957600080fd5b8135602067ffffffffffffffff8211156104355761043561038a565b8160051b6104448282016103b9565b928352848101820192828101908785111561045e57600080fd5b83870192505b8483101561047d57823582529183019190830190610464565b979650505050505050565b600080600080600060a086880312156104a057600080fd5b6104a986610361565b945060206104b8818801610361565b9450604087013567ffffffffffffffff808211156104d557600080fd5b6104e18a838b01610408565b955060608901359150808211156104f757600080fd5b6105038a838b01610408565b9450608089013591508082111561051957600080fd5b818901915089601f83011261052d57600080fd5b81358181111561053f5761053f61038a565b61056f847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016103b9565b91508082528a8482850101111561058557600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008060008060008060a087890312156105bf57600080fd5b6105c887610361565b95506105d660208801610361565b94506040870135935060608701359250608087013567ffffffffffffffff8082111561060157600080fd5b818901915089601f83011261061557600080fd5b81358181111561062457600080fd5b8a602082850101111561063657600080fd5b602083019450809350505050929550929550929556fea2646970667358221220eba7e94f7a9b7d522535ca9d16d83059c74af9a644554234554021c31455f6d864736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x905783C6 EQ PUSH2 0x79 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x83 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x318 JUMP JUMPDEST PUSH2 0xFF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x81 PUSH2 0x198 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xBB PUSH2 0x91 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x70 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x192 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0xA4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH1 0xC4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x245 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP5 DUP2 SSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xD8C9921A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP6 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP6 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE SWAP2 SWAP3 SWAP2 AND SWAP1 PUSH4 0xD8C9921A SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x400 JUMPI PUSH2 0x400 PUSH2 0x38A JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x435 JUMPI PUSH2 0x435 PUSH2 0x38A JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0x444 DUP3 DUP3 ADD PUSH2 0x3B9 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x47D JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x464 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A9 DUP7 PUSH2 0x361 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 PUSH2 0x4B8 DUP2 DUP9 ADD PUSH2 0x361 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E1 DUP11 DUP4 DUP12 ADD PUSH2 0x408 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x503 DUP11 DUP4 DUP12 ADD PUSH2 0x408 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x53F JUMPI PUSH2 0x53F PUSH2 0x38A JUMP JUMPDEST PUSH2 0x56F DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x3B9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP11 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5C8 DUP8 PUSH2 0x361 JUMP JUMPDEST SWAP6 POP PUSH2 0x5D6 PUSH1 0x20 DUP9 ADD PUSH2 0x361 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB 0xA7 0xE9 0x4F PUSH27 0x9B7D522535CA9D16D83059C74AF9A644554234554021C31455F6D8 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "222:1429:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;682:289;;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;682:289:106;;;;;;;;1535:114;;;:::i;:::-;;1282:247;;;;;;:::i;:::-;1486:36;1282:247;;;;;;;;;;;3592:66:111;3580:79;;;3562:98;;3550:2;3535:18;1282:247:106;3418:248:111;977:299:106;;;;;;:::i;:::-;;:::i;682:289::-;824:4;863:49;;;878:34;863:49;;:101;;-1:-1:-1;952:25:16;937:40;;;;928:36:106;844:120;682:289;-1:-1:-1;;682:289:106:o;1535:114::-;1576:11;;;;1620:5;;1627:7;;;1576:66;;;;;1613:4;1576:66;;;4917:34:111;;;;1576:11:106;1620:5;;;4967:18:111;;;4960:43;5019:18;;;5012:34;5062:18;;;5055:34;;;;5126:3;5105:19;;;5098:32;5146:19;;;5139:30;;;;1576:11:106;;;:28;;5186:19:111;;1576:66:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1535:114::o;977:299::-;1149:7;:13;;;1131:6;1172:11;;1191:10;;1203:9;;1172:11;1214:5;1172:48;;;;;;;;5418:25:111;;;;5459:18;;;5452:34;1172:11:106;1214:5;;;5502:18:111;;;5495:83;1131:6:106;;1172:11;;;:18;;5391::111;;1172:48:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1238:31:106;;977:299;-1:-1:-1;;;;;;;;;;977:299:106:o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:111:o;543:196::-;611:20;;671:42;660:54;;650:65;;640:93;;729:1;726;719:12;640:93;543:196;;;:::o;744:184::-;796:77;793:1;786:88;893:4;890:1;883:15;917:4;914:1;907:15;933:334;1004:2;998:9;1060:2;1050:13;;1065:66;1046:86;1034:99;;1163:18;1148:34;;1184:22;;;1145:62;1142:88;;;1210:18;;:::i;:::-;1246:2;1239:22;933:334;;-1:-1:-1;933:334:111:o;1272:712::-;1326:5;1379:3;1372:4;1364:6;1360:17;1356:27;1346:55;;1397:1;1394;1387:12;1346:55;1433:6;1420:20;1459:4;1482:18;1478:2;1475:26;1472:52;;;1504:18;;:::i;:::-;1550:2;1547:1;1543:10;1573:28;1597:2;1593;1589:11;1573:28;:::i;:::-;1635:15;;;1705;;;1701:24;;;1666:12;;;;1737:15;;;1734:35;;;1765:1;1762;1755:12;1734:35;1801:2;1793:6;1789:15;1778:26;;1813:142;1829:6;1824:3;1821:15;1813:142;;;1895:17;;1883:30;;1846:12;;;;1933;;;;1813:142;;;1973:5;1272:712;-1:-1:-1;;;;;;;1272:712:111:o;1989:1424::-;2143:6;2151;2159;2167;2175;2228:3;2216:9;2207:7;2203:23;2199:33;2196:53;;;2245:1;2242;2235:12;2196:53;2268:29;2287:9;2268:29;:::i;:::-;2258:39;;2316:2;2337:38;2371:2;2360:9;2356:18;2337:38;:::i;:::-;2327:48;;2426:2;2415:9;2411:18;2398:32;2449:18;2490:2;2482:6;2479:14;2476:34;;;2506:1;2503;2496:12;2476:34;2529:61;2582:7;2573:6;2562:9;2558:22;2529:61;:::i;:::-;2519:71;;2643:2;2632:9;2628:18;2615:32;2599:48;;2672:2;2662:8;2659:16;2656:36;;;2688:1;2685;2678:12;2656:36;2711:63;2766:7;2755:8;2744:9;2740:24;2711:63;:::i;:::-;2701:73;;2827:3;2816:9;2812:19;2799:33;2783:49;;2857:2;2847:8;2844:16;2841:36;;;2873:1;2870;2863:12;2841:36;2911:8;2900:9;2896:24;2886:34;;2958:7;2951:4;2947:2;2943:13;2939:27;2929:55;;2980:1;2977;2970:12;2929:55;3016:2;3003:16;3038:2;3034;3031:10;3028:36;;;3044:18;;:::i;:::-;3086:112;3194:2;3125:66;3118:4;3114:2;3110:13;3106:86;3102:95;3086:112;:::i;:::-;3073:125;;3221:2;3214:5;3207:17;3261:7;3256:2;3251;3247;3243:11;3239:20;3236:33;3233:53;;;3282:1;3279;3272:12;3233:53;3337:2;3332;3328;3324:11;3319:2;3312:5;3308:14;3295:45;3381:1;3376:2;3371;3364:5;3360:14;3356:23;3349:34;;3402:5;3392:15;;;;;1989:1424;;;;;;;;:::o;3671:877::-;3777:6;3785;3793;3801;3809;3817;3870:3;3858:9;3849:7;3845:23;3841:33;3838:53;;;3887:1;3884;3877:12;3838:53;3910:29;3929:9;3910:29;:::i;:::-;3900:39;;3958:38;3992:2;3981:9;3977:18;3958:38;:::i;:::-;3948:48;;4043:2;4032:9;4028:18;4015:32;4005:42;;4094:2;4083:9;4079:18;4066:32;4056:42;;4149:3;4138:9;4134:19;4121:33;4173:18;4214:2;4206:6;4203:14;4200:34;;;4230:1;4227;4220:12;4200:34;4268:6;4257:9;4253:22;4243:32;;4313:7;4306:4;4302:2;4298:13;4294:27;4284:55;;4335:1;4332;4325:12;4284:55;4375:2;4362:16;4401:2;4393:6;4390:14;4387:34;;;4417:1;4414;4407:12;4387:34;4462:7;4457:2;4448:6;4444:2;4440:15;4436:24;4433:37;4430:57;;;4483:1;4480;4473:12;4430:57;4514:2;4510;4506:11;4496:21;;4536:6;4526:16;;;;;3671:877;;;;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "333200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "claimToOwner()": "infinite",
                "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "infinite",
                "onERC1155Received(address,address,uint256,uint256,bytes)": "infinite",
                "supportsInterface(bytes4)": "347"
              }
            },
            "methodIdentifiers": {
              "claimToOwner()": "905783c6",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"contract INameWrapper\",\"name\":\"_nameWrapper\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_parentNode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_labelHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"claimToOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/wrapper/test/TestNameWrapperReentrancy.sol\":\"TestNameWrapperReentrancy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n        external\\n        view\\n        returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the caller.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 id,\\n        uint256 amount,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * Emits a {TransferBatch} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `amounts` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata amounts,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n    /**\\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\\n     *\\n     * NOTE: To accept the transfer, this must return\\n     * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n     * (i.e. 0xf23a6e61, or its own function selector).\\n     *\\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param id The ID of the token being transferred\\n     * @param value The amount of tokens being transferred\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155Received(\\n        address operator,\\n        address from,\\n        uint256 id,\\n        uint256 value,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n\\n    /**\\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\\n     * been updated.\\n     *\\n     * NOTE: To accept the transfer(s), this must return\\n     * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n     * (i.e. 0xbc197c81, or its own function selector).\\n     *\\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n     * @param from The address which previously owned the token\\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n     * @param data Additional data with no specified format\\n     * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n     */\\n    function onERC1155BatchReceived(\\n        address operator,\\n        address from,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/ethregistrar/IBaseRegistrar.sol\":{\"content\":\"import \\\"../registry/ENS.sol\\\";\\nimport \\\"./IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\n\\ninterface IBaseRegistrar is IERC721 {\\n    event ControllerAdded(address indexed controller);\\n    event ControllerRemoved(address indexed controller);\\n    event NameMigrated(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRegistered(\\n        uint256 indexed id,\\n        address indexed owner,\\n        uint256 expires\\n    );\\n    event NameRenewed(uint256 indexed id, uint256 expires);\\n\\n    // Authorises a controller, who can register and renew domains.\\n    function addController(address controller) external;\\n\\n    // Revoke controller permission for an address.\\n    function removeController(address controller) external;\\n\\n    // Set the resolver for the TLD this registrar manages.\\n    function setResolver(address resolver) external;\\n\\n    // Returns the expiration timestamp of the specified label hash.\\n    function nameExpires(uint256 id) external view returns (uint256);\\n\\n    // Returns true iff the specified name is available for registration.\\n    function available(uint256 id) external view returns (bool);\\n\\n    /**\\n     * @dev Register a name.\\n     */\\n    function register(\\n        uint256 id,\\n        address owner,\\n        uint256 duration\\n    ) external returns (uint256);\\n\\n    function renew(uint256 id, uint256 duration) external returns (uint256);\\n\\n    /**\\n     * @dev Reclaim ownership of a name in ENS, if you own it in the registrar.\\n     */\\n    function reclaim(uint256 id, address owner) external;\\n}\\n\",\"keccak256\":\"0x9ac51351ff72d73083aed62b7cdad4c07e9d1eb68401d7fd8457bdd828f2c6fe\"},\"contracts/registry/ENS.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ninterface ENS {\\n    // Logged when the owner of a node assigns a new owner to a subnode.\\n    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);\\n\\n    // Logged when the owner of a node transfers ownership to a new account.\\n    event Transfer(bytes32 indexed node, address owner);\\n\\n    // Logged when the resolver for a node changes.\\n    event NewResolver(bytes32 indexed node, address resolver);\\n\\n    // Logged when the TTL of a node changes\\n    event NewTTL(bytes32 indexed node, uint64 ttl);\\n\\n    // Logged when an operator is added or removed.\\n    event ApprovalForAll(\\n        address indexed owner,\\n        address indexed operator,\\n        bool approved\\n    );\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external returns (bytes32);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setOwner(bytes32 node, address owner) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    function owner(bytes32 node) external view returns (address);\\n\\n    function resolver(bytes32 node) external view returns (address);\\n\\n    function ttl(bytes32 node) external view returns (uint64);\\n\\n    function recordExists(bytes32 node) external view returns (bool);\\n\\n    function isApprovedForAll(address owner, address operator)\\n        external\\n        view\\n        returns (bool);\\n}\\n\",\"keccak256\":\"0xf79be82c1a2eb0a77fba4e0972221912e803309081ca460fd2cf61653e55758a\"},\"contracts/wrapper/IMetadataService.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\ninterface IMetadataService {\\n    function uri(uint256) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xb3f1cf6df01ed7b15e5f2318f6823afbdb586ca38c2124c67955c645647ae9a2\",\"license\":\"MIT\"},\"contracts/wrapper/INameWrapper.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../registry/ENS.sol\\\";\\nimport \\\"../ethregistrar/IBaseRegistrar.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"./IMetadataService.sol\\\";\\n\\nuint32 constant CANNOT_UNWRAP = 1;\\nuint32 constant CANNOT_BURN_FUSES = 2;\\nuint32 constant CANNOT_TRANSFER = 4;\\nuint32 constant CANNOT_SET_RESOLVER = 8;\\nuint32 constant CANNOT_SET_TTL = 16;\\nuint32 constant CANNOT_CREATE_SUBDOMAIN = 32;\\nuint32 constant PARENT_CANNOT_CONTROL = 64;\\nuint32 constant CAN_DO_EVERYTHING = 0;\\n\\ninterface INameWrapper is IERC1155 {\\n    event NameWrapped(\\n        bytes32 indexed node,\\n        bytes name,\\n        address owner,\\n        uint32 fuses,\\n        uint64 expiry\\n    );\\n\\n    event NameUnwrapped(bytes32 indexed node, address owner);\\n\\n    event FusesSet(bytes32 indexed node, uint32 fuses, uint64 expiry);\\n\\n    function ens() external view returns (ENS);\\n\\n    function registrar() external view returns (IBaseRegistrar);\\n\\n    function metadataService() external view returns (IMetadataService);\\n\\n    function names(bytes32) external view returns (bytes memory);\\n\\n    function wrap(\\n        bytes calldata name,\\n        address wrappedOwner,\\n        address resolver\\n    ) external;\\n\\n    function wrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint32 fuses,\\n        uint64 _expiry,\\n        address resolver\\n    ) external returns (uint64 expiry);\\n\\n    function registerAndWrapETH2LD(\\n        string calldata label,\\n        address wrappedOwner,\\n        uint256 duration,\\n        address resolver,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 registrarExpiry);\\n\\n    function renew(\\n        uint256 labelHash,\\n        uint256 duration,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (uint256 expires);\\n\\n    function unwrap(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner\\n    ) external;\\n\\n    function unwrapETH2LD(\\n        bytes32 label,\\n        address newRegistrant,\\n        address newController\\n    ) external;\\n\\n    function setFuses(bytes32 node, uint32 fuses)\\n        external\\n        returns (uint32 newFuses);\\n\\n    function setChildFuses(\\n        bytes32 parentNode,\\n        bytes32 labelhash,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external;\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        string calldata label,\\n        address owner,\\n        address resolver,\\n        uint64 ttl,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function setRecord(\\n        bytes32 node,\\n        address owner,\\n        address resolver,\\n        uint64 ttl\\n    ) external;\\n\\n    function setSubnodeOwner(\\n        bytes32 node,\\n        string calldata label,\\n        address newOwner,\\n        uint32 fuses,\\n        uint64 expiry\\n    ) external returns (bytes32);\\n\\n    function isTokenOwnerOrApproved(bytes32 node, address addr)\\n        external\\n        returns (bool);\\n\\n    function setResolver(bytes32 node, address resolver) external;\\n\\n    function setTTL(bytes32 node, uint64 ttl) external;\\n\\n    function ownerOf(uint256 id) external returns (address owner);\\n\\n    function getData(uint256 id)\\n        external\\n        returns (\\n            address,\\n            uint32,\\n            uint64\\n        );\\n\\n    function allFusesBurned(bytes32 node, uint32 fuseMask)\\n        external\\n        view\\n        returns (bool);\\n\\n    function isWrapped(bytes32 node) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9c0ff4675d7faf51638138ecfc76a1f50c1005d1005bfba31c1cac7990a43c30\",\"license\":\"MIT\"},\"contracts/wrapper/test/TestNameWrapperReentrancy.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ~0.8.17;\\n\\nimport \\\"../INameWrapper.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\ncontract TestNameWrapperReentrancy is ERC165, IERC1155Receiver {\\n    INameWrapper nameWrapper;\\n    address owner;\\n    bytes32 parentNode;\\n    bytes32 labelHash;\\n    uint256 tokenId;\\n\\n    constructor(\\n        address _owner,\\n        INameWrapper _nameWrapper,\\n        bytes32 _parentNode,\\n        bytes32 _labelHash\\n    ) {\\n        owner = _owner;\\n        nameWrapper = _nameWrapper;\\n        parentNode = _parentNode;\\n        labelHash = _labelHash;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceId)\\n        public\\n        view\\n        virtual\\n        override(ERC165, IERC165)\\n        returns (bool)\\n    {\\n        return\\n            interfaceId == type(IERC1155Receiver).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    function onERC1155Received(\\n        address,\\n        address,\\n        uint256 _id,\\n        uint256,\\n        bytes calldata\\n    ) public override returns (bytes4) {\\n        tokenId = _id;\\n        nameWrapper.unwrap(parentNode, labelHash, owner);\\n\\n        return this.onERC1155Received.selector;\\n    }\\n\\n    function onERC1155BatchReceived(\\n        address,\\n        address,\\n        uint256[] memory,\\n        uint256[] memory,\\n        bytes memory\\n    ) public virtual override returns (bytes4) {\\n        return this.onERC1155BatchReceived.selector;\\n    }\\n\\n    function claimToOwner() public {\\n        nameWrapper.safeTransferFrom(address(this), owner, tokenId, 1, \\\"\\\");\\n    }\\n}\\n\",\"keccak256\":\"0xa8afd9b54738ff2ec9bd6c75590c2bbd38ff88abb16723e6f9a43d7b1214c3bf\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 21118,
                "contract": "contracts/wrapper/test/TestNameWrapperReentrancy.sol:TestNameWrapperReentrancy",
                "label": "nameWrapper",
                "offset": 0,
                "slot": "0",
                "type": "t_contract(INameWrapper)18030"
              },
              {
                "astId": 21120,
                "contract": "contracts/wrapper/test/TestNameWrapperReentrancy.sol:TestNameWrapperReentrancy",
                "label": "owner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 21122,
                "contract": "contracts/wrapper/test/TestNameWrapperReentrancy.sol:TestNameWrapperReentrancy",
                "label": "parentNode",
                "offset": 0,
                "slot": "2",
                "type": "t_bytes32"
              },
              {
                "astId": 21124,
                "contract": "contracts/wrapper/test/TestNameWrapperReentrancy.sol:TestNameWrapperReentrancy",
                "label": "labelHash",
                "offset": 0,
                "slot": "3",
                "type": "t_bytes32"
              },
              {
                "astId": 21126,
                "contract": "contracts/wrapper/test/TestNameWrapperReentrancy.sol:TestNameWrapperReentrancy",
                "label": "tokenId",
                "offset": 0,
                "slot": "4",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_contract(INameWrapper)18030": {
                "encoding": "inplace",
                "label": "contract INameWrapper",
                "numberOfBytes": "20"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "test/dnssec-oracle/TestBytesUtils.sol": {
        "TestBytesUtils": {
          "abi": [
            {
              "inputs": [],
              "name": "testBase32HexDecodeWord",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testCompare",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testComparePartial",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testEquals",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testKeccak",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testReadBytes20",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testReadBytes32",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testReadUint16",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testReadUint32",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testReadUint8",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testSubstring",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061287b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c85760003560e01c8063809a617311610081578063c80094b31161005b578063c80094b31461010f578063e77975cf14610117578063f3cbda461461011f57600080fd5b8063809a6173146100f757806383d31df6146100ff578063878ab4ae1461010757600080fd5b80631b8e1b81116100b25780631b8e1b81146100df5780632e72f9a9146100e7578063673dcc73146100ef57600080fd5b80625aa6f9146100cd578063098e6232146100d7575b600080fd5b6100d5610127565b005b6100d56101fe565b6100d5610561565b6100d56105f8565b6100d561071a565b6100d5610902565b6100d5610fb8565b6100d561163e565b6100d56118c8565b6100d5611d02565b6100d5611d91565b60408051808201909152601681527f6162636465666768696a6b6c6d6e6f707172737475760000000000000000000060208201527f62636465666768696a6b6c6d6e6f70717273747500000000000000000000000090610188906001611e24565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016146101fc5760405162461bcd60e51b815260206004820152600b60248201527f726561644279746573323000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b565b60408051602080820183526000918290528251808401909352600583527f68656c6c6f000000000000000000000000000000000000000000000000000000908301527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709161026c9180611e6a565b80519060200120146102c05760405162461bcd60e51b815260206004820152600c60248201527f436f70792030206279746573000000000000000000000000000000000000000060448201526064016101f3565b60408051808201825260048082527f68656c6c000000000000000000000000000000000000000000000000000000006020928301528251808401909352600583527f68656c6c6f000000000000000000000000000000000000000000000000000000918301919091527f647b0bf5e82b669964766915971e5985cb6559f0f22af1002f75d81d4f3349429161035791600090611e6a565b80519060200120146103ab5760405162461bcd60e51b815260206004820152600e60248201527f436f707920737562737472696e6700000000000000000000000000000000000060448201526064016101f3565b60408051808201825260048082527f656c6c6f000000000000000000000000000000000000000000000000000000006020928301528251808401909352600583527f68656c6c6f000000000000000000000000000000000000000000000000000000918301919091527f729b67e29bd543b60a81f35aba2c80ac4d8ea4caba9a72ed978093c22148af509161044291600190611e6a565b80519060200120146104965760405162461bcd60e51b815260206004820152600e60248201527f436f707920737562737472696e6700000000000000000000000000000000000060448201526064016101f3565b60408051808201825260058082527f68656c6c6f00000000000000000000000000000000000000000000000000000060209283018190528351808501909452818452918301919091527f1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac89161050d91600090611e6a565b80519060200120146101fc5760405162461bcd60e51b815260206004820152601160248201527f436f70792077686f6c6520737472696e6700000000000000000000000000000060448201526064016101f3565b60408051808201909152600581527f616263646500000000000000000000000000000000000000000000000000000060208201526105a0906001611eec565b63ffffffff166362636465146101fc5760405162461bcd60e51b815260206004820152600c60248201527f526561642075696e74203332000000000000000000000000000000000000000060448201526064016101f3565b60408051808201909152600181527f61000000000000000000000000000000000000000000000000000000000000006020820152610637906000611f16565b60ff166061146106895760405162461bcd60e51b815260206004820152600960248201527f61203d3d2030783631000000000000000000000000000000000000000000000060448201526064016101f3565b60408051808201909152600281527f626100000000000000000000000000000000000000000000000000000000000060208201526106c8906001611f16565b60ff166061146101fc5760405162461bcd60e51b815260206004820152600960248201527f61203d3d2030783631000000000000000000000000000000000000000000000060448201526064016101f3565b604080516020810190915260008082527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470916107569180611f3b565b146107a35760405162461bcd60e51b815260206004820152601e60248201527f496e636f72726563742068617368206f6620656d70747920737472696e67000060448201526064016101f3565b6040805180820190915260038082527f666f6f000000000000000000000000000000000000000000000000000000000060208301527f41b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d9161080691600090611f3b565b146108535760405162461bcd60e51b815260206004820152601760248201527f496e636f72726563742068617368206f662027666f6f2700000000000000000060448201526064016101f3565b60408051808201909152600381527f666f6f000000000000000000000000000000000000000000000000000000000060208201527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470906108b590600080611f3b565b146101fc5760405162461bcd60e51b815260206004820152601e60248201527f496e636f72726563742068617368206f6620656d70747920737472696e67000060448201526064016101f3565b61097f6040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f6100000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b156001146109cf5760405162461bcd60e51b815260206004820152600d60248201527f436f6d7061726520657175616c0000000000000000000000000000000000000060448201526064016101f3565b6000610a4e6040518060400160405280600181526020017f62000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f6100000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911314610ac55760405162461bcd60e51b815260206004820152602860248201527f436f6d7061726520646966666572656e742076616c756520776974682073616d60448201527f65206c656e67746800000000000000000000000000000000000000000000000060648201526084016101f3565b6000610b446040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f6200000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911214610bbb5760405162461bcd60e51b815260206004820152602860248201527f436f6d7061726520646966666572656e742076616c756520776974682073616d60448201527f65206c656e67746800000000000000000000000000000000000000000000000060648201526084016101f3565b6000610c3a6040518060400160405280600281526020017f61620000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f6161000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911314610cb15760405162461bcd60e51b815260206004820152602c60248201527f436f6d7061726520646966666572656e742076616c75652077697468206d756c60448201527f7469706c65206c656e677468000000000000000000000000000000000000000060648201526084016101f3565b6000610d306040518060400160405280600281526020017f61610000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f6100000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911314610da75760405162461bcd60e51b815260206004820152602d60248201527f436f6d7061726520646966666572656e742076616c756520776974682064696660448201527f666572656e74206c656e6774680000000000000000000000000000000000000060648201526084016101f3565b6000610e266040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f6161000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911214610e9d5760405162461bcd60e51b815260206004820152602d60248201527f436f6d7061726520646966666572656e742076616c756520776974682064696660448201527f666572656e74206c656e6774680000000000000000000000000000000000000060648201526084016101f3565b60006040518060600160405280602281526020016127b3602291399050610ec48180611f5f565b15600114610f145760405162461bcd60e51b815260206004820181905260248201527f436f6d7061726573206d6f7265207468616e203332206279746573206368617260448201526064016101f3565b60006040518060600160405280602281526020016127916022913990506000610f3d8383611f5f565b6001911314610fb45760405162461bcd60e51b815260206004820152602a60248201527f436f6d70617265206c6f6e672063686172207769746820646966666572656e6360448201527f652061742073746172740000000000000000000000000000000000000000000060648201526084016101f3565b5050565b6040805180820190915260028082527f433400000000000000000000000000000000000000000000000000000000000060208301527f61000000000000000000000000000000000000000000000000000000000000009161101b91600090611f7a565b146110685760405162461bcd60e51b815260206004820152600a60248201527f4465636f6465202761270000000000000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260048082527f433547470000000000000000000000000000000000000000000000000000000060208301527f6161000000000000000000000000000000000000000000000000000000000000916110cb91600090611f7a565b146111185760405162461bcd60e51b815260206004820152600b60248201527f4465636f6465202761612700000000000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260058082527f4335474d3200000000000000000000000000000000000000000000000000000060208301527f61616100000000000000000000000000000000000000000000000000000000009161117b91600090611f7a565b146111c85760405162461bcd60e51b815260206004820152600c60248201527f4465636f6465202761616127000000000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260078082527f4335474d324f380000000000000000000000000000000000000000000000000060208301527f61616161000000000000000000000000000000000000000000000000000000009161122b91600090611f7a565b146112785760405162461bcd60e51b815260206004820152600d60248201527f4465636f6465202761616161270000000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260088082527f4335474d324f423100000000000000000000000000000000000000000000000060208301527f6161616161000000000000000000000000000000000000000000000000000000916112db91600090611f7a565b146113285760405162461bcd60e51b815260206004820152600e60248201527f4465636f6465202761616161612700000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260088082527f6335676d324f623100000000000000000000000000000000000000000000000060208301527f61616161610000000000000000000000000000000000000000000000000000009161138b91600090611f7a565b146113d85760405162461bcd60e51b815260206004820152601860248201527f4465636f64652027616161616127206c6f77657263617365000000000000000060448201526064016101f3565b7f6162636465666768696a6b6c6d6e6f707172737475767778797a00000000000065ffffffffffff19166114296000602a6040518060600160405280602a815260200161281c602a91399190611f7a565b146114765760405162461bcd60e51b815260206004820152600f60248201527f4465636f646520616c706861626574000000000000000000000000000000000060448201526064016101f3565b7f6162636465666768696a6b6c6d6e6f707172737475767778797a00000000000065ffffffffffff19166114c76000602a6040518060600160405280602a8152602001612705602a91399190611f7a565b146115145760405162461bcd60e51b815260206004820152601960248201527f4465636f646520616c706861626574206c6f776572636173650000000000000060448201526064016101f3565b7f616161616161616161616161616161616161616161616161616161616161616161155c6000603460405180606001604052806034815260200161272f603491399190611f7a565b146115a95760405162461bcd60e51b815260206004820152600d60248201527f4465636f64652033322a2761270000000000000000000000000000000000000060448201526064016101f3565b7f5f3a48d66e3ec18431192611a2a055b01d3b4b5d0000000000000000000000006115f1600160206040518060600160405280602e8152602001612763602e91399190611f7a565b146101fc5760405162461bcd60e51b815260206004820152601660248201527f4465636f6465207265616c20627974657333326865780000000000000000000060448201526064016101f3565b604080518082018252600581527f78786278780000000000000000000000000000000000000000000000000000006020808301919091528251808401909352600383527f7861780000000000000000000000000000000000000000000000000000000000908301526000916116ba9160019081906002826121fa565b600191131461170b5760405162461bcd60e51b815260206004820152601360248201527f436f6d706172652073616d65206c656e6774680000000000000000000000000060448201526064016101f3565b604080518082018252600681527f78786162787800000000000000000000000000000000000000000000000000006020808301919091528251808401909352600383527f7861780000000000000000000000000000000000000000000000000000000000908301526000916117879160019081906002806121fa565b60019113146117d85760405162461bcd60e51b815260206004820152601860248201527f436f6d7061726520646966666572656e74206c656e677468000000000000000060448201526064016101f3565b604080518082018252600581527f78786178780000000000000000000000000000000000000000000000000000006020808301919091528251808401909352600383527f786178000000000000000000000000000000000000000000000000000000000090830152611852919060019081906002826121fa565b156001146101fc5760405162461bcd60e51b815260206004820152602260248201527f436f6d706172652073616d65207769746820646966666572656e74206f66667360448201527f657400000000000000000000000000000000000000000000000000000000000060648201526084016101f3565b6119456040518060400160405280600581526020017f68656c6c6f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f68656c6c6f00000000000000000000000000000000000000000000000000000081525061230d90919063ffffffff16565b15156001146119965760405162461bcd60e51b815260206004820152600f60248201527f537472696e6720657175616c697479000000000000000000000000000000000060448201526064016101f3565b611a136040518060400160405280600781526020017f676f6f64627965000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f68656c6c6f00000000000000000000000000000000000000000000000000000081525061230d90919063ffffffff16565b15611a605760405162461bcd60e51b815260206004820152601160248201527f537472696e6720696e657175616c69747900000000000000000000000000000060448201526064016101f3565b611ae060016040518060400160405280600481526020017f656c6c6f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f68656c6c6f00000000000000000000000000000000000000000000000000000081525061232b9092919063ffffffff16565b1515600114611b315760405162461bcd60e51b815260206004820152601c60248201527f537562737472696e6720746f20737472696e6720657175616c6974790000000060448201526064016101f3565b611bb760016040518060400160405280600581526020017f6a656c6c6f000000000000000000000000000000000000000000000000000000815250600160046040518060400160405280600581526020017f68656c6c6f00000000000000000000000000000000000000000000000000000081525061235c90949392919063ffffffff16565b1515600114611c085760405162461bcd60e51b815260206004820152601f60248201527f537562737472696e6720746f20737562737472696e6720657175616c6974790060448201526064016101f3565b611c8b60016040518060400160405280600881526020017f61626368656c6c6f00000000000000000000000000000000000000000000000081525060036040518060400160405280600681526020017f7a68656c6c6f000000000000000000000000000000000000000000000000000081525061237f909392919063ffffffff16565b15156001146101fc5760405162461bcd60e51b815260206004820152602c60248201527f436f6d7061726520646966666572656e742076616c75652077697468206d756c60448201527f7469706c65206c656e677468000000000000000000000000000000000000000060648201526084016101f3565b6040805180820190915260208082527f303132333435363738396162636465663031323334353637383961626364656690820181905290611d449060006123b4565b146101fc5760405162461bcd60e51b815260206004820152600b60248201527f726561644279746573333200000000000000000000000000000000000000000060448201526064016101f3565b60408051808201909152600381527f61626300000000000000000000000000000000000000000000000000000000006020820152611dd09060016123d8565b61ffff16616263146101fc5760405162461bcd60e51b815260206004820152600c60248201527f526561642075696e74203136000000000000000000000000000000000000000060448201526064016101f3565b8151600090611e348360146124a3565b1115611e3f57600080fd5b5001602001517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690565b8251606090611e7983856124a3565b1115611e8457600080fd5b60008267ffffffffffffffff811115611e9f57611e9f6124b6565b6040519080825280601f01601f191660200182016040528015611ec9576020820181803683370190505b50905060208082019086860101611ee1828287612400565b509095945050505050565b8151600090611efc8360046124a3565b1115611f0757600080fd5b50016004015163ffffffff1690565b6000828281518110611f2a57611f2a6124e5565b016020015160f81c90505b92915050565b8251600090611f4a83856124a3565b1115611f5557600080fd5b5091016020012090565b6000611f73836000855185600087516121fa565b9392505050565b60006034821115611f8a57600080fd5b600080805b848110156120de57600087611fa483896124a3565b81518110611fb457611fb46124e5565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f3000000000000000000000000000000000000000000000000000000000000000811080159061204f57507f7a000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821611155b61205857600080fd5b6040518060800160405280604781526020016127d560479139612080603060f884901c612514565b81518110612090576120906124e5565b0160209081015160f81c93508311156120a857600080fd5b6120b3600187612514565b82036120bf57506120de565b5060059290921b60ff82161791806120d681612527565b915050611f8f565b5060006120ec85600561255f565b90506120f9600886612576565b600003612111578160ff16600584901b1792506121e0565b61211c600886612576565b60020361214a5760028260ff16901c60ff16600384901b1792506002816121439190612514565b90506121e0565b612155600886612576565b60040361217c5760048260ff16901c60ff16600184901b1792506004816121439190612514565b612187600886612576565b6005036121ae5760018260ff16901c60ff16600484901b1792506001816121439190612514565b6121b9600886612576565b6007036100c85760038260ff16901c60ff16600284901b1792506003816121439190612514565b6121ec81610100612514565b9290921b9695505050505050565b600084808310156122085750815b60208789018101908587010160005b838110156122f257825182518082146122c2576000602087111561225c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612298565b60018461226a896020612514565b61227491906124a3565b61227f90600861255f565b61228a9060026126d1565b6122949190612514565b1990505b60006122a88383168584166126dd565b905080156122bf5797506123039650505050505050565b50505b6122cd6020866124a3565b94506122da6020856124a3565b935050506020816122eb91906124a3565b9050612217565b506122fd85896126dd565b93505050505b9695505050505050565b600081518351148015611f735750611f73836000846000875161235c565b600081518361233a91906124a3565b84511015801561235457506123548484846000865161235c565b949350505050565b6000612369848484611f3b565b612374878785611f3b565b149695505050505050565b600061239883838486516123939190612514565b611f3b565b6123aa86868789516123939190612514565b1495945050505050565b81516000906123c48360206124a3565b11156123cf57600080fd5b50016020015190565b81516000906123e88360026124a3565b11156123f357600080fd5b50016002015161ffff1690565b6020811061243857815183526124176020846124a3565b92506124246020836124a3565b9150612431602082612514565b9050612400565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3557611f35612474565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115611f3557611f35612474565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361255857612558612474565b5060010190565b8082028115828204841417611f3557611f35612474565b6000826125ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600181815b8085111561260a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156125f0576125f0612474565b808516156125fd57918102915b93841c93908002906125b6565b509250929050565b60008261262157506001611f35565b8161262e57506000611f35565b8160018114612644576002811461264e5761266a565b6001915050611f35565b60ff84111561265f5761265f612474565b50506001821b611f35565b5060208310610133831016604e8410600b841016171561268d575081810a611f35565b61269783836125b1565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156126c9576126c9612474565b029392505050565b6000611f738383612612565b81810360008312801583831316838312821617156126fd576126fd612474565b509291505056fe633568363670333563706a6d6771626164646d3671726a6665316f6e3473726b656c72376575337066384335474d324f42314335474d324f42314335474d324f42314335474d324f42314335474d324f42314335474d324f4231433547472062737434686c6a653772306f38633870346f38713538326c6d30656a6d697174076d61746f6b656e0378797a00323233343536373839303132333435363738393031323334353637383930313233343132333435363738393031323334353637383930313233343536373839303132333400010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f433548363650333543504a4d4751424144444d3651524a4645314f4e3453524b454c5237455533504638a2646970667358221220b6bbcc284f3624e75e7e0ce9a5ad810c1252bbe8bbc941bfb28fd48e20192c9264736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x287B DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x809A6173 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xC80094B3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC80094B3 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0xE77975CF EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0xF3CBDA46 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x809A6173 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x83D31DF6 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x878AB4AE EQ PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1B8E1B81 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x1B8E1B81 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0x2E72F9A9 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x673DCC73 EQ PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0x5AA6F9 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x98E6232 EQ PUSH2 0xD7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5 PUSH2 0x127 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD5 PUSH2 0x1FE JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x561 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x71A JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x902 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0xFB8 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x163E JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x18C8 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x1D02 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x1D91 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH32 0x6162636465666768696A6B6C6D6E6F7071727374757600000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x62636465666768696A6B6C6D6E6F707172737475000000000000000000000000 SWAP1 PUSH2 0x188 SWAP1 PUSH1 0x1 PUSH2 0x1E24 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265616442797465733230000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x5 DUP4 MSTORE PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 SWAP2 PUSH2 0x26C SWAP2 DUP1 PUSH2 0x1E6A JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x2C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F707920302062797465730000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x68656C6C00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 DUP4 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x5 DUP4 MSTORE PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x647B0BF5E82B669964766915971E5985CB6559F0F22AF1002F75D81D4F334942 SWAP2 PUSH2 0x357 SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1E6A JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x3AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F707920737562737472696E67000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x656C6C6F00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 DUP4 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x5 DUP4 MSTORE PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x729B67E29BD543B60A81F35ABA2C80AC4D8EA4CABA9A72ED978093C22148AF50 SWAP2 PUSH2 0x442 SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1E6A JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x496 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F707920737562737472696E67000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP1 DUP3 MSTORE PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE DUP2 DUP5 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x1C8AFF950685C2ED4BC3174F3472287B56D9517B9C948127319A09A7A36DEAC8 SWAP2 PUSH2 0x50D SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1E6A JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F70792077686F6C6520737472696E67000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x6162636465000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x5A0 SWAP1 PUSH1 0x1 PUSH2 0x1EEC JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH4 0x62636465 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526561642075696E742033320000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x637 SWAP1 PUSH1 0x0 PUSH2 0x1F16 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x61 EQ PUSH2 0x689 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x61203D3D20307836310000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH32 0x6261000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x6C8 SWAP1 PUSH1 0x1 PUSH2 0x1F16 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x61 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x61203D3D20307836310000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 SWAP2 PUSH2 0x756 SWAP2 DUP1 PUSH2 0x1F3B JUMP JUMPDEST EQ PUSH2 0x7A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742068617368206F6620656D70747920737472696E670000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP1 DUP3 MSTORE PUSH32 0x666F6F0000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x41B1A0649752AF1B28B3DC29A1556EEE781E4A4C3A1F7F53F90FA834DE098C4D SWAP2 PUSH2 0x806 SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F3B JUMP JUMPDEST EQ PUSH2 0x853 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742068617368206F662027666F6F27000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x666F6F0000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 SWAP1 PUSH2 0x8B5 SWAP1 PUSH1 0x0 DUP1 PUSH2 0x1F3B JUMP JUMPDEST EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742068617368206F6620656D70747920737472696E670000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x97F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO PUSH1 0x1 EQ PUSH2 0x9CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520657175616C00000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA4E PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6200000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0xAC5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C756520776974682073616D PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65206C656E677468000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB44 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6200000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SLT EQ PUSH2 0xBBB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C756520776974682073616D PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65206C656E677468000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC3A PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6162000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6161000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0xCB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C75652077697468206D756C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7469706C65206C656E6774680000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD30 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6161000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0xDA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C7565207769746820646966 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x666572656E74206C656E67746800000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE26 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6161000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SLT EQ PUSH2 0xE9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C7565207769746820646966 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x666572656E74206C656E67746800000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27B3 PUSH1 0x22 SWAP2 CODECOPY SWAP1 POP PUSH2 0xEC4 DUP2 DUP1 PUSH2 0x1F5F JUMP JUMPDEST ISZERO PUSH1 0x1 EQ PUSH2 0xF14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726573206D6F7265207468616E2033322062797465732063686172 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2791 PUSH1 0x22 SWAP2 CODECOPY SWAP1 POP PUSH1 0x0 PUSH2 0xF3D DUP4 DUP4 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0xFB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D70617265206C6F6E672063686172207769746820646966666572656E63 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6520617420737461727400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x4334000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x101B SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1068 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027612700000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x4335474700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x10CB SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1118 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616127000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP1 DUP3 MSTORE PUSH32 0x4335474D32000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161610000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x117B SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x11C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616161270000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP1 DUP3 MSTORE PUSH32 0x4335474D324F3800000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161616100000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x122B SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1278 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616161612700000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP1 DUP3 MSTORE PUSH32 0x4335474D324F4231000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161616161000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x12DB SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1328 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616161616127000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP1 DUP3 MSTORE PUSH32 0x6335676D324F6231000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161616161000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x138B SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x13D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616161616127206C6F776572636173650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH32 0x6162636465666768696A6B6C6D6E6F707172737475767778797A000000000000 PUSH6 0xFFFFFFFFFFFF NOT AND PUSH2 0x1429 PUSH1 0x0 PUSH1 0x2A PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281C PUSH1 0x2A SWAP2 CODECOPY SWAP2 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1476 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F646520616C7068616265740000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH32 0x6162636465666768696A6B6C6D6E6F707172737475767778797A000000000000 PUSH6 0xFFFFFFFFFFFF NOT AND PUSH2 0x14C7 PUSH1 0x0 PUSH1 0x2A PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2705 PUSH1 0x2A SWAP2 CODECOPY SWAP2 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1514 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F646520616C706861626574206C6F7765726361736500000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH32 0x6161616161616161616161616161616161616161616161616161616161616161 PUSH2 0x155C PUSH1 0x0 PUSH1 0x34 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x272F PUSH1 0x34 SWAP2 CODECOPY SWAP2 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x15A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652033322A27612700000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH32 0x5F3A48D66E3EC18431192611A2A055B01D3B4B5D000000000000000000000000 PUSH2 0x15F1 PUSH1 0x1 PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2763 PUSH1 0x2E SWAP2 CODECOPY SWAP2 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F6465207265616C206279746573333268657800000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x7878627878000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH32 0x7861780000000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH2 0x16BA SWAP2 PUSH1 0x1 SWAP1 DUP2 SWAP1 PUSH1 0x2 DUP3 PUSH2 0x21FA JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0x170B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D706172652073616D65206C656E67746800000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH32 0x7878616278780000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH32 0x7861780000000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH2 0x1787 SWAP2 PUSH1 0x1 SWAP1 DUP2 SWAP1 PUSH1 0x2 DUP1 PUSH2 0x21FA JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0x17D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E74206C656E6774680000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x7878617878000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH32 0x7861780000000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x1852 SWAP2 SWAP1 PUSH1 0x1 SWAP1 DUP2 SWAP1 PUSH1 0x2 DUP3 PUSH2 0x21FA JUMP JUMPDEST ISZERO PUSH1 0x1 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D706172652073616D65207769746820646966666572656E74206F666673 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6574000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1945 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x230D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1996 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E6720657175616C6974790000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1A13 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x676F6F6462796500000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x230D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO PUSH2 0x1A60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E6720696E657175616C697479000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1AE0 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x656C6C6F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x232B SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1B31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537562737472696E6720746F20737472696E6720657175616C69747900000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1BB7 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6A656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x235C SWAP1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1C08 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537562737472696E6720746F20737562737472696E6720657175616C69747900 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1C8B PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x61626368656C6C6F000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x7A68656C6C6F0000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x237F SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C75652077697468206D756C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7469706C65206C656E6774680000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 MSTORE PUSH32 0x3031323334353637383961626364656630313233343536373839616263646566 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH2 0x1D44 SWAP1 PUSH1 0x0 PUSH2 0x23B4 JUMP JUMPDEST EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265616442797465733332000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x6162630000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1DD0 SWAP1 PUSH1 0x1 PUSH2 0x23D8 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x6263 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526561642075696E742031360000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1E34 DUP4 PUSH1 0x14 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x1E3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x1E79 DUP4 DUP6 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x1E84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E9F JUMPI PUSH2 0x1E9F PUSH2 0x24B6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1EC9 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0x1EE1 DUP3 DUP3 DUP8 PUSH2 0x2400 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1EFC DUP4 PUSH1 0x4 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x1F07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F2A JUMPI PUSH2 0x1F2A PUSH2 0x24E5 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F4A DUP4 DUP6 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x1F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F73 DUP4 PUSH1 0x0 DUP6 MLOAD DUP6 PUSH1 0x0 DUP8 MLOAD PUSH2 0x21FA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 DUP3 GT ISZERO PUSH2 0x1F8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x20DE JUMPI PUSH1 0x0 DUP8 PUSH2 0x1FA4 DUP4 DUP10 PUSH2 0x24A3 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x1FB4 JUMPI PUSH2 0x1FB4 PUSH2 0x24E5 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x204F JUMPI POP PUSH32 0x7A00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND GT ISZERO JUMPDEST PUSH2 0x2058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27D5 PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x2080 PUSH1 0x30 PUSH1 0xF8 DUP5 SWAP1 SHR PUSH2 0x2514 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2090 JUMPI PUSH2 0x2090 PUSH2 0x24E5 JUMP JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0xF8 SHR SWAP4 POP DUP4 GT ISZERO PUSH2 0x20A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20B3 PUSH1 0x1 DUP8 PUSH2 0x2514 JUMP JUMPDEST DUP3 SUB PUSH2 0x20BF JUMPI POP PUSH2 0x20DE JUMP JUMPDEST POP PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL PUSH1 0xFF DUP3 AND OR SWAP2 DUP1 PUSH2 0x20D6 DUP2 PUSH2 0x2527 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1F8F JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x20EC DUP6 PUSH1 0x5 PUSH2 0x255F JUMP JUMPDEST SWAP1 POP PUSH2 0x20F9 PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x0 SUB PUSH2 0x2111 JUMPI DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP5 SWAP1 SHL OR SWAP3 POP PUSH2 0x21E0 JUMP JUMPDEST PUSH2 0x211C PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x2 SUB PUSH2 0x214A JUMPI PUSH1 0x2 DUP3 PUSH1 0xFF AND SWAP1 SHR PUSH1 0xFF AND PUSH1 0x3 DUP5 SWAP1 SHL OR SWAP3 POP PUSH1 0x2 DUP2 PUSH2 0x2143 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST SWAP1 POP PUSH2 0x21E0 JUMP JUMPDEST PUSH2 0x2155 PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x4 SUB PUSH2 0x217C JUMPI PUSH1 0x4 DUP3 PUSH1 0xFF AND SWAP1 SHR PUSH1 0xFF AND PUSH1 0x1 DUP5 SWAP1 SHL OR SWAP3 POP PUSH1 0x4 DUP2 PUSH2 0x2143 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x2187 PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x5 SUB PUSH2 0x21AE JUMPI PUSH1 0x1 DUP3 PUSH1 0xFF AND SWAP1 SHR PUSH1 0xFF AND PUSH1 0x4 DUP5 SWAP1 SHL OR SWAP3 POP PUSH1 0x1 DUP2 PUSH2 0x2143 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x21B9 PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x7 SUB PUSH2 0xC8 JUMPI PUSH1 0x3 DUP3 PUSH1 0xFF AND SWAP1 SHR PUSH1 0xFF AND PUSH1 0x2 DUP5 SWAP1 SHL OR SWAP3 POP PUSH1 0x3 DUP2 PUSH2 0x2143 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x21EC DUP2 PUSH2 0x100 PUSH2 0x2514 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 SHL SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP1 DUP4 LT ISZERO PUSH2 0x2208 JUMPI POP DUP2 JUMPDEST PUSH1 0x20 DUP8 DUP10 ADD DUP2 ADD SWAP1 DUP6 DUP8 ADD ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22F2 JUMPI DUP3 MLOAD DUP3 MLOAD DUP1 DUP3 EQ PUSH2 0x22C2 JUMPI PUSH1 0x0 PUSH1 0x20 DUP8 GT ISZERO PUSH2 0x225C JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2298 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH2 0x226A DUP10 PUSH1 0x20 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x2274 SWAP2 SWAP1 PUSH2 0x24A3 JUMP JUMPDEST PUSH2 0x227F SWAP1 PUSH1 0x8 PUSH2 0x255F JUMP JUMPDEST PUSH2 0x228A SWAP1 PUSH1 0x2 PUSH2 0x26D1 JUMP JUMPDEST PUSH2 0x2294 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST NOT SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x22A8 DUP4 DUP4 AND DUP6 DUP5 AND PUSH2 0x26DD JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x22BF JUMPI SWAP8 POP PUSH2 0x2303 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST POP POP JUMPDEST PUSH2 0x22CD PUSH1 0x20 DUP7 PUSH2 0x24A3 JUMP JUMPDEST SWAP5 POP PUSH2 0x22DA PUSH1 0x20 DUP6 PUSH2 0x24A3 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x20 DUP2 PUSH2 0x22EB SWAP2 SWAP1 PUSH2 0x24A3 JUMP JUMPDEST SWAP1 POP PUSH2 0x2217 JUMP JUMPDEST POP PUSH2 0x22FD DUP6 DUP10 PUSH2 0x26DD JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0x1F73 JUMPI POP PUSH2 0x1F73 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0x235C JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 PUSH2 0x233A SWAP2 SWAP1 PUSH2 0x24A3 JUMP JUMPDEST DUP5 MLOAD LT ISZERO DUP1 ISZERO PUSH2 0x2354 JUMPI POP PUSH2 0x2354 DUP5 DUP5 DUP5 PUSH1 0x0 DUP7 MLOAD PUSH2 0x235C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2369 DUP5 DUP5 DUP5 PUSH2 0x1F3B JUMP JUMPDEST PUSH2 0x2374 DUP8 DUP8 DUP6 PUSH2 0x1F3B JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2398 DUP4 DUP4 DUP5 DUP7 MLOAD PUSH2 0x2393 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x1F3B JUMP JUMPDEST PUSH2 0x23AA DUP7 DUP7 DUP8 DUP10 MLOAD PUSH2 0x2393 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST EQ SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x23C4 DUP4 PUSH1 0x20 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x23CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x23E8 DUP4 PUSH1 0x2 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x23F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2438 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x2417 PUSH1 0x20 DUP5 PUSH2 0x24A3 JUMP JUMPDEST SWAP3 POP PUSH2 0x2424 PUSH1 0x20 DUP4 PUSH2 0x24A3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2431 PUSH1 0x20 DUP3 PUSH2 0x2514 JUMP JUMPDEST SWAP1 POP PUSH2 0x2400 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1F35 JUMPI PUSH2 0x1F35 PUSH2 0x2474 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x1F35 JUMPI PUSH2 0x1F35 PUSH2 0x2474 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2558 JUMPI PUSH2 0x2558 PUSH2 0x2474 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x1F35 JUMPI PUSH2 0x1F35 PUSH2 0x2474 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x25AC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x260A JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x25F0 JUMPI PUSH2 0x25F0 PUSH2 0x2474 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x25FD JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x25B6 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2621 JUMPI POP PUSH1 0x1 PUSH2 0x1F35 JUMP JUMPDEST DUP2 PUSH2 0x262E JUMPI POP PUSH1 0x0 PUSH2 0x1F35 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2644 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x264E JUMPI PUSH2 0x266A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x1F35 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x265F JUMPI PUSH2 0x265F PUSH2 0x2474 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x1F35 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x268D JUMPI POP DUP2 DUP2 EXP PUSH2 0x1F35 JUMP JUMPDEST PUSH2 0x2697 DUP4 DUP4 PUSH2 0x25B1 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x26C9 JUMPI PUSH2 0x26C9 PUSH2 0x2474 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F73 DUP4 DUP4 PUSH2 0x2612 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP4 SLT DUP1 ISZERO DUP4 DUP4 SGT AND DUP4 DUP4 SLT DUP3 AND OR ISZERO PUSH2 0x26FD JUMPI PUSH2 0x26FD PUSH2 0x2474 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP INVALID PUSH4 0x35683636 PUSH17 0x333563706A6D6771626164646D3671726A PUSH7 0x65316F6E347372 PUSH12 0x656C72376575337066384335 SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE SELFBALANCE KECCAK256 PUSH3 0x737434 PUSH9 0x6C6A653772306F3863 CODESIZE PUSH17 0x346F38713538326C6D30656A6D69717407 PUSH14 0x61746F6B656E0378797A00323233 CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE STOP ADD MUL SUB DIV SDIV MOD SMOD ADDMOD MULMOD SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT EXP SIGNEXTEND 0xC 0xD 0xE 0xF LT GT SLT SGT EQ ISZERO AND OR XOR NOT BYTE SHL SHR SAR 0x1E 0x1F SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT EXP SIGNEXTEND 0xC 0xD 0xE 0xF LT GT SLT SGT EQ ISZERO AND OR XOR NOT BYTE SHL SHR SAR 0x1E 0x1F NUMBER CALLDATALOAD BASEFEE CALLDATASIZE CALLDATASIZE POP CALLER CALLDATALOAD NUMBER POP 0x4A 0x4D SELFBALANCE MLOAD TIMESTAMP COINBASE DIFFICULTY DIFFICULTY 0x4D CALLDATASIZE MLOAD MSTORE 0x4A CHAINID GASLIMIT BALANCE 0x4F 0x4E CALLVALUE MSTORE8 MSTORE 0x4B GASLIMIT 0x4C MSTORE CALLDATACOPY GASLIMIT SSTORE CALLER POP CHAINID CODESIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0xBB 0xCC 0x28 0x4F CALLDATASIZE 0x24 0xE7 0x5E PUSH31 0xCE9A5AD810C1252BBE8BBC941BFB28FD48E20192C9264736F6C6343000811 STOP CALLER ",
              "sourceMap": "133:4756:107:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@base32HexDecodeWord_4972": {
                  "entryPoint": 8058,
                  "id": 4972,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@compare_4284": {
                  "entryPoint": 8031,
                  "id": 4284,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@compare_4421": {
                  "entryPoint": 8698,
                  "id": 4421,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@equals_4449": {
                  "entryPoint": 9052,
                  "id": 4449,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@equals_4481": {
                  "entryPoint": 9087,
                  "id": 4481,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@equals_4510": {
                  "entryPoint": 9003,
                  "id": 4510,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@equals_4535": {
                  "entryPoint": 8973,
                  "id": 4535,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@keccak_4263": {
                  "entryPoint": 7995,
                  "id": 4263,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@memcpy_4702": {
                  "entryPoint": 9216,
                  "id": 4702,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@readBytes20_4632": {
                  "entryPoint": 7716,
                  "id": 4632,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readBytes32_4612": {
                  "entryPoint": 9140,
                  "id": 4612,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint16_4572": {
                  "entryPoint": 9176,
                  "id": 4572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint32_4592": {
                  "entryPoint": 7916,
                  "id": 4592,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 7958,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@substring_4745": {
                  "entryPoint": 7786,
                  "id": 4745,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@testBase32HexDecodeWord_21881": {
                  "entryPoint": 4024,
                  "id": 21881,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testComparePartial_21416": {
                  "entryPoint": 5694,
                  "id": 21416,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testCompare_21524": {
                  "entryPoint": 2306,
                  "id": 21524,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testEquals_21364": {
                  "entryPoint": 6344,
                  "id": 21364,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testKeccak_21304": {
                  "entryPoint": 1818,
                  "id": 21304,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testReadBytes20_21696": {
                  "entryPoint": 295,
                  "id": 21696,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testReadBytes32_21713": {
                  "entryPoint": 7426,
                  "id": 21713,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testReadUint16_21659": {
                  "entryPoint": 7569,
                  "id": 21659,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testReadUint32_21676": {
                  "entryPoint": 1377,
                  "id": 21676,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testReadUint8_21642": {
                  "entryPoint": 1528,
                  "id": 21642,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testSubstring_21612": {
                  "entryPoint": 510,
                  "id": 21612,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_stringliteral_02fc56588f09e08b24a19ce6df995052dbcff45e5138a3c4edb0fad3bf3ee342__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_03e476650ab551512fe9bb311d042c73370e6a81c84da4e2c1d9c7390d4e12c8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0565c18ee5278c15f772c3ed947ac11333166ea5c4636eb577abddbf78d0ae6c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0e59f029ea56bbaf4b61743fce5c46cb75c77bb08ae2edbf489ec1fa43ec8201__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2c1ac60deb5cfb03a9f2bb1de9c89f448504d9a2dcb791c2c1856aa4bc90271f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3b33bb8f6621c61a1c9a8b8113e60f0b7233de96fbe0d40dae1384c3fc842925__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4aa21864c6c5f68459882cebe5d7989f64eff10a412bb39411106d79b11cf6d7__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_596eb6791a5069d9c5aafa8b2f0e60843ddf87d5636ca7393ffcee72fd5606fe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5b8997dc2d063e9fb8a4f4952461a71ac960d32c6a2e87f631ab357cd8f645bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5bc7eb6305585f9b5cfb4a6b9c1dfa988d674d092f13aaeb30f2a701d8fca38a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5ed41eb7bfcbd1f7e6ec230b18935019051f3c094557ae28dfd2d0616553ee26__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_60aa1ee88c02b796f2bec0246a31c97415d0f47b9bf4bac40af536913b468248__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_75d9deeae65d7d556ddf2b2305f974de12f0656c64f354d250392a722b3ab4e9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_804bb9153fba379de973d097c160a9b9da9ca174d530baa1cafee83d4c2833fc__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_843e99517f2a31c84fc8209ad696769d721e30918a2a7db0c030db2ed1639b7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8c9a94edefb554b283c3e675ff6c094adc8299ada82da72a741c3e748c306196__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_974ae182026b0ba5d30ca4b083d43bf7d940dee89b8f9872917a22e202d41df8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9968d7daf615e9fa7c6713bbc68c64b800be2f1bf3288dca817829d5de1b34e8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ae2facbcc57f3802e5a9e7198d5d43aab834f08caa7d17ea6263a458a927f643__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b69adba4b15d6a8a1b8a64f4f9b86f72be3b65732717c771b7ea48e206c3d461__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_be82a2b2a8eedc49dab18db603ee4db7a6e654667a8312a4b20bfa32c42ded3c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c32175d32a0e82681a8b7e8be3eb49f97845b39b03a1b2918b41127279713506__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c35f9b12ca4d27568056c39f4fe93d050fcf0bb9b8710a0dff738cf6463b3a97__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c73525d413229451c579a25eb278f10a9f2e08642c8778e9ece05e751d72f4d5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ccdc0392a10c2d827126b17a796b48eafa036f7ca92558db0c3b7d498620cb42__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d0e47d356613d6f7153025faa1a08a01b4b79e2f0872a569cab00e33b8fe2f92__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d49128b581930719aa04d624dd89cff9d22b04fd0e8c9dda2fe4a29bf43da749__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d5f6cc0c98bcfe3c0cb60be7cac4a422e003c7daec0aecc80551c9ab5a4bdb10__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d60e1b1046c018b9e8929b4c1b05a79e8d860db206231f63d53a5a3159024b47__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_df5139274082a2890b652b7b9ca4aa3b92da255beebd2aea522efabf071a82ba__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dfecda4119da15203af22c4adb285880c89c909cc077ea7a2491252d3e6bc123__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e29f2ddaeadeab3559952d54b0d68b91ef0da29793b7b1d536702989fe3bdbee__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e4473e14bb320ebfc1a8c77d907eed343535ecb4dde11ed6020cbeaa611e61ac__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 9379,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_helper": {
                  "entryPoint": 9649,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "checked_exp_t_uint256_t_uint256": {
                  "entryPoint": 9937,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_unsigned": {
                  "entryPoint": 9746,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 9567,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_int256": {
                  "entryPoint": 9949,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 9492,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 9511,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 9590,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 9332,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 9445,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 9398,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:14934:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "188:161:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "216:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "198:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "198:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "198:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "239:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "250:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "235:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "235:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "255:2:111",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "228:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "228:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "278:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "289:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "274:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "274:18:111"
                                  },
                                  {
                                    "hexValue": "7265616442797465733230",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "294:13:111",
                                    "type": "",
                                    "value": "readBytes20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "267:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "267:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "267:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "317:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "329:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "340:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "325:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "317:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_974ae182026b0ba5d30ca4b083d43bf7d940dee89b8f9872917a22e202d41df8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "165:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "179:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14:335:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "528:162:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "545:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "556:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "538:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "538:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "538:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "579:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "590:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "575:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "575:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "595:2:111",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "568:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "568:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "568:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "618:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "629:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "614:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "614:18:111"
                                  },
                                  {
                                    "hexValue": "436f70792030206279746573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "634:14:111",
                                    "type": "",
                                    "value": "Copy 0 bytes"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "607:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "607:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "607:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "658:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "670:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "681:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "666:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "666:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "658:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e29f2ddaeadeab3559952d54b0d68b91ef0da29793b7b1d536702989fe3bdbee__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "505:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "519:4:111",
                            "type": ""
                          }
                        ],
                        "src": "354:336:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "869:164:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "886:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "897:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "879:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "879:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "879:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "920:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "931:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "916:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "916:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "936:2:111",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "909:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "909:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "909:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "959:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "970:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "955:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "955:18:111"
                                  },
                                  {
                                    "hexValue": "436f707920737562737472696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "975:16:111",
                                    "type": "",
                                    "value": "Copy substring"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "948:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "948:44:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "948:44:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1001:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1013:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1024:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1009:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1009:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1001:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b69adba4b15d6a8a1b8a64f4f9b86f72be3b65732717c771b7ea48e206c3d461__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "846:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "860:4:111",
                            "type": ""
                          }
                        ],
                        "src": "695:338:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1212:167:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1229:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1240:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1222:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1222:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1222:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1263:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1274:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1259:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1259:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1279:2:111",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1252:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1252:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1252:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1302:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1313:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1298:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1298:18:111"
                                  },
                                  {
                                    "hexValue": "436f70792077686f6c6520737472696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1318:19:111",
                                    "type": "",
                                    "value": "Copy whole string"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1291:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1291:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1291:47:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1347:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1359:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1370:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1355:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1355:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1347:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9968d7daf615e9fa7c6713bbc68c64b800be2f1bf3288dca817829d5de1b34e8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1189:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1203:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1038:341:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1558:162:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1575:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1586:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1609:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1620:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1605:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1605:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1625:2:111",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1598:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1598:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1598:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1648:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1659:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1644:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1644:18:111"
                                  },
                                  {
                                    "hexValue": "526561642075696e74203332",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1664:14:111",
                                    "type": "",
                                    "value": "Read uint 32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1637:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1637:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1637:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1688:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1700:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1711:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1696:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1696:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1688:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c73525d413229451c579a25eb278f10a9f2e08642c8778e9ece05e751d72f4d5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1535:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1549:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1384:336:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1899:158:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1916:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1927:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1909:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1909:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1909:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1950:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1961:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1946:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1946:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1966:1:111",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1939:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1939:29:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1939:29:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1988:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1999:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1984:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1984:18:111"
                                  },
                                  {
                                    "hexValue": "61203d3d2030783631",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2004:11:111",
                                    "type": "",
                                    "value": "a == 0x61"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1977:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1977:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1977:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2025:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2037:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2048:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2033:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2033:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2025:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3b33bb8f6621c61a1c9a8b8113e60f0b7233de96fbe0d40dae1384c3fc842925__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1876:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1890:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1725:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2236:180:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2253:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2264:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2246:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2246:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2246:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2287:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2298:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2283:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2283:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2303:2:111",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2276:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2276:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2276:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2326:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2337:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2322:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2322:18:111"
                                  },
                                  {
                                    "hexValue": "496e636f72726563742068617368206f6620656d70747920737472696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2342:32:111",
                                    "type": "",
                                    "value": "Incorrect hash of empty string"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2315:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2315:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2315:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2384:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2396:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2407:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2392:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2392:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2384:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ccdc0392a10c2d827126b17a796b48eafa036f7ca92558db0c3b7d498620cb42__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2213:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2227:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2062:354:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2595:173:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2612:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2623:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2605:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2605:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2605:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2646:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2657:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2642:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2642:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2662:2:111",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2635:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2635:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2635:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2685:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2696:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2681:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2681:18:111"
                                  },
                                  {
                                    "hexValue": "496e636f72726563742068617368206f662027666f6f27",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2701:25:111",
                                    "type": "",
                                    "value": "Incorrect hash of 'foo'"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2674:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2674:53:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2674:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2736:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2748:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2759:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2744:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2744:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2736:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c32175d32a0e82681a8b7e8be3eb49f97845b39b03a1b2918b41127279713506__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2572:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2586:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2421:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2947:163:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2964:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2957:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2957:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2957:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2998:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3009:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2994:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2994:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3014:2:111",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2987:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2987:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2987:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3037:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3048:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3033:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3033:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d7061726520657175616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3053:15:111",
                                    "type": "",
                                    "value": "Compare equal"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3026:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3026:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3026:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3078:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3090:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3101:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3086:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3086:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3078:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c35f9b12ca4d27568056c39f4fe93d050fcf0bb9b8710a0dff738cf6463b3a97__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2924:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2938:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2773:337:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3289:230:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3306:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3317:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3299:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3299:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3299:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3340:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3351:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3336:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3336:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3356:2:111",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3329:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3329:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3329:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3379:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3390:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3375:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3375:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d7061726520646966666572656e742076616c756520776974682073616d",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3395:34:111",
                                    "type": "",
                                    "value": "Compare different value with sam"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3368:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3368:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3368:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3450:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3461:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3446:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3446:18:111"
                                  },
                                  {
                                    "hexValue": "65206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3466:10:111",
                                    "type": "",
                                    "value": "e length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3439:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3439:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3439:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3486:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3498:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3509:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3494:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3494:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3486:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d5f6cc0c98bcfe3c0cb60be7cac4a422e003c7daec0aecc80551c9ab5a4bdb10__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3266:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3280:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3115:404:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3698:234:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3715:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3726:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3708:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3708:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3708:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3749:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3760:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3745:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3745:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3765:2:111",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3738:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3738:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3738:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3788:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3799:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3784:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3784:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d7061726520646966666572656e742076616c75652077697468206d756c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3804:34:111",
                                    "type": "",
                                    "value": "Compare different value with mul"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3777:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3777:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3777:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3859:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3870:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3855:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3855:18:111"
                                  },
                                  {
                                    "hexValue": "7469706c65206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3875:14:111",
                                    "type": "",
                                    "value": "tiple length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3848:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3848:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3848:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3899:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3911:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3922:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3907:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3907:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3899:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8c9a94edefb554b283c3e675ff6c094adc8299ada82da72a741c3e748c306196__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3675:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3689:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3524:408:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4111:235:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4128:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4139:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4121:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4121:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4121:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4162:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4173:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4158:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4158:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4178:2:111",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4151:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4151:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4151:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4201:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4212:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4197:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4197:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d7061726520646966666572656e742076616c7565207769746820646966",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4217:34:111",
                                    "type": "",
                                    "value": "Compare different value with dif"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4190:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4190:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4190:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4272:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4283:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4268:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4268:18:111"
                                  },
                                  {
                                    "hexValue": "666572656e74206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4288:15:111",
                                    "type": "",
                                    "value": "ferent length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4261:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4261:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4261:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4313:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4325:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4336:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4321:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4321:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4313:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0565c18ee5278c15f772c3ed947ac11333166ea5c4636eb577abddbf78d0ae6c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4088:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4102:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3937:409:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4525:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4542:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4553:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4535:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4535:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4535:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4576:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4587:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4572:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4572:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4592:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4565:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4565:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4565:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4615:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4626:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4611:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4611:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d7061726573206d6f7265207468616e2033322062797465732063686172",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4631:34:111",
                                    "type": "",
                                    "value": "Compares more than 32 bytes char"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4604:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4604:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4604:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4675:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4687:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4698:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4683:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4683:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4675:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_60aa1ee88c02b796f2bec0246a31c97415d0f47b9bf4bac40af536913b468248__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4502:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4516:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4351:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4886:232:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4903:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4914:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4896:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4896:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4896:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4937:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4948:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4933:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4933:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4953:2:111",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4926:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4926:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4926:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4976:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4987:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4972:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4972:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d70617265206c6f6e672063686172207769746820646966666572656e63",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4992:34:111",
                                    "type": "",
                                    "value": "Compare long char with differenc"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4965:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4965:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4965:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5047:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5058:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5043:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5043:18:111"
                                  },
                                  {
                                    "hexValue": "65206174207374617274",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5063:12:111",
                                    "type": "",
                                    "value": "e at start"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5036:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5036:40:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5036:40:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5085:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5097:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5108:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5093:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5093:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5085:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5b8997dc2d063e9fb8a4f4952461a71ac960d32c6a2e87f631ab357cd8f645bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4863:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4877:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4712:406:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5297:160:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5314:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5325:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5307:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5307:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5307:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5348:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5359:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5344:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5344:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:2:111",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5337:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5337:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5337:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5387:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5398:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5383:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5383:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f646520276127",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5403:12:111",
                                    "type": "",
                                    "value": "Decode 'a'"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5376:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5376:40:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5376:40:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5425:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5437:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5448:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5433:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5433:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5425:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0e59f029ea56bbaf4b61743fce5c46cb75c77bb08ae2edbf489ec1fa43ec8201__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5274:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5288:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5123:334:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5636:161:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5653:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5664:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5646:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5646:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5646:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5687:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5698:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5683:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5683:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5703:2:111",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5676:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5676:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5676:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5726:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5737:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5722:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5722:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f64652027616127",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5742:13:111",
                                    "type": "",
                                    "value": "Decode 'aa'"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5715:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5715:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5715:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5765:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5777:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5788:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5773:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5773:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5765:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d60e1b1046c018b9e8929b4c1b05a79e8d860db206231f63d53a5a3159024b47__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5613:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5627:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5462:335:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5976:162:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5993:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6004:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5986:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5986:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5986:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6027:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6038:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6023:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6023:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6043:2:111",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6016:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6016:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6016:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6066:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6077:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6062:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6062:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f6465202761616127",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6082:14:111",
                                    "type": "",
                                    "value": "Decode 'aaa'"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6055:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6055:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6055:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6106:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6118:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6129:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6114:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6114:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6106:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2c1ac60deb5cfb03a9f2bb1de9c89f448504d9a2dcb791c2c1856aa4bc90271f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5953:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5967:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5802:336:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6317:163:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6334:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6345:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6327:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6327:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6327:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6368:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6379:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6364:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6364:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6384:2:111",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6357:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6357:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6357:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6407:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6418:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6403:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6403:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f646520276161616127",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6423:15:111",
                                    "type": "",
                                    "value": "Decode 'aaaa'"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6396:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6396:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6396:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6448:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6460:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6471:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6456:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6456:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6448:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d0e47d356613d6f7153025faa1a08a01b4b79e2f0872a569cab00e33b8fe2f92__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6294:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6308:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6143:337:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6659:164:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6676:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6687:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6669:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6669:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6669:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6710:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6721:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6706:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6706:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6726:2:111",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6699:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6699:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6699:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6749:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6760:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6745:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6745:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f64652027616161616127",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6765:16:111",
                                    "type": "",
                                    "value": "Decode 'aaaaa'"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6738:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6738:44:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6738:44:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6791:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6803:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6814:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6799:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6799:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6791:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_df5139274082a2890b652b7b9ca4aa3b92da255beebd2aea522efabf071a82ba__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6636:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6650:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6485:338:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7002:174:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7019:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7030:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7012:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7012:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7012:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7053:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7064:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7049:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7049:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7069:2:111",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7042:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7042:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7042:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7092:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7103:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7088:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7088:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f64652027616161616127206c6f77657263617365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7108:26:111",
                                    "type": "",
                                    "value": "Decode 'aaaaa' lowercase"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7081:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7081:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7081:54:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7144:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7156:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7167:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7152:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7152:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7144:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_be82a2b2a8eedc49dab18db603ee4db7a6e654667a8312a4b20bfa32c42ded3c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6979:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6993:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6828:348:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7355:165:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7372:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7383:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7365:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7365:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7365:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7406:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7417:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7402:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7402:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7422:2:111",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7395:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7395:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7445:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7456:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7441:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7441:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f646520616c706861626574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7461:17:111",
                                    "type": "",
                                    "value": "Decode alphabet"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7434:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7434:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7434:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7488:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7500:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7511:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7496:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7496:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dfecda4119da15203af22c4adb285880c89c909cc077ea7a2491252d3e6bc123__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7332:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7346:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7181:339:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7699:175:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7716:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7727:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7709:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7709:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7709:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7750:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7761:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7746:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7746:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7766:2:111",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7739:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7739:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7739:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7789:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7800:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7785:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7785:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f646520616c706861626574206c6f77657263617365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7805:27:111",
                                    "type": "",
                                    "value": "Decode alphabet lowercase"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7778:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7778:55:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7778:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7842:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7854:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7865:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7850:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7850:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7842:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ae2facbcc57f3802e5a9e7198d5d43aab834f08caa7d17ea6263a458a927f643__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7676:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7690:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7525:349:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8053:163:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8070:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8081:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8063:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8063:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8063:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8104:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8115:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8100:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8120:2:111",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8093:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8093:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8093:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8143:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8154:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8139:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8139:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f64652033322a276127",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8159:15:111",
                                    "type": "",
                                    "value": "Decode 32*'a'"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8132:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8132:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8132:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8184:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8196:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8207:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8192:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8192:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8184:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5ed41eb7bfcbd1f7e6ec230b18935019051f3c094557ae28dfd2d0616553ee26__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8030:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8044:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7879:337:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8395:172:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8412:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8423:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8405:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8405:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8405:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8446:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8457:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8442:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8442:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8462:2:111",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8435:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8435:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8435:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8485:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8496:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8481:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8481:18:111"
                                  },
                                  {
                                    "hexValue": "4465636f6465207265616c2062797465733332686578",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8501:24:111",
                                    "type": "",
                                    "value": "Decode real bytes32hex"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8474:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8474:52:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8474:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8535:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8547:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8558:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8543:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8543:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8535:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4aa21864c6c5f68459882cebe5d7989f64eff10a412bb39411106d79b11cf6d7__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8372:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8386:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8221:346:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8746:169:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8763:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8774:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8756:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8756:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8756:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8797:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8808:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8793:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8793:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8813:2:111",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8786:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8786:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8786:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8836:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8847:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8832:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8832:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d706172652073616d65206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8852:21:111",
                                    "type": "",
                                    "value": "Compare same length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8825:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8825:49:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8825:49:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8883:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8895:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8906:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8891:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8891:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8883:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5bc7eb6305585f9b5cfb4a6b9c1dfa988d674d092f13aaeb30f2a701d8fca38a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8723:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8737:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8572:343:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9094:174:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9111:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9122:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9104:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9104:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9104:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9145:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9156:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9141:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9141:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9161:2:111",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9134:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9134:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9134:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9184:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9195:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9180:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9180:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d7061726520646966666572656e74206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9200:26:111",
                                    "type": "",
                                    "value": "Compare different length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9173:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9173:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9173:54:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9236:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9248:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9259:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9244:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9244:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9236:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_03e476650ab551512fe9bb311d042c73370e6a81c84da4e2c1d9c7390d4e12c8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9071:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9085:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8920:348:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9447:224:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9464:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9475:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9457:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9457:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9457:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9498:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9509:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9494:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9494:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9514:2:111",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9487:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9487:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9487:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9537:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9548:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9533:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9533:18:111"
                                  },
                                  {
                                    "hexValue": "436f6d706172652073616d65207769746820646966666572656e74206f666673",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9553:34:111",
                                    "type": "",
                                    "value": "Compare same with different offs"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9526:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9526:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9526:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9608:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9619:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9604:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9604:18:111"
                                  },
                                  {
                                    "hexValue": "6574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9624:4:111",
                                    "type": "",
                                    "value": "et"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9597:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9597:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9597:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9638:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9650:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9661:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9646:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9646:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9638:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_02fc56588f09e08b24a19ce6df995052dbcff45e5138a3c4edb0fad3bf3ee342__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9424:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9438:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9273:398:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9850:165:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9867:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9878:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9860:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9860:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9860:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9901:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9912:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9897:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9897:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9917:2:111",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9890:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9890:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9890:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9940:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9951:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9936:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9936:18:111"
                                  },
                                  {
                                    "hexValue": "537472696e6720657175616c697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9956:17:111",
                                    "type": "",
                                    "value": "String equality"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9929:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9929:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9929:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9983:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9995:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10006:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9991:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9991:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9983:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_596eb6791a5069d9c5aafa8b2f0e60843ddf87d5636ca7393ffcee72fd5606fe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9827:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9841:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9676:339:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10194:167:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10211:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10222:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10204:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10204:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10204:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10245:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10256:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10241:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10241:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10261:2:111",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10234:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10234:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10234:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10284:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10295:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10280:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10280:18:111"
                                  },
                                  {
                                    "hexValue": "537472696e6720696e657175616c697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10300:19:111",
                                    "type": "",
                                    "value": "String inequality"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10273:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10273:47:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10273:47:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10329:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10341:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10352:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10337:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10337:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10329:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_804bb9153fba379de973d097c160a9b9da9ca174d530baa1cafee83d4c2833fc__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10171:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10185:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10020:341:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10540:178:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10557:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10568:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10550:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10550:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10550:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10591:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10602:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10587:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10587:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10607:2:111",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10580:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10580:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10580:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10630:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10641:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10626:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10626:18:111"
                                  },
                                  {
                                    "hexValue": "537562737472696e6720746f20737472696e6720657175616c697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10646:30:111",
                                    "type": "",
                                    "value": "Substring to string equality"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10619:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10619:58:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10619:58:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10686:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10698:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10709:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10694:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10694:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10686:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e4473e14bb320ebfc1a8c77d907eed343535ecb4dde11ed6020cbeaa611e61ac__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10517:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10531:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10366:352:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10897:181:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10914:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10925:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10907:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10907:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10907:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10948:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10959:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10944:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10944:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10964:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10937:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10937:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10937:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10987:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10998:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10983:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10983:18:111"
                                  },
                                  {
                                    "hexValue": "537562737472696e6720746f20737562737472696e6720657175616c697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11003:33:111",
                                    "type": "",
                                    "value": "Substring to substring equality"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10976:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10976:61:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10976:61:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11046:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11058:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11069:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11054:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11054:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11046:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_843e99517f2a31c84fc8209ad696769d721e30918a2a7db0c030db2ed1639b7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10874:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10888:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10723:355:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11257:161:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11274:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11285:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11267:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11267:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11267:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11308:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11319:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11304:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11304:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11324:2:111",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11297:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11297:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11297:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11347:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11358:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11343:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11343:18:111"
                                  },
                                  {
                                    "hexValue": "7265616442797465733332",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11363:13:111",
                                    "type": "",
                                    "value": "readBytes32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11336:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11336:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11336:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11386:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11398:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11409:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11394:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11394:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11386:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_75d9deeae65d7d556ddf2b2305f974de12f0656c64f354d250392a722b3ab4e9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11234:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11248:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11083:335:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11597:162:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11614:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11625:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11607:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11607:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11607:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11648:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11659:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11644:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11644:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11664:2:111",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11637:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11637:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11637:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11687:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11698:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11683:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11683:18:111"
                                  },
                                  {
                                    "hexValue": "526561642075696e74203136",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11703:14:111",
                                    "type": "",
                                    "value": "Read uint 16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11676:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11676:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11676:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11727:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11739:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11750:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11735:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11735:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11727:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d49128b581930719aa04d624dd89cff9d22b04fd0e8c9dda2fe4a29bf43da749__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11574:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11588:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11423:336:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11796:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11813:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11816:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11806:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11806:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11806:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11910:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11913:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11903:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11903:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11903:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11934:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11937:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11927:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11927:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11927:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11764:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12001:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12011:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12022:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12025:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12018:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12018:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "12011:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12050:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12052:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12052:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12052:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12042:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "12045:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12039:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12039:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12036:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "11984:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "11987:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "11993:3:111",
                            "type": ""
                          }
                        ],
                        "src": "11953:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12115:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12132:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12135:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12125:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12125:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12125:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12229:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12232:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12222:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12222:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12222:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12253:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12256:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12246:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12246:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12246:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12083:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12304:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12321:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12324:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12314:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12314:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12314:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12418:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12421:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12411:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12411:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12411:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12442:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12445:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12435:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12435:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12435:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12272:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12510:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12520:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12532:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12535:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "12528:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12528:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "12520:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12561:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12563:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12563:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12563:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "12552:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12558:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12549:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12549:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12546:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12492:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12495:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "12501:4:111",
                            "type": ""
                          }
                        ],
                        "src": "12461:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12641:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12732:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12734:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12734:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12734:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12657:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12664:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "12654:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12654:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12651:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12763:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12774:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12781:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12770:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12770:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "12763:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12623:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "12633:3:111",
                            "type": ""
                          }
                        ],
                        "src": "12594:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12846:116:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12856:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12871:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12874:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "12867:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12867:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "12856:7:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12934:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12936:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12936:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12936:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "12905:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "12898:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12898:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "12912:1:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "product",
                                                "nodeType": "YulIdentifier",
                                                "src": "12919:7:111"
                                              },
                                              {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "12928:1:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "12915:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12915:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nodeType": "YulIdentifier",
                                          "src": "12909:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12909:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "12895:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12895:37:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12888:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12888:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12885:71:111"
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12825:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12828:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "12834:7:111",
                            "type": ""
                          }
                        ],
                        "src": "12794:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13005:228:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13036:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13057:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13060:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13050:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13050:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13050:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13158:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13161:4:111",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13151:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13151:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13151:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13186:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13189:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13179:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13179:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13179:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13025:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13018:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13018:9:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13015:189:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13213:14:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13222:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13225:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "13218:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13218:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "13213:1:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12990:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12993:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "12999:1:111",
                            "type": ""
                          }
                        ],
                        "src": "12967:266:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13302:418:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13312:16:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13327:1:111",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13316:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13337:16:111",
                              "value": {
                                "name": "power_1",
                                "nodeType": "YulIdentifier",
                                "src": "13346:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "13337:5:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13362:13:111",
                              "value": {
                                "name": "_base",
                                "nodeType": "YulIdentifier",
                                "src": "13370:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "base",
                                  "nodeType": "YulIdentifier",
                                  "src": "13362:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13426:288:111",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "13531:22:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x11",
                                              "nodeType": "YulIdentifier",
                                              "src": "13533:16:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13533:18:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "13533:18:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "13446:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13456:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                            },
                                            {
                                              "name": "base",
                                              "nodeType": "YulIdentifier",
                                              "src": "13524:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "13452:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13452:77:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "13443:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13443:87:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "13440:113:111"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "13592:29:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "13594:25:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "power",
                                                "nodeType": "YulIdentifier",
                                                "src": "13607:5:111"
                                              },
                                              {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "13614:4:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "13603:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13603:16:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "power",
                                              "nodeType": "YulIdentifier",
                                              "src": "13594:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "13573:8:111"
                                        },
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13583:7:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "13569:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13569:22:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "13566:55:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13634:23:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "13646:4:111"
                                        },
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "13652:4:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "13642:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13642:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "13634:4:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13670:34:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13686:7:111"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "13695:8:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13682:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13682:22:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "13670:8:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "13395:8:111"
                                  },
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13405:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13392:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13392:21:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "13414:3:111",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "13388:3:111",
                                "statements": []
                              },
                              "src": "13384:330:111"
                            }
                          ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "_base",
                            "nodeType": "YulTypedName",
                            "src": "13266:5:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "13273:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "13286:5:111",
                            "type": ""
                          },
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "13293:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13238:482:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13784:807:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13822:52:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13836:10:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "13845:1:111",
                                      "type": "",
                                      "value": "1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "13836:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "13859:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "13804:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13797:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13797:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13794:80:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13907:52:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13921:10:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "13930:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "13921:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "13944:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "13893:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13886:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13886:12:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13883:76:111"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "13995:52:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "14009:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14018:1:111",
                                          "type": "",
                                          "value": "1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "14009:5:111"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "14032:5:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "13988:59:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13993:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "14063:123:111",
                                    "statements": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "14098:22:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "panic_error_0x11",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14100:16:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14100:18:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "14100:18:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "14083:8:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14093:3:111",
                                              "type": "",
                                              "value": "255"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "14080:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14080:17:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "14077:43:111"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "14133:25:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "14146:8:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14156:1:111",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "14142:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14142:16:111"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "14133:5:111"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "14171:5:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "14056:130:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14061:1:111",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "13975:4:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "13968:218:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14284:70:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14298:28:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "14311:4:111"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "14317:8:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "exp",
                                        "nodeType": "YulIdentifier",
                                        "src": "14307:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14307:19:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "14298:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "14339:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "14208:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14214:2:111",
                                            "type": "",
                                            "value": "11"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "14205:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14205:12:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "14222:8:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14232:2:111",
                                            "type": "",
                                            "value": "78"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "14219:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14219:16:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14201:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14201:35:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "14245:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14251:3:111",
                                            "type": "",
                                            "value": "307"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "14242:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14242:13:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "14260:8:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14270:2:111",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "14257:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14257:16:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14238:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14238:36:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "14198:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14198:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14195:159:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14363:57:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "14405:4:111"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "14411:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_helper",
                                  "nodeType": "YulIdentifier",
                                  "src": "14386:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14386:34:111"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14367:7:111",
                                  "type": ""
                                },
                                {
                                  "name": "base_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14376:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14525:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14527:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14527:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14527:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14435:7:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14448:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                      },
                                      {
                                        "name": "base_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14516:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "14444:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14444:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14432:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14432:92:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14429:118:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14556:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14569:7:111"
                                  },
                                  {
                                    "name": "base_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14578:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "14565:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14565:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "14556:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "13755:4:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "13761:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "13774:5:111",
                            "type": ""
                          }
                        ],
                        "src": "13725:866:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14666:61:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14676:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "14706:4:111"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "14712:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_unsigned",
                                  "nodeType": "YulIdentifier",
                                  "src": "14685:20:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14685:36:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "14676:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_t_uint256_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "14637:4:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "14643:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "14656:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14596:131:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14780:152:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14790:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14802:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14805:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "14798:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14798:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "14790:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14816:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14830:1:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14833:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14826:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14826:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14820:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14904:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14906:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14906:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14906:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "14861:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "14854:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14854:10:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "diff",
                                            "nodeType": "YulIdentifier",
                                            "src": "14870:4:111"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "14876:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sgt",
                                          "nodeType": "YulIdentifier",
                                          "src": "14866:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14866:12:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14850:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14850:29:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14885:2:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "diff",
                                            "nodeType": "YulIdentifier",
                                            "src": "14893:4:111"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "14899:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "slt",
                                          "nodeType": "YulIdentifier",
                                          "src": "14889:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14889:12:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14881:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14881:21:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "14847:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14847:56:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14844:82:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "14762:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "14765:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "14771:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14732:200:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_stringliteral_974ae182026b0ba5d30ca4b083d43bf7d940dee89b8f9872917a22e202d41df8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"readBytes20\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e29f2ddaeadeab3559952d54b0d68b91ef0da29793b7b1d536702989fe3bdbee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Copy 0 bytes\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b69adba4b15d6a8a1b8a64f4f9b86f72be3b65732717c771b7ea48e206c3d461__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Copy substring\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9968d7daf615e9fa7c6713bbc68c64b800be2f1bf3288dca817829d5de1b34e8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Copy whole string\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c73525d413229451c579a25eb278f10a9f2e08642c8778e9ece05e751d72f4d5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Read uint 32\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3b33bb8f6621c61a1c9a8b8113e60f0b7233de96fbe0d40dae1384c3fc842925__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"a == 0x61\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ccdc0392a10c2d827126b17a796b48eafa036f7ca92558db0c3b7d498620cb42__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Incorrect hash of empty string\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c32175d32a0e82681a8b7e8be3eb49f97845b39b03a1b2918b41127279713506__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Incorrect hash of 'foo'\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c35f9b12ca4d27568056c39f4fe93d050fcf0bb9b8710a0dff738cf6463b3a97__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Compare equal\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d5f6cc0c98bcfe3c0cb60be7cac4a422e003c7daec0aecc80551c9ab5a4bdb10__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"Compare different value with sam\")\n        mstore(add(headStart, 96), \"e length\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8c9a94edefb554b283c3e675ff6c094adc8299ada82da72a741c3e748c306196__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Compare different value with mul\")\n        mstore(add(headStart, 96), \"tiple length\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0565c18ee5278c15f772c3ed947ac11333166ea5c4636eb577abddbf78d0ae6c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"Compare different value with dif\")\n        mstore(add(headStart, 96), \"ferent length\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_60aa1ee88c02b796f2bec0246a31c97415d0f47b9bf4bac40af536913b468248__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Compares more than 32 bytes char\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5b8997dc2d063e9fb8a4f4952461a71ac960d32c6a2e87f631ab357cd8f645bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"Compare long char with differenc\")\n        mstore(add(headStart, 96), \"e at start\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0e59f029ea56bbaf4b61743fce5c46cb75c77bb08ae2edbf489ec1fa43ec8201__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 10)\n        mstore(add(headStart, 64), \"Decode 'a'\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d60e1b1046c018b9e8929b4c1b05a79e8d860db206231f63d53a5a3159024b47__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Decode 'aa'\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2c1ac60deb5cfb03a9f2bb1de9c89f448504d9a2dcb791c2c1856aa4bc90271f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Decode 'aaa'\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d0e47d356613d6f7153025faa1a08a01b4b79e2f0872a569cab00e33b8fe2f92__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Decode 'aaaa'\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_df5139274082a2890b652b7b9ca4aa3b92da255beebd2aea522efabf071a82ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Decode 'aaaaa'\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_be82a2b2a8eedc49dab18db603ee4db7a6e654667a8312a4b20bfa32c42ded3c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Decode 'aaaaa' lowercase\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dfecda4119da15203af22c4adb285880c89c909cc077ea7a2491252d3e6bc123__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"Decode alphabet\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ae2facbcc57f3802e5a9e7198d5d43aab834f08caa7d17ea6263a458a927f643__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Decode alphabet lowercase\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5ed41eb7bfcbd1f7e6ec230b18935019051f3c094557ae28dfd2d0616553ee26__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Decode 32*'a'\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4aa21864c6c5f68459882cebe5d7989f64eff10a412bb39411106d79b11cf6d7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Decode real bytes32hex\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5bc7eb6305585f9b5cfb4a6b9c1dfa988d674d092f13aaeb30f2a701d8fca38a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Compare same length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_03e476650ab551512fe9bb311d042c73370e6a81c84da4e2c1d9c7390d4e12c8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Compare different length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_02fc56588f09e08b24a19ce6df995052dbcff45e5138a3c4edb0fad3bf3ee342__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"Compare same with different offs\")\n        mstore(add(headStart, 96), \"et\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_596eb6791a5069d9c5aafa8b2f0e60843ddf87d5636ca7393ffcee72fd5606fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"String equality\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_804bb9153fba379de973d097c160a9b9da9ca174d530baa1cafee83d4c2833fc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"String inequality\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e4473e14bb320ebfc1a8c77d907eed343535ecb4dde11ed6020cbeaa611e61ac__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"Substring to string equality\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_843e99517f2a31c84fc8209ad696769d721e30918a2a7db0c030db2ed1639b7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"Substring to substring equality\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_75d9deeae65d7d556ddf2b2305f974de12f0656c64f354d250392a722b3ab4e9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"readBytes32\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d49128b581930719aa04d624dd89cff9d22b04fd0e8c9dda2fe4a29bf43da749__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Read uint 16\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := mod(x, y)\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, exponent)\n    }\n    function checked_sub_t_int256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        let _1 := slt(y, 0)\n        if or(and(iszero(_1), sgt(diff, x)), and(_1, slt(diff, x))) { panic_error_0x11() }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100c85760003560e01c8063809a617311610081578063c80094b31161005b578063c80094b31461010f578063e77975cf14610117578063f3cbda461461011f57600080fd5b8063809a6173146100f757806383d31df6146100ff578063878ab4ae1461010757600080fd5b80631b8e1b81116100b25780631b8e1b81146100df5780632e72f9a9146100e7578063673dcc73146100ef57600080fd5b80625aa6f9146100cd578063098e6232146100d7575b600080fd5b6100d5610127565b005b6100d56101fe565b6100d5610561565b6100d56105f8565b6100d561071a565b6100d5610902565b6100d5610fb8565b6100d561163e565b6100d56118c8565b6100d5611d02565b6100d5611d91565b60408051808201909152601681527f6162636465666768696a6b6c6d6e6f707172737475760000000000000000000060208201527f62636465666768696a6b6c6d6e6f70717273747500000000000000000000000090610188906001611e24565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016146101fc5760405162461bcd60e51b815260206004820152600b60248201527f726561644279746573323000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b565b60408051602080820183526000918290528251808401909352600583527f68656c6c6f000000000000000000000000000000000000000000000000000000908301527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709161026c9180611e6a565b80519060200120146102c05760405162461bcd60e51b815260206004820152600c60248201527f436f70792030206279746573000000000000000000000000000000000000000060448201526064016101f3565b60408051808201825260048082527f68656c6c000000000000000000000000000000000000000000000000000000006020928301528251808401909352600583527f68656c6c6f000000000000000000000000000000000000000000000000000000918301919091527f647b0bf5e82b669964766915971e5985cb6559f0f22af1002f75d81d4f3349429161035791600090611e6a565b80519060200120146103ab5760405162461bcd60e51b815260206004820152600e60248201527f436f707920737562737472696e6700000000000000000000000000000000000060448201526064016101f3565b60408051808201825260048082527f656c6c6f000000000000000000000000000000000000000000000000000000006020928301528251808401909352600583527f68656c6c6f000000000000000000000000000000000000000000000000000000918301919091527f729b67e29bd543b60a81f35aba2c80ac4d8ea4caba9a72ed978093c22148af509161044291600190611e6a565b80519060200120146104965760405162461bcd60e51b815260206004820152600e60248201527f436f707920737562737472696e6700000000000000000000000000000000000060448201526064016101f3565b60408051808201825260058082527f68656c6c6f00000000000000000000000000000000000000000000000000000060209283018190528351808501909452818452918301919091527f1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac89161050d91600090611e6a565b80519060200120146101fc5760405162461bcd60e51b815260206004820152601160248201527f436f70792077686f6c6520737472696e6700000000000000000000000000000060448201526064016101f3565b60408051808201909152600581527f616263646500000000000000000000000000000000000000000000000000000060208201526105a0906001611eec565b63ffffffff166362636465146101fc5760405162461bcd60e51b815260206004820152600c60248201527f526561642075696e74203332000000000000000000000000000000000000000060448201526064016101f3565b60408051808201909152600181527f61000000000000000000000000000000000000000000000000000000000000006020820152610637906000611f16565b60ff166061146106895760405162461bcd60e51b815260206004820152600960248201527f61203d3d2030783631000000000000000000000000000000000000000000000060448201526064016101f3565b60408051808201909152600281527f626100000000000000000000000000000000000000000000000000000000000060208201526106c8906001611f16565b60ff166061146101fc5760405162461bcd60e51b815260206004820152600960248201527f61203d3d2030783631000000000000000000000000000000000000000000000060448201526064016101f3565b604080516020810190915260008082527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470916107569180611f3b565b146107a35760405162461bcd60e51b815260206004820152601e60248201527f496e636f72726563742068617368206f6620656d70747920737472696e67000060448201526064016101f3565b6040805180820190915260038082527f666f6f000000000000000000000000000000000000000000000000000000000060208301527f41b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d9161080691600090611f3b565b146108535760405162461bcd60e51b815260206004820152601760248201527f496e636f72726563742068617368206f662027666f6f2700000000000000000060448201526064016101f3565b60408051808201909152600381527f666f6f000000000000000000000000000000000000000000000000000000000060208201527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470906108b590600080611f3b565b146101fc5760405162461bcd60e51b815260206004820152601e60248201527f496e636f72726563742068617368206f6620656d70747920737472696e67000060448201526064016101f3565b61097f6040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f6100000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b156001146109cf5760405162461bcd60e51b815260206004820152600d60248201527f436f6d7061726520657175616c0000000000000000000000000000000000000060448201526064016101f3565b6000610a4e6040518060400160405280600181526020017f62000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f6100000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911314610ac55760405162461bcd60e51b815260206004820152602860248201527f436f6d7061726520646966666572656e742076616c756520776974682073616d60448201527f65206c656e67746800000000000000000000000000000000000000000000000060648201526084016101f3565b6000610b446040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f6200000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911214610bbb5760405162461bcd60e51b815260206004820152602860248201527f436f6d7061726520646966666572656e742076616c756520776974682073616d60448201527f65206c656e67746800000000000000000000000000000000000000000000000060648201526084016101f3565b6000610c3a6040518060400160405280600281526020017f61620000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f6161000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911314610cb15760405162461bcd60e51b815260206004820152602c60248201527f436f6d7061726520646966666572656e742076616c75652077697468206d756c60448201527f7469706c65206c656e677468000000000000000000000000000000000000000060648201526084016101f3565b6000610d306040518060400160405280600281526020017f61610000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f6100000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911314610da75760405162461bcd60e51b815260206004820152602d60248201527f436f6d7061726520646966666572656e742076616c756520776974682064696660448201527f666572656e74206c656e6774680000000000000000000000000000000000000060648201526084016101f3565b6000610e266040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f6161000000000000000000000000000000000000000000000000000000000000815250611f5f90919063ffffffff16565b6001911214610e9d5760405162461bcd60e51b815260206004820152602d60248201527f436f6d7061726520646966666572656e742076616c756520776974682064696660448201527f666572656e74206c656e6774680000000000000000000000000000000000000060648201526084016101f3565b60006040518060600160405280602281526020016127b3602291399050610ec48180611f5f565b15600114610f145760405162461bcd60e51b815260206004820181905260248201527f436f6d7061726573206d6f7265207468616e203332206279746573206368617260448201526064016101f3565b60006040518060600160405280602281526020016127916022913990506000610f3d8383611f5f565b6001911314610fb45760405162461bcd60e51b815260206004820152602a60248201527f436f6d70617265206c6f6e672063686172207769746820646966666572656e6360448201527f652061742073746172740000000000000000000000000000000000000000000060648201526084016101f3565b5050565b6040805180820190915260028082527f433400000000000000000000000000000000000000000000000000000000000060208301527f61000000000000000000000000000000000000000000000000000000000000009161101b91600090611f7a565b146110685760405162461bcd60e51b815260206004820152600a60248201527f4465636f6465202761270000000000000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260048082527f433547470000000000000000000000000000000000000000000000000000000060208301527f6161000000000000000000000000000000000000000000000000000000000000916110cb91600090611f7a565b146111185760405162461bcd60e51b815260206004820152600b60248201527f4465636f6465202761612700000000000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260058082527f4335474d3200000000000000000000000000000000000000000000000000000060208301527f61616100000000000000000000000000000000000000000000000000000000009161117b91600090611f7a565b146111c85760405162461bcd60e51b815260206004820152600c60248201527f4465636f6465202761616127000000000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260078082527f4335474d324f380000000000000000000000000000000000000000000000000060208301527f61616161000000000000000000000000000000000000000000000000000000009161122b91600090611f7a565b146112785760405162461bcd60e51b815260206004820152600d60248201527f4465636f6465202761616161270000000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260088082527f4335474d324f423100000000000000000000000000000000000000000000000060208301527f6161616161000000000000000000000000000000000000000000000000000000916112db91600090611f7a565b146113285760405162461bcd60e51b815260206004820152600e60248201527f4465636f6465202761616161612700000000000000000000000000000000000060448201526064016101f3565b6040805180820190915260088082527f6335676d324f623100000000000000000000000000000000000000000000000060208301527f61616161610000000000000000000000000000000000000000000000000000009161138b91600090611f7a565b146113d85760405162461bcd60e51b815260206004820152601860248201527f4465636f64652027616161616127206c6f77657263617365000000000000000060448201526064016101f3565b7f6162636465666768696a6b6c6d6e6f707172737475767778797a00000000000065ffffffffffff19166114296000602a6040518060600160405280602a815260200161281c602a91399190611f7a565b146114765760405162461bcd60e51b815260206004820152600f60248201527f4465636f646520616c706861626574000000000000000000000000000000000060448201526064016101f3565b7f6162636465666768696a6b6c6d6e6f707172737475767778797a00000000000065ffffffffffff19166114c76000602a6040518060600160405280602a8152602001612705602a91399190611f7a565b146115145760405162461bcd60e51b815260206004820152601960248201527f4465636f646520616c706861626574206c6f776572636173650000000000000060448201526064016101f3565b7f616161616161616161616161616161616161616161616161616161616161616161155c6000603460405180606001604052806034815260200161272f603491399190611f7a565b146115a95760405162461bcd60e51b815260206004820152600d60248201527f4465636f64652033322a2761270000000000000000000000000000000000000060448201526064016101f3565b7f5f3a48d66e3ec18431192611a2a055b01d3b4b5d0000000000000000000000006115f1600160206040518060600160405280602e8152602001612763602e91399190611f7a565b146101fc5760405162461bcd60e51b815260206004820152601660248201527f4465636f6465207265616c20627974657333326865780000000000000000000060448201526064016101f3565b604080518082018252600581527f78786278780000000000000000000000000000000000000000000000000000006020808301919091528251808401909352600383527f7861780000000000000000000000000000000000000000000000000000000000908301526000916116ba9160019081906002826121fa565b600191131461170b5760405162461bcd60e51b815260206004820152601360248201527f436f6d706172652073616d65206c656e6774680000000000000000000000000060448201526064016101f3565b604080518082018252600681527f78786162787800000000000000000000000000000000000000000000000000006020808301919091528251808401909352600383527f7861780000000000000000000000000000000000000000000000000000000000908301526000916117879160019081906002806121fa565b60019113146117d85760405162461bcd60e51b815260206004820152601860248201527f436f6d7061726520646966666572656e74206c656e677468000000000000000060448201526064016101f3565b604080518082018252600581527f78786178780000000000000000000000000000000000000000000000000000006020808301919091528251808401909352600383527f786178000000000000000000000000000000000000000000000000000000000090830152611852919060019081906002826121fa565b156001146101fc5760405162461bcd60e51b815260206004820152602260248201527f436f6d706172652073616d65207769746820646966666572656e74206f66667360448201527f657400000000000000000000000000000000000000000000000000000000000060648201526084016101f3565b6119456040518060400160405280600581526020017f68656c6c6f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f68656c6c6f00000000000000000000000000000000000000000000000000000081525061230d90919063ffffffff16565b15156001146119965760405162461bcd60e51b815260206004820152600f60248201527f537472696e6720657175616c697479000000000000000000000000000000000060448201526064016101f3565b611a136040518060400160405280600781526020017f676f6f64627965000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f68656c6c6f00000000000000000000000000000000000000000000000000000081525061230d90919063ffffffff16565b15611a605760405162461bcd60e51b815260206004820152601160248201527f537472696e6720696e657175616c69747900000000000000000000000000000060448201526064016101f3565b611ae060016040518060400160405280600481526020017f656c6c6f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f68656c6c6f00000000000000000000000000000000000000000000000000000081525061232b9092919063ffffffff16565b1515600114611b315760405162461bcd60e51b815260206004820152601c60248201527f537562737472696e6720746f20737472696e6720657175616c6974790000000060448201526064016101f3565b611bb760016040518060400160405280600581526020017f6a656c6c6f000000000000000000000000000000000000000000000000000000815250600160046040518060400160405280600581526020017f68656c6c6f00000000000000000000000000000000000000000000000000000081525061235c90949392919063ffffffff16565b1515600114611c085760405162461bcd60e51b815260206004820152601f60248201527f537562737472696e6720746f20737562737472696e6720657175616c6974790060448201526064016101f3565b611c8b60016040518060400160405280600881526020017f61626368656c6c6f00000000000000000000000000000000000000000000000081525060036040518060400160405280600681526020017f7a68656c6c6f000000000000000000000000000000000000000000000000000081525061237f909392919063ffffffff16565b15156001146101fc5760405162461bcd60e51b815260206004820152602c60248201527f436f6d7061726520646966666572656e742076616c75652077697468206d756c60448201527f7469706c65206c656e677468000000000000000000000000000000000000000060648201526084016101f3565b6040805180820190915260208082527f303132333435363738396162636465663031323334353637383961626364656690820181905290611d449060006123b4565b146101fc5760405162461bcd60e51b815260206004820152600b60248201527f726561644279746573333200000000000000000000000000000000000000000060448201526064016101f3565b60408051808201909152600381527f61626300000000000000000000000000000000000000000000000000000000006020820152611dd09060016123d8565b61ffff16616263146101fc5760405162461bcd60e51b815260206004820152600c60248201527f526561642075696e74203136000000000000000000000000000000000000000060448201526064016101f3565b8151600090611e348360146124a3565b1115611e3f57600080fd5b5001602001517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690565b8251606090611e7983856124a3565b1115611e8457600080fd5b60008267ffffffffffffffff811115611e9f57611e9f6124b6565b6040519080825280601f01601f191660200182016040528015611ec9576020820181803683370190505b50905060208082019086860101611ee1828287612400565b509095945050505050565b8151600090611efc8360046124a3565b1115611f0757600080fd5b50016004015163ffffffff1690565b6000828281518110611f2a57611f2a6124e5565b016020015160f81c90505b92915050565b8251600090611f4a83856124a3565b1115611f5557600080fd5b5091016020012090565b6000611f73836000855185600087516121fa565b9392505050565b60006034821115611f8a57600080fd5b600080805b848110156120de57600087611fa483896124a3565b81518110611fb457611fb46124e5565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f3000000000000000000000000000000000000000000000000000000000000000811080159061204f57507f7a000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821611155b61205857600080fd5b6040518060800160405280604781526020016127d560479139612080603060f884901c612514565b81518110612090576120906124e5565b0160209081015160f81c93508311156120a857600080fd5b6120b3600187612514565b82036120bf57506120de565b5060059290921b60ff82161791806120d681612527565b915050611f8f565b5060006120ec85600561255f565b90506120f9600886612576565b600003612111578160ff16600584901b1792506121e0565b61211c600886612576565b60020361214a5760028260ff16901c60ff16600384901b1792506002816121439190612514565b90506121e0565b612155600886612576565b60040361217c5760048260ff16901c60ff16600184901b1792506004816121439190612514565b612187600886612576565b6005036121ae5760018260ff16901c60ff16600484901b1792506001816121439190612514565b6121b9600886612576565b6007036100c85760038260ff16901c60ff16600284901b1792506003816121439190612514565b6121ec81610100612514565b9290921b9695505050505050565b600084808310156122085750815b60208789018101908587010160005b838110156122f257825182518082146122c2576000602087111561225c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612298565b60018461226a896020612514565b61227491906124a3565b61227f90600861255f565b61228a9060026126d1565b6122949190612514565b1990505b60006122a88383168584166126dd565b905080156122bf5797506123039650505050505050565b50505b6122cd6020866124a3565b94506122da6020856124a3565b935050506020816122eb91906124a3565b9050612217565b506122fd85896126dd565b93505050505b9695505050505050565b600081518351148015611f735750611f73836000846000875161235c565b600081518361233a91906124a3565b84511015801561235457506123548484846000865161235c565b949350505050565b6000612369848484611f3b565b612374878785611f3b565b149695505050505050565b600061239883838486516123939190612514565b611f3b565b6123aa86868789516123939190612514565b1495945050505050565b81516000906123c48360206124a3565b11156123cf57600080fd5b50016020015190565b81516000906123e88360026124a3565b11156123f357600080fd5b50016002015161ffff1690565b6020811061243857815183526124176020846124a3565b92506124246020836124a3565b9150612431602082612514565b9050612400565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3557611f35612474565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115611f3557611f35612474565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361255857612558612474565b5060010190565b8082028115828204841417611f3557611f35612474565b6000826125ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600181815b8085111561260a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156125f0576125f0612474565b808516156125fd57918102915b93841c93908002906125b6565b509250929050565b60008261262157506001611f35565b8161262e57506000611f35565b8160018114612644576002811461264e5761266a565b6001915050611f35565b60ff84111561265f5761265f612474565b50506001821b611f35565b5060208310610133831016604e8410600b841016171561268d575081810a611f35565b61269783836125b1565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156126c9576126c9612474565b029392505050565b6000611f738383612612565b81810360008312801583831316838312821617156126fd576126fd612474565b509291505056fe633568363670333563706a6d6771626164646d3671726a6665316f6e3473726b656c72376575337066384335474d324f42314335474d324f42314335474d324f42314335474d324f42314335474d324f42314335474d324f4231433547472062737434686c6a653772306f38633870346f38713538326c6d30656a6d697174076d61746f6b656e0378797a00323233343536373839303132333435363738393031323334353637383930313233343132333435363738393031323334353637383930313233343536373839303132333400010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f433548363650333543504a4d4751424144444d3651524a4645314f4e3453524b454c5237455533504638a2646970667358221220b6bbcc284f3624e75e7e0ce9a5ad810c1252bbe8bbc941bfb28fd48e20192c9264736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x809A6173 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xC80094B3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC80094B3 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0xE77975CF EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0xF3CBDA46 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x809A6173 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x83D31DF6 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x878AB4AE EQ PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1B8E1B81 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x1B8E1B81 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0x2E72F9A9 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x673DCC73 EQ PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0x5AA6F9 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x98E6232 EQ PUSH2 0xD7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5 PUSH2 0x127 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD5 PUSH2 0x1FE JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x561 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x71A JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x902 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0xFB8 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x163E JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x18C8 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x1D02 JUMP JUMPDEST PUSH2 0xD5 PUSH2 0x1D91 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH32 0x6162636465666768696A6B6C6D6E6F7071727374757600000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x62636465666768696A6B6C6D6E6F707172737475000000000000000000000000 SWAP1 PUSH2 0x188 SWAP1 PUSH1 0x1 PUSH2 0x1E24 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265616442797465733230000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x5 DUP4 MSTORE PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 SWAP2 PUSH2 0x26C SWAP2 DUP1 PUSH2 0x1E6A JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x2C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F707920302062797465730000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x68656C6C00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 DUP4 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x5 DUP4 MSTORE PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x647B0BF5E82B669964766915971E5985CB6559F0F22AF1002F75D81D4F334942 SWAP2 PUSH2 0x357 SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1E6A JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x3AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F707920737562737472696E67000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x656C6C6F00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 DUP4 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x5 DUP4 MSTORE PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x729B67E29BD543B60A81F35ABA2C80AC4D8EA4CABA9A72ED978093C22148AF50 SWAP2 PUSH2 0x442 SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1E6A JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x496 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F707920737562737472696E67000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP1 DUP3 MSTORE PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE DUP2 DUP5 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x1C8AFF950685C2ED4BC3174F3472287B56D9517B9C948127319A09A7A36DEAC8 SWAP2 PUSH2 0x50D SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1E6A JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F70792077686F6C6520737472696E67000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x6162636465000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x5A0 SWAP1 PUSH1 0x1 PUSH2 0x1EEC JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH4 0x62636465 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526561642075696E742033320000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x637 SWAP1 PUSH1 0x0 PUSH2 0x1F16 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x61 EQ PUSH2 0x689 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x61203D3D20307836310000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH32 0x6261000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x6C8 SWAP1 PUSH1 0x1 PUSH2 0x1F16 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x61 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x61203D3D20307836310000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 SWAP2 PUSH2 0x756 SWAP2 DUP1 PUSH2 0x1F3B JUMP JUMPDEST EQ PUSH2 0x7A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742068617368206F6620656D70747920737472696E670000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP1 DUP3 MSTORE PUSH32 0x666F6F0000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x41B1A0649752AF1B28B3DC29A1556EEE781E4A4C3A1F7F53F90FA834DE098C4D SWAP2 PUSH2 0x806 SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F3B JUMP JUMPDEST EQ PUSH2 0x853 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742068617368206F662027666F6F27000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x666F6F0000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 SWAP1 PUSH2 0x8B5 SWAP1 PUSH1 0x0 DUP1 PUSH2 0x1F3B JUMP JUMPDEST EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742068617368206F6620656D70747920737472696E670000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x97F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO PUSH1 0x1 EQ PUSH2 0x9CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520657175616C00000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA4E PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6200000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0xAC5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C756520776974682073616D PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65206C656E677468000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB44 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6200000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SLT EQ PUSH2 0xBBB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C756520776974682073616D PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65206C656E677468000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC3A PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6162000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6161000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0xCB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C75652077697468206D756C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7469706C65206C656E6774680000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD30 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6161000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0xDA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C7565207769746820646966 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x666572656E74206C656E67746800000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE26 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6161000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x1F5F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP2 SLT EQ PUSH2 0xE9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C7565207769746820646966 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x666572656E74206C656E67746800000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27B3 PUSH1 0x22 SWAP2 CODECOPY SWAP1 POP PUSH2 0xEC4 DUP2 DUP1 PUSH2 0x1F5F JUMP JUMPDEST ISZERO PUSH1 0x1 EQ PUSH2 0xF14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726573206D6F7265207468616E2033322062797465732063686172 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2791 PUSH1 0x22 SWAP2 CODECOPY SWAP1 POP PUSH1 0x0 PUSH2 0xF3D DUP4 DUP4 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0xFB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D70617265206C6F6E672063686172207769746820646966666572656E63 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6520617420737461727400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x4334000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6100000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x101B SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1068 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027612700000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x4335474700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x10CB SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1118 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616127000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP1 DUP3 MSTORE PUSH32 0x4335474D32000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161610000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x117B SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x11C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616161270000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP1 DUP3 MSTORE PUSH32 0x4335474D324F3800000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161616100000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x122B SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1278 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616161612700000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP1 DUP3 MSTORE PUSH32 0x4335474D324F4231000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161616161000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x12DB SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1328 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616161616127000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP1 DUP3 MSTORE PUSH32 0x6335676D324F6231000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6161616161000000000000000000000000000000000000000000000000000000 SWAP2 PUSH2 0x138B SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x13D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652027616161616127206C6F776572636173650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH32 0x6162636465666768696A6B6C6D6E6F707172737475767778797A000000000000 PUSH6 0xFFFFFFFFFFFF NOT AND PUSH2 0x1429 PUSH1 0x0 PUSH1 0x2A PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281C PUSH1 0x2A SWAP2 CODECOPY SWAP2 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1476 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F646520616C7068616265740000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH32 0x6162636465666768696A6B6C6D6E6F707172737475767778797A000000000000 PUSH6 0xFFFFFFFFFFFF NOT AND PUSH2 0x14C7 PUSH1 0x0 PUSH1 0x2A PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2705 PUSH1 0x2A SWAP2 CODECOPY SWAP2 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1514 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F646520616C706861626574206C6F7765726361736500000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH32 0x6161616161616161616161616161616161616161616161616161616161616161 PUSH2 0x155C PUSH1 0x0 PUSH1 0x34 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x272F PUSH1 0x34 SWAP2 CODECOPY SWAP2 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x15A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F64652033322A27612700000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH32 0x5F3A48D66E3EC18431192611A2A055B01D3B4B5D000000000000000000000000 PUSH2 0x15F1 PUSH1 0x1 PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2763 PUSH1 0x2E SWAP2 CODECOPY SWAP2 SWAP1 PUSH2 0x1F7A JUMP JUMPDEST EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4465636F6465207265616C206279746573333268657800000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x7878627878000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH32 0x7861780000000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH2 0x16BA SWAP2 PUSH1 0x1 SWAP1 DUP2 SWAP1 PUSH1 0x2 DUP3 PUSH2 0x21FA JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0x170B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D706172652073616D65206C656E67746800000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH32 0x7878616278780000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH32 0x7861780000000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH2 0x1787 SWAP2 PUSH1 0x1 SWAP1 DUP2 SWAP1 PUSH1 0x2 DUP1 PUSH2 0x21FA JUMP JUMPDEST PUSH1 0x1 SWAP2 SGT EQ PUSH2 0x17D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E74206C656E6774680000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x7878617878000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH32 0x7861780000000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE PUSH2 0x1852 SWAP2 SWAP1 PUSH1 0x1 SWAP1 DUP2 SWAP1 PUSH1 0x2 DUP3 PUSH2 0x21FA JUMP JUMPDEST ISZERO PUSH1 0x1 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D706172652073616D65207769746820646966666572656E74206F666673 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6574000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1945 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x230D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1996 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E6720657175616C6974790000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1A13 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x676F6F6462796500000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x230D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO PUSH2 0x1A60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E6720696E657175616C697479000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1AE0 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x656C6C6F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x232B SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1B31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537562737472696E6720746F20737472696E6720657175616C69747900000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1BB7 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6A656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x235C SWAP1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1C08 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537562737472696E6720746F20737562737472696E6720657175616C69747900 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0x1C8B PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x61626368656C6C6F000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x7A68656C6C6F0000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x237F SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6D7061726520646966666572656E742076616C75652077697468206D756C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7469706C65206C656E6774680000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 MSTORE PUSH32 0x3031323334353637383961626364656630313233343536373839616263646566 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH2 0x1D44 SWAP1 PUSH1 0x0 PUSH2 0x23B4 JUMP JUMPDEST EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265616442797465733332000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x6162630000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1DD0 SWAP1 PUSH1 0x1 PUSH2 0x23D8 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x6263 EQ PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526561642075696E742031360000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F3 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1E34 DUP4 PUSH1 0x14 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x1E3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x1E79 DUP4 DUP6 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x1E84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E9F JUMPI PUSH2 0x1E9F PUSH2 0x24B6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1EC9 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0x1EE1 DUP3 DUP3 DUP8 PUSH2 0x2400 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1EFC DUP4 PUSH1 0x4 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x1F07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F2A JUMPI PUSH2 0x1F2A PUSH2 0x24E5 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F4A DUP4 DUP6 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x1F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F73 DUP4 PUSH1 0x0 DUP6 MLOAD DUP6 PUSH1 0x0 DUP8 MLOAD PUSH2 0x21FA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 DUP3 GT ISZERO PUSH2 0x1F8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x20DE JUMPI PUSH1 0x0 DUP8 PUSH2 0x1FA4 DUP4 DUP10 PUSH2 0x24A3 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x1FB4 JUMPI PUSH2 0x1FB4 PUSH2 0x24E5 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x204F JUMPI POP PUSH32 0x7A00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND GT ISZERO JUMPDEST PUSH2 0x2058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27D5 PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x2080 PUSH1 0x30 PUSH1 0xF8 DUP5 SWAP1 SHR PUSH2 0x2514 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2090 JUMPI PUSH2 0x2090 PUSH2 0x24E5 JUMP JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0xF8 SHR SWAP4 POP DUP4 GT ISZERO PUSH2 0x20A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20B3 PUSH1 0x1 DUP8 PUSH2 0x2514 JUMP JUMPDEST DUP3 SUB PUSH2 0x20BF JUMPI POP PUSH2 0x20DE JUMP JUMPDEST POP PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL PUSH1 0xFF DUP3 AND OR SWAP2 DUP1 PUSH2 0x20D6 DUP2 PUSH2 0x2527 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1F8F JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x20EC DUP6 PUSH1 0x5 PUSH2 0x255F JUMP JUMPDEST SWAP1 POP PUSH2 0x20F9 PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x0 SUB PUSH2 0x2111 JUMPI DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP5 SWAP1 SHL OR SWAP3 POP PUSH2 0x21E0 JUMP JUMPDEST PUSH2 0x211C PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x2 SUB PUSH2 0x214A JUMPI PUSH1 0x2 DUP3 PUSH1 0xFF AND SWAP1 SHR PUSH1 0xFF AND PUSH1 0x3 DUP5 SWAP1 SHL OR SWAP3 POP PUSH1 0x2 DUP2 PUSH2 0x2143 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST SWAP1 POP PUSH2 0x21E0 JUMP JUMPDEST PUSH2 0x2155 PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x4 SUB PUSH2 0x217C JUMPI PUSH1 0x4 DUP3 PUSH1 0xFF AND SWAP1 SHR PUSH1 0xFF AND PUSH1 0x1 DUP5 SWAP1 SHL OR SWAP3 POP PUSH1 0x4 DUP2 PUSH2 0x2143 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x2187 PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x5 SUB PUSH2 0x21AE JUMPI PUSH1 0x1 DUP3 PUSH1 0xFF AND SWAP1 SHR PUSH1 0xFF AND PUSH1 0x4 DUP5 SWAP1 SHL OR SWAP3 POP PUSH1 0x1 DUP2 PUSH2 0x2143 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x21B9 PUSH1 0x8 DUP7 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x7 SUB PUSH2 0xC8 JUMPI PUSH1 0x3 DUP3 PUSH1 0xFF AND SWAP1 SHR PUSH1 0xFF AND PUSH1 0x2 DUP5 SWAP1 SHL OR SWAP3 POP PUSH1 0x3 DUP2 PUSH2 0x2143 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x21EC DUP2 PUSH2 0x100 PUSH2 0x2514 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 SHL SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP1 DUP4 LT ISZERO PUSH2 0x2208 JUMPI POP DUP2 JUMPDEST PUSH1 0x20 DUP8 DUP10 ADD DUP2 ADD SWAP1 DUP6 DUP8 ADD ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22F2 JUMPI DUP3 MLOAD DUP3 MLOAD DUP1 DUP3 EQ PUSH2 0x22C2 JUMPI PUSH1 0x0 PUSH1 0x20 DUP8 GT ISZERO PUSH2 0x225C JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2298 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH2 0x226A DUP10 PUSH1 0x20 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x2274 SWAP2 SWAP1 PUSH2 0x24A3 JUMP JUMPDEST PUSH2 0x227F SWAP1 PUSH1 0x8 PUSH2 0x255F JUMP JUMPDEST PUSH2 0x228A SWAP1 PUSH1 0x2 PUSH2 0x26D1 JUMP JUMPDEST PUSH2 0x2294 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST NOT SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x22A8 DUP4 DUP4 AND DUP6 DUP5 AND PUSH2 0x26DD JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x22BF JUMPI SWAP8 POP PUSH2 0x2303 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST POP POP JUMPDEST PUSH2 0x22CD PUSH1 0x20 DUP7 PUSH2 0x24A3 JUMP JUMPDEST SWAP5 POP PUSH2 0x22DA PUSH1 0x20 DUP6 PUSH2 0x24A3 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x20 DUP2 PUSH2 0x22EB SWAP2 SWAP1 PUSH2 0x24A3 JUMP JUMPDEST SWAP1 POP PUSH2 0x2217 JUMP JUMPDEST POP PUSH2 0x22FD DUP6 DUP10 PUSH2 0x26DD JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0x1F73 JUMPI POP PUSH2 0x1F73 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0x235C JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 PUSH2 0x233A SWAP2 SWAP1 PUSH2 0x24A3 JUMP JUMPDEST DUP5 MLOAD LT ISZERO DUP1 ISZERO PUSH2 0x2354 JUMPI POP PUSH2 0x2354 DUP5 DUP5 DUP5 PUSH1 0x0 DUP7 MLOAD PUSH2 0x235C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2369 DUP5 DUP5 DUP5 PUSH2 0x1F3B JUMP JUMPDEST PUSH2 0x2374 DUP8 DUP8 DUP6 PUSH2 0x1F3B JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2398 DUP4 DUP4 DUP5 DUP7 MLOAD PUSH2 0x2393 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST PUSH2 0x1F3B JUMP JUMPDEST PUSH2 0x23AA DUP7 DUP7 DUP8 DUP10 MLOAD PUSH2 0x2393 SWAP2 SWAP1 PUSH2 0x2514 JUMP JUMPDEST EQ SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x23C4 DUP4 PUSH1 0x20 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x23CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x23E8 DUP4 PUSH1 0x2 PUSH2 0x24A3 JUMP JUMPDEST GT ISZERO PUSH2 0x23F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2438 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x2417 PUSH1 0x20 DUP5 PUSH2 0x24A3 JUMP JUMPDEST SWAP3 POP PUSH2 0x2424 PUSH1 0x20 DUP4 PUSH2 0x24A3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2431 PUSH1 0x20 DUP3 PUSH2 0x2514 JUMP JUMPDEST SWAP1 POP PUSH2 0x2400 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1F35 JUMPI PUSH2 0x1F35 PUSH2 0x2474 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x1F35 JUMPI PUSH2 0x1F35 PUSH2 0x2474 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2558 JUMPI PUSH2 0x2558 PUSH2 0x2474 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x1F35 JUMPI PUSH2 0x1F35 PUSH2 0x2474 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x25AC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x260A JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x25F0 JUMPI PUSH2 0x25F0 PUSH2 0x2474 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x25FD JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x25B6 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2621 JUMPI POP PUSH1 0x1 PUSH2 0x1F35 JUMP JUMPDEST DUP2 PUSH2 0x262E JUMPI POP PUSH1 0x0 PUSH2 0x1F35 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2644 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x264E JUMPI PUSH2 0x266A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x1F35 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x265F JUMPI PUSH2 0x265F PUSH2 0x2474 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x1F35 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x268D JUMPI POP DUP2 DUP2 EXP PUSH2 0x1F35 JUMP JUMPDEST PUSH2 0x2697 DUP4 DUP4 PUSH2 0x25B1 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x26C9 JUMPI PUSH2 0x26C9 PUSH2 0x2474 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F73 DUP4 DUP4 PUSH2 0x2612 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP4 SLT DUP1 ISZERO DUP4 DUP4 SGT AND DUP4 DUP4 SLT DUP3 AND OR ISZERO PUSH2 0x26FD JUMPI PUSH2 0x26FD PUSH2 0x2474 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP INVALID PUSH4 0x35683636 PUSH17 0x333563706A6D6771626164646D3671726A PUSH7 0x65316F6E347372 PUSH12 0x656C72376575337066384335 SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE 0x4D ORIGIN 0x4F TIMESTAMP BALANCE NUMBER CALLDATALOAD SELFBALANCE SELFBALANCE KECCAK256 PUSH3 0x737434 PUSH9 0x6C6A653772306F3863 CODESIZE PUSH17 0x346F38713538326C6D30656A6D69717407 PUSH14 0x61746F6B656E0378797A00323233 CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY ADDRESS BALANCE ORIGIN CALLER CALLVALUE STOP ADD MUL SUB DIV SDIV MOD SMOD ADDMOD MULMOD SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT EXP SIGNEXTEND 0xC 0xD 0xE 0xF LT GT SLT SGT EQ ISZERO AND OR XOR NOT BYTE SHL SHR SAR 0x1E 0x1F SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT SELFDESTRUCT EXP SIGNEXTEND 0xC 0xD 0xE 0xF LT GT SLT SGT EQ ISZERO AND OR XOR NOT BYTE SHL SHR SAR 0x1E 0x1F NUMBER CALLDATALOAD BASEFEE CALLDATASIZE CALLDATASIZE POP CALLER CALLDATALOAD NUMBER POP 0x4A 0x4D SELFBALANCE MLOAD TIMESTAMP COINBASE DIFFICULTY DIFFICULTY 0x4D CALLDATASIZE MLOAD MSTORE 0x4A CHAINID GASLIMIT BALANCE 0x4F 0x4E CALLVALUE MSTORE8 MSTORE 0x4B GASLIMIT 0x4C MSTORE CALLDATACOPY GASLIMIT SSTORE CALLER POP CHAINID CODESIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0xBB 0xCC 0x28 0x4F CALLDATASIZE 0x24 0xE7 0x5E PUSH31 0xCE9A5AD810C1252BBE8BBC941BFB28FD48E20192C9264736F6C6343000811 STOP CALLER ",
              "sourceMap": "133:4756:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3203:201;;;:::i;:::-;;2356:448;;;:::i;3084:115::-;;;:::i;2808:159::-;;;:::i;188:467::-;;;:::i;1445:907::-;;;:::i;3614:1273::-;;;:::i;1113:328::-;;;:::i;659:450::-;;;:::i;3408:202::-;;;:::i;2971:109::-;;;:::i;3203:201::-;3264:36;;;;;;;;;;;;;;;;;3316:66;;3264:39;;3301:1;3264:36;:39::i;:::-;3256:48;;:127;3248:151;;;;-1:-1:-1;;;3248:151:107;;216:2:111;3248:151:107;;;198:21:111;255:2;235:18;;;228:30;294:13;274:18;;;267:41;325:18;;3248:151:107;;;;;;;;;3203:201::o;2356:448::-;2462:9;;;;;;;;;-1:-1:-1;2462:9:107;;;;2423:17;;;;;;;;;;;;;;;;2452:20;;2423:23;;-1:-1:-1;2423:17:107;:23::i;:::-;2407:41;;;;;;:65;2399:90;;;;-1:-1:-1;;;2399:90:107;;556:2:111;2399:90:107;;;538:21:111;595:2;575:18;;;568:30;634:14;614:18;;;607:42;666:18;;2399:90:107;354:336:111;2399:90:107;2558:13;;;;;;;;;;;;;;;;;;2519:17;;;;;;;;;;;;;;;;;;;2548:24;;2519:23;;-1:-1:-1;;2519:17:107;:23::i;:::-;2503:41;;;;;;:69;2495:96;;;;-1:-1:-1;;;2495:96:107;;897:2:111;2495:96:107;;;879:21:111;936:2;916:18;;;909:30;975:16;955:18;;;948:44;1009:18;;2495:96:107;695:338:111;2495:96:107;2660:13;;;;;;;;;;;;;;;;;;2621:17;;;;;;;;;;;;;;;;;;;2650:24;;2621:23;;2639:1;;2621:17;:23::i;:::-;2605:41;;;;;;:69;2597:96;;;;-1:-1:-1;;;2597:96:107;;897:2:111;2597:96:107;;;879:21:111;936:2;916:18;;;909:30;975:16;955:18;;;948:44;1009:18;;2597:96:107;695:338:111;2597:96:107;2762:14;;;;;;;;;;;;;;;;;;;;2723:17;;;;;;;;;;;;;;;;;;2752:25;;2723:23;;-1:-1:-1;;2723:17:107;:23::i;:::-;2707:41;;;;;;:70;2699:100;;;;-1:-1:-1;;;2699:100:107;;1240:2:111;2699:100:107;;;1222:21:111;1279:2;1259:18;;;1252:30;1318:19;1298:18;;;1291:47;1355:18;;2699:100:107;1038:341:111;3084:115:107;3141:18;;;;;;;;;;;;;;;;;:21;;3160:1;3141:18;:21::i;:::-;3136:27;;3167:10;3136:41;3128:66;;;;-1:-1:-1;;;3128:66:107;;1586:2:111;3128:66:107;;;1568:21:111;1625:2;1605:18;;;1598:30;1664:14;1644:18;;;1637:42;1696:18;;3128:66:107;1384:336:111;2808:159:107;2864:13;;;;;;;;;;;;;;;;;:16;;2878:1;2864:13;:16::i;:::-;2859:22;;2885:4;2859:30;2851:52;;;;-1:-1:-1;;;2851:52:107;;1927:2:111;2851:52:107;;;1909:21:111;1966:1;1946:18;;;1939:29;2004:11;1984:18;;;1977:39;2033:18;;2851:52:107;1725:332:111;2851:52:107;2922:14;;;;;;;;;;;;;;;;;:17;;2937:1;2922:14;:17::i;:::-;2917:23;;2944:4;2917:31;2909:53;;;;-1:-1:-1;;;2909:53:107;;1927:2:111;2909:53:107;;;1909:21:111;1966:1;1946:18;;;1939:29;2004:11;1984:18;;;1977:39;2033:18;;2909:53:107;1725:332:111;188:467:107;236:9;;;;;;;;;255:75;236:9;;;263:66;;236:15;;255:75;236:9;:15::i;:::-;:94;228:137;;;;-1:-1:-1;;;228:137:107;;2264:2:111;228:137:107;;;2246:21:111;2303:2;2283:18;;;2276:30;2342:32;2322:18;;;2315:60;2392:18;;228:137:107;2062:354:111;228:137:107;379:12;;;;;;;;;395:1;379:12;;;;;;;;409:66;;379:18;;401:75;;379:12;:18::i;:::-;:97;371:133;;;;-1:-1:-1;;;371:133:107;;2623:2:111;371:133:107;;;2605:21:111;2662:2;2642:18;;;2635:30;2701:25;2681:18;;;2674:53;2744:18;;371:133:107;2421:347:111;371:133:107;518:12;;;;;;;;;;;;;;;;;548:66;;518:18;;540:75;;518:12;:18::i;:::-;:97;510:140;;;;-1:-1:-1;;;510:140:107;;2264:2:111;510:140:107;;;2246:21:111;2303:2;2283:18;;;2276:30;2342:32;2322:18;;;2315:60;2392:18;;510:140:107;2062:354:111;1445:907:107;1494:16;;;;;;;;;;;;;;;;;;:11;;;;;;;;;;;;;;;;;;;:16;;;;:::i;:::-;:22;1520:4;1494:30;1486:57;;;;-1:-1:-1;;;1486:57:107;;2975:2:111;1486:57:107;;;2957:21:111;3014:2;2994:18;;;2987:30;3053:15;3033:18;;;3026:43;3086:18;;1486:57:107;2773:337:111;1486:57:107;1578:1;1557:16;;;;;;;;;;;;;;;;;;:11;;;;;;;;;;;;;;;;;;;:16;;;;:::i;:::-;1583:4;1557:22;-1:-1:-1;1557:30:107;1549:85;;;;-1:-1:-1;;;1549:85:107;;3317:2:111;1549:85:107;;;3299:21:111;3356:2;3336:18;;;3329:30;3395:34;3375:18;;;3368:62;3466:10;3446:18;;;3439:38;3494:19;;1549:85:107;3115:404:111;1549:85:107;1669:1;1648:16;;;;;;;;;;;;;;;;;;:11;;;;;;;;;;;;;;;;;;;:16;;;;:::i;:::-;1674:4;1648:22;-1:-1:-1;1648:30:107;1640:85;;;;-1:-1:-1;;;1640:85:107;;3317:2:111;1640:85:107;;;3299:21:111;3356:2;3336:18;;;3329:30;3395:34;3375:18;;;3368:62;3466:10;3446:18;;;3439:38;3494:19;;1640:85:107;3115:404:111;1640:85:107;1760:1;1739:18;;;;;;;;;;;;;;;;;;:12;;;;;;;;;;;;;;;;;;;:18;;;;:::i;:::-;1765:4;1739:22;-1:-1:-1;1739:30:107;1731:89;;;;-1:-1:-1;;;1731:89:107;;3726:2:111;1731:89:107;;;3708:21:111;3765:2;3745:18;;;3738:30;3804:34;3784:18;;;3777:62;3875:14;3855:18;;;3848:42;3907:19;;1731:89:107;3524:408:111;1731:89:107;1855:1;1834:17;;;;;;;;;;;;;;;;;;:11;;;;;;;;;;;;;;;;;;;:17;;;;:::i;:::-;1860:4;1834:22;-1:-1:-1;1834:30:107;1826:90;;;;-1:-1:-1;;;1826:90:107;;4139:2:111;1826:90:107;;;4121:21:111;4178:2;4158:18;;;4151:30;4217:34;4197:18;;;4190:62;4288:15;4268:18;;;4261:43;4321:19;;1826:90:107;3937:409:111;1826:90:107;1951:1;1930:17;;;;;;;;;;;;;;;;;;:12;;;;;;;;;;;;;;;;;;;:17;;;;:::i;:::-;1956:4;1930:22;-1:-1:-1;1930:30:107;1922:90;;;;-1:-1:-1;;;1922:90:107;;4139:2:111;1922:90:107;;;4121:21:111;4178:2;4158:18;;;4151:30;4217:34;4197:18;;;4190:62;4288:15;4268:18;;;4261:43;4321:19;;1922:90:107;3937:409:111;1922:90:107;2018:21;:60;;;;;;;;;;;;;;;;;;-1:-1:-1;2092:26:107;2018:60;;2092:16;:26::i;:::-;:31;2127:4;2092:39;2084:86;;;;-1:-1:-1;;;2084:86:107;;4553:2:111;2084:86:107;;;4535:21:111;;;4572:18;;;4565:30;4631:34;4611:18;;;4604:62;4683:18;;2084:86:107;4351:356:111;2084:86:107;2176:26;:65;;;;;;;;;;;;;;;;;;-1:-1:-1;2289:1:107;2255:31;:8;2176:65;2255:16;:31::i;:::-;2294:4;2255:35;-1:-1:-1;2255:43:107;2247:100;;;;-1:-1:-1;;;2247:100:107;;4914:2:111;2247:100:107;;;4896:21:111;4953:2;4933:18;;;4926:30;4992:34;4972:18;;;4965:62;5063:12;5043:18;;;5036:40;5093:19;;2247:100:107;4712:406:111;2247:100:107;1480:872;;1445:907::o;3614:1273::-;3675:24;;;;;;;;;3703:1;3675:24;;;;;;;;3717:11;;3675:30;;3700:1;;3675:24;:30::i;:::-;:54;3667:77;;;;-1:-1:-1;;;3667:77:107;;5325:2:111;3667:77:107;;;5307:21:111;5364:2;5344:18;;;5337:30;5403:12;5383:18;;;5376:40;5433:18;;3667:77:107;5123:334:111;3667:77:107;3758:26;;;;;;;;;3788:1;3758:26;;;;;;;;3802:12;;3758:32;;3785:1;;3758:26;:32::i;:::-;:57;3750:81;;;;-1:-1:-1;;;3750:81:107;;5664:2:111;3750:81:107;;;5646:21:111;5703:2;5683:18;;;5676:30;5742:13;5722:18;;;5715:41;5773:18;;3750:81:107;5462:335:111;3750:81:107;3845:27;;;;;;;;;3876:1;3845:27;;;;;;;;3890:13;;3845:33;;3873:1;;3845:27;:33::i;:::-;:59;3837:84;;;;-1:-1:-1;;;3837:84:107;;6004:2:111;3837:84:107;;;5986:21:111;6043:2;6023:18;;;6016:30;6082:14;6062:18;;;6055:42;6114:18;;3837:84:107;5802:336:111;3837:84:107;3935:29;;;;;;;;;3968:1;3935:29;;;;;;;;3982:14;;3935:35;;3965:1;;3935:29;:35::i;:::-;:62;3927:88;;;;-1:-1:-1;;;3927:88:107;;6345:2:111;3927:88:107;;;6327:21:111;6384:2;6364:18;;;6357:30;6423:15;6403:18;;;6396:43;6456:18;;3927:88:107;6143:337:111;3927:88:107;4029:30;;;;;;;;;4063:1;4029:30;;;;;;;;4077:15;;4029:36;;4060:1;;4029:30;:36::i;:::-;:64;4021:91;;;;-1:-1:-1;;;4021:91:107;;6687:2:111;4021:91:107;;;6669:21:111;6726:2;6706:18;;;6699:30;6765:16;6745:18;;;6738:44;6799:18;;4021:91:107;6485:338:111;4021:91:107;4126:30;;;;;;;;;4160:1;4126:30;;;;;;;;4174:15;;4126:36;;4157:1;;4126:30;:36::i;:::-;:64;4118:101;;;;-1:-1:-1;;;4118:101:107;;7030:2:111;4118:101:107;;;7012:21:111;7069:2;7049:18;;;7042:30;7108:26;7088:18;;;7081:54;7152:18;;4118:101:107;6828:348:111;4118:101:107;4316:37;4308:46;;;4233:71;4298:1;4301:2;4233:64;;;;;;;;;;;;;;;;;;:71;:64;:71::i;:::-;:121;4225:149;;;;-1:-1:-1;;;4225:149:107;;7383:2:111;4225:149:107;;;7365:21:111;7422:2;7402:18;;;7395:30;7461:17;7441:18;;;7434:45;7496:18;;4225:149:107;7181:339:111;4225:149:107;4471:37;4463:46;;;4388:71;4453:1;4456:2;4388:64;;;;;;;;;;;;;;;;;;:71;:64;:71::i;:::-;:121;4380:159;;;;-1:-1:-1;;;4380:159:107;;7727:2:111;4380:159:107;;;7709:21:111;7766:2;7746:18;;;7739:30;7805:27;7785:18;;;7778:55;7850:18;;4380:159:107;7525:349:111;4380:159:107;4638:43;4553:81;4628:1;4631:2;4553:74;;;;;;;;;;;;;;;;;;:81;:74;:81::i;:::-;:128;4545:154;;;;-1:-1:-1;;;4545:154:107;;8081:2:111;4545:154:107;;;8063:21:111;8120:2;8100:18;;;8093:30;8159:15;8139:18;;;8132:43;8192:18;;4545:154:107;7879:337:111;4545:154:107;4801:54;4713:84;4791:1;4794:2;4713:77;;;;;;;;;;;;;;;;;;:84;:77;:84::i;:::-;:142;4705:177;;;;-1:-1:-1;;;4705:177:107;;8423:2:111;4705:177:107;;;8405:21:111;8462:2;8442:18;;;8435:30;8501:24;8481:18;;;8474:52;8543:18;;4705:177:107;8221:346:111;1113:328:107;1169:34;;;;;;;;;;;;;;;;;;;;:13;;;;;;;;;;;;;;;;1208:1;;1169:34;;1183:1;;;;1198;1183;1169:13;:34::i;:::-;1213:4;1169:40;-1:-1:-1;1169:48:107;1161:81;;;;-1:-1:-1;;;1161:81:107;;8774:2:111;1161:81:107;;;8756:21:111;8813:2;8793:18;;;8786:30;8852:21;8832:18;;;8825:49;8891:18;;1161:81:107;8572:343:111;1161:81:107;1256:35;;;;;;;;;;;;;;;;;;;;:13;;;;;;;;;;;;;;;;1295:1;;1256:35;;1270:1;;;;1286;;1256:13;:35::i;:::-;1300:4;1256:40;-1:-1:-1;1256:48:107;1248:86;;;;-1:-1:-1;;;1248:86:107;;9122:2:111;1248:86:107;;;9104:21:111;9161:2;9141:18;;;9134:30;9200:26;9180:18;;;9173:54;9244:18;;1248:86:107;8920:348:111;1248:86:107;1348:34;;;;;;;;;;;;;;;;;;;;:13;;;;;;;;;;;;;;;;:34;;:13;1362:1;;;;1377;1362;1348:13;:34::i;:::-;:40;1392:4;1348:48;1340:96;;;;-1:-1:-1;;;1340:96:107;;9475:2:111;1340:96:107;;;9457:21:111;9514:2;9494:18;;;9487:30;9553:34;9533:18;;;9526:62;9624:4;9604:18;;;9597:32;9646:19;;1340:96:107;9273:398:111;659:450:107;707:23;;;;;;;;;;;;;;;;;;:14;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;:31;;734:4;707:31;699:59;;;;-1:-1:-1;;;699:59:107;;9878:2:111;699:59:107;;;9860:21:111;9917:2;9897:18;;;9890:30;9956:17;9936:18;;;9929:45;9991:18;;699:59:107;9676:339:111;699:59:107;772:25;;;;;;;;;;;;;;;;;;:14;;;;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;:34;764:64;;;;-1:-1:-1;;;764:64:107;;10222:2:111;764:64:107;;;10204:21:111;10261:2;10241:18;;;10234:30;10300:19;10280:18;;;10273:47;10337:18;;764:64:107;10020:341:111;764:64:107;842:25;857:1;842:25;;;;;;;;;;;;;;;;;:14;;;;;;;;;;;;;;;;;;;:25;;;;;:::i;:::-;:33;;871:4;842:33;834:74;;;;-1:-1:-1;;;834:74:107;;10568:2:111;834:74:107;;;10550:21:111;10607:2;10587:18;;;10580:30;10646;10626:18;;;10619:58;10694:18;;834:74:107;10366:352:111;834:74:107;922:32;937:1;922:32;;;;;;;;;;;;;;;;;949:1;952;922:14;;;;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;:40;;958:4;922:40;914:84;;;;-1:-1:-1;;;914:84:107;;10925:2:111;914:84:107;;;10907:21:111;10964:2;10944:18;;;10937:30;11003:33;10983:18;;;10976:61;11054:18;;914:84:107;10723:355:111;914:84:107;1012:33;1028:1;1012:33;;;;;;;;;;;;;;;;;1043:1;1012:15;;;;;;;;;;;;;;;;;;;:33;;;;;;:::i;:::-;:41;;1049:4;1012:41;1004:100;;;;-1:-1:-1;;;1004:100:107;;3726:2:111;1004:100:107;;;3708:21:111;3765:2;3745:18;;;3738:30;3804:34;3784:18;;;3777:62;3875:14;3855:18;;;3848:42;3907:19;;1004:100:107;3524:408:111;3408:202:107;3461:46;;;;;;;;;;;;;3522:66;3461:46;;;;;;3522:66;3461:49;;3514:75;3461:46;:49::i;:::-;:128;3453:152;;;;-1:-1:-1;;;3453:152:107;;11285:2:111;3453:152:107;;;11267:21:111;11324:2;11304:18;;;11297:30;11363:13;11343:18;;;11336:41;11394:18;;3453:152:107;11083:335:111;2971:109:107;3028:16;;;;;;;;;;;;;;;;;:19;;3045:1;3028:16;:19::i;:::-;3023:25;;3052:6;3023:35;3015:60;;;;-1:-1:-1;;;3015:60:107;;11625:2:111;3015:60:107;;;11607:21:111;11664:2;11644:18;;;11637:30;11703:14;11683:18;;;11676:42;11735:18;;3015:60:107;11423:336:111;7604:364:25;7751:11;;7704;;7739:8;:3;7745:2;7739:8;:::i;:::-;:23;;7731:32;;;;;;-1:-1:-1;7830:23:25;7844:2;7830:23;7824:30;7872:66;7803:149;;7604:364::o;9465:436::-;9633:11;;9585:12;;9617;9626:3;9617:6;:12;:::i;:::-;:27;;9609:36;;;;;;9656:16;9685:3;9675:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:14:25;-1:-1:-1;9656:33:25;-1:-1:-1;9783:2:25;9774:12;;;;9806:26;;;;9851:22;9774:12;9806:26;9869:3;9851:6;:22::i;:::-;-1:-1:-1;9891:3:25;;9465:436;-1:-1:-1;;;;;9465:436:25:o;6655:258::-;6799:11;;6754:10;;6788:7;:3;6794:1;6788:7;:::i;:::-;:22;;6780:31;;;;;;-1:-1:-1;6861:22:25;6875:1;6861:22;6855:29;6886:10;6851:46;;6655:258::o;5750:153::-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;;:::o;311:274::-;475:11;;428;;459:12;468:3;459:6;:12;:::i;:::-;:27;;451:36;;;;;;-1:-1:-1;537:26:25;;551:2;537:26;527:42;;311:274::o;948:192::-;1051:6;1080:53;1088:4;1094:1;1097:4;:11;1110:5;1117:1;1120:5;:12;1080:7;:53::i;:::-;1073:60;948:192;-1:-1:-1;;;948:192:25:o;10499:1454::-;10626:7;10660:2;10653:3;:9;;10645:18;;;;;;10674:11;;;10722:358;10746:3;10742:1;:7;10722:358;;;10770:11;10784:4;10789:7;10795:1;10789:3;:7;:::i;:::-;10784:13;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;10819:12:25;;;;;;:28;;-1:-1:-1;10835:12:25;;;;;;10819:28;10811:37;;;;;;10878:14;;;;;;;;;;;;;;;;;10893:27;10916:4;10901:11;;;;10893:27;:::i;:::-;10878:43;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;10944:15:25;;;10936:24;;;;;;10983:7;10989:1;10983:3;:7;:::i;:::-;10978:1;:12;10974:56;;11010:5;;;10974:56;-1:-1:-1;11057:1:25;11050:8;;;;11049:20;;;;;10751:3;;;;:::i;:::-;;;;10722:358;;;-1:-1:-1;11090:14:25;11107:7;:3;11113:1;11107:7;:::i;:::-;11090:24;-1:-1:-1;11128:7:25;11134:1;11128:3;:7;:::i;:::-;11139:1;11128:12;11124:775;;11227:7;11214:20;;11222:1;11215:3;:8;;11214:20;11208:26;;11124:775;;;11255:7;11261:1;11255:3;:7;:::i;:::-;11266:1;11255:12;11251:648;;11359:1;11348:7;:12;;;;11334:27;;11342:1;11335:3;:8;;11334:27;11328:33;;11385:1;11375:11;;;;;:::i;:::-;;;11251:648;;;11407:7;11413:1;11407:3;:7;:::i;:::-;11418:1;11407:12;11403:496;;11513:1;11502:7;:12;;;;11488:27;;11496:1;11489:3;:8;;11488:27;11482:33;;11539:1;11529:11;;;;;:::i;11403:496::-;11561:7;11567:1;11561:3;:7;:::i;:::-;11572:1;11561:12;11557:342;;11667:1;11656:7;:12;;;;11642:27;;11650:1;11643:3;:8;;11642:27;11636:33;;11693:1;11683:11;;;;;:::i;11557:342::-;11715:7;11721:1;11715:3;:7;:::i;:::-;11726:1;11715:12;11711:188;;11822:1;11811:7;:12;;;;11797:27;;11805:1;11798:3;:8;;11797:27;11791:33;;11848:1;11838:11;;;;;:::i;11711:188::-;11932:12;11938:6;11932:3;:12;:::i;:::-;11924:21;;;;;10499:1454;-1:-1:-1;;;;;;10499:1454:25:o;1765:1248::-;1966:6;2003:3;2020:14;;;2016:39;;;-1:-1:-1;2047:8:25;2016:39;2174:2;2152:26;;;;;;2203:32;;;;2066:15;2254:705;2282:8;2276:3;:14;2254:705;;;2395:14;;2431:15;;2477:6;;;2473:421;;2564:12;2609:2;2598:8;:13;2594:175;;;-1:-1:-1;2642:17:25;2594:175;;;2748:1;2740:3;2724:13;2729:8;2724:2;:13;:::i;:::-;:19;;;;:::i;:::-;2719:25;;:1;:25;:::i;:::-;2715:30;;:1;:30;:::i;:::-;:34;;;;:::i;:::-;2713:37;2706:44;;2594:175;2786:11;2800:35;2826:8;;;2807;;;2800:35;:::i;:::-;2786:49;-1:-1:-1;2857:9:25;;2853:26;;2875:4;-1:-1:-1;2868:11:25;;-1:-1:-1;;;;;;;2868:11:25;2853:26;2485:409;;2473:421;2907:13;2918:2;2907:13;;:::i;:::-;;-1:-1:-1;2934:14:25;2946:2;2934:14;;:::i;:::-;;;2303:656;;2299:2;2292:9;;;;;:::i;:::-;;;2254:705;;;-1:-1:-1;2976:30:25;2997:8;2983:3;2976:30;:::i;:::-;2969:37;;;;;1765:1248;;;;;;;;;:::o;5274:229::-;5376:4;5430:5;:12;5415:4;:11;:27;:81;;;;;5458:38;5465:4;5471:1;5474:5;5481:1;5484:4;:11;5458:6;:38::i;4759:262::-;4883:4;4942:5;:12;4933:6;:21;;;;:::i;:::-;4918:4;:11;:36;;:96;;;;;4970:44;4977:4;4983:6;4991:5;4998:1;5001:5;:12;4970:6;:44::i;:::-;4899:115;4759:262;-1:-1:-1;;;;4759:262:25:o;3439:264::-;3613:4;3665:31;3672:5;3679:11;3692:3;3665:6;:31::i;:::-;3636:25;3643:4;3649:6;3657:3;3636:6;:25::i;:::-;:60;;3439:264;-1:-1:-1;;;;;;3439:264:25:o;4093:307::-;4246:4;4339:54;4346:5;4353:11;4381;4366:5;:12;:26;;;;:::i;:::-;4339:6;:54::i;:::-;4281:42;4288:4;4294:6;4316;4302:4;:11;:20;;;;:::i;4281:42::-;:112;;4093:307;-1:-1:-1;;;;;4093:307:25:o;7136:245::-;7283:11;;7236;;7271:8;:3;7277:2;7271:8;:::i;:::-;:23;;7263:32;;;;;;-1:-1:-1;7341:23:25;7355:2;7341:23;7335:30;;7136:245::o;6152:254::-;6296:11;;6251:10;;6285:7;:3;6291:1;6285:7;:::i;:::-;:22;;6277:31;;;;;;-1:-1:-1;6358:22:25;6372:1;6358:22;6352:29;6383:6;6348:42;;6152:254::o;8595:645::-;8768:2;8761:3;:9;8754:165;;8837:10;;8824:24;;8875:10;8883:2;8831:4;8875:10;:::i;:::-;;-1:-1:-1;8899:9:25;8906:2;8899:9;;:::i;:::-;;-1:-1:-1;8772:9:25;8779:2;8772:9;;:::i;:::-;;;8754:165;;;9081:10;;9140:11;;9007:2;:8;;;;9001:3;:15;9000:21;;9093:9;;9077:26;;;9136:22;;9188:21;9175:35;;8595:645::o;11764:184:111:-;11816:77;11813:1;11806:88;11913:4;11910:1;11903:15;11937:4;11934:1;11927:15;11953:125;12018:9;;;12039:10;;;12036:36;;;12052:18;;:::i;12083:184::-;12135:77;12132:1;12125:88;12232:4;12229:1;12222:15;12256:4;12253:1;12246:15;12272:184;12324:77;12321:1;12314:88;12421:4;12418:1;12411:15;12445:4;12442:1;12435:15;12461:128;12528:9;;;12549:11;;;12546:37;;;12563:18;;:::i;12594:195::-;12633:3;12664:66;12657:5;12654:77;12651:103;;12734:18;;:::i;:::-;-1:-1:-1;12781:1:111;12770:13;;12594:195::o;12794:168::-;12867:9;;;12898;;12915:15;;;12909:22;;12895:37;12885:71;;12936:18;;:::i;12967:266::-;12999:1;13025;13015:189;;13060:77;13057:1;13050:88;13161:4;13158:1;13151:15;13189:4;13186:1;13179:15;13015:189;-1:-1:-1;13218:9:111;;12967:266::o;13238:482::-;13327:1;13370:5;13327:1;13384:330;13405:7;13395:8;13392:21;13384:330;;;13524:4;13456:66;13452:77;13446:4;13443:87;13440:113;;;13533:18;;:::i;:::-;13583:7;13573:8;13569:22;13566:55;;;13603:16;;;;13566:55;13682:22;;;;13642:15;;;;13384:330;;;13388:3;13238:482;;;;;:::o;13725:866::-;13774:5;13804:8;13794:80;;-1:-1:-1;13845:1:111;13859:5;;13794:80;13893:4;13883:76;;-1:-1:-1;13930:1:111;13944:5;;13883:76;13975:4;13993:1;13988:59;;;;14061:1;14056:130;;;;13968:218;;13988:59;14018:1;14009:10;;14032:5;;;14056:130;14093:3;14083:8;14080:17;14077:43;;;14100:18;;:::i;:::-;-1:-1:-1;;14156:1:111;14142:16;;14171:5;;13968:218;;14270:2;14260:8;14257:16;14251:3;14245:4;14242:13;14238:36;14232:2;14222:8;14219:16;14214:2;14208:4;14205:12;14201:35;14198:77;14195:159;;;-1:-1:-1;14307:19:111;;;14339:5;;14195:159;14386:34;14411:8;14405:4;14386:34;:::i;:::-;14516:6;14448:66;14444:79;14435:7;14432:92;14429:118;;;14527:18;;:::i;:::-;14565:20;;13725:866;-1:-1:-1;;;13725:866:111:o;14596:131::-;14656:5;14685:36;14712:8;14706:4;14685:36;:::i;14732:200::-;14798:9;;;14771:4;14826:9;;14854:10;;14866:12;;;14850:29;14889:12;;;14881:21;;14847:56;14844:82;;;14906:18;;:::i;:::-;14844:82;14732:200;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2072600",
                "executionCost": "2200",
                "totalCost": "2074800"
              },
              "external": {
                "testBase32HexDecodeWord()": "infinite",
                "testCompare()": "infinite",
                "testComparePartial()": "infinite",
                "testEquals()": "infinite",
                "testKeccak()": "infinite",
                "testReadBytes20()": "510",
                "testReadBytes32()": "431",
                "testReadUint16()": "560",
                "testReadUint32()": "517",
                "testReadUint8()": "infinite",
                "testSubstring()": "infinite"
              }
            },
            "methodIdentifiers": {
              "testBase32HexDecodeWord()": "83d31df6",
              "testCompare()": "809a6173",
              "testComparePartial()": "878ab4ae",
              "testEquals()": "c80094b3",
              "testKeccak()": "673dcc73",
              "testReadBytes20()": "005aa6f9",
              "testReadBytes32()": "e77975cf",
              "testReadUint16()": "f3cbda46",
              "testReadUint32()": "1b8e1b81",
              "testReadUint8()": "2e72f9a9",
              "testSubstring()": "098e6232"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"testBase32HexDecodeWord\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCompare\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testComparePartial\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEquals\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testKeccak\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReadBytes20\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReadBytes32\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReadUint16\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReadUint32\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReadUint8\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSubstring\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/dnssec-oracle/TestBytesUtils.sol\":\"TestBytesUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"},\"test/dnssec-oracle/TestBytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"../../contracts/dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"../../contracts/dnssec-oracle/BytesUtils.sol\\\";\\n\\ncontract TestBytesUtils {\\n  using BytesUtils for *;\\n\\n  function testKeccak() public pure {\\n    require(\\\"\\\".keccak(0, 0) == bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470), \\\"Incorrect hash of empty string\\\");\\n    require(\\\"foo\\\".keccak(0, 3) == bytes32(0x41b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d), \\\"Incorrect hash of 'foo'\\\");\\n    require(\\\"foo\\\".keccak(0, 0) == bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470), \\\"Incorrect hash of empty string\\\");\\n  }\\n\\n  function testEquals() public pure {\\n    require(\\\"hello\\\".equals(\\\"hello\\\") == true, \\\"String equality\\\");\\n    require(\\\"hello\\\".equals(\\\"goodbye\\\") == false, \\\"String inequality\\\");\\n    require(\\\"hello\\\".equals(1, \\\"ello\\\") == true, \\\"Substring to string equality\\\");\\n    require(\\\"hello\\\".equals(1, \\\"jello\\\", 1, 4) == true, \\\"Substring to substring equality\\\");\\n    require(\\\"zhello\\\".equals(1, \\\"abchello\\\", 3) == true,   \\\"Compare different value with multiple length\\\");\\n  }\\n\\n  function testComparePartial() public pure {\\n    require(\\\"xax\\\".compare(1, 1, \\\"xxbxx\\\", 2, 1)   < 0 == true,  \\\"Compare same length\\\");\\n    require(\\\"xax\\\".compare(1, 1, \\\"xxabxx\\\", 2, 2)  < 0 == true,  \\\"Compare different length\\\");\\n    require(\\\"xax\\\".compare(1, 1, \\\"xxaxx\\\", 2, 1)  == 0 == true,  \\\"Compare same with different offset\\\");\\n  }\\n\\n  function testCompare() public pure {\\n    require(\\\"a\\\".compare(\\\"a\\\")  == 0 == true,  \\\"Compare equal\\\");\\n    require(\\\"a\\\".compare(\\\"b\\\")   < 0 == true,   \\\"Compare different value with same length\\\");\\n    require(\\\"b\\\".compare(\\\"a\\\")   > 0 == true,   \\\"Compare different value with same length\\\");\\n    require(\\\"aa\\\".compare(\\\"ab\\\") < 0 == true,   \\\"Compare different value with multiple length\\\");\\n    require(\\\"a\\\".compare(\\\"aa\\\")  < 0 == true,   \\\"Compare different value with different length\\\");\\n    require(\\\"aa\\\".compare(\\\"a\\\")  > 0 == true,   \\\"Compare different value with different length\\\");\\n    bytes memory longChar = \\\"1234567890123456789012345678901234\\\";\\n    require(longChar.compare(longChar) == 0 == true,   \\\"Compares more than 32 bytes char\\\");\\n    bytes memory otherLongChar = \\\"2234567890123456789012345678901234\\\";\\n    require(longChar.compare(otherLongChar) < 0 == true,   \\\"Compare long char with difference at start\\\");\\n  }\\n\\n  function testSubstring() public pure {\\n    require(keccak256(bytes(\\\"hello\\\".substring(0, 0))) == keccak256(bytes(\\\"\\\")), \\\"Copy 0 bytes\\\");\\n    require(keccak256(bytes(\\\"hello\\\".substring(0, 4))) == keccak256(bytes(\\\"hell\\\")), \\\"Copy substring\\\");\\n    require(keccak256(bytes(\\\"hello\\\".substring(1, 4))) == keccak256(bytes(\\\"ello\\\")), \\\"Copy substring\\\");\\n    require(keccak256(bytes(\\\"hello\\\".substring(0, 5))) == keccak256(bytes(\\\"hello\\\")), \\\"Copy whole string\\\");\\n  }\\n\\n  function testReadUint8() public pure {\\n    require(uint(\\\"a\\\".readUint8(0)) == 0x61, \\\"a == 0x61\\\");\\n    require(uint(\\\"ba\\\".readUint8(1)) == 0x61, \\\"a == 0x61\\\");\\n  }\\n\\n  function testReadUint16() public pure {\\n    require(uint(\\\"abc\\\".readUint16(1)) == 0x6263, \\\"Read uint 16\\\");\\n  }\\n\\n  function testReadUint32() public pure {\\n    require(uint(\\\"abcde\\\".readUint32(1)) == 0x62636465, \\\"Read uint 32\\\");\\n  }\\n\\n  function testReadBytes20() public pure {\\n    require(bytes32(\\\"abcdefghijklmnopqrstuv\\\".readBytes20(1)) == bytes32(0x62636465666768696a6b6c6d6e6f707172737475000000000000000000000000), \\\"readBytes20\\\");\\n  }\\n\\n  function testReadBytes32() public pure {\\n    require(\\\"0123456789abcdef0123456789abcdef\\\".readBytes32(0) == bytes32(0x3031323334353637383961626364656630313233343536373839616263646566), \\\"readBytes32\\\");\\n  }\\n\\n  function testBase32HexDecodeWord() public pure {\\n    require(\\\"C4\\\".base32HexDecodeWord(0, 2) == bytes32(bytes1(\\\"a\\\")), \\\"Decode 'a'\\\");\\n    require(\\\"C5GG\\\".base32HexDecodeWord(0, 4) == bytes32(bytes2(\\\"aa\\\")), \\\"Decode 'aa'\\\");\\n    require(\\\"C5GM2\\\".base32HexDecodeWord(0, 5) == bytes32(bytes3(\\\"aaa\\\")), \\\"Decode 'aaa'\\\");\\n    require(\\\"C5GM2O8\\\".base32HexDecodeWord(0, 7) == bytes32(bytes4(\\\"aaaa\\\")), \\\"Decode 'aaaa'\\\");\\n    require(\\\"C5GM2OB1\\\".base32HexDecodeWord(0, 8) == bytes32(bytes5(\\\"aaaaa\\\")), \\\"Decode 'aaaaa'\\\");\\n    require(\\\"c5gm2Ob1\\\".base32HexDecodeWord(0, 8) == bytes32(bytes5(\\\"aaaaa\\\")), \\\"Decode 'aaaaa' lowercase\\\");\\n    require(\\\"C5H66P35CPJMGQBADDM6QRJFE1ON4SRKELR7EU3PF8\\\".base32HexDecodeWord(0, 42) == bytes32(bytes26(\\\"abcdefghijklmnopqrstuvwxyz\\\")), \\\"Decode alphabet\\\");\\n    require(\\\"c5h66p35cpjmgqbaddm6qrjfe1on4srkelr7eu3pf8\\\".base32HexDecodeWord(0, 42) == bytes32(bytes26(\\\"abcdefghijklmnopqrstuvwxyz\\\")), \\\"Decode alphabet lowercase\\\");\\n    require(\\\"C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GG\\\".base32HexDecodeWord(0, 52) == bytes32(\\\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\"), \\\"Decode 32*'a'\\\");\\n    require(\\\" bst4hlje7r0o8c8p4o8q582lm0ejmiqt\\\\x07matoken\\\\x03xyz\\\\x00\\\".base32HexDecodeWord(1, 32) == bytes32(hex\\\"5f3a48d66e3ec18431192611a2a055b01d3b4b5d\\\"), \\\"Decode real bytes32hex\\\");\\n  }\\n}\",\"keccak256\":\"0xb1e2a41cb9726ab252e749899313f2f6dd5dcc5047978223d2b4483ee7d5aadd\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "test/dnssec-oracle/TestRRUtils.sol": {
        "TestRRUtils": {
          "abi": [
            {
              "inputs": [],
              "name": "testCompareNames",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testIterateRRs",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testKeyTag",
              "outputs": [],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testLabelCount",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testNameLength",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "testSerialNumberGt",
              "outputs": [],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506123b6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639e4a090d116100505780639e4a090d14610091578063bb73daed14610099578063cc60617b146100a157600080fd5b80630250cf9a14610077578063706fc4de14610081578063976e62ac14610089575b600080fd5b61007f6100a9565b005b61007f610245565b61007f6105e0565b61007f610ef8565b61007f611115565b61007f6112ac565b6100d3600060405180604001604052806001815260200160008152506114cd90919063ffffffff16565b6001146101275760405162461bcd60e51b815260206004820152601460248201527f6e616d654c656e67746828272e2729203d3d203100000000000000000000000060448201526064015b60405180910390fd5b60408051808201909152600581527f036162630000000000000000000000000000000000000000000000000000000060208201526101669060046114cd565b6001146101b55760405162461bcd60e51b815260206004820152601460248201527f6e616d654c656e67746828272e2729203d3d2031000000000000000000000000604482015260640161011e565b60408051808201909152600581527f036162630000000000000000000000000000000000000000000000000000000060208201526101f49060006114cd565b6005146102435760405162461bcd60e51b815260206004820152601760248201527f6e616d654c656e67746828276162632e2729203d3d2035000000000000000000604482015260640161011e565b565b600060405180606001604052806024815260200161224c60249139604080516080808201835260038284019081527f016100000000000000000000000000000000000000000000000000000000000060608085019190915290835283518085018552600581527f0162016100000000000000000000000000000000000000000000000000000000602082810191909152808501919091528451928301855260048386018181527f74000001000000000000000000000000000000000000000000000000000000009385019390935291835284518086019095529084527fc0a80101000000000000000000000000000000000000000000000000000000008482015281019290925291925060008061035c8582611531565b90505b8051516020820151101561058957806040015161ffff166001146103c55760405162461bcd60e51b815260206004820152600c60248201527f54797065206d6174636865730000000000000000000000000000000000000000604482015260640161011e565b806060015161ffff1660011461041d5760405162461bcd60e51b815260206004820152600d60248201527f436c617373206d61746368657300000000000000000000000000000000000000604482015260640161011e565b806080015163ffffffff16610e10146104785760405162461bcd60e51b815260206004820152600b60248201527f54544c206d617463686573000000000000000000000000000000000000000000604482015260640161011e565b83826002811061048a5761048a611db8565b60200201518051906020012061049f82611592565b80519060200120146104f35760405162461bcd60e51b815260206004820152600c60248201527f4e616d65206d6174636865730000000000000000000000000000000000000000604482015260640161011e565b82826002811061050557610505611db8565b60200201518051906020012061051a826115b3565b805190602001201461056e5760405162461bcd60e51b815260206004820152600d60248201527f5264617461206d61746368657300000000000000000000000000000000000000604482015260640161011e565b8161057881611e16565b925050610584816115cf565b61035f565b50806002146105da5760405162461bcd60e51b815260206004820152601260248201527f45787065637465642032207265636f7264730000000000000000000000000000604482015260640161011e565b50505050565b60006040518060400160405280600c81526020017f066274686c61620378797a000000000000000000000000000000000000000000815250905060006040518060400160405280600c81526020017f066574686c61620378797a000000000000000000000000000000000000000000815250905060006040518060400160405280600581526020017f0378797a00000000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0161016201630000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0162016201630000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600381526020017f0163000000000000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600381526020017f0164000000000000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0161016401630000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0162016101630000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600881526020017f0261620163016400000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0161016301640000000000000000000000000000000000000000000000000000815250905060006108dd6040518060400160405280600581526020017f03026162000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f03016161000000000000000000000000000000000000000000000000000000008152506116b790919063ffffffff16565b126109505760405162461bcd60e51b815260206004820152602360248201527f6c6162656c206c656e677468732061726520636f72726563746c79206368656360448201527f6b65640000000000000000000000000000000000000000000000000000000000606482015260840161011e565b600061095c89886116b7565b136109d1576040805162461bcd60e51b81526020600482015260248101919091527f6f6e65206e616d6520686173206120646966666572656e6365206f66203e312060448201527f6c6162656c20746f2077697468207468652073616d6520726f6f74206e616d65606482015260840161011e565b60006109dd89876116b7565b12610a765760405162461bcd60e51b815260206004820152604160248201527f6f6e65206e616d6520686173206120646966666572656e6365206f66203e312060448201527f6c6162656c20746f207769746820646966666572656e7420726f6f74206e616d60648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161011e565b6000610a8289866116b7565b12610af55760405162461bcd60e51b815260206004820152603d60248201527f74776f206e616d6573207374617274207468652073616d65206275742068617660448201527f6520646966666572656e63657320696e206c61746572206c6162656c73000000606482015260840161011e565b6000610b0189856116b7565b13610b745760405162461bcd60e51b815260206004820152603e60248201527f746865206669727374206c6162656c20736f727473206c617465722c2062757460448201527f20746865206669727374206c6162656c20736f727473206561726c6965720000606482015260840161011e565b6000610b8083836116b7565b13610c195760405162461bcd60e51b815260206004820152605260248201527f74776f206e616d657320776865726520746865206669727374206c6162656c2060448201527f6f6e206f6e65206973206120707265666978206f66207468652066697273742060648201527f6c6162656c206f6e20746865206f746865720000000000000000000000000000608482015260a40161011e565b6000610c2589896116b7565b12610cbe5760405162461bcd60e51b815260206004820152605260248201527f74776f206e616d657320776865726520746865206669727374206c6162656c2060448201527f6f6e206f6e65206973206120707265666978206f66207468652066697273742060648201527f6c6162656c206f6e20746865206f746865720000000000000000000000000000608482015260a40161011e565b6000610cca8a8c6116b7565b12610d175760405162461bcd60e51b815260206004820152601b60248201527f78797a20636f6d6573206265666f7265206574684c61622e78797a0000000000604482015260640161011e565b6000610d238c8c6116b7565b12610d965760405162461bcd60e51b815260206004820152602260248201527f6274684c61622e78797a20636f6d6573206265666f7265206574684c61622e7860448201527f797a000000000000000000000000000000000000000000000000000000000000606482015260840161011e565b610da08b806116b7565b15610e135760405162461bcd60e51b815260206004820152602660248201527f6274684c61622e78797a20616e64206274684c61622e78797a2061726520746860448201527f652073616d650000000000000000000000000000000000000000000000000000606482015260840161011e565b6000610e1f8b8d6116b7565b13610e925760405162461bcd60e51b815260206004820152602260248201527f6574684c61622e78797a20636f6d657320616674657220626574684c61622e7860448201527f797a000000000000000000000000000000000000000000000000000000000000606482015260840161011e565b6000610e9e8c8b6116b7565b13610eeb5760405162461bcd60e51b815260206004820152601a60248201527f6274684c61622e78797a20636f6d65732061667465722078797a000000000000604482015260640161011e565b5050505050505050505050565b610f0460016000611810565b610f505760405162461bcd60e51b815260206004820152600660248201527f31203e3d20300000000000000000000000000000000000000000000000000000604482015260640161011e565b610f5c60006001611810565b15610fa95760405162461bcd60e51b815260206004820152600960248201527f212830203c3d2031290000000000000000000000000000000000000000000000604482015260640161011e565b610fb8600063ffffffff611810565b6110045760405162461bcd60e51b815260206004820152600f60248201527f30203e3d20307846464646464646460000000000000000000000000000000000604482015260640161011e565b61101363ffffffff6000611810565b156110605760405162461bcd60e51b815260206004820152601260248201527f212830203c3d2030784646464646464646290000000000000000000000000000604482015260640161011e565b611072631111111163aaaaaaaa611810565b6110be5760405162461bcd60e51b815260206004820152601860248201527f30783131313131313131203e3d20307841414141414141410000000000000000604482015260640161011e565b6110c9600180611810565b6102435760405162461bcd60e51b815260206004820152600660248201527f31203e3d20310000000000000000000000000000000000000000000000000000604482015260640161011e565b611139604051806101400160405280610108815260200161203c6101089139611829565b61ffff16614a5c1461118d5760405162461bcd60e51b815260206004820152600e60248201527f496e76616c6964206b6579746167000000000000000000000000000000000000604482015260640161011e565b6111ae6040518060c00160405280608981526020016122f860899139611829565b61ffff166154bd146112025760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206b6579746167202832290000000000000000000000000000604482015260640161011e565b6112236040518060c001604052806088815260200161227060889139611829565b61ffff1661835e1461123457600080fd5b61125860405180610140016040528061010881526020016121446101089139611829565b61ffff16614f66146102435760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206b6579746167202833290000000000000000000000000000604482015260640161011e565b6112d660006040518060400160405280600181526020016000815250611a5390919063ffffffff16565b156113235760405162461bcd60e51b815260206004820152601460248201527f6c6162656c436f756e7428272e2729203d3d2030000000000000000000000000604482015260640161011e565b60408051808201909152600381527f01610000000000000000000000000000000000000000000000000000000000006020820152611362906000611a53565b6001146113b15760405162461bcd60e51b815260206004820152601560248201527f6c6162656c436f756e742827612e2729203d3d20310000000000000000000000604482015260640161011e565b60408051808201909152600681527f016201610000000000000000000000000000000000000000000000000000000060208201526113f0906000611a53565b60021461143f5760405162461bcd60e51b815260206004820152601760248201527f6c6162656c436f756e742827622e612e2729203d3d2032000000000000000000604482015260640161011e565b60408051808201909152600c81527f066574686c61620378797a000000000000000000000000000000000000000000602082015261147e906007611a53565b6001146102435760405162461bcd60e51b815260206004820181905260248201527f6e616d654c656e6774682827286274686c6162292e78797a2e2729203d3d2036604482015260640161011e565b6000815b835181106114e1576114e1611e30565b60006114ed8583611ab7565b60ff1690506114fd816001611e5f565b6115079083611e5f565b915080600003611517575061151d565b506114d1565b6115278382611e72565b9150505b92915050565b61157f6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c0810182905261152b816115cf565b6020810151815160609161152b916115aa90826114cd565b84519190611adb565b60a081015160c082015160609161152b916115aa908290611e72565b60c081015160208201819052815151116115e65750565b60006115fa826000015183602001516114cd565b82602001516116099190611e5f565b82519091506116189082611b5d565b61ffff16604083015261162c600282611e5f565b825190915061163b9082611b5d565b61ffff16606083015261164f600282611e5f565b825190915061165e9082611b85565b63ffffffff166080830152611674600482611e5f565b82519091506000906116869083611b5d565b61ffff169050611697600283611e5f565b60a0840181905291506116aa8183611e5f565b60c0909301929092525050565b60006116c38383611baf565b156116d05750600061152b565b60008060008060006116e3886000611a53565b905060006116f2886000611a53565b90505b8082111561171e5785935061170a8987611bcd565b95508161171681611e85565b9250506116f5565b81811115611747578492506117338886611bcd565b94508061173f81611e85565b91505061171e565b600082118015611760575061175e89878a88611bf1565b155b15611795578593506117728987611bcd565b95508492506117818886611bcd565b945061178e600183611e72565b9150611747565b856000036117ad57600019965050505050505061152b565b846000036117c4576001965050505050505061152b565b6118036117d2856001611e5f565b6117dc8b87611ab7565b60ff168a6117eb876001611e5f565b6117f58d89611ab7565b8e949392919060ff16611c26565b9998505050505050505050565b60008061181d8385611e9c565b60030b12159392505050565b60006120008251111561187e5760405162461bcd60e51b815260206004820152601760248201527f4c6f6e67206b657973206e6f74207065726d6974746564000000000000000000604482015260640161011e565b60008060005b8451601f018110156118f357600081602087010151905085518260200111156118b95785518290036008026101000390811c901b5b7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff600882901c81169490940193169190910190602001611884565b506010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff160191506010817fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1601905080600883901b0191506020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff160191506040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c8277ffffffffffffffff0000000000000000ffffffffffffffff16019150608082901c826fffffffffffffffffffffffffffffffff16019150601082901c61ffff16820191508192505050919050565b6000805b83518310611a6757611a67611e30565b6000611a738585611ab7565b60ff169050611a83816001611e5f565b611a8d9085611e5f565b935080600003611a9d5750611ab0565b611aa8600183611e5f565b915050611a57565b9392505050565b6000828281518110611acb57611acb611db8565b016020015160f81c905092915050565b8251606090611aea8385611e5f565b1115611af557600080fd5b60008267ffffffffffffffff811115611b1057611b10611ede565b6040519080825280601f01601f191660200182016040528015611b3a576020820181803683370190505b50905060208082019086860101611b52828287611d1b565b509095945050505050565b8151600090611b6d836002611e5f565b1115611b7857600080fd5b50016002015161ffff1690565b8151600090611b95836004611e5f565b1115611ba057600080fd5b50016004015163ffffffff1690565b600081518351148015611ab05750611ab08360008460008751611d71565b6000611bd98383611ab7565b60ff16611be7836001611e5f565b611ab09190611e5f565b6000611c0a8383848651611c059190611e72565b611d94565b611c1c8686878951611c059190611e72565b1495945050505050565b60008480831015611c345750815b60208789018101908587010160005b83811015611d005782518251808214611cd05760006020871115611c6a5750600019611ca6565b600184611c78896020611e72565b611c829190611e5f565b611c8d906008611f0d565b611c98906002612008565b611ca29190611e72565b1990505b6000611cb6838316858416612014565b90508015611ccd579750611d119650505050505050565b50505b611cdb602086611e5f565b9450611ce8602085611e5f565b93505050602081611cf99190611e5f565b9050611c43565b50611d0b8589612014565b93505050505b9695505050505050565b60208110611d535781518352611d32602084611e5f565b9250611d3f602083611e5f565b9150611d4c602082611e72565b9050611d1b565b905182516020929092036101000a6000190180199091169116179052565b6000611d7e848484611d94565b611d89878785611d94565b149695505050505050565b8251600090611da38385611e5f565b1115611dae57600080fd5b5091016020012090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006000198203611e2957611e29611de7565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8082018082111561152b5761152b611de7565b8181038181111561152b5761152b611de7565b600081611e9457611e94611de7565b506000190190565b600382810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008112637fffffff8213171561152b5761152b611de7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b808202811582820484141761152b5761152b611de7565b600181815b80851115611f5f578160001904821115611f4557611f45611de7565b80851615611f5257918102915b93841c9390800290611f29565b509250929050565b600082611f765750600161152b565b81611f835750600061152b565b8160018114611f995760028114611fa357611fbf565b600191505061152b565b60ff841115611fb457611fb4611de7565b50506001821b61152b565b5060208310610133831016604e8410600b8410161715611fe2575081810a61152b565b611fec8383611f24565b806000190482111561200057612000611de7565b029392505050565b6000611ab08383611f67565b818103600083128015838313168383128216171561203457612034611de7565b509291505056fe0101030803010001a80020a95566ba42e886bb804cda84e47ef56dbd7aec612615552cec906d2116d0ef207028c51554144dfeafe7c7cb8f005dd18234133ac0710a81182ce1fd14ad2283bc83435f9df2f6313251931a176df0da51e54f42e604860dfb359580250f559cc543c4ffd51cbe3de8cfd06719237f9fc47ee729da06835fa452e825e9a18ebc2ecbcf563474652c33cf56a9033bcdf5d973121797ec8089041b6e03a1b72d0a735b984e03687309332324f27c2dba85e9db15e83a0143382e974b0621c18e625ecec907577d9e7bade95241a81ebbe8a901d4d3276e40b114c0a2e6fc38d19c2e6aab02644b2813f575fc21601e0dee49cd9ee96a43103e524d62873d0101030803010001acffb409bcc939f831f7a1e5ec88f7a59255ec53040be432027390a4ce896d6f9086f3c5e177fbfe118163aaec7af1462c47945944c4e2c026be5e98bbcded25978272e1e3e079c5094d573f0e83c92f02b32d3513b1550b826929c80dd0f92cac966d17769fd5867b647c3f38029abdc48152eb8f207159ecc5d232c7c1537c79f4b7ac28ff11682f21681bf6d6aba555032bf6f9f036beb2aaa5b3778d6eebfba6bf9ea191be4ab0caea759e2f773a1f9029c73ecb8d5735b9321db085f1b8e2d8038fe2941992548cee0d67dd4547e11dd63af9c9fc1c5466fb684cf009d7197c2cf79e792ab501e6a8a1ca519af2cb9b5f6367e94c0d47502451357be1b50161000001000100000e1000047400000101620161000001000100000e100004c0a801010100030503010001bfa54c38d909fabb0f937d70d775ba0df4c0badb09707d995249406950407a621c794c68b186b15dbf8f9f9ea231e9f96414ccda4eceb50b17a9ac6c4bd4b95da04849e96ee791578b703bc9ae184fb1794bac792a0787f693a40f19f523ee6dbd3599dbaaa9a50437926ecf6438845d1d49448962524f2a1a7a36b3a0a1eca3010003050440000003ba2fa05a75e173bede89eb71831ab14035f2408ad09df4d8dc8f8f72e8f13506feaddf7b04cb14958b82966e3420562302c4002bc4fd088432e160519bb14dae82443850c1423e06085710b5caf070d46b7ba7e481414f6a5fe225fdca984c959091645d0cf1c9a1a313d7e7fb7ba60b967b71a65f8cef2c3768e11b081c8fcfa2646970667358221220b12667d30e85bbbaef2762e2764bae47d4d8a6ab77e04404355106d6be5940b864736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23B6 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E4A090D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9E4A090D EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xBB73DAED EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xCC60617B EQ PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x250CF9A EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x706FC4DE EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x976E62AC EQ PUSH2 0x89 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x245 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x5E0 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEF8 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x1115 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x12AC JUMP JUMPDEST PUSH2 0xD3 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x14CD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 EQ PUSH2 0x127 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D654C656E67746828272E2729203D3D2031000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x361626300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x166 SWAP1 PUSH1 0x4 PUSH2 0x14CD JUMP JUMPDEST PUSH1 0x1 EQ PUSH2 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D654C656E67746828272E2729203D3D2031000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x361626300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1F4 SWAP1 PUSH1 0x0 PUSH2 0x14CD JUMP JUMPDEST PUSH1 0x5 EQ PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D654C656E67746828276162632E2729203D3D2035000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x224C PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x3 DUP3 DUP5 ADD SWAP1 DUP2 MSTORE PUSH32 0x161000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x162016100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD SWAP3 DUP4 ADD DUP6 MSTORE PUSH1 0x4 DUP4 DUP7 ADD DUP2 DUP2 MSTORE PUSH32 0x7400000100000000000000000000000000000000000000000000000000000000 SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 MSTORE DUP5 MLOAD DUP1 DUP7 ADD SWAP1 SWAP6 MSTORE SWAP1 DUP5 MSTORE PUSH32 0xC0A8010100000000000000000000000000000000000000000000000000000000 DUP5 DUP3 ADD MSTORE DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x35C DUP6 DUP3 PUSH2 0x1531 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x589 JUMPI DUP1 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND PUSH1 0x1 EQ PUSH2 0x3C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54797065206D6174636865730000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH2 0xFFFF AND PUSH1 0x1 EQ PUSH2 0x41D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436C617373206D61746368657300000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP1 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH2 0xE10 EQ PUSH2 0x478 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54544C206D617463686573000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP4 DUP3 PUSH1 0x2 DUP2 LT PUSH2 0x48A JUMPI PUSH2 0x48A PUSH2 0x1DB8 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x49F DUP3 PUSH2 0x1592 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x4F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E616D65206D6174636865730000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP3 DUP3 PUSH1 0x2 DUP2 LT PUSH2 0x505 JUMPI PUSH2 0x505 PUSH2 0x1DB8 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x51A DUP3 PUSH2 0x15B3 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x56E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5264617461206D61746368657300000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP2 PUSH2 0x578 DUP2 PUSH2 0x1E16 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x584 DUP2 PUSH2 0x15CF JUMP JUMPDEST PUSH2 0x35F JUMP JUMPDEST POP DUP1 PUSH1 0x2 EQ PUSH2 0x5DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45787065637465642032207265636F7264730000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x66274686C61620378797A000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x66574686C61620378797A000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x378797A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x161016201630000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x162016201630000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x163000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x164000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x161016401630000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x162016101630000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x261620163016400000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x161016301640000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0x8DD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x302616200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x301616100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x16B7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SLT PUSH2 0x950 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C6162656C206C656E677468732061726520636F72726563746C792063686563 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B65640000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95C DUP10 DUP9 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0x9D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x6F6E65206E616D6520686173206120646966666572656E6365206F66203E3120 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6162656C20746F2077697468207468652073616D6520726F6F74206E616D65 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DD DUP10 DUP8 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xA76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x41 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F6E65206E616D6520686173206120646966666572656E6365206F66203E3120 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6162656C20746F207769746820646966666572656E7420726F6F74206E616D PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA82 DUP10 DUP7 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xAF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x74776F206E616D6573207374617274207468652073616D652062757420686176 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6520646966666572656E63657320696E206C61746572206C6162656C73000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB01 DUP10 DUP6 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746865206669727374206C6162656C20736F727473206C617465722C20627574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20746865206669727374206C6162656C20736F727473206561726C6965720000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB80 DUP4 DUP4 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0xC19 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x52 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x74776F206E616D657320776865726520746865206669727374206C6162656C20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206F6E65206973206120707265666978206F662074686520666972737420 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6C6162656C206F6E20746865206F746865720000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC25 DUP10 DUP10 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xCBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x52 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x74776F206E616D657320776865726520746865206669727374206C6162656C20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206F6E65206973206120707265666978206F662074686520666972737420 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6C6162656C206F6E20746865206F746865720000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP11 DUP13 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xD17 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x78797A20636F6D6573206265666F7265206574684C61622E78797A0000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD23 DUP13 DUP13 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xD96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6274684C61622E78797A20636F6D6573206265666F7265206574684C61622E78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x797A000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDA0 DUP12 DUP1 PUSH2 0x16B7 JUMP JUMPDEST ISZERO PUSH2 0xE13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6274684C61622E78797A20616E64206274684C61622E78797A20617265207468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x652073616D650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE1F DUP12 DUP14 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0xE92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6574684C61622E78797A20636F6D657320616674657220626574684C61622E78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x797A000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE9E DUP13 DUP12 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0xEEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6274684C61622E78797A20636F6D65732061667465722078797A000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF04 PUSH1 0x1 PUSH1 0x0 PUSH2 0x1810 JUMP JUMPDEST PUSH2 0xF50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x31203E3D20300000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0xF5C PUSH1 0x0 PUSH1 0x1 PUSH2 0x1810 JUMP JUMPDEST ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x212830203C3D2031290000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0xFB8 PUSH1 0x0 PUSH4 0xFFFFFFFF PUSH2 0x1810 JUMP JUMPDEST PUSH2 0x1004 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x30203E3D20307846464646464646460000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x1013 PUSH4 0xFFFFFFFF PUSH1 0x0 PUSH2 0x1810 JUMP JUMPDEST ISZERO PUSH2 0x1060 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x212830203C3D2030784646464646464646290000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x1072 PUSH4 0x11111111 PUSH4 0xAAAAAAAA PUSH2 0x1810 JUMP JUMPDEST PUSH2 0x10BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x30783131313131313131203E3D20307841414141414141410000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x10C9 PUSH1 0x1 DUP1 PUSH2 0x1810 JUMP JUMPDEST PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x31203E3D20310000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x1139 PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x108 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x203C PUSH2 0x108 SWAP2 CODECOPY PUSH2 0x1829 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x4A5C EQ PUSH2 0x118D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206B6579746167000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x11AE PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x89 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22F8 PUSH1 0x89 SWAP2 CODECOPY PUSH2 0x1829 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x54BD EQ PUSH2 0x1202 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206B6579746167202832290000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x1223 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x88 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2270 PUSH1 0x88 SWAP2 CODECOPY PUSH2 0x1829 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x835E EQ PUSH2 0x1234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1258 PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x108 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2144 PUSH2 0x108 SWAP2 CODECOPY PUSH2 0x1829 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x4F66 EQ PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206B6579746167202833290000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x12D6 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1A53 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO PUSH2 0x1323 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C6162656C436F756E7428272E2729203D3D2030000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x161000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1362 SWAP1 PUSH1 0x0 PUSH2 0x1A53 JUMP JUMPDEST PUSH1 0x1 EQ PUSH2 0x13B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C6162656C436F756E742827612E2729203D3D20310000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH32 0x162016100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x13F0 SWAP1 PUSH1 0x0 PUSH2 0x1A53 JUMP JUMPDEST PUSH1 0x2 EQ PUSH2 0x143F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C6162656C436F756E742827622E612E2729203D3D2032000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xC DUP2 MSTORE PUSH32 0x66574686C61620378797A000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x147E SWAP1 PUSH1 0x7 PUSH2 0x1A53 JUMP JUMPDEST PUSH1 0x1 EQ PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D654C656E6774682827286274686C6162292E78797A2E2729203D3D2036 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0x14E1 JUMPI PUSH2 0x14E1 PUSH2 0x1E30 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14ED DUP6 DUP4 PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x14FD DUP2 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1507 SWAP1 DUP4 PUSH2 0x1E5F JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0x1517 JUMPI POP PUSH2 0x151D JUMP JUMPDEST POP PUSH2 0x14D1 JUMP JUMPDEST PUSH2 0x1527 DUP4 DUP3 PUSH2 0x1E72 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x157F PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x152B DUP2 PUSH2 0x15CF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 PUSH2 0x152B SWAP2 PUSH2 0x15AA SWAP1 DUP3 PUSH2 0x14CD JUMP JUMPDEST DUP5 MLOAD SWAP2 SWAP1 PUSH2 0x1ADB JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 SWAP2 PUSH2 0x152B SWAP2 PUSH2 0x15AA SWAP1 DUP3 SWAP1 PUSH2 0x1E72 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0x15E6 JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FA DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x14CD JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1609 SWAP2 SWAP1 PUSH2 0x1E5F JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1618 SWAP1 DUP3 PUSH2 0x1B5D JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x162C PUSH1 0x2 DUP3 PUSH2 0x1E5F JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x163B SWAP1 DUP3 PUSH2 0x1B5D JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x164F PUSH1 0x2 DUP3 PUSH2 0x1E5F JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x165E SWAP1 DUP3 PUSH2 0x1B85 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1674 PUSH1 0x4 DUP3 PUSH2 0x1E5F JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1686 SWAP1 DUP4 PUSH2 0x1B5D JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0x1697 PUSH1 0x2 DUP4 PUSH2 0x1E5F JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0x16AA DUP2 DUP4 PUSH2 0x1E5F JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C3 DUP4 DUP4 PUSH2 0x1BAF JUMP JUMPDEST ISZERO PUSH2 0x16D0 JUMPI POP PUSH1 0x0 PUSH2 0x152B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16E3 DUP9 PUSH1 0x0 PUSH2 0x1A53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16F2 DUP9 PUSH1 0x0 PUSH2 0x1A53 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x171E JUMPI DUP6 SWAP4 POP PUSH2 0x170A DUP10 DUP8 PUSH2 0x1BCD JUMP JUMPDEST SWAP6 POP DUP2 PUSH2 0x1716 DUP2 PUSH2 0x1E85 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x16F5 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1747 JUMPI DUP5 SWAP3 POP PUSH2 0x1733 DUP9 DUP7 PUSH2 0x1BCD JUMP JUMPDEST SWAP5 POP DUP1 PUSH2 0x173F DUP2 PUSH2 0x1E85 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x171E JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x1760 JUMPI POP PUSH2 0x175E DUP10 DUP8 DUP11 DUP9 PUSH2 0x1BF1 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1795 JUMPI DUP6 SWAP4 POP PUSH2 0x1772 DUP10 DUP8 PUSH2 0x1BCD JUMP JUMPDEST SWAP6 POP DUP5 SWAP3 POP PUSH2 0x1781 DUP9 DUP7 PUSH2 0x1BCD JUMP JUMPDEST SWAP5 POP PUSH2 0x178E PUSH1 0x1 DUP4 PUSH2 0x1E72 JUMP JUMPDEST SWAP2 POP PUSH2 0x1747 JUMP JUMPDEST DUP6 PUSH1 0x0 SUB PUSH2 0x17AD JUMPI PUSH1 0x0 NOT SWAP7 POP POP POP POP POP POP POP PUSH2 0x152B JUMP JUMPDEST DUP5 PUSH1 0x0 SUB PUSH2 0x17C4 JUMPI PUSH1 0x1 SWAP7 POP POP POP POP POP POP POP PUSH2 0x152B JUMP JUMPDEST PUSH2 0x1803 PUSH2 0x17D2 DUP6 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x17DC DUP12 DUP8 PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0xFF AND DUP11 PUSH2 0x17EB DUP8 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x17F5 DUP14 DUP10 PUSH2 0x1AB7 JUMP JUMPDEST DUP15 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0xFF AND PUSH2 0x1C26 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x181D DUP4 DUP6 PUSH2 0x1E9C JUMP JUMPDEST PUSH1 0x3 SIGNEXTEND SLT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2000 DUP3 MLOAD GT ISZERO PUSH2 0x187E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6F6E67206B657973206E6F74207065726D6974746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 MLOAD PUSH1 0x1F ADD DUP2 LT ISZERO PUSH2 0x18F3 JUMPI PUSH1 0x0 DUP2 PUSH1 0x20 DUP8 ADD ADD MLOAD SWAP1 POP DUP6 MLOAD DUP3 PUSH1 0x20 ADD GT ISZERO PUSH2 0x18B9 JUMPI DUP6 MLOAD DUP3 SWAP1 SUB PUSH1 0x8 MUL PUSH2 0x100 SUB SWAP1 DUP2 SHR SWAP1 SHL JUMPDEST PUSH31 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF PUSH1 0x8 DUP3 SWAP1 SHR DUP2 AND SWAP5 SWAP1 SWAP5 ADD SWAP4 AND SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x1884 JUMP JUMPDEST POP PUSH1 0x10 DUP3 PUSH32 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 AND SWAP1 SHR DUP3 PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND ADD SWAP2 POP PUSH1 0x10 DUP2 PUSH32 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 AND SWAP1 SHR DUP2 PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND ADD SWAP1 POP DUP1 PUSH1 0x8 DUP4 SWAP1 SHL ADD SWAP2 POP PUSH1 0x20 DUP3 PUSH32 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000 AND SWAP1 SHR DUP3 PUSH28 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF AND ADD SWAP2 POP PUSH1 0x40 DUP3 PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000 AND SWAP1 SHR DUP3 PUSH24 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND ADD SWAP2 POP PUSH1 0x80 DUP3 SWAP1 SHR DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD SWAP2 POP PUSH1 0x10 DUP3 SWAP1 SHR PUSH2 0xFFFF AND DUP3 ADD SWAP2 POP DUP2 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP4 LT PUSH2 0x1A67 JUMPI PUSH2 0x1A67 PUSH2 0x1E30 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A73 DUP6 DUP6 PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1A83 DUP2 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1A8D SWAP1 DUP6 PUSH2 0x1E5F JUMP JUMPDEST SWAP4 POP DUP1 PUSH1 0x0 SUB PUSH2 0x1A9D JUMPI POP PUSH2 0x1AB0 JUMP JUMPDEST PUSH2 0x1AA8 PUSH1 0x1 DUP4 PUSH2 0x1E5F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1A57 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1ACB JUMPI PUSH2 0x1ACB PUSH2 0x1DB8 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x1AEA DUP4 DUP6 PUSH2 0x1E5F JUMP JUMPDEST GT ISZERO PUSH2 0x1AF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B10 JUMPI PUSH2 0x1B10 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B3A JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0x1B52 DUP3 DUP3 DUP8 PUSH2 0x1D1B JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1B6D DUP4 PUSH1 0x2 PUSH2 0x1E5F JUMP JUMPDEST GT ISZERO PUSH2 0x1B78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1B95 DUP4 PUSH1 0x4 PUSH2 0x1E5F JUMP JUMPDEST GT ISZERO PUSH2 0x1BA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0x1AB0 JUMPI POP PUSH2 0x1AB0 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0x1D71 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BD9 DUP4 DUP4 PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x1BE7 DUP4 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1AB0 SWAP2 SWAP1 PUSH2 0x1E5F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C0A DUP4 DUP4 DUP5 DUP7 MLOAD PUSH2 0x1C05 SWAP2 SWAP1 PUSH2 0x1E72 JUMP JUMPDEST PUSH2 0x1D94 JUMP JUMPDEST PUSH2 0x1C1C DUP7 DUP7 DUP8 DUP10 MLOAD PUSH2 0x1C05 SWAP2 SWAP1 PUSH2 0x1E72 JUMP JUMPDEST EQ SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP1 DUP4 LT ISZERO PUSH2 0x1C34 JUMPI POP DUP2 JUMPDEST PUSH1 0x20 DUP8 DUP10 ADD DUP2 ADD SWAP1 DUP6 DUP8 ADD ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D00 JUMPI DUP3 MLOAD DUP3 MLOAD DUP1 DUP3 EQ PUSH2 0x1CD0 JUMPI PUSH1 0x0 PUSH1 0x20 DUP8 GT ISZERO PUSH2 0x1C6A JUMPI POP PUSH1 0x0 NOT PUSH2 0x1CA6 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH2 0x1C78 DUP10 PUSH1 0x20 PUSH2 0x1E72 JUMP JUMPDEST PUSH2 0x1C82 SWAP2 SWAP1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1C8D SWAP1 PUSH1 0x8 PUSH2 0x1F0D JUMP JUMPDEST PUSH2 0x1C98 SWAP1 PUSH1 0x2 PUSH2 0x2008 JUMP JUMPDEST PUSH2 0x1CA2 SWAP2 SWAP1 PUSH2 0x1E72 JUMP JUMPDEST NOT SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1CB6 DUP4 DUP4 AND DUP6 DUP5 AND PUSH2 0x2014 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1CCD JUMPI SWAP8 POP PUSH2 0x1D11 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST POP POP JUMPDEST PUSH2 0x1CDB PUSH1 0x20 DUP7 PUSH2 0x1E5F JUMP JUMPDEST SWAP5 POP PUSH2 0x1CE8 PUSH1 0x20 DUP6 PUSH2 0x1E5F JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x20 DUP2 PUSH2 0x1CF9 SWAP2 SWAP1 PUSH2 0x1E5F JUMP JUMPDEST SWAP1 POP PUSH2 0x1C43 JUMP JUMPDEST POP PUSH2 0x1D0B DUP6 DUP10 PUSH2 0x2014 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1D53 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x1D32 PUSH1 0x20 DUP5 PUSH2 0x1E5F JUMP JUMPDEST SWAP3 POP PUSH2 0x1D3F PUSH1 0x20 DUP4 PUSH2 0x1E5F JUMP JUMPDEST SWAP2 POP PUSH2 0x1D4C PUSH1 0x20 DUP3 PUSH2 0x1E72 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D1B JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D7E DUP5 DUP5 DUP5 PUSH2 0x1D94 JUMP JUMPDEST PUSH2 0x1D89 DUP8 DUP8 DUP6 PUSH2 0x1D94 JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1DA3 DUP4 DUP6 PUSH2 0x1E5F JUMP JUMPDEST GT ISZERO PUSH2 0x1DAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 SUB PUSH2 0x1E29 JUMPI PUSH2 0x1E29 PUSH2 0x1DE7 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x152B JUMPI PUSH2 0x152B PUSH2 0x1DE7 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x152B JUMPI PUSH2 0x152B PUSH2 0x1DE7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1E94 JUMPI PUSH2 0x1E94 PUSH2 0x1DE7 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000 DUP2 SLT PUSH4 0x7FFFFFFF DUP3 SGT OR ISZERO PUSH2 0x152B JUMPI PUSH2 0x152B PUSH2 0x1DE7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x152B JUMPI PUSH2 0x152B PUSH2 0x1DE7 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x1F5F JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x1F45 JUMPI PUSH2 0x1F45 PUSH2 0x1DE7 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x1F52 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x1F29 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1F76 JUMPI POP PUSH1 0x1 PUSH2 0x152B JUMP JUMPDEST DUP2 PUSH2 0x1F83 JUMPI POP PUSH1 0x0 PUSH2 0x152B JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1F99 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1FA3 JUMPI PUSH2 0x1FBF JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x152B JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1FB4 JUMPI PUSH2 0x1FB4 PUSH2 0x1DE7 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x152B JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1FE2 JUMPI POP DUP2 DUP2 EXP PUSH2 0x152B JUMP JUMPDEST PUSH2 0x1FEC DUP4 DUP4 PUSH2 0x1F24 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x2000 JUMPI PUSH2 0x2000 PUSH2 0x1DE7 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AB0 DUP4 DUP4 PUSH2 0x1F67 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP4 SLT DUP1 ISZERO DUP4 DUP4 SGT AND DUP4 DUP4 SLT DUP3 AND OR ISZERO PUSH2 0x2034 JUMPI PUSH2 0x2034 PUSH2 0x1DE7 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP INVALID ADD ADD SUB ADDMOD SUB ADD STOP ADD 0xA8 STOP KECCAK256 0xA9 SSTORE PUSH7 0xBA42E886BB804C 0xDA DUP5 0xE4 PUSH31 0xF56DBD7AEC612615552CEC906D2116D0EF207028C51554144DFEAFE7C7CB8F STOP 0x5D 0xD1 DUP3 CALLVALUE SGT GASPRICE 0xC0 PUSH18 0xA81182CE1FD14AD2283BC83435F9DF2F631 ORIGIN MLOAD SWAP4 BYTE OR PUSH14 0xF0DA51E54F42E604860DFB359580 0x25 0xF SSTORE SWAP13 0xC5 NUMBER 0xC4 SELFDESTRUCT 0xD5 SHR 0xBE RETURNDATASIZE 0xE8 0xCF 0xD0 PUSH8 0x19237F9FC47EE729 0xDA MOD DUP4 0x5F LOG4 MSTORE 0xE8 0x25 0xE9 LOG1 DUP15 0xBC 0x2E 0xCB 0xCF JUMP CALLVALUE PUSH21 0x652C33CF56A9033BCDF5D973121797EC8089041B6E SUB LOG1 0xB7 0x2D EXP PUSH20 0x5B984E03687309332324F27C2DBA85E9DB15E83A ADD NUMBER CODESIZE 0x2E SWAP8 0x4B MOD 0x21 0xC1 DUP15 PUSH3 0x5ECEC9 SMOD JUMPI PUSH30 0x9E7BADE95241A81EBBE8A901D4D3276E40B114C0A2E6FC38D19C2E6AAB02 PUSH5 0x4B2813F575 0xFC 0x21 PUSH1 0x1E 0xD 0xEE 0x49 0xCD SWAP15 0xE9 PUSH11 0x43103E524D62873D010103 ADDMOD SUB ADD STOP ADD 0xAC SELFDESTRUCT 0xB4 MULMOD 0xBC 0xC9 CODECOPY 0xF8 BALANCE 0xF7 LOG1 0xE5 0xEC DUP9 0xF7 0xA5 SWAP3 SSTORE 0xEC MSTORE8 DIV SIGNEXTEND 0xE4 ORIGIN MUL PUSH20 0x90A4CE896D6F9086F3C5E177FBFE118163AAEC7A CALL CHAINID 0x2C SELFBALANCE SWAP5 MSIZE DIFFICULTY 0xC4 0xE2 0xC0 0x26 0xBE 0x5E SWAP9 0xBB 0xCD 0xED 0x25 SWAP8 DUP3 PUSH19 0xE1E3E079C5094D573F0E83C92F02B32D3513B1 SSTORE SIGNEXTEND DUP3 PUSH10 0x29C80DD0F92CAC966D17 PUSH23 0x9FD5867B647C3F38029ABDC48152EB8F207159ECC5D232 0xC7 0xC1 MSTORE8 PUSH29 0x79F4B7AC28FF11682F21681BF6D6ABA555032BF6F9F036BEB2AAA5B377 DUP14 PUSH15 0xEBFBA6BF9EA191BE4AB0CAEA759E2F PUSH24 0x3A1F9029C73ECB8D5735B9321DB085F1B8E2D8038FE29419 SWAP3 SLOAD DUP13 0xEE 0xD PUSH8 0xDD4547E11DD63AF9 0xC9 0xFC SHR SLOAD PUSH7 0xFB684CF009D719 PUSH29 0x2CF79E792AB501E6A8A1CA519AF2CB9B5F6367E94C0D47502451357BE1 0xB5 ADD PUSH2 0x0 ADD STOP ADD STOP STOP 0xE LT STOP DIV PUSH21 0x101620161000001000100000E100004C0A801 ADD ADD STOP SUB SDIV SUB ADD STOP ADD 0xBF 0xA5 0x4C CODESIZE 0xD9 MULMOD STATICCALL 0xBB 0xF SWAP4 PUSH30 0x70D775BA0DF4C0BADB09707D995249406950407A621C794C68B186B15DBF DUP16 SWAP16 SWAP15 LOG2 BALANCE 0xE9 0xF9 PUSH5 0x14CCDA4ECE 0xB5 SIGNEXTEND OR 0xA9 0xAC PUSH13 0x4BD4B95DA04849E96EE791578B PUSH17 0x3BC9AE184FB1794BAC792A0787F693A40F NOT CREATE2 0x23 0xEE PUSH14 0xBD3599DBAAA9A50437926ECF6438 DUP5 0x5D SAR 0x49 DIFFICULTY DUP10 PUSH3 0x524F2A BYTE PUSH27 0x36B3A0A1ECA3010003050440000003BA2FA05A75E173BEDE89EB71 DUP4 BYTE 0xB1 BLOCKHASH CALLDATALOAD CALLCODE BLOCKHASH DUP11 0xD0 SWAP14 DELEGATECALL 0xD8 0xDC DUP16 DUP16 PUSH19 0xE8F13506FEADDF7B04CB14958B82966E342056 0x23 MUL 0xC4 STOP 0x2B 0xC4 REVERT ADDMOD DUP5 ORIGIN 0xE1 PUSH1 0x51 SWAP12 0xB1 0x4D 0xAE DUP3 DIFFICULTY CODESIZE POP 0xC1 TIMESTAMP RETURNDATACOPY MOD ADDMOD JUMPI LT 0xB5 0xCA CREATE PUSH17 0xD46B7BA7E481414F6A5FE225FDCA984C95 SWAP1 SWAP2 PUSH5 0x5D0CF1C9A1 LOG3 SGT 0xD7 0xE7 0xFB PUSH28 0xA60B967B71A65F8CEF2C3768E11B081C8FCFA2646970667358221220 0xB1 0x26 PUSH8 0xD30E85BBBAEF2762 0xE2 PUSH23 0x4BAE47D4D8A6AB77E04404355106D6BE5940B864736F6C PUSH4 0x43000811 STOP CALLER ",
              "sourceMap": "133:6015:108:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@compareNames_6832": {
                  "entryPoint": 5815,
                  "id": 6832,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@compare_4421": {
                  "entryPoint": 7206,
                  "id": 4421,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@computeKeytag_7058": {
                  "entryPoint": 6185,
                  "id": 7058,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@done_6366": {
                  "entryPoint": null,
                  "id": 6366,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@equals_4449": {
                  "entryPoint": 7537,
                  "id": 4449,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@equals_4481": {
                  "entryPoint": 7153,
                  "id": 4481,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@equals_4535": {
                  "entryPoint": 7087,
                  "id": 4535,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@iterateRRs_6349": {
                  "entryPoint": 5425,
                  "id": 6349,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@keccak_4263": {
                  "entryPoint": 7572,
                  "id": 4263,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@labelCount_6143": {
                  "entryPoint": 6739,
                  "id": 6143,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@memcpy_4702": {
                  "entryPoint": 7451,
                  "id": 4702,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@nameLength_6069": {
                  "entryPoint": 5325,
                  "id": 6069,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_6493": {
                  "entryPoint": 5522,
                  "id": 6493,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@next_6470": {
                  "entryPoint": 5583,
                  "id": 6470,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@progress_6874": {
                  "entryPoint": 7117,
                  "id": 6874,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@rdata_6515": {
                  "entryPoint": 5555,
                  "id": 6515,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@readUint16_4572": {
                  "entryPoint": 7005,
                  "id": 4572,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint32_4592": {
                  "entryPoint": 7045,
                  "id": 4592,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@readUint8_4552": {
                  "entryPoint": 6839,
                  "id": 4552,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@serialNumberGte_6855": {
                  "entryPoint": 6160,
                  "id": 6855,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@substring_4745": {
                  "entryPoint": 6875,
                  "id": 4745,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@testCompareNames_22293": {
                  "entryPoint": 1504,
                  "id": 22293,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testIterateRRs_22125": {
                  "entryPoint": 581,
                  "id": 22125,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testKeyTag_22392": {
                  "entryPoint": 4373,
                  "id": 22392,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testLabelCount_21988": {
                  "entryPoint": 4780,
                  "id": 21988,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testNameLength_21942": {
                  "entryPoint": 169,
                  "id": 21942,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@testSerialNumberGt_22353": {
                  "entryPoint": 3832,
                  "id": 22353,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_stringliteral_0a6852ea68843aeaa9749c5062f4bc9138e848b7335dfa04d2f720530b4423db__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2468c3110d9641c57873b7aeff5b7d826c16026822fbdd4b13dd2a51d5ea9950__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a6022100817ec1001b58899f0ecf9559725699dd3f7df6caacea6c2710ae25e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_322c001f5a4a8d6c44c28bf3df8b09b8526da1da01eebb748bc9817ac06a416e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3edb8746773f5e9520e1e382fdf76ac3b4bb6d36394e1fa37d2ad0e85662497c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_41473db132ddad04171673364a7f93a8e3e7258bf35bfc05a4fb032f3f8849e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4b20bead19811b31540df7ceac174b35e9f52395211289f5cb23451dc576cef2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_507931b0e55f6b548eeb72633047cd2b923e10ac55ef6f5a82ab150d098a4116__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_550f417f12cd5b0cc6c5440b051ecee0b959ace0c0a870d9bab0f22af94f9e73__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_607ae0b76f73b9194446ca38b3f945cf0df453eceb13a4dabb6f009318b0044a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6310fabe86fd651b0fedbba5b685f31123c370c789115bd12753402f4f0bdb15__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_634386faacaa7070cbcd56db2b7eeb086a975c771e51eee9cf08fab28e0a8da2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6c6b4795d8768aca852dfb2f09d221eae654395385a5877f6e6ca2013ea9efb0__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_79698b1975fb3b45192f1d63d744beeb5391eccc3c46a52243578ea8ab3bea6d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2584f4f3f801b98ff1d2020b43e2f39872fe0854fe8310cbe5793972991cdd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a8982332bffef534d5d09d42dcb4be459699a5fb4a91a61229b2ab3a6246ff9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7e23270aecf7702fd4b1bd212912c277507361dc8248ebed5ad0286c9b051069__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7ea5d81e82f19b62360b8ebee88d313d11bfc64cf4dad469cc9df6c9044cdb0a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7eff79fd07b3511edb69feef9a829a779b1052131d8bb0bbda3c75f69891e329__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7f8817867a2defd51236815a8ac4965af601adee0292d0f1eb6b96ad2343c218__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9440ac3fb312b691102cb530f6ff009f02ba639f803b7ab1f192721d47b75ab1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_994cf01fd95fa740ff6aae9f505815f1b57b5dcff57b67047721b13b238ab515__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a9e070c6fe40e1948511d27584fcabc13f1825c5041e0c42e1300e112910abfa__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ae2cb1b8c554acf172a86403d58177e7bb53fa82a321bcfac12881669cff64fb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_bbd6b3cead62efb3b5b1b7b9eb780497ba6a8ffe9cb8a4d0b07acebfef1fba7c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c5f6b8b39f9114f3c4a67b837819b66c18cbf97dda4808a647f24e3f4a4e70e9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c86db32b595759ca444516bd19395fc6b568b4293c7fc0adce44b1190ea08c89__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ca1733b0e82b81bf1eb99a2b630a9d3af688720adab95cea378a13d2fa4770fe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d0f3078522067c01563af27cd5a908fa0f2aa80333f45b6b010c3387a2066a01__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d4a48182e2afdd5dbebf10b4ca47fcad283d90a13a14e49f2a7e4e956ef837c9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ecb2825ba59598cfcbfd424e795aac51679215f739f63a1d34e8db740faf2186__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f57de8016d3ddbdd7435695474d6d28b30e9374da76b5c87219e4eb2cd4ccb88__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_fe7fad5c1110ceaf41a9647c79015d04595ac3cec5b51625f02f7c886b4cbf6d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 7775,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_helper": {
                  "entryPoint": 7972,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "checked_exp_t_uint256_t_uint256": {
                  "entryPoint": 8200,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_unsigned": {
                  "entryPoint": 8039,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 7949,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_int256": {
                  "entryPoint": 8212,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_int32": {
                  "entryPoint": 7836,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 7794,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "decrement_t_uint256": {
                  "entryPoint": 7813,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 7702,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x01": {
                  "entryPoint": 7728,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x11": {
                  "entryPoint": 7655,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 7608,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 7902,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:15748:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "188:170:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "216:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "198:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "198:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "198:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "239:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "250:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "235:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "235:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "255:2:111",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "228:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "228:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "278:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "289:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "274:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "274:18:111"
                                  },
                                  {
                                    "hexValue": "6e616d654c656e67746828272e2729203d3d2031",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "294:22:111",
                                    "type": "",
                                    "value": "nameLength('.') == 1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "267:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "267:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "267:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "326:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "338:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "349:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "334:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "334:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "326:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7eff79fd07b3511edb69feef9a829a779b1052131d8bb0bbda3c75f69891e329__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "165:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "179:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14:344:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "537:173:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "554:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "565:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "547:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "547:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "547:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "588:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "599:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "584:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "584:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "604:2:111",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "577:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "577:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "577:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "627:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "638:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "623:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "623:18:111"
                                  },
                                  {
                                    "hexValue": "6e616d654c656e67746828276162632e2729203d3d2035",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "643:25:111",
                                    "type": "",
                                    "value": "nameLength('abc.') == 5"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "616:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "616:53:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "616:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "678:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "690:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "701:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "686:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "686:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "678:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_79698b1975fb3b45192f1d63d744beeb5391eccc3c46a52243578ea8ab3bea6d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "514:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "528:4:111",
                            "type": ""
                          }
                        ],
                        "src": "363:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "889:162:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "906:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "917:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "899:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "899:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "899:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "940:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "951:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "936:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "936:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "956:2:111",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "929:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "929:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "929:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "979:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "990:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "975:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "975:18:111"
                                  },
                                  {
                                    "hexValue": "54797065206d617463686573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "995:14:111",
                                    "type": "",
                                    "value": "Type matches"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "968:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "968:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "968:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1019:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1031:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1042:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1027:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1027:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1019:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d4a48182e2afdd5dbebf10b4ca47fcad283d90a13a14e49f2a7e4e956ef837c9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "866:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "880:4:111",
                            "type": ""
                          }
                        ],
                        "src": "715:336:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1230:163:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1247:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1258:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1240:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1240:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1240:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1292:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1277:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1277:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1297:2:111",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1270:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1270:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1270:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1320:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1331:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1316:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1316:18:111"
                                  },
                                  {
                                    "hexValue": "436c617373206d617463686573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1336:15:111",
                                    "type": "",
                                    "value": "Class matches"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1309:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1309:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1309:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1361:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1373:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1384:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1369:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1369:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1361:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ecb2825ba59598cfcbfd424e795aac51679215f739f63a1d34e8db740faf2186__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1207:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1221:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1056:337:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1572:161:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1589:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1600:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1582:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1582:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1582:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1623:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1634:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1619:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1619:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1639:2:111",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1612:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1612:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1612:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1662:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1673:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1658:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1658:18:111"
                                  },
                                  {
                                    "hexValue": "54544c206d617463686573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1678:13:111",
                                    "type": "",
                                    "value": "TTL matches"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1651:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1651:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1651:41:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1701:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1713:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1724:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1709:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1709:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1701:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7f8817867a2defd51236815a8ac4965af601adee0292d0f1eb6b96ad2343c218__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1549:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1563:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1398:335:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1770:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1787:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1790:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1884:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1887:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1877:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1877:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1877:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1908:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1911:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1901:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1901:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1901:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1738:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2101:162:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2118:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2129:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2111:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2111:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2111:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2152:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2163:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2148:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2148:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2168:2:111",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2141:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2141:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2141:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2191:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2202:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2187:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2187:18:111"
                                  },
                                  {
                                    "hexValue": "4e616d65206d617463686573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2207:14:111",
                                    "type": "",
                                    "value": "Name matches"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2180:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2180:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2180:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2231:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2243:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2254:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2239:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2239:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2231:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a6022100817ec1001b58899f0ecf9559725699dd3f7df6caacea6c2710ae25e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2078:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2092:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1927:336:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2442:163:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2459:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2470:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2452:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2452:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2452:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2493:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2504:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2489:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2489:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2509:2:111",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2482:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2482:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2482:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2532:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2543:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2528:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2528:18:111"
                                  },
                                  {
                                    "hexValue": "5264617461206d617463686573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2548:15:111",
                                    "type": "",
                                    "value": "Rdata matches"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2521:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2521:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2521:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2573:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2585:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2596:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2581:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2581:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2573:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c5f6b8b39f9114f3c4a67b837819b66c18cbf97dda4808a647f24e3f4a4e70e9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2419:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2433:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2268:337:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2642:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2659:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2662:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2652:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2652:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2652:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2756:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2759:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2749:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2749:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2749:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2780:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2783:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2773:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2773:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2773:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2610:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2846:148:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2937:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "2939:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2939:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2939:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2862:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2869:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "2859:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2859:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2856:103:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2968:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2979:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2986:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2975:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2975:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "2968:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2828:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "2838:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2799:195:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3173:168:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3190:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3201:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3183:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3183:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3183:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3224:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3235:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3220:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3220:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3240:2:111",
                                    "type": "",
                                    "value": "18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3213:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3213:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3213:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3263:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3274:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3259:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3259:18:111"
                                  },
                                  {
                                    "hexValue": "45787065637465642032207265636f726473",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3279:20:111",
                                    "type": "",
                                    "value": "Expected 2 records"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3252:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3252:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3252:48:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3309:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3321:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3332:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3317:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3317:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3309:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_994cf01fd95fa740ff6aae9f505815f1b57b5dcff57b67047721b13b238ab515__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3150:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3164:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2999:342:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3520:225:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3537:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3548:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3530:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3530:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3530:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3571:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3582:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3567:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3567:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3587:2:111",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3560:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3560:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3560:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3610:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3621:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3606:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3606:18:111"
                                  },
                                  {
                                    "hexValue": "6c6162656c206c656e677468732061726520636f72726563746c792063686563",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3626:34:111",
                                    "type": "",
                                    "value": "label lengths are correctly chec"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3599:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3599:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3599:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3681:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3692:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3677:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3677:18:111"
                                  },
                                  {
                                    "hexValue": "6b6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3697:5:111",
                                    "type": "",
                                    "value": "ked"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3670:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3670:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3670:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3712:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3724:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3735:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3720:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3720:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3712:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fe7fad5c1110ceaf41a9647c79015d04595ac3cec5b51625f02f7c886b4cbf6d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3497:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3511:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3346:399:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3924:254:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3941:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3952:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3934:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3934:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3934:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3975:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3986:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3971:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3971:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3991:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3964:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3964:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3964:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4014:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4025:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4010:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4010:18:111"
                                  },
                                  {
                                    "hexValue": "6f6e65206e616d6520686173206120646966666572656e6365206f66203e3120",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4030:34:111",
                                    "type": "",
                                    "value": "one name has a difference of >1 "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4003:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4003:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4003:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4085:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4096:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4081:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4081:18:111"
                                  },
                                  {
                                    "hexValue": "6c6162656c20746f2077697468207468652073616d6520726f6f74206e616d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4101:34:111",
                                    "type": "",
                                    "value": "label to with the same root name"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4074:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4074:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4074:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4145:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4157:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4168:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4153:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4153:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4145:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6310fabe86fd651b0fedbba5b685f31123c370c789115bd12753402f4f0bdb15__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3901:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3915:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3750:428:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4357:295:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4374:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4385:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4367:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4367:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4367:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4408:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4419:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4404:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4404:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4424:2:111",
                                    "type": "",
                                    "value": "65"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4397:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4397:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4397:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4447:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4458:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4443:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4443:18:111"
                                  },
                                  {
                                    "hexValue": "6f6e65206e616d6520686173206120646966666572656e6365206f66203e3120",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4463:34:111",
                                    "type": "",
                                    "value": "one name has a difference of >1 "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4436:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4436:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4436:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4518:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4529:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4514:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4514:18:111"
                                  },
                                  {
                                    "hexValue": "6c6162656c20746f207769746820646966666572656e7420726f6f74206e616d",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4534:34:111",
                                    "type": "",
                                    "value": "label to with different root nam"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4507:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4507:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4507:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4589:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4600:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4585:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4585:19:111"
                                  },
                                  {
                                    "hexValue": "65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4606:3:111",
                                    "type": "",
                                    "value": "e"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4578:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4578:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4578:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4619:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4631:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4642:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4627:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4627:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4619:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6c6b4795d8768aca852dfb2f09d221eae654395385a5877f6e6ca2013ea9efb0__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4334:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4348:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4183:469:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4831:251:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4848:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4859:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4841:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4841:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4841:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4882:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4893:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4878:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4878:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4898:2:111",
                                    "type": "",
                                    "value": "61"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4871:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4871:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4871:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4921:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4932:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4917:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4917:18:111"
                                  },
                                  {
                                    "hexValue": "74776f206e616d6573207374617274207468652073616d652062757420686176",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4937:34:111",
                                    "type": "",
                                    "value": "two names start the same but hav"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4910:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4910:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4910:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4992:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5003:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4988:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4988:18:111"
                                  },
                                  {
                                    "hexValue": "6520646966666572656e63657320696e206c61746572206c6162656c73",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5008:31:111",
                                    "type": "",
                                    "value": "e differences in later labels"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4981:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4981:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4981:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5049:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5061:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5072:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5057:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5057:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5049:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f57de8016d3ddbdd7435695474d6d28b30e9374da76b5c87219e4eb2cd4ccb88__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4808:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4822:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4657:425:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5261:252:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5278:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5289:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5271:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5271:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5271:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5312:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5323:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5308:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5308:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5328:2:111",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5301:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5301:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5301:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5351:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5362:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5347:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5347:18:111"
                                  },
                                  {
                                    "hexValue": "746865206669727374206c6162656c20736f727473206c617465722c20627574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5367:34:111",
                                    "type": "",
                                    "value": "the first label sorts later, but"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5340:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5422:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5433:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5418:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5418:18:111"
                                  },
                                  {
                                    "hexValue": "20746865206669727374206c6162656c20736f727473206561726c696572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5438:32:111",
                                    "type": "",
                                    "value": " the first label sorts earlier"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5411:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5411:60:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5411:60:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5480:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5492:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5503:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5488:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5488:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5480:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0a6852ea68843aeaa9749c5062f4bc9138e848b7335dfa04d2f720530b4423db__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5238:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5252:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5087:426:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5692:312:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5709:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5720:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5702:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5702:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5702:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5743:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5754:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5739:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5739:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5759:2:111",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5732:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5732:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5732:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5782:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5793:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5778:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5778:18:111"
                                  },
                                  {
                                    "hexValue": "74776f206e616d657320776865726520746865206669727374206c6162656c20",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5798:34:111",
                                    "type": "",
                                    "value": "two names where the first label "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5771:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5771:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5771:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5853:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5864:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5849:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5849:18:111"
                                  },
                                  {
                                    "hexValue": "6f6e206f6e65206973206120707265666978206f662074686520666972737420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5869:34:111",
                                    "type": "",
                                    "value": "on one is a prefix of the first "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5842:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5842:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5842:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5924:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5935:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5920:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5920:19:111"
                                  },
                                  {
                                    "hexValue": "6c6162656c206f6e20746865206f74686572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5941:20:111",
                                    "type": "",
                                    "value": "label on the other"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5913:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5913:49:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5913:49:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5971:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5983:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5994:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5979:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5979:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5971:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_507931b0e55f6b548eeb72633047cd2b923e10ac55ef6f5a82ab150d098a4116__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5669:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5683:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5518:486:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6183:177:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6200:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6211:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6193:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6193:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6193:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6234:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6245:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6230:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6230:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6250:2:111",
                                    "type": "",
                                    "value": "27"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6223:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6223:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6223:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6273:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6284:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6269:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6269:18:111"
                                  },
                                  {
                                    "hexValue": "78797a20636f6d6573206265666f7265206574684c61622e78797a",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6289:29:111",
                                    "type": "",
                                    "value": "xyz comes before ethLab.xyz"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6262:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6262:57:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6262:57:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6328:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6340:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6351:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6336:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6336:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6328:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d0f3078522067c01563af27cd5a908fa0f2aa80333f45b6b010c3387a2066a01__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6160:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6174:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6009:351:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6539:224:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6556:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6567:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6549:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6549:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6549:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6590:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6601:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6586:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6586:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6606:2:111",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6579:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6579:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6579:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6629:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6640:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6625:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6625:18:111"
                                  },
                                  {
                                    "hexValue": "6274684c61622e78797a20636f6d6573206265666f7265206574684c61622e78",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6645:34:111",
                                    "type": "",
                                    "value": "bthLab.xyz comes before ethLab.x"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6618:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6618:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6618:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6700:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6711:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6696:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6696:18:111"
                                  },
                                  {
                                    "hexValue": "797a",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6716:4:111",
                                    "type": "",
                                    "value": "yz"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6689:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6689:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6689:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6730:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6742:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6753:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6738:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6738:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6730:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_607ae0b76f73b9194446ca38b3f945cf0df453eceb13a4dabb6f009318b0044a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6516:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6530:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6365:398:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6942:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6959:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6970:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6952:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6952:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6952:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6993:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7004:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6989:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6989:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7009:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6982:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6982:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6982:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7032:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7043:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7028:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7028:18:111"
                                  },
                                  {
                                    "hexValue": "6274684c61622e78797a20616e64206274684c61622e78797a20617265207468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7048:34:111",
                                    "type": "",
                                    "value": "bthLab.xyz and bthLab.xyz are th"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7021:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7021:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7021:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7103:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7114:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7099:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7099:18:111"
                                  },
                                  {
                                    "hexValue": "652073616d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7119:8:111",
                                    "type": "",
                                    "value": "e same"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7092:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7092:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7092:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7137:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7149:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7160:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7145:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7145:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7137:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_41473db132ddad04171673364a7f93a8e3e7258bf35bfc05a4fb032f3f8849e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6919:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6933:4:111",
                            "type": ""
                          }
                        ],
                        "src": "6768:402:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7349:224:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7366:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7377:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7359:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7359:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7359:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7400:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7411:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7396:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7396:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7416:2:111",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7389:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7389:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7389:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7439:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7450:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7435:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7435:18:111"
                                  },
                                  {
                                    "hexValue": "6574684c61622e78797a20636f6d657320616674657220626574684c61622e78",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7455:34:111",
                                    "type": "",
                                    "value": "ethLab.xyz comes after bethLab.x"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7428:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7428:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7428:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7510:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7521:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7506:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7506:18:111"
                                  },
                                  {
                                    "hexValue": "797a",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7526:4:111",
                                    "type": "",
                                    "value": "yz"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7499:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7499:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7499:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7540:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7552:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7563:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7548:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7548:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7540:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7ea5d81e82f19b62360b8ebee88d313d11bfc64cf4dad469cc9df6c9044cdb0a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7326:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7340:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7175:398:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7752:176:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7769:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7780:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7762:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7762:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7762:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7803:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7814:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7799:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7799:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7819:2:111",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7792:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7792:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7792:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7842:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7853:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7838:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7838:18:111"
                                  },
                                  {
                                    "hexValue": "6274684c61622e78797a20636f6d65732061667465722078797a",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7858:28:111",
                                    "type": "",
                                    "value": "bthLab.xyz comes after xyz"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7831:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7831:56:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7831:56:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7896:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7908:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7919:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7904:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7904:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7896:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2468c3110d9641c57873b7aeff5b7d826c16026822fbdd4b13dd2a51d5ea9950__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7729:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7743:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7578:350:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8107:155:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8124:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8135:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8117:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8117:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8117:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8158:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8169:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8154:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8154:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8174:1:111",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8147:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8147:29:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8147:29:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8196:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8207:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8192:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8192:18:111"
                                  },
                                  {
                                    "hexValue": "31203e3d2030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8212:8:111",
                                    "type": "",
                                    "value": "1 >= 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8185:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8185:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8185:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8230:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8242:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8253:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8238:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8238:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8230:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_634386faacaa7070cbcd56db2b7eeb086a975c771e51eee9cf08fab28e0a8da2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8084:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8098:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7933:329:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8441:158:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8458:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8469:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8451:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8451:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8451:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8492:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8503:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8488:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8488:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8508:1:111",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8481:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8481:29:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8481:29:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8530:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8541:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8526:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8526:18:111"
                                  },
                                  {
                                    "hexValue": "212830203c3d203129",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8546:11:111",
                                    "type": "",
                                    "value": "!(0 <= 1)"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8519:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8519:39:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8519:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8567:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8579:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8590:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8575:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8575:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8567:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2584f4f3f801b98ff1d2020b43e2f39872fe0854fe8310cbe5793972991cdd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8418:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8432:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8267:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8778:165:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8795:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8806:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8788:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8788:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8788:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8829:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8840:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8825:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8825:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8845:2:111",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8818:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8818:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8818:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8868:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8879:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8864:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8864:18:111"
                                  },
                                  {
                                    "hexValue": "30203e3d2030784646464646464646",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8884:17:111",
                                    "type": "",
                                    "value": "0 >= 0xFFFFFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8857:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8857:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8857:45:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8911:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8923:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8934:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8919:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8919:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8911:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4b20bead19811b31540df7ceac174b35e9f52395211289f5cb23451dc576cef2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8755:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8769:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8604:339:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9122:168:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9139:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9150:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9132:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9132:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9132:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9173:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9184:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9169:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9169:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9189:2:111",
                                    "type": "",
                                    "value": "18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9162:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9162:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9162:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9212:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9223:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9208:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9208:18:111"
                                  },
                                  {
                                    "hexValue": "212830203c3d203078464646464646464629",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9228:20:111",
                                    "type": "",
                                    "value": "!(0 <= 0xFFFFFFFF)"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9201:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9201:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9201:48:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9258:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9270:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9281:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9266:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9266:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9258:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_bbd6b3cead62efb3b5b1b7b9eb780497ba6a8ffe9cb8a4d0b07acebfef1fba7c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9099:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9113:4:111",
                            "type": ""
                          }
                        ],
                        "src": "8948:342:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9469:174:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9486:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9497:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9479:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9479:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9479:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9520:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9531:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9516:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9516:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9536:2:111",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9509:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9509:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9509:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9559:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9570:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9555:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9555:18:111"
                                  },
                                  {
                                    "hexValue": "30783131313131313131203e3d2030784141414141414141",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9575:26:111",
                                    "type": "",
                                    "value": "0x11111111 >= 0xAAAAAAAA"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9548:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9548:54:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9548:54:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9611:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9623:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9634:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9619:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9619:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9611:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c86db32b595759ca444516bd19395fc6b568b4293c7fc0adce44b1190ea08c89__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9446:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9460:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9295:348:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9822:155:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9839:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9850:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9832:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9832:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9832:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9873:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9884:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9869:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9869:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9889:1:111",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9862:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9862:29:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9862:29:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9911:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9922:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9907:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9907:18:111"
                                  },
                                  {
                                    "hexValue": "31203e3d2031",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9927:8:111",
                                    "type": "",
                                    "value": "1 >= 1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9900:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9900:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9900:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9945:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9957:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9968:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9953:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9953:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9945:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a9e070c6fe40e1948511d27584fcabc13f1825c5041e0c42e1300e112910abfa__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9799:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9813:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9648:329:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10156:164:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10173:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10184:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10166:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10166:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10207:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10218:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10203:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10203:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10223:2:111",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10196:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10196:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10196:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10246:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10257:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10242:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10242:18:111"
                                  },
                                  {
                                    "hexValue": "496e76616c6964206b6579746167",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10262:16:111",
                                    "type": "",
                                    "value": "Invalid keytag"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10235:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10235:44:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10235:44:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10288:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10300:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10311:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10296:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10296:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10288:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ae2cb1b8c554acf172a86403d58177e7bb53fa82a321bcfac12881669cff64fb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10133:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10147:4:111",
                            "type": ""
                          }
                        ],
                        "src": "9982:338:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10499:168:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10516:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10527:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10509:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10509:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10509:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10550:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10561:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10546:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10546:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10566:2:111",
                                    "type": "",
                                    "value": "18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10539:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10539:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10539:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10589:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10600:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10585:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10585:18:111"
                                  },
                                  {
                                    "hexValue": "496e76616c6964206b657974616720283229",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10605:20:111",
                                    "type": "",
                                    "value": "Invalid keytag (2)"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10578:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10578:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10578:48:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10635:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10647:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10658:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10643:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10643:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10635:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a8982332bffef534d5d09d42dcb4be459699a5fb4a91a61229b2ab3a6246ff9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10476:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10490:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10325:342:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10846:168:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10863:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10874:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10856:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10856:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10856:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10897:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10908:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10893:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10893:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10913:2:111",
                                    "type": "",
                                    "value": "18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10886:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10886:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10886:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10936:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10947:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10932:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10932:18:111"
                                  },
                                  {
                                    "hexValue": "496e76616c6964206b657974616720283329",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10952:20:111",
                                    "type": "",
                                    "value": "Invalid keytag (3)"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10925:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10925:48:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10925:48:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10982:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10994:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11005:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10990:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10990:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10982:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3edb8746773f5e9520e1e382fdf76ac3b4bb6d36394e1fa37d2ad0e85662497c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10823:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10837:4:111",
                            "type": ""
                          }
                        ],
                        "src": "10672:342:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11193:170:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11210:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11221:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11203:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11203:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11203:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11244:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11255:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11240:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11240:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11260:2:111",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11233:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11233:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11233:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11283:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11294:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11279:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11279:18:111"
                                  },
                                  {
                                    "hexValue": "6c6162656c436f756e7428272e2729203d3d2030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11299:22:111",
                                    "type": "",
                                    "value": "labelCount('.') == 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11272:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11272:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11272:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11331:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11343:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11354:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11339:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11339:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11331:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_550f417f12cd5b0cc6c5440b051ecee0b959ace0c0a870d9bab0f22af94f9e73__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11170:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11184:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11019:344:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11542:171:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11559:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11570:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11552:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11552:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11552:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11593:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11604:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11589:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11589:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11609:2:111",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11582:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11582:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11582:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11632:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11643:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11628:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11628:18:111"
                                  },
                                  {
                                    "hexValue": "6c6162656c436f756e742827612e2729203d3d2031",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11648:23:111",
                                    "type": "",
                                    "value": "labelCount('a.') == 1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11621:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11621:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11621:51:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11681:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11693:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11704:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11689:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11689:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11681:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ca1733b0e82b81bf1eb99a2b630a9d3af688720adab95cea378a13d2fa4770fe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11519:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11533:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11368:345:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11892:173:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11909:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11920:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11902:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11902:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11902:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11943:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11954:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11939:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11939:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11959:2:111",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11932:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11932:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11932:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11982:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11993:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11978:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11978:18:111"
                                  },
                                  {
                                    "hexValue": "6c6162656c436f756e742827622e612e2729203d3d2032",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11998:25:111",
                                    "type": "",
                                    "value": "labelCount('b.a.') == 2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11971:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11971:53:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11971:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12033:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12045:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12056:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12041:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12041:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12033:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_322c001f5a4a8d6c44c28bf3df8b09b8526da1da01eebb748bc9817ac06a416e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11869:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11883:4:111",
                            "type": ""
                          }
                        ],
                        "src": "11718:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12244:182:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12261:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12272:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12254:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12254:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12254:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12295:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12306:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12291:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12291:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12311:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12284:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12284:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12284:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12334:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12345:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12330:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12330:18:111"
                                  },
                                  {
                                    "hexValue": "6e616d654c656e6774682827286274686c6162292e78797a2e2729203d3d2036",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12350:34:111",
                                    "type": "",
                                    "value": "nameLength('(bthlab).xyz.') == 6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12323:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12323:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12323:62:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12394:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12406:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12417:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12402:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12402:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12394:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9440ac3fb312b691102cb530f6ff009f02ba639f803b7ab1f192721d47b75ab1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12221:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12235:4:111",
                            "type": ""
                          }
                        ],
                        "src": "12070:356:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12463:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12480:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12483:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12473:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12473:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12473:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12577:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12580:4:111",
                                    "type": "",
                                    "value": "0x01"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12570:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12570:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12570:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12601:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12604:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12594:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12594:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12594:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x01",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12431:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12668:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12678:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12689:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12692:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12685:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12685:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "12678:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12717:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12719:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12719:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12719:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12709:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "12712:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12706:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12706:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12703:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12651:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12654:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "12660:3:111",
                            "type": ""
                          }
                        ],
                        "src": "12620:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12799:79:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12809:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12821:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12824:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "12817:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12817:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "12809:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12850:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12852:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12852:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12852:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "diff",
                                    "nodeType": "YulIdentifier",
                                    "src": "12841:4:111"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12847:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12838:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12838:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12835:37:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12781:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12784:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "12790:4:111",
                            "type": ""
                          }
                        ],
                        "src": "12750:128:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12930:149:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12957:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12959:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12959:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12959:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12950:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12943:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12943:13:111"
                              },
                              "nodeType": "YulIf",
                              "src": "12940:39:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12988:85:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12999:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13006:66:111",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12995:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12995:78:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "12988:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12912:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "12922:3:111",
                            "type": ""
                          }
                        ],
                        "src": "12883:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13131:202:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13141:47:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13164:1:111",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "13167:1:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "13153:10:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13153:16:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13182:1:111",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "13185:1:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "13171:10:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13171:16:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "13149:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13149:39:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "13141:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13305:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13307:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13307:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13307:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "diff",
                                        "nodeType": "YulIdentifier",
                                        "src": "13207:4:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13213:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13203:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13203:77:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "diff",
                                        "nodeType": "YulIdentifier",
                                        "src": "13286:4:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13292:10:111",
                                        "type": "",
                                        "value": "0x7fffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sgt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13282:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13282:21:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "13200:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13200:104:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13197:130:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_int32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13113:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13116:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "13122:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13084:249:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13512:173:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13529:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13540:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13522:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13522:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13522:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13563:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13574:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13559:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13559:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13579:2:111",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13552:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13552:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13552:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13602:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13613:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13598:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13598:18:111"
                                  },
                                  {
                                    "hexValue": "4c6f6e67206b657973206e6f74207065726d6974746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13618:25:111",
                                    "type": "",
                                    "value": "Long keys not permitted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13591:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13591:53:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13591:53:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13653:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13665:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13676:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13661:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13661:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13653:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7e23270aecf7702fd4b1bd212912c277507361dc8248ebed5ad0286c9b051069__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13489:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13503:4:111",
                            "type": ""
                          }
                        ],
                        "src": "13338:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13722:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13739:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13742:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13732:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13732:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13732:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13836:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13839:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13829:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13829:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13829:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13860:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13863:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "13853:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13853:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13853:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "13690:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13931:116:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13941:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13956:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13959:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "13952:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13952:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "13941:7:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14019:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14021:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14021:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14021:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "13990:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "13983:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13983:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "13997:1:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "product",
                                                "nodeType": "YulIdentifier",
                                                "src": "14004:7:111"
                                              },
                                              {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "14013:1:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "14000:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14000:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nodeType": "YulIdentifier",
                                          "src": "13994:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13994:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "13980:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13980:37:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13973:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13973:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "13970:71:111"
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13910:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13913:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "13919:7:111",
                            "type": ""
                          }
                        ],
                        "src": "13879:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14116:418:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14126:16:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14141:1:111",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14130:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14151:16:111",
                              "value": {
                                "name": "power_1",
                                "nodeType": "YulIdentifier",
                                "src": "14160:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "14151:5:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14176:13:111",
                              "value": {
                                "name": "_base",
                                "nodeType": "YulIdentifier",
                                "src": "14184:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "base",
                                  "nodeType": "YulIdentifier",
                                  "src": "14176:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14240:288:111",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "14345:22:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x11",
                                              "nodeType": "YulIdentifier",
                                              "src": "14347:16:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14347:18:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "14347:18:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "14260:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14270:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                            },
                                            {
                                              "name": "base",
                                              "nodeType": "YulIdentifier",
                                              "src": "14338:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "14266:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14266:77:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "14257:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14257:87:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "14254:113:111"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "14406:29:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "14408:25:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "power",
                                                "nodeType": "YulIdentifier",
                                                "src": "14421:5:111"
                                              },
                                              {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "14428:4:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "14417:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14417:16:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "power",
                                              "nodeType": "YulIdentifier",
                                              "src": "14408:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "14387:8:111"
                                        },
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14397:7:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "14383:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14383:22:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "14380:55:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14448:23:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "14460:4:111"
                                        },
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "14466:4:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "14456:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14456:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "14448:4:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14484:34:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14500:7:111"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "14509:8:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14496:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14496:22:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "14484:8:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "14209:8:111"
                                  },
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14219:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14206:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14206:21:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "14228:3:111",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "14202:3:111",
                                "statements": []
                              },
                              "src": "14198:330:111"
                            }
                          ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "_base",
                            "nodeType": "YulTypedName",
                            "src": "14080:5:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "14087:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "14100:5:111",
                            "type": ""
                          },
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "14107:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14052:482:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14598:807:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14636:52:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14650:10:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "14659:1:111",
                                      "type": "",
                                      "value": "1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "14650:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "14673:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "14618:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14611:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14611:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14608:80:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14721:52:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14735:10:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "14744:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "14735:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "14758:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "14707:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14700:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14700:12:111"
                              },
                              "nodeType": "YulIf",
                              "src": "14697:76:111"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "14809:52:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "14823:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14832:1:111",
                                          "type": "",
                                          "value": "1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "14823:5:111"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "14846:5:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "14802:59:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14807:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "14877:123:111",
                                    "statements": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "14912:22:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "panic_error_0x11",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14914:16:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14914:18:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "14914:18:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "14897:8:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14907:3:111",
                                              "type": "",
                                              "value": "255"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "14894:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14894:17:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "14891:43:111"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "14947:25:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "14960:8:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14970:1:111",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "14956:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14956:16:111"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "14947:5:111"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "14985:5:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "14870:130:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14875:1:111",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "14789:4:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "14782:218:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15098:70:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15112:28:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "15125:4:111"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "15131:8:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "exp",
                                        "nodeType": "YulIdentifier",
                                        "src": "15121:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15121:19:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "15112:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "15153:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "15022:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15028:2:111",
                                            "type": "",
                                            "value": "11"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "15019:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15019:12:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "15036:8:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15046:2:111",
                                            "type": "",
                                            "value": "78"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "15033:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15033:16:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15015:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15015:35:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "15059:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15065:3:111",
                                            "type": "",
                                            "value": "307"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "15056:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15056:13:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "15074:8:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15084:2:111",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "15071:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15071:16:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15052:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15052:36:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "15012:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15012:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15009:159:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15177:57:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "15219:4:111"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "15225:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_helper",
                                  "nodeType": "YulIdentifier",
                                  "src": "15200:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15200:34:111"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15181:7:111",
                                  "type": ""
                                },
                                {
                                  "name": "base_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15190:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15339:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "15341:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15341:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15341:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15249:7:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15262:66:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                      },
                                      {
                                        "name": "base_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15330:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "15258:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15258:79:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15246:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15246:92:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15243:118:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15370:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15383:7:111"
                                  },
                                  {
                                    "name": "base_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15392:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "15379:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15379:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "15370:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "14569:4:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "14575:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "14588:5:111",
                            "type": ""
                          }
                        ],
                        "src": "14539:866:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15480:61:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15490:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "15520:4:111"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "15526:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_unsigned",
                                  "nodeType": "YulIdentifier",
                                  "src": "15499:20:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15499:36:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "15490:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_t_uint256_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "15451:4:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "15457:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "15470:5:111",
                            "type": ""
                          }
                        ],
                        "src": "15410:131:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15594:152:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15604:17:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15616:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15619:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "15612:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15612:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "15604:4:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15630:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15644:1:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15647:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15640:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15640:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15634:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15718:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "15720:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15720:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15720:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "15675:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "15668:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15668:10:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "diff",
                                            "nodeType": "YulIdentifier",
                                            "src": "15684:4:111"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "15690:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sgt",
                                          "nodeType": "YulIdentifier",
                                          "src": "15680:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15680:12:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15664:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15664:29:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15699:2:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "diff",
                                            "nodeType": "YulIdentifier",
                                            "src": "15707:4:111"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "15713:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "slt",
                                          "nodeType": "YulIdentifier",
                                          "src": "15703:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15703:12:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15695:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15695:21:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "15661:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15661:56:111"
                              },
                              "nodeType": "YulIf",
                              "src": "15658:82:111"
                            }
                          ]
                        },
                        "name": "checked_sub_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15576:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15579:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "15585:4:111",
                            "type": ""
                          }
                        ],
                        "src": "15546:200:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_stringliteral_7eff79fd07b3511edb69feef9a829a779b1052131d8bb0bbda3c75f69891e329__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"nameLength('.') == 1\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_79698b1975fb3b45192f1d63d744beeb5391eccc3c46a52243578ea8ab3bea6d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"nameLength('abc.') == 5\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d4a48182e2afdd5dbebf10b4ca47fcad283d90a13a14e49f2a7e4e956ef837c9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Type matches\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ecb2825ba59598cfcbfd424e795aac51679215f739f63a1d34e8db740faf2186__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Class matches\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7f8817867a2defd51236815a8ac4965af601adee0292d0f1eb6b96ad2343c218__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"TTL matches\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_2a6022100817ec1001b58899f0ecf9559725699dd3f7df6caacea6c2710ae25e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Name matches\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c5f6b8b39f9114f3c4a67b837819b66c18cbf97dda4808a647f24e3f4a4e70e9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Rdata matches\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_994cf01fd95fa740ff6aae9f505815f1b57b5dcff57b67047721b13b238ab515__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Expected 2 records\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_fe7fad5c1110ceaf41a9647c79015d04595ac3cec5b51625f02f7c886b4cbf6d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"label lengths are correctly chec\")\n        mstore(add(headStart, 96), \"ked\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6310fabe86fd651b0fedbba5b685f31123c370c789115bd12753402f4f0bdb15__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), \"one name has a difference of >1 \")\n        mstore(add(headStart, 96), \"label to with the same root name\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6c6b4795d8768aca852dfb2f09d221eae654395385a5877f6e6ca2013ea9efb0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 65)\n        mstore(add(headStart, 64), \"one name has a difference of >1 \")\n        mstore(add(headStart, 96), \"label to with different root nam\")\n        mstore(add(headStart, 128), \"e\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_f57de8016d3ddbdd7435695474d6d28b30e9374da76b5c87219e4eb2cd4ccb88__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 61)\n        mstore(add(headStart, 64), \"two names start the same but hav\")\n        mstore(add(headStart, 96), \"e differences in later labels\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0a6852ea68843aeaa9749c5062f4bc9138e848b7335dfa04d2f720530b4423db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"the first label sorts later, but\")\n        mstore(add(headStart, 96), \" the first label sorts earlier\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_507931b0e55f6b548eeb72633047cd2b923e10ac55ef6f5a82ab150d098a4116__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 82)\n        mstore(add(headStart, 64), \"two names where the first label \")\n        mstore(add(headStart, 96), \"on one is a prefix of the first \")\n        mstore(add(headStart, 128), \"label on the other\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_d0f3078522067c01563af27cd5a908fa0f2aa80333f45b6b010c3387a2066a01__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"xyz comes before ethLab.xyz\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_607ae0b76f73b9194446ca38b3f945cf0df453eceb13a4dabb6f009318b0044a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"bthLab.xyz comes before ethLab.x\")\n        mstore(add(headStart, 96), \"yz\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_41473db132ddad04171673364a7f93a8e3e7258bf35bfc05a4fb032f3f8849e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"bthLab.xyz and bthLab.xyz are th\")\n        mstore(add(headStart, 96), \"e same\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7ea5d81e82f19b62360b8ebee88d313d11bfc64cf4dad469cc9df6c9044cdb0a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ethLab.xyz comes after bethLab.x\")\n        mstore(add(headStart, 96), \"yz\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_2468c3110d9641c57873b7aeff5b7d826c16026822fbdd4b13dd2a51d5ea9950__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"bthLab.xyz comes after xyz\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_634386faacaa7070cbcd56db2b7eeb086a975c771e51eee9cf08fab28e0a8da2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"1 >= 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2584f4f3f801b98ff1d2020b43e2f39872fe0854fe8310cbe5793972991cdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"!(0 <= 1)\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4b20bead19811b31540df7ceac174b35e9f52395211289f5cb23451dc576cef2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"0 >= 0xFFFFFFFF\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_bbd6b3cead62efb3b5b1b7b9eb780497ba6a8ffe9cb8a4d0b07acebfef1fba7c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"!(0 <= 0xFFFFFFFF)\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c86db32b595759ca444516bd19395fc6b568b4293c7fc0adce44b1190ea08c89__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"0x11111111 >= 0xAAAAAAAA\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a9e070c6fe40e1948511d27584fcabc13f1825c5041e0c42e1300e112910abfa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"1 >= 1\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ae2cb1b8c554acf172a86403d58177e7bb53fa82a321bcfac12881669cff64fb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid keytag\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a8982332bffef534d5d09d42dcb4be459699a5fb4a91a61229b2ab3a6246ff9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Invalid keytag (2)\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3edb8746773f5e9520e1e382fdf76ac3b4bb6d36394e1fa37d2ad0e85662497c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Invalid keytag (3)\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_550f417f12cd5b0cc6c5440b051ecee0b959ace0c0a870d9bab0f22af94f9e73__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"labelCount('.') == 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ca1733b0e82b81bf1eb99a2b630a9d3af688720adab95cea378a13d2fa4770fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"labelCount('a.') == 1\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_322c001f5a4a8d6c44c28bf3df8b09b8526da1da01eebb748bc9817ac06a416e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"labelCount('b.a.') == 2\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9440ac3fb312b691102cb530f6ff009f02ba639f803b7ab1f192721d47b75ab1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"nameLength('(bthlab).xyz.') == 6\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n    }\n    function checked_sub_t_int32(x, y) -> diff\n    {\n        diff := sub(signextend(3, x), signextend(3, y))\n        if or(slt(diff, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000), sgt(diff, 0x7fffffff)) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_7e23270aecf7702fd4b1bd212912c277507361dc8248ebed5ad0286c9b051069__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Long keys not permitted\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, exponent)\n    }\n    function checked_sub_t_int256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        let _1 := slt(y, 0)\n        if or(and(iszero(_1), sgt(diff, x)), and(_1, slt(diff, x))) { panic_error_0x11() }\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100725760003560e01c80639e4a090d116100505780639e4a090d14610091578063bb73daed14610099578063cc60617b146100a157600080fd5b80630250cf9a14610077578063706fc4de14610081578063976e62ac14610089575b600080fd5b61007f6100a9565b005b61007f610245565b61007f6105e0565b61007f610ef8565b61007f611115565b61007f6112ac565b6100d3600060405180604001604052806001815260200160008152506114cd90919063ffffffff16565b6001146101275760405162461bcd60e51b815260206004820152601460248201527f6e616d654c656e67746828272e2729203d3d203100000000000000000000000060448201526064015b60405180910390fd5b60408051808201909152600581527f036162630000000000000000000000000000000000000000000000000000000060208201526101669060046114cd565b6001146101b55760405162461bcd60e51b815260206004820152601460248201527f6e616d654c656e67746828272e2729203d3d2031000000000000000000000000604482015260640161011e565b60408051808201909152600581527f036162630000000000000000000000000000000000000000000000000000000060208201526101f49060006114cd565b6005146102435760405162461bcd60e51b815260206004820152601760248201527f6e616d654c656e67746828276162632e2729203d3d2035000000000000000000604482015260640161011e565b565b600060405180606001604052806024815260200161224c60249139604080516080808201835260038284019081527f016100000000000000000000000000000000000000000000000000000000000060608085019190915290835283518085018552600581527f0162016100000000000000000000000000000000000000000000000000000000602082810191909152808501919091528451928301855260048386018181527f74000001000000000000000000000000000000000000000000000000000000009385019390935291835284518086019095529084527fc0a80101000000000000000000000000000000000000000000000000000000008482015281019290925291925060008061035c8582611531565b90505b8051516020820151101561058957806040015161ffff166001146103c55760405162461bcd60e51b815260206004820152600c60248201527f54797065206d6174636865730000000000000000000000000000000000000000604482015260640161011e565b806060015161ffff1660011461041d5760405162461bcd60e51b815260206004820152600d60248201527f436c617373206d61746368657300000000000000000000000000000000000000604482015260640161011e565b806080015163ffffffff16610e10146104785760405162461bcd60e51b815260206004820152600b60248201527f54544c206d617463686573000000000000000000000000000000000000000000604482015260640161011e565b83826002811061048a5761048a611db8565b60200201518051906020012061049f82611592565b80519060200120146104f35760405162461bcd60e51b815260206004820152600c60248201527f4e616d65206d6174636865730000000000000000000000000000000000000000604482015260640161011e565b82826002811061050557610505611db8565b60200201518051906020012061051a826115b3565b805190602001201461056e5760405162461bcd60e51b815260206004820152600d60248201527f5264617461206d61746368657300000000000000000000000000000000000000604482015260640161011e565b8161057881611e16565b925050610584816115cf565b61035f565b50806002146105da5760405162461bcd60e51b815260206004820152601260248201527f45787065637465642032207265636f7264730000000000000000000000000000604482015260640161011e565b50505050565b60006040518060400160405280600c81526020017f066274686c61620378797a000000000000000000000000000000000000000000815250905060006040518060400160405280600c81526020017f066574686c61620378797a000000000000000000000000000000000000000000815250905060006040518060400160405280600581526020017f0378797a00000000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0161016201630000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0162016201630000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600381526020017f0163000000000000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600381526020017f0164000000000000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0161016401630000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0162016101630000000000000000000000000000000000000000000000000000815250905060006040518060400160405280600881526020017f0261620163016400000000000000000000000000000000000000000000000000815250905060006040518060400160405280600781526020017f0161016301640000000000000000000000000000000000000000000000000000815250905060006108dd6040518060400160405280600581526020017f03026162000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f03016161000000000000000000000000000000000000000000000000000000008152506116b790919063ffffffff16565b126109505760405162461bcd60e51b815260206004820152602360248201527f6c6162656c206c656e677468732061726520636f72726563746c79206368656360448201527f6b65640000000000000000000000000000000000000000000000000000000000606482015260840161011e565b600061095c89886116b7565b136109d1576040805162461bcd60e51b81526020600482015260248101919091527f6f6e65206e616d6520686173206120646966666572656e6365206f66203e312060448201527f6c6162656c20746f2077697468207468652073616d6520726f6f74206e616d65606482015260840161011e565b60006109dd89876116b7565b12610a765760405162461bcd60e51b815260206004820152604160248201527f6f6e65206e616d6520686173206120646966666572656e6365206f66203e312060448201527f6c6162656c20746f207769746820646966666572656e7420726f6f74206e616d60648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161011e565b6000610a8289866116b7565b12610af55760405162461bcd60e51b815260206004820152603d60248201527f74776f206e616d6573207374617274207468652073616d65206275742068617660448201527f6520646966666572656e63657320696e206c61746572206c6162656c73000000606482015260840161011e565b6000610b0189856116b7565b13610b745760405162461bcd60e51b815260206004820152603e60248201527f746865206669727374206c6162656c20736f727473206c617465722c2062757460448201527f20746865206669727374206c6162656c20736f727473206561726c6965720000606482015260840161011e565b6000610b8083836116b7565b13610c195760405162461bcd60e51b815260206004820152605260248201527f74776f206e616d657320776865726520746865206669727374206c6162656c2060448201527f6f6e206f6e65206973206120707265666978206f66207468652066697273742060648201527f6c6162656c206f6e20746865206f746865720000000000000000000000000000608482015260a40161011e565b6000610c2589896116b7565b12610cbe5760405162461bcd60e51b815260206004820152605260248201527f74776f206e616d657320776865726520746865206669727374206c6162656c2060448201527f6f6e206f6e65206973206120707265666978206f66207468652066697273742060648201527f6c6162656c206f6e20746865206f746865720000000000000000000000000000608482015260a40161011e565b6000610cca8a8c6116b7565b12610d175760405162461bcd60e51b815260206004820152601b60248201527f78797a20636f6d6573206265666f7265206574684c61622e78797a0000000000604482015260640161011e565b6000610d238c8c6116b7565b12610d965760405162461bcd60e51b815260206004820152602260248201527f6274684c61622e78797a20636f6d6573206265666f7265206574684c61622e7860448201527f797a000000000000000000000000000000000000000000000000000000000000606482015260840161011e565b610da08b806116b7565b15610e135760405162461bcd60e51b815260206004820152602660248201527f6274684c61622e78797a20616e64206274684c61622e78797a2061726520746860448201527f652073616d650000000000000000000000000000000000000000000000000000606482015260840161011e565b6000610e1f8b8d6116b7565b13610e925760405162461bcd60e51b815260206004820152602260248201527f6574684c61622e78797a20636f6d657320616674657220626574684c61622e7860448201527f797a000000000000000000000000000000000000000000000000000000000000606482015260840161011e565b6000610e9e8c8b6116b7565b13610eeb5760405162461bcd60e51b815260206004820152601a60248201527f6274684c61622e78797a20636f6d65732061667465722078797a000000000000604482015260640161011e565b5050505050505050505050565b610f0460016000611810565b610f505760405162461bcd60e51b815260206004820152600660248201527f31203e3d20300000000000000000000000000000000000000000000000000000604482015260640161011e565b610f5c60006001611810565b15610fa95760405162461bcd60e51b815260206004820152600960248201527f212830203c3d2031290000000000000000000000000000000000000000000000604482015260640161011e565b610fb8600063ffffffff611810565b6110045760405162461bcd60e51b815260206004820152600f60248201527f30203e3d20307846464646464646460000000000000000000000000000000000604482015260640161011e565b61101363ffffffff6000611810565b156110605760405162461bcd60e51b815260206004820152601260248201527f212830203c3d2030784646464646464646290000000000000000000000000000604482015260640161011e565b611072631111111163aaaaaaaa611810565b6110be5760405162461bcd60e51b815260206004820152601860248201527f30783131313131313131203e3d20307841414141414141410000000000000000604482015260640161011e565b6110c9600180611810565b6102435760405162461bcd60e51b815260206004820152600660248201527f31203e3d20310000000000000000000000000000000000000000000000000000604482015260640161011e565b611139604051806101400160405280610108815260200161203c6101089139611829565b61ffff16614a5c1461118d5760405162461bcd60e51b815260206004820152600e60248201527f496e76616c6964206b6579746167000000000000000000000000000000000000604482015260640161011e565b6111ae6040518060c00160405280608981526020016122f860899139611829565b61ffff166154bd146112025760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206b6579746167202832290000000000000000000000000000604482015260640161011e565b6112236040518060c001604052806088815260200161227060889139611829565b61ffff1661835e1461123457600080fd5b61125860405180610140016040528061010881526020016121446101089139611829565b61ffff16614f66146102435760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206b6579746167202833290000000000000000000000000000604482015260640161011e565b6112d660006040518060400160405280600181526020016000815250611a5390919063ffffffff16565b156113235760405162461bcd60e51b815260206004820152601460248201527f6c6162656c436f756e7428272e2729203d3d2030000000000000000000000000604482015260640161011e565b60408051808201909152600381527f01610000000000000000000000000000000000000000000000000000000000006020820152611362906000611a53565b6001146113b15760405162461bcd60e51b815260206004820152601560248201527f6c6162656c436f756e742827612e2729203d3d20310000000000000000000000604482015260640161011e565b60408051808201909152600681527f016201610000000000000000000000000000000000000000000000000000000060208201526113f0906000611a53565b60021461143f5760405162461bcd60e51b815260206004820152601760248201527f6c6162656c436f756e742827622e612e2729203d3d2032000000000000000000604482015260640161011e565b60408051808201909152600c81527f066574686c61620378797a000000000000000000000000000000000000000000602082015261147e906007611a53565b6001146102435760405162461bcd60e51b815260206004820181905260248201527f6e616d654c656e6774682827286274686c6162292e78797a2e2729203d3d2036604482015260640161011e565b6000815b835181106114e1576114e1611e30565b60006114ed8583611ab7565b60ff1690506114fd816001611e5f565b6115079083611e5f565b915080600003611517575061151d565b506114d1565b6115278382611e72565b9150505b92915050565b61157f6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c0810182905261152b816115cf565b6020810151815160609161152b916115aa90826114cd565b84519190611adb565b60a081015160c082015160609161152b916115aa908290611e72565b60c081015160208201819052815151116115e65750565b60006115fa826000015183602001516114cd565b82602001516116099190611e5f565b82519091506116189082611b5d565b61ffff16604083015261162c600282611e5f565b825190915061163b9082611b5d565b61ffff16606083015261164f600282611e5f565b825190915061165e9082611b85565b63ffffffff166080830152611674600482611e5f565b82519091506000906116869083611b5d565b61ffff169050611697600283611e5f565b60a0840181905291506116aa8183611e5f565b60c0909301929092525050565b60006116c38383611baf565b156116d05750600061152b565b60008060008060006116e3886000611a53565b905060006116f2886000611a53565b90505b8082111561171e5785935061170a8987611bcd565b95508161171681611e85565b9250506116f5565b81811115611747578492506117338886611bcd565b94508061173f81611e85565b91505061171e565b600082118015611760575061175e89878a88611bf1565b155b15611795578593506117728987611bcd565b95508492506117818886611bcd565b945061178e600183611e72565b9150611747565b856000036117ad57600019965050505050505061152b565b846000036117c4576001965050505050505061152b565b6118036117d2856001611e5f565b6117dc8b87611ab7565b60ff168a6117eb876001611e5f565b6117f58d89611ab7565b8e949392919060ff16611c26565b9998505050505050505050565b60008061181d8385611e9c565b60030b12159392505050565b60006120008251111561187e5760405162461bcd60e51b815260206004820152601760248201527f4c6f6e67206b657973206e6f74207065726d6974746564000000000000000000604482015260640161011e565b60008060005b8451601f018110156118f357600081602087010151905085518260200111156118b95785518290036008026101000390811c901b5b7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff600882901c81169490940193169190910190602001611884565b506010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff160191506010817fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1601905080600883901b0191506020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff160191506040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c8277ffffffffffffffff0000000000000000ffffffffffffffff16019150608082901c826fffffffffffffffffffffffffffffffff16019150601082901c61ffff16820191508192505050919050565b6000805b83518310611a6757611a67611e30565b6000611a738585611ab7565b60ff169050611a83816001611e5f565b611a8d9085611e5f565b935080600003611a9d5750611ab0565b611aa8600183611e5f565b915050611a57565b9392505050565b6000828281518110611acb57611acb611db8565b016020015160f81c905092915050565b8251606090611aea8385611e5f565b1115611af557600080fd5b60008267ffffffffffffffff811115611b1057611b10611ede565b6040519080825280601f01601f191660200182016040528015611b3a576020820181803683370190505b50905060208082019086860101611b52828287611d1b565b509095945050505050565b8151600090611b6d836002611e5f565b1115611b7857600080fd5b50016002015161ffff1690565b8151600090611b95836004611e5f565b1115611ba057600080fd5b50016004015163ffffffff1690565b600081518351148015611ab05750611ab08360008460008751611d71565b6000611bd98383611ab7565b60ff16611be7836001611e5f565b611ab09190611e5f565b6000611c0a8383848651611c059190611e72565b611d94565b611c1c8686878951611c059190611e72565b1495945050505050565b60008480831015611c345750815b60208789018101908587010160005b83811015611d005782518251808214611cd05760006020871115611c6a5750600019611ca6565b600184611c78896020611e72565b611c829190611e5f565b611c8d906008611f0d565b611c98906002612008565b611ca29190611e72565b1990505b6000611cb6838316858416612014565b90508015611ccd579750611d119650505050505050565b50505b611cdb602086611e5f565b9450611ce8602085611e5f565b93505050602081611cf99190611e5f565b9050611c43565b50611d0b8589612014565b93505050505b9695505050505050565b60208110611d535781518352611d32602084611e5f565b9250611d3f602083611e5f565b9150611d4c602082611e72565b9050611d1b565b905182516020929092036101000a6000190180199091169116179052565b6000611d7e848484611d94565b611d89878785611d94565b149695505050505050565b8251600090611da38385611e5f565b1115611dae57600080fd5b5091016020012090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006000198203611e2957611e29611de7565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8082018082111561152b5761152b611de7565b8181038181111561152b5761152b611de7565b600081611e9457611e94611de7565b506000190190565b600382810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008112637fffffff8213171561152b5761152b611de7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b808202811582820484141761152b5761152b611de7565b600181815b80851115611f5f578160001904821115611f4557611f45611de7565b80851615611f5257918102915b93841c9390800290611f29565b509250929050565b600082611f765750600161152b565b81611f835750600061152b565b8160018114611f995760028114611fa357611fbf565b600191505061152b565b60ff841115611fb457611fb4611de7565b50506001821b61152b565b5060208310610133831016604e8410600b8410161715611fe2575081810a61152b565b611fec8383611f24565b806000190482111561200057612000611de7565b029392505050565b6000611ab08383611f67565b818103600083128015838313168383128216171561203457612034611de7565b509291505056fe0101030803010001a80020a95566ba42e886bb804cda84e47ef56dbd7aec612615552cec906d2116d0ef207028c51554144dfeafe7c7cb8f005dd18234133ac0710a81182ce1fd14ad2283bc83435f9df2f6313251931a176df0da51e54f42e604860dfb359580250f559cc543c4ffd51cbe3de8cfd06719237f9fc47ee729da06835fa452e825e9a18ebc2ecbcf563474652c33cf56a9033bcdf5d973121797ec8089041b6e03a1b72d0a735b984e03687309332324f27c2dba85e9db15e83a0143382e974b0621c18e625ecec907577d9e7bade95241a81ebbe8a901d4d3276e40b114c0a2e6fc38d19c2e6aab02644b2813f575fc21601e0dee49cd9ee96a43103e524d62873d0101030803010001acffb409bcc939f831f7a1e5ec88f7a59255ec53040be432027390a4ce896d6f9086f3c5e177fbfe118163aaec7af1462c47945944c4e2c026be5e98bbcded25978272e1e3e079c5094d573f0e83c92f02b32d3513b1550b826929c80dd0f92cac966d17769fd5867b647c3f38029abdc48152eb8f207159ecc5d232c7c1537c79f4b7ac28ff11682f21681bf6d6aba555032bf6f9f036beb2aaa5b3778d6eebfba6bf9ea191be4ab0caea759e2f773a1f9029c73ecb8d5735b9321db085f1b8e2d8038fe2941992548cee0d67dd4547e11dd63af9c9fc1c5466fb684cf009d7197c2cf79e792ab501e6a8a1ca519af2cb9b5f6367e94c0d47502451357be1b50161000001000100000e1000047400000101620161000001000100000e100004c0a801010100030503010001bfa54c38d909fabb0f937d70d775ba0df4c0badb09707d995249406950407a621c794c68b186b15dbf8f9f9ea231e9f96414ccda4eceb50b17a9ac6c4bd4b95da04849e96ee791578b703bc9ae184fb1794bac792a0787f693a40f19f523ee6dbd3599dbaaa9a50437926ecf6438845d1d49448962524f2a1a7a36b3a0a1eca3010003050440000003ba2fa05a75e173bede89eb71831ab14035f2408ad09df4d8dc8f8f72e8f13506feaddf7b04cb14958b82966e3420562302c4002bc4fd088432e160519bb14dae82443850c1423e06085710b5caf070d46b7ba7e481414f6a5fe225fdca984c959091645d0cf1c9a1a313d7e7fb7ba60b967b71a65f8cef2c3768e11b081c8fcfa2646970667358221220b12667d30e85bbbaef2762e2764bae47d4d8a6ab77e04404355106d6be5940b864736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E4A090D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9E4A090D EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xBB73DAED EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xCC60617B EQ PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x250CF9A EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x706FC4DE EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x976E62AC EQ PUSH2 0x89 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x245 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x5E0 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEF8 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x1115 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x12AC JUMP JUMPDEST PUSH2 0xD3 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x14CD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 EQ PUSH2 0x127 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D654C656E67746828272E2729203D3D2031000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x361626300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x166 SWAP1 PUSH1 0x4 PUSH2 0x14CD JUMP JUMPDEST PUSH1 0x1 EQ PUSH2 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D654C656E67746828272E2729203D3D2031000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x361626300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1F4 SWAP1 PUSH1 0x0 PUSH2 0x14CD JUMP JUMPDEST PUSH1 0x5 EQ PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D654C656E67746828276162632E2729203D3D2035000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x224C PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x3 DUP3 DUP5 ADD SWAP1 DUP2 MSTORE PUSH32 0x161000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x162016100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD SWAP3 DUP4 ADD DUP6 MSTORE PUSH1 0x4 DUP4 DUP7 ADD DUP2 DUP2 MSTORE PUSH32 0x7400000100000000000000000000000000000000000000000000000000000000 SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 MSTORE DUP5 MLOAD DUP1 DUP7 ADD SWAP1 SWAP6 MSTORE SWAP1 DUP5 MSTORE PUSH32 0xC0A8010100000000000000000000000000000000000000000000000000000000 DUP5 DUP3 ADD MSTORE DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x35C DUP6 DUP3 PUSH2 0x1531 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 MLOAD MLOAD PUSH1 0x20 DUP3 ADD MLOAD LT ISZERO PUSH2 0x589 JUMPI DUP1 PUSH1 0x40 ADD MLOAD PUSH2 0xFFFF AND PUSH1 0x1 EQ PUSH2 0x3C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54797065206D6174636865730000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH2 0xFFFF AND PUSH1 0x1 EQ PUSH2 0x41D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436C617373206D61746368657300000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP1 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH2 0xE10 EQ PUSH2 0x478 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54544C206D617463686573000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP4 DUP3 PUSH1 0x2 DUP2 LT PUSH2 0x48A JUMPI PUSH2 0x48A PUSH2 0x1DB8 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x49F DUP3 PUSH2 0x1592 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x4F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E616D65206D6174636865730000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP3 DUP3 PUSH1 0x2 DUP2 LT PUSH2 0x505 JUMPI PUSH2 0x505 PUSH2 0x1DB8 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x51A DUP3 PUSH2 0x15B3 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x56E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5264617461206D61746368657300000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST DUP2 PUSH2 0x578 DUP2 PUSH2 0x1E16 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x584 DUP2 PUSH2 0x15CF JUMP JUMPDEST PUSH2 0x35F JUMP JUMPDEST POP DUP1 PUSH1 0x2 EQ PUSH2 0x5DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45787065637465642032207265636F7264730000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x66274686C61620378797A000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x66574686C61620378797A000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x378797A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x161016201630000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x162016201630000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x163000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x164000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x161016401630000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x162016101630000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x261620163016400000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x161016301640000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0x8DD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x302616200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x301616100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x16B7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SLT PUSH2 0x950 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C6162656C206C656E677468732061726520636F72726563746C792063686563 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B65640000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95C DUP10 DUP9 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0x9D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x6F6E65206E616D6520686173206120646966666572656E6365206F66203E3120 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6162656C20746F2077697468207468652073616D6520726F6F74206E616D65 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DD DUP10 DUP8 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xA76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x41 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F6E65206E616D6520686173206120646966666572656E6365206F66203E3120 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6162656C20746F207769746820646966666572656E7420726F6F74206E616D PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA82 DUP10 DUP7 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xAF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x74776F206E616D6573207374617274207468652073616D652062757420686176 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6520646966666572656E63657320696E206C61746572206C6162656C73000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB01 DUP10 DUP6 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746865206669727374206C6162656C20736F727473206C617465722C20627574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20746865206669727374206C6162656C20736F727473206561726C6965720000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB80 DUP4 DUP4 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0xC19 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x52 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x74776F206E616D657320776865726520746865206669727374206C6162656C20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206F6E65206973206120707265666978206F662074686520666972737420 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6C6162656C206F6E20746865206F746865720000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC25 DUP10 DUP10 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xCBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x52 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x74776F206E616D657320776865726520746865206669727374206C6162656C20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206F6E65206973206120707265666978206F662074686520666972737420 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6C6162656C206F6E20746865206F746865720000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP11 DUP13 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xD17 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x78797A20636F6D6573206265666F7265206574684C61622E78797A0000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD23 DUP13 DUP13 PUSH2 0x16B7 JUMP JUMPDEST SLT PUSH2 0xD96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6274684C61622E78797A20636F6D6573206265666F7265206574684C61622E78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x797A000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDA0 DUP12 DUP1 PUSH2 0x16B7 JUMP JUMPDEST ISZERO PUSH2 0xE13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6274684C61622E78797A20616E64206274684C61622E78797A20617265207468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x652073616D650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE1F DUP12 DUP14 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0xE92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6574684C61622E78797A20636F6D657320616674657220626574684C61622E78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x797A000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE9E DUP13 DUP12 PUSH2 0x16B7 JUMP JUMPDEST SGT PUSH2 0xEEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6274684C61622E78797A20636F6D65732061667465722078797A000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF04 PUSH1 0x1 PUSH1 0x0 PUSH2 0x1810 JUMP JUMPDEST PUSH2 0xF50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x31203E3D20300000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0xF5C PUSH1 0x0 PUSH1 0x1 PUSH2 0x1810 JUMP JUMPDEST ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x212830203C3D2031290000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0xFB8 PUSH1 0x0 PUSH4 0xFFFFFFFF PUSH2 0x1810 JUMP JUMPDEST PUSH2 0x1004 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x30203E3D20307846464646464646460000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x1013 PUSH4 0xFFFFFFFF PUSH1 0x0 PUSH2 0x1810 JUMP JUMPDEST ISZERO PUSH2 0x1060 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x212830203C3D2030784646464646464646290000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x1072 PUSH4 0x11111111 PUSH4 0xAAAAAAAA PUSH2 0x1810 JUMP JUMPDEST PUSH2 0x10BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x30783131313131313131203E3D20307841414141414141410000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x10C9 PUSH1 0x1 DUP1 PUSH2 0x1810 JUMP JUMPDEST PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x31203E3D20310000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x1139 PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x108 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x203C PUSH2 0x108 SWAP2 CODECOPY PUSH2 0x1829 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x4A5C EQ PUSH2 0x118D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206B6579746167000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x11AE PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x89 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22F8 PUSH1 0x89 SWAP2 CODECOPY PUSH2 0x1829 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x54BD EQ PUSH2 0x1202 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206B6579746167202832290000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x1223 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x88 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2270 PUSH1 0x88 SWAP2 CODECOPY PUSH2 0x1829 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x835E EQ PUSH2 0x1234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1258 PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x108 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2144 PUSH2 0x108 SWAP2 CODECOPY PUSH2 0x1829 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0x4F66 EQ PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206B6579746167202833290000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH2 0x12D6 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1A53 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO PUSH2 0x1323 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C6162656C436F756E7428272E2729203D3D2030000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x161000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1362 SWAP1 PUSH1 0x0 PUSH2 0x1A53 JUMP JUMPDEST PUSH1 0x1 EQ PUSH2 0x13B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C6162656C436F756E742827612E2729203D3D20310000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH32 0x162016100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x13F0 SWAP1 PUSH1 0x0 PUSH2 0x1A53 JUMP JUMPDEST PUSH1 0x2 EQ PUSH2 0x143F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C6162656C436F756E742827622E612E2729203D3D2032000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xC DUP2 MSTORE PUSH32 0x66574686C61620378797A000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x147E SWAP1 PUSH1 0x7 PUSH2 0x1A53 JUMP JUMPDEST PUSH1 0x1 EQ PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E616D654C656E6774682827286274686C6162292E78797A2E2729203D3D2036 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 DUP2 JUMPDEST DUP4 MLOAD DUP2 LT PUSH2 0x14E1 JUMPI PUSH2 0x14E1 PUSH2 0x1E30 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14ED DUP6 DUP4 PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x14FD DUP2 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1507 SWAP1 DUP4 PUSH2 0x1E5F JUMP JUMPDEST SWAP2 POP DUP1 PUSH1 0x0 SUB PUSH2 0x1517 JUMPI POP PUSH2 0x151D JUMP JUMPDEST POP PUSH2 0x14D1 JUMP JUMPDEST PUSH2 0x1527 DUP4 DUP3 PUSH2 0x1E72 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x157F PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x152B DUP2 PUSH2 0x15CF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 PUSH2 0x152B SWAP2 PUSH2 0x15AA SWAP1 DUP3 PUSH2 0x14CD JUMP JUMPDEST DUP5 MLOAD SWAP2 SWAP1 PUSH2 0x1ADB JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 SWAP2 PUSH2 0x152B SWAP2 PUSH2 0x15AA SWAP1 DUP3 SWAP1 PUSH2 0x1E72 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD MLOAD GT PUSH2 0x15E6 JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FA DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x14CD JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1609 SWAP2 SWAP1 PUSH2 0x1E5F JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x1618 SWAP1 DUP3 PUSH2 0x1B5D JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x162C PUSH1 0x2 DUP3 PUSH2 0x1E5F JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x163B SWAP1 DUP3 PUSH2 0x1B5D JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x164F PUSH1 0x2 DUP3 PUSH2 0x1E5F JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH2 0x165E SWAP1 DUP3 PUSH2 0x1B85 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1674 PUSH1 0x4 DUP3 PUSH2 0x1E5F JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1686 SWAP1 DUP4 PUSH2 0x1B5D JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 POP PUSH2 0x1697 PUSH1 0x2 DUP4 PUSH2 0x1E5F JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 POP PUSH2 0x16AA DUP2 DUP4 PUSH2 0x1E5F JUMP JUMPDEST PUSH1 0xC0 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C3 DUP4 DUP4 PUSH2 0x1BAF JUMP JUMPDEST ISZERO PUSH2 0x16D0 JUMPI POP PUSH1 0x0 PUSH2 0x152B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16E3 DUP9 PUSH1 0x0 PUSH2 0x1A53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16F2 DUP9 PUSH1 0x0 PUSH2 0x1A53 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x171E JUMPI DUP6 SWAP4 POP PUSH2 0x170A DUP10 DUP8 PUSH2 0x1BCD JUMP JUMPDEST SWAP6 POP DUP2 PUSH2 0x1716 DUP2 PUSH2 0x1E85 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x16F5 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1747 JUMPI DUP5 SWAP3 POP PUSH2 0x1733 DUP9 DUP7 PUSH2 0x1BCD JUMP JUMPDEST SWAP5 POP DUP1 PUSH2 0x173F DUP2 PUSH2 0x1E85 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x171E JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x1760 JUMPI POP PUSH2 0x175E DUP10 DUP8 DUP11 DUP9 PUSH2 0x1BF1 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1795 JUMPI DUP6 SWAP4 POP PUSH2 0x1772 DUP10 DUP8 PUSH2 0x1BCD JUMP JUMPDEST SWAP6 POP DUP5 SWAP3 POP PUSH2 0x1781 DUP9 DUP7 PUSH2 0x1BCD JUMP JUMPDEST SWAP5 POP PUSH2 0x178E PUSH1 0x1 DUP4 PUSH2 0x1E72 JUMP JUMPDEST SWAP2 POP PUSH2 0x1747 JUMP JUMPDEST DUP6 PUSH1 0x0 SUB PUSH2 0x17AD JUMPI PUSH1 0x0 NOT SWAP7 POP POP POP POP POP POP POP PUSH2 0x152B JUMP JUMPDEST DUP5 PUSH1 0x0 SUB PUSH2 0x17C4 JUMPI PUSH1 0x1 SWAP7 POP POP POP POP POP POP POP PUSH2 0x152B JUMP JUMPDEST PUSH2 0x1803 PUSH2 0x17D2 DUP6 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x17DC DUP12 DUP8 PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0xFF AND DUP11 PUSH2 0x17EB DUP8 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x17F5 DUP14 DUP10 PUSH2 0x1AB7 JUMP JUMPDEST DUP15 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0xFF AND PUSH2 0x1C26 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x181D DUP4 DUP6 PUSH2 0x1E9C JUMP JUMPDEST PUSH1 0x3 SIGNEXTEND SLT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2000 DUP3 MLOAD GT ISZERO PUSH2 0x187E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6F6E67206B657973206E6F74207065726D6974746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 MLOAD PUSH1 0x1F ADD DUP2 LT ISZERO PUSH2 0x18F3 JUMPI PUSH1 0x0 DUP2 PUSH1 0x20 DUP8 ADD ADD MLOAD SWAP1 POP DUP6 MLOAD DUP3 PUSH1 0x20 ADD GT ISZERO PUSH2 0x18B9 JUMPI DUP6 MLOAD DUP3 SWAP1 SUB PUSH1 0x8 MUL PUSH2 0x100 SUB SWAP1 DUP2 SHR SWAP1 SHL JUMPDEST PUSH31 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF PUSH1 0x8 DUP3 SWAP1 SHR DUP2 AND SWAP5 SWAP1 SWAP5 ADD SWAP4 AND SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x1884 JUMP JUMPDEST POP PUSH1 0x10 DUP3 PUSH32 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 AND SWAP1 SHR DUP3 PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND ADD SWAP2 POP PUSH1 0x10 DUP2 PUSH32 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 AND SWAP1 SHR DUP2 PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND ADD SWAP1 POP DUP1 PUSH1 0x8 DUP4 SWAP1 SHL ADD SWAP2 POP PUSH1 0x20 DUP3 PUSH32 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000 AND SWAP1 SHR DUP3 PUSH28 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF AND ADD SWAP2 POP PUSH1 0x40 DUP3 PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000 AND SWAP1 SHR DUP3 PUSH24 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND ADD SWAP2 POP PUSH1 0x80 DUP3 SWAP1 SHR DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD SWAP2 POP PUSH1 0x10 DUP3 SWAP1 SHR PUSH2 0xFFFF AND DUP3 ADD SWAP2 POP DUP2 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP4 LT PUSH2 0x1A67 JUMPI PUSH2 0x1A67 PUSH2 0x1E30 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A73 DUP6 DUP6 PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1A83 DUP2 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1A8D SWAP1 DUP6 PUSH2 0x1E5F JUMP JUMPDEST SWAP4 POP DUP1 PUSH1 0x0 SUB PUSH2 0x1A9D JUMPI POP PUSH2 0x1AB0 JUMP JUMPDEST PUSH2 0x1AA8 PUSH1 0x1 DUP4 PUSH2 0x1E5F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1A57 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1ACB JUMPI PUSH2 0x1ACB PUSH2 0x1DB8 JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH1 0xF8 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x1AEA DUP4 DUP6 PUSH2 0x1E5F JUMP JUMPDEST GT ISZERO PUSH2 0x1AF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B10 JUMPI PUSH2 0x1B10 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B3A JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x20 DUP1 DUP3 ADD SWAP1 DUP7 DUP7 ADD ADD PUSH2 0x1B52 DUP3 DUP3 DUP8 PUSH2 0x1D1B JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1B6D DUP4 PUSH1 0x2 PUSH2 0x1E5F JUMP JUMPDEST GT ISZERO PUSH2 0x1B78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x2 ADD MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1B95 DUP4 PUSH1 0x4 PUSH2 0x1E5F JUMP JUMPDEST GT ISZERO PUSH2 0x1BA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADD PUSH1 0x4 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ DUP1 ISZERO PUSH2 0x1AB0 JUMPI POP PUSH2 0x1AB0 DUP4 PUSH1 0x0 DUP5 PUSH1 0x0 DUP8 MLOAD PUSH2 0x1D71 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BD9 DUP4 DUP4 PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x1BE7 DUP4 PUSH1 0x1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1AB0 SWAP2 SWAP1 PUSH2 0x1E5F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C0A DUP4 DUP4 DUP5 DUP7 MLOAD PUSH2 0x1C05 SWAP2 SWAP1 PUSH2 0x1E72 JUMP JUMPDEST PUSH2 0x1D94 JUMP JUMPDEST PUSH2 0x1C1C DUP7 DUP7 DUP8 DUP10 MLOAD PUSH2 0x1C05 SWAP2 SWAP1 PUSH2 0x1E72 JUMP JUMPDEST EQ SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP1 DUP4 LT ISZERO PUSH2 0x1C34 JUMPI POP DUP2 JUMPDEST PUSH1 0x20 DUP8 DUP10 ADD DUP2 ADD SWAP1 DUP6 DUP8 ADD ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D00 JUMPI DUP3 MLOAD DUP3 MLOAD DUP1 DUP3 EQ PUSH2 0x1CD0 JUMPI PUSH1 0x0 PUSH1 0x20 DUP8 GT ISZERO PUSH2 0x1C6A JUMPI POP PUSH1 0x0 NOT PUSH2 0x1CA6 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH2 0x1C78 DUP10 PUSH1 0x20 PUSH2 0x1E72 JUMP JUMPDEST PUSH2 0x1C82 SWAP2 SWAP1 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1C8D SWAP1 PUSH1 0x8 PUSH2 0x1F0D JUMP JUMPDEST PUSH2 0x1C98 SWAP1 PUSH1 0x2 PUSH2 0x2008 JUMP JUMPDEST PUSH2 0x1CA2 SWAP2 SWAP1 PUSH2 0x1E72 JUMP JUMPDEST NOT SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x1CB6 DUP4 DUP4 AND DUP6 DUP5 AND PUSH2 0x2014 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1CCD JUMPI SWAP8 POP PUSH2 0x1D11 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST POP POP JUMPDEST PUSH2 0x1CDB PUSH1 0x20 DUP7 PUSH2 0x1E5F JUMP JUMPDEST SWAP5 POP PUSH2 0x1CE8 PUSH1 0x20 DUP6 PUSH2 0x1E5F JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x20 DUP2 PUSH2 0x1CF9 SWAP2 SWAP1 PUSH2 0x1E5F JUMP JUMPDEST SWAP1 POP PUSH2 0x1C43 JUMP JUMPDEST POP PUSH2 0x1D0B DUP6 DUP10 PUSH2 0x2014 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1D53 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH2 0x1D32 PUSH1 0x20 DUP5 PUSH2 0x1E5F JUMP JUMPDEST SWAP3 POP PUSH2 0x1D3F PUSH1 0x20 DUP4 PUSH2 0x1E5F JUMP JUMPDEST SWAP2 POP PUSH2 0x1D4C PUSH1 0x20 DUP3 PUSH2 0x1E72 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D1B JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D7E DUP5 DUP5 DUP5 PUSH2 0x1D94 JUMP JUMPDEST PUSH2 0x1D89 DUP8 DUP8 DUP6 PUSH2 0x1D94 JUMP JUMPDEST EQ SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x1DA3 DUP4 DUP6 PUSH2 0x1E5F JUMP JUMPDEST GT ISZERO PUSH2 0x1DAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 ADD PUSH1 0x20 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 SUB PUSH2 0x1E29 JUMPI PUSH2 0x1E29 PUSH2 0x1DE7 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x152B JUMPI PUSH2 0x152B PUSH2 0x1DE7 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x152B JUMPI PUSH2 0x152B PUSH2 0x1DE7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1E94 JUMPI PUSH2 0x1E94 PUSH2 0x1DE7 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000 DUP2 SLT PUSH4 0x7FFFFFFF DUP3 SGT OR ISZERO PUSH2 0x152B JUMPI PUSH2 0x152B PUSH2 0x1DE7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x152B JUMPI PUSH2 0x152B PUSH2 0x1DE7 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x1F5F JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x1F45 JUMPI PUSH2 0x1F45 PUSH2 0x1DE7 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x1F52 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x1F29 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1F76 JUMPI POP PUSH1 0x1 PUSH2 0x152B JUMP JUMPDEST DUP2 PUSH2 0x1F83 JUMPI POP PUSH1 0x0 PUSH2 0x152B JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1F99 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1FA3 JUMPI PUSH2 0x1FBF JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x152B JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1FB4 JUMPI PUSH2 0x1FB4 PUSH2 0x1DE7 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x152B JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1FE2 JUMPI POP DUP2 DUP2 EXP PUSH2 0x152B JUMP JUMPDEST PUSH2 0x1FEC DUP4 DUP4 PUSH2 0x1F24 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x2000 JUMPI PUSH2 0x2000 PUSH2 0x1DE7 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AB0 DUP4 DUP4 PUSH2 0x1F67 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP4 SLT DUP1 ISZERO DUP4 DUP4 SGT AND DUP4 DUP4 SLT DUP3 AND OR ISZERO PUSH2 0x2034 JUMPI PUSH2 0x2034 PUSH2 0x1DE7 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP INVALID ADD ADD SUB ADDMOD SUB ADD STOP ADD 0xA8 STOP KECCAK256 0xA9 SSTORE PUSH7 0xBA42E886BB804C 0xDA DUP5 0xE4 PUSH31 0xF56DBD7AEC612615552CEC906D2116D0EF207028C51554144DFEAFE7C7CB8F STOP 0x5D 0xD1 DUP3 CALLVALUE SGT GASPRICE 0xC0 PUSH18 0xA81182CE1FD14AD2283BC83435F9DF2F631 ORIGIN MLOAD SWAP4 BYTE OR PUSH14 0xF0DA51E54F42E604860DFB359580 0x25 0xF SSTORE SWAP13 0xC5 NUMBER 0xC4 SELFDESTRUCT 0xD5 SHR 0xBE RETURNDATASIZE 0xE8 0xCF 0xD0 PUSH8 0x19237F9FC47EE729 0xDA MOD DUP4 0x5F LOG4 MSTORE 0xE8 0x25 0xE9 LOG1 DUP15 0xBC 0x2E 0xCB 0xCF JUMP CALLVALUE PUSH21 0x652C33CF56A9033BCDF5D973121797EC8089041B6E SUB LOG1 0xB7 0x2D EXP PUSH20 0x5B984E03687309332324F27C2DBA85E9DB15E83A ADD NUMBER CODESIZE 0x2E SWAP8 0x4B MOD 0x21 0xC1 DUP15 PUSH3 0x5ECEC9 SMOD JUMPI PUSH30 0x9E7BADE95241A81EBBE8A901D4D3276E40B114C0A2E6FC38D19C2E6AAB02 PUSH5 0x4B2813F575 0xFC 0x21 PUSH1 0x1E 0xD 0xEE 0x49 0xCD SWAP15 0xE9 PUSH11 0x43103E524D62873D010103 ADDMOD SUB ADD STOP ADD 0xAC SELFDESTRUCT 0xB4 MULMOD 0xBC 0xC9 CODECOPY 0xF8 BALANCE 0xF7 LOG1 0xE5 0xEC DUP9 0xF7 0xA5 SWAP3 SSTORE 0xEC MSTORE8 DIV SIGNEXTEND 0xE4 ORIGIN MUL PUSH20 0x90A4CE896D6F9086F3C5E177FBFE118163AAEC7A CALL CHAINID 0x2C SELFBALANCE SWAP5 MSIZE DIFFICULTY 0xC4 0xE2 0xC0 0x26 0xBE 0x5E SWAP9 0xBB 0xCD 0xED 0x25 SWAP8 DUP3 PUSH19 0xE1E3E079C5094D573F0E83C92F02B32D3513B1 SSTORE SIGNEXTEND DUP3 PUSH10 0x29C80DD0F92CAC966D17 PUSH23 0x9FD5867B647C3F38029ABDC48152EB8F207159ECC5D232 0xC7 0xC1 MSTORE8 PUSH29 0x79F4B7AC28FF11682F21681BF6D6ABA555032BF6F9F036BEB2AAA5B377 DUP14 PUSH15 0xEBFBA6BF9EA191BE4AB0CAEA759E2F PUSH24 0x3A1F9029C73ECB8D5735B9321DB085F1B8E2D8038FE29419 SWAP3 SLOAD DUP13 0xEE 0xD PUSH8 0xDD4547E11DD63AF9 0xC9 0xFC SHR SLOAD PUSH7 0xFB684CF009D719 PUSH29 0x2CF79E792AB501E6A8A1CA519AF2CB9B5F6367E94C0D47502451357BE1 0xB5 ADD PUSH2 0x0 ADD STOP ADD STOP STOP 0xE LT STOP DIV PUSH21 0x101620161000001000100000E100004C0A801 ADD ADD STOP SUB SDIV SUB ADD STOP ADD 0xBF 0xA5 0x4C CODESIZE 0xD9 MULMOD STATICCALL 0xBB 0xF SWAP4 PUSH30 0x70D775BA0DF4C0BADB09707D995249406950407A621C794C68B186B15DBF DUP16 SWAP16 SWAP15 LOG2 BALANCE 0xE9 0xF9 PUSH5 0x14CCDA4ECE 0xB5 SIGNEXTEND OR 0xA9 0xAC PUSH13 0x4BD4B95DA04849E96EE791578B PUSH17 0x3BC9AE184FB1794BAC792A0787F693A40F NOT CREATE2 0x23 0xEE PUSH14 0xBD3599DBAAA9A50437926ECF6438 DUP5 0x5D SAR 0x49 DIFFICULTY DUP10 PUSH3 0x524F2A BYTE PUSH27 0x36B3A0A1ECA3010003050440000003BA2FA05A75E173BEDE89EB71 DUP4 BYTE 0xB1 BLOCKHASH CALLDATALOAD CALLCODE BLOCKHASH DUP11 0xD0 SWAP14 DELEGATECALL 0xD8 0xDC DUP16 DUP16 PUSH19 0xE8F13506FEADDF7B04CB14958B82966E342056 0x23 MUL 0xC4 STOP 0x2B 0xC4 REVERT ADDMOD DUP5 ORIGIN 0xE1 PUSH1 0x51 SWAP12 0xB1 0x4D 0xAE DUP3 DIFFICULTY CODESIZE POP 0xC1 TIMESTAMP RETURNDATACOPY MOD ADDMOD JUMPI LT 0xB5 0xCA CREATE PUSH17 0xD46B7BA7E481414F6A5FE225FDCA984C95 SWAP1 SWAP2 PUSH5 0x5D0CF1C9A1 LOG3 SGT 0xD7 0xE7 0xFB PUSH28 0xA60B967B71A65F8CEF2C3768E11B081C8FCFA2646970667358221220 0xB1 0x26 PUSH8 0xD30E85BBBAEF2762 0xE2 PUSH23 0x4BAE47D4D8A6AB77E04404355106D6BE5940B864736F6C PUSH4 0x43000811 STOP CALLER ",
              "sourceMap": "133:6015:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;432:257;;;:::i;:::-;;1055:847;;;:::i;1978:1826::-;;;:::i;3808:451::-;;;:::i;4263:1883::-;;;:::i;693:358::-;;;:::i;432:257::-;484:21;503:1;484:18;;;;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;509:1;484:26;476:59;;;;-1:-1:-1;;;476:59:108;;216:2:111;476:59:108;;;198:21:111;255:2;235:18;;;228:30;294:22;274:18;;;267:50;334:18;;476:59:108;;;;;;;;;549:26;;;;;;;;;;;;;;;;;:29;;576:1;549:26;:29::i;:::-;582:1;549:34;541:67;;;;-1:-1:-1;;;541:67:108;;216:2:111;541:67:108;;;198:21:111;255:2;235:18;;;228:30;294:22;274:18;;;267:50;334:18;;541:67:108;14:344:111;541:67:108;622:26;;;;;;;;;;;;;;;;;:29;;649:1;622:26;:29::i;:::-;655:1;622:34;614:70;;;;-1:-1:-1;;;614:70:108;;565:2:111;614:70:108;;;547:21:111;604:2;584:18;;;577:30;643:25;623:18;;;616:53;686:18;;614:70:108;363:347:111;614:70:108;432:257::o;1055:847::-;1163:16;:96;;;;;;;;;;;;;;;;;1265:68;;;1290:18;;;;;;;1265:68;;;1290:18;;;;;;;;;;;;1265:68;;;1310:22;;;;;;;;;;;1290:18;1310:22;;;;;;;1265:68;;;;;;;1339:69;;1365:20;;;;;;1339:69;;;1365:20;;;;;;;;;;;1339:69;;;1387:20;;;;;;;;;;;;;;;;1339:69;;;;;;1163:96;;-1:-1:-1;1265:21:108;;1467:17;1163:96;1265:21;1467:14;:17::i;:::-;1434:50;;1430:425;4584:9:29;;:16;4569:11;;;;:31;;1430:425:108;;1534:4;:12;;;1529:18;;1551:1;1529:23;1521:48;;;;-1:-1:-1;;;1521:48:108;;917:2:111;1521:48:108;;;899:21:111;956:2;936:18;;;929:30;995:14;975:18;;;968:42;1027:18;;1521:48:108;715:336:111;1521:48:108;1590:4;:10;;;1585:16;;1605:1;1585:21;1577:47;;;;-1:-1:-1;;;1577:47:108;;1258:2:111;1577:47:108;;;1240:21:111;1297:2;1277:18;;;1270:30;1336:15;1316:18;;;1309:43;1369:18;;1577:47:108;1056:337:111;1577:47:108;1645:4;:8;;;1640:14;;1658:4;1640:22;1632:46;;;;-1:-1:-1;;;1632:46:108;;1600:2:111;1632:46:108;;;1582:21:111;1639:2;1619:18;;;1612:30;1678:13;1658:18;;;1651:41;1709:18;;1632:46:108;1398:335:111;1632:46:108;1730:5;1736:1;1730:8;;;;;;;:::i;:::-;;;;;1720:19;;;;;;1704:11;:4;:9;:11::i;:::-;1694:22;;;;;;:45;1686:70;;;;-1:-1:-1;;;1686:70:108;;2129:2:111;1686:70:108;;;2111:21:111;2168:2;2148:18;;;2141:30;2207:14;2187:18;;;2180:42;2239:18;;1686:70:108;1927:336:111;1686:70:108;1809:6;1816:1;1809:9;;;;;;;:::i;:::-;;;;;1799:20;;;;;;1782:12;:4;:10;:12::i;:::-;1772:23;;;;;;:47;1764:73;;;;-1:-1:-1;;;1764:73:108;;2470:2:111;1764:73:108;;;2452:21:111;2509:2;2489:18;;;2482:30;2548:15;2528:18;;;2521:43;2581:18;;1764:73:108;2268:337:111;1764:73:108;1845:3;;;;:::i;:::-;;;;1500:11;:4;:9;:11::i;:::-;1430:425;;;;1868:1;1873;1868:6;1860:37;;;;-1:-1:-1;;;1860:37:108;;3201:2:111;1860:37:108;;;3183:21:111;3240:2;3220:18;;;3213:30;3279:20;3259:18;;;3252:48;3317:18;;1860:37:108;2999:342:111;1860:37:108;1093:809;;;;1055:847::o;1978:1826::-;2024:22;:54;;;;;;;;;;;;;;;;;;;2084:22;:54;;;;;;;;;;;;;;;;;;;2144:16;:34;;;;;;;;;;;;;;;;;;;2184:18;:41;;;;;;;;;;;;;;;;;;;2231:18;:41;;;;;;;;;;;;;;;;;;;2278:14;:33;;;;;;;;;;;;;;;;;;;2317:14;:33;;;;;;;;;;;;;;;;;;;2356:18;:41;;;;;;;;;;;;;;;;;;;2403:18;:41;;;;;;;;;;;;;;;;;;;2450:19;:43;;;;;;;;;;;;;;;;;;;2499:18;:41;;;;;;;;;;;;;;;;;;;2604:1;2555:45;;;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;:50;2547:99;;;;-1:-1:-1;;;2547:99:108;;3548:2:111;2547:99:108;;;3530:21:111;3587:2;3567:18;;;3560:30;3626:34;3606:18;;;3599:62;3697:5;3677:18;;;3670:33;3720:19;;2547:99:108;3346:399:111;2547:99:108;2690:1;2660:21;:5;2679:1;2660:18;:21::i;:::-;:31;2652:109;;;;;-1:-1:-1;;;2652:109:108;;3952:2:111;2652:109:108;;;3934:21:111;3971:18;;;3964:30;;;;4030:34;4010:18;;;4003:62;4101:34;4081:18;;;4074:62;4153:19;;2652:109:108;3750:428:111;2652:109:108;2805:1;2775:21;:5;2794:1;2775:18;:21::i;:::-;:31;2767:109;;;;-1:-1:-1;;;2767:109:108;;4385:2:111;2767:109:108;;;4367:21:111;4424:2;4404:18;;;4397:30;4463:34;4443:18;;;4436:62;4534:34;4514:18;;;4507:62;4606:3;4585:19;;;4578:32;4627:19;;2767:109:108;4183:469:111;2767:109:108;2920:1;2890:25;:5;2909;2890:18;:25::i;:::-;:31;2882:105;;;;-1:-1:-1;;;2882:105:108;;4859:2:111;2882:105:108;;;4841:21:111;4898:2;4878:18;;;4871:30;4937:34;4917:18;;;4910:62;5008:31;4988:18;;;4981:59;5057:19;;2882:105:108;4657:425:111;2882:105:108;3031:1;3001:25;:5;3020;3001:18;:25::i;:::-;:31;2993:106;;;;-1:-1:-1;;;2993:106:108;;5289:2:111;2993:106:108;;;5271:21:111;5328:2;5308:18;;;5301:30;5367:34;5347:18;;;5340:62;5438:32;5418:18;;;5411:60;5488:19;;2993:106:108;5087:426:111;2993:106:108;3143:1;3113:26;:6;3133:5;3113:19;:26::i;:::-;:31;3105:126;;;;-1:-1:-1;;;3105:126:108;;5720:2:111;3105:126:108;;;5702:21:111;5759:2;5739:18;;;5732:30;5798:34;5778:18;;;5771:62;5869:34;5849:18;;;5842:62;5941:20;5920:19;;;5913:49;5979:19;;3105:126:108;5518:486:111;3105:126:108;3275:1;3245:25;:5;3264;3245:18;:25::i;:::-;:31;3237:126;;;;-1:-1:-1;;;3237:126:108;;5720:2:111;3237:126:108;;;5702:21:111;5759:2;5739:18;;;5732:30;5798:34;5778:18;;;5771:62;5869:34;5849:18;;;5842:62;5941:20;5920:19;;;5913:49;5979:19;;3237:126:108;5518:486:111;3237:126:108;3407:1;3377:27;:3;3394:9;3377:16;:27::i;:::-;:31;3369:71;;;;-1:-1:-1;;;3369:71:108;;6211:2:111;3369:71:108;;;6193:21:111;6250:2;6230:18;;;6223:30;6289:29;6269:18;;;6262:57;6336:18;;3369:71:108;6009:351:111;3369:71:108;3490:1;3454:33;:9;3477;3454:22;:33::i;:::-;:37;3446:84;;;;-1:-1:-1;;;3446:84:108;;6567:2:111;3446:84:108;;;6549:21:111;6606:2;6586:18;;;6579:30;6645:34;6625:18;;;6618:62;6716:4;6696:18;;;6689:32;6738:19;;3446:84:108;6365:398:111;3446:84:108;3544:33;3567:9;;3544:22;:33::i;:::-;:38;3536:89;;;;-1:-1:-1;;;3536:89:108;;6970:2:111;3536:89:108;;;6952:21:111;7009:2;6989:18;;;6982:30;7048:34;7028:18;;;7021:62;7119:8;7099:18;;;7092:36;7145:19;;3536:89:108;6768:402:111;3536:89:108;3676:1;3639:33;:9;3662;3639:22;:33::i;:::-;:38;3631:85;;;;-1:-1:-1;;;3631:85:108;;7377:2:111;3631:85:108;;;7359:21:111;7416:2;7396:18;;;7389:30;7455:34;7435:18;;;7428:62;7526:4;7506:18;;;7499:32;7548:19;;3631:85:108;7175:398:111;3631:85:108;3767:1;3730:27;:9;3753:3;3730:22;:27::i;:::-;:38;3722:77;;;;-1:-1:-1;;;3722:77:108;;7780:2:111;3722:77:108;;;7762:21:111;7819:2;7799:18;;;7792:30;7858:28;7838:18;;;7831:56;7904:18;;3722:77:108;7578:350:111;3722:77:108;2018:1786;;;;;;;;;;;1978:1826::o;3808:451::-;3864:29;3888:1;3891;3864:23;:29::i;:::-;3856:48;;;;-1:-1:-1;;;3856:48:108;;8135:2:111;3856:48:108;;;8117:21:111;8174:1;8154:18;;;8147:29;8212:8;8192:18;;;8185:36;8238:18;;3856:48:108;7933:329:111;3856:48:108;3919:29;3943:1;3946;3919:23;:29::i;:::-;3918:30;3910:52;;;;-1:-1:-1;;;3910:52:108;;8469:2:111;3910:52:108;;;8451:21:111;8508:1;8488:18;;;8481:29;8546:11;8526:18;;;8519:39;8575:18;;3910:52:108;8267:332:111;3910:52:108;3976:38;4000:1;4003:10;3976:23;:38::i;:::-;3968:66;;;;-1:-1:-1;;;3968:66:108;;8806:2:111;3968:66:108;;;8788:21:111;8845:2;8825:18;;;8818:30;8884:17;8864:18;;;8857:45;8919:18;;3968:66:108;8604:339:111;3968:66:108;4049:38;4073:10;4085:1;4049:23;:38::i;:::-;4048:39;4040:70;;;;-1:-1:-1;;;4040:70:108;;9150:2:111;4040:70:108;;;9132:21:111;9189:2;9169:18;;;9162:30;9228:20;9208:18;;;9201:48;9266:18;;4040:70:108;8948:342:111;4040:70:108;4124:47;4148:10;4160;4124:23;:47::i;:::-;4116:84;;;;-1:-1:-1;;;4116:84:108;;9497:2:111;4116:84:108;;;9479:21:111;9536:2;9516:18;;;9509:30;9575:26;9555:18;;;9548:54;9619:18;;4116:84:108;9295:348:111;4116:84:108;4214:29;4238:1;4241;4214:23;:29::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:108;;9850:2:111;4206:48:108;;;9832:21:111;9889:1;9869:18;;;9862:29;9927:8;9907:18;;;9900:36;9953:18;;4206:48:108;9648:329:111;4263:1883:108;4311:549;:547;;;;;;;;;;;;;;;;;;:549::i;:::-;:558;;4864:5;4311:558;4303:585;;;;-1:-1:-1;;;4303:585:108;;10184:2:111;4303:585:108;;;10166:21:111;10223:2;10203:18;;;10196:30;10262:16;10242:18;;;10235:44;10296:18;;4303:585:108;9982:338:111;4303:585:108;4902:295;:293;;;;;;;;;;;;;;;;;;:295::i;:::-;:304;;5201:5;4902:304;4894:335;;;;-1:-1:-1;;;4894:335:108;;10527:2:111;4894:335:108;;;10509:21:111;10566:2;10546:18;;;10539:30;10605:20;10585:18;;;10578:48;10643:18;;4894:335:108;10325:342:111;4894:335:108;5243:293;:291;;;;;;;;;;;;;;;;;;:293::i;:::-;:302;;5540:5;5243:302;5235:311;;;;;;5560:549;:547;;;;;;;;;;;;;;;;;;:549::i;:::-;:558;;6113:5;5560:558;5552:589;;;;-1:-1:-1;;;5552:589:108;;10874:2:111;5552:589:108;;;10856:21:111;10913:2;10893:18;;;10886:30;10952:20;10932:18;;;10925:48;10990:18;;5552:589:108;10672:342:111;693:358:108;745:21;764:1;745:18;;;;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;:26;737:59;;;;-1:-1:-1;;;737:59:108;;11221:2:111;737:59:108;;;11203:21:111;11260:2;11240:18;;;11233:30;11299:22;11279:18;;;11272:50;11339:18;;737:59:108;11019:344:111;737:59:108;810:22;;;;;;;;;;;;;;;;;:25;;833:1;810:22;:25::i;:::-;839:1;810:30;802:64;;;;-1:-1:-1;;;802:64:108;;11570:2:111;802:64:108;;;11552:21:111;11609:2;11589:18;;;11582:30;11648:23;11628:18;;;11621:51;11689:18;;802:64:108;11368:345:111;802:64:108;880:28;;;;;;;;;;;;;;;;;:31;;909:1;880:28;:31::i;:::-;915:1;880:36;872:72;;;;-1:-1:-1;;;872:72:108;;11920:2:111;872:72:108;;;11902:21:111;11959:2;11939:18;;;11932:30;11998:25;11978:18;;;11971:53;12041:18;;872:72:108;11718:347:111;872:72:108;958:40;;;;;;;;;;;;;;;;;:46;;999:4;958:40;:46::i;:::-;1008:1;958:51;950:96;;;;-1:-1:-1;;;950:96:108;;12272:2:111;950:96:108;;;12254:21:111;;;12291:18;;;12284:30;12350:34;12330:18;;;12323:62;12402:18;;950:96:108;12070:356:111;541:408:29;643:7;680:6;696:218;736:4;:11;730:3;:17;723:25;;;;:::i;:::-;762:16;781:19;:4;796:3;781:14;:19::i;:::-;762:38;;;-1:-1:-1;821:12:29;762:38;832:1;821:12;:::i;:::-;814:19;;;;:::i;:::-;;;851:8;863:1;851:13;847:57;;884:5;;;847:57;709:205;696:218;;;930:12;936:6;930:3;:12;:::i;:::-;923:19;;;541:408;;;;;:::o;4097:213::-;4199:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:21:29;4236:15;;;4261:14;;;:23;;;4294:9;4236:3;4294:4;:9::i;5601:225::-;5742:11;;;;5782:9;;5662:12;;5705:114;;5771:34;;5742:11;5771:10;:34::i;:::-;5705:9;;;:114;:19;:114::i;6003:259::-;6173:16;;;;6207:15;;;;6089:12;;6136:119;;6207:34;;6173:16;;6207:34;:::i;4733:688::-;4809:15;;;;4795:11;;;:29;;;4853:9;;:16;-1:-1:-1;4834:68:29;;4733:688;:::o;4834:68::-;4937:11;4965:34;4976:4;:9;;;4987:4;:11;;;4965:10;:34::i;:::-;4951:4;:11;;;:48;;;;:::i;:::-;5062:9;;4937:62;;-1:-1:-1;5062:25:29;;4937:62;5062:20;:25::i;:::-;5047:40;;:12;;;:40;5097:8;5104:1;5097:8;;:::i;:::-;5128:9;;5097:8;;-1:-1:-1;5128:25:29;;5097:8;5128:20;:25::i;:::-;5115:38;;:10;;;:38;5163:8;5170:1;5163:8;;:::i;:::-;5192:9;;5163:8;;-1:-1:-1;5192:25:29;;5163:8;5192:20;:25::i;:::-;5181:36;;:8;;;:36;5227:8;5234:1;5227:8;;:::i;:::-;5294:9;;5227:8;;-1:-1:-1;5272:19:29;;5294:25;;5227:8;5294:20;:25::i;:::-;5272:47;;;-1:-1:-1;5329:8:29;5336:1;5329:8;;:::i;:::-;5347:16;;;:22;;;5329:8;-1:-1:-1;5397:17:29;5403:11;5329:8;5397:17;:::i;:::-;5379:15;;;;:35;;;;-1:-1:-1;;4733:688:29:o;7722:1452::-;7830:6;7856:18;:4;7868:5;7856:11;:18::i;:::-;7852:57;;;-1:-1:-1;7897:1:29;7890:8;;7852:57;7919:11;7940:16;7966:15;7991:20;8021:14;8038:19;8049:4;8055:1;8038:10;:19::i;:::-;8021:36;;8067:19;8089:20;8100:5;8107:1;8089:10;:20::i;:::-;8067:42;;8213:128;8229:11;8220:6;:20;8213:128;;;8266:3;8256:13;;8289:19;8298:4;8304:3;8289:8;:19::i;:::-;8283:25;-1:-1:-1;8322:8:29;;;;:::i;:::-;;;;8213:128;;;8372:6;8358:11;:20;8351:154;;;8409:8;8394:23;;8442:25;8451:5;8458:8;8442;:25::i;:::-;8431:36;-1:-1:-1;8481:13:29;;;;:::i;:::-;;;;8351:154;;;8589:1;8580:6;:10;:48;;;;-1:-1:-1;8595:33:29;:4;8607:3;8612:5;8619:8;8595:11;:33::i;:::-;8594:34;8580:48;8573:246;;;8654:3;8644:13;;8677:19;8686:4;8692:3;8677:8;:19::i;:::-;8671:25;;8725:8;8710:23;;8758:25;8767:5;8774:8;8758;:25::i;:::-;8747:36;-1:-1:-1;8797:11:29;8807:1;8797:11;;:::i;:::-;;;8573:246;;;8833:3;8840:1;8833:8;8829:48;;-1:-1:-1;;8857:9:29;;;;;;;;;;8829:48;8890:8;8902:1;8890:13;8886:52;;8926:1;8919:8;;;;;;;;;;8886:52;8967:200;8997:11;:7;9007:1;8997:11;:::i;:::-;9026:23;:4;9041:7;9026:14;:23::i;:::-;8967:200;;9067:5;9090:16;:12;9105:1;9090:16;:::i;:::-;9124:29;:5;9140:12;9124:15;:29::i;:::-;8967:4;;:200;;;;;;:12;:200::i;:::-;8948:219;7722:1452;-1:-1:-1;;;;;;;;;7722:1452:29:o;9270:154::-;9364:4;;9391:21;9409:2;9397;9391:21;:::i;:::-;:26;;;;;9270:154;-1:-1:-1;;;9270:154:29:o;9758:3992::-;9823:6;11614:4;11599;:11;:19;;11591:55;;;;-1:-1:-1;;;11591:55:29;;13540:2:111;11591:55:29;;;13522:21:111;13579:2;13559:18;;;13552:30;13618:25;13598:18;;;13591:53;13661:18;;11591:55:29;13338:347:111;11591:55:29;11660:11;11685;11715:9;11710:670;11734:4;:11;11748:2;11734:16;11730:1;:20;11710:670;;;11779:12;11873:1;11868:2;11862:4;11858:13;11854:21;11848:28;11840:36;;11924:4;:11;11915:1;11919:2;11915:6;:20;11911:166;;;11983:11;;:15;;;12002:1;11982:21;11976:3;:27;12033:14;;;12032:26;;11911:166;12121:124;12244:1;12121:124;;;;;12094:151;;;;;12271:93;12263:102;;;;;11757:2;11752:7;11710:670;;;;12647:2;12530:3;12556:66;12530:92;12529:120;;12416:3;12442:66;12416:92;12415:235;12393:257;;12918:2;12801:3;12827:66;12801:92;12800:120;;12687:3;12713:66;12687:92;12686:235;12664:257;;12954:3;12949:1;12942:3;:8;;12941:16;12935:22;;13225:2;13108:3;13134:66;13108:92;13107:120;;12994:3;13020:66;12994:92;12993:235;12971:257;;13496:2;13379:3;13405:66;13379:92;13378:120;;13265:3;13291:66;13265:92;13264:235;13242:257;;13656:3;13649;:10;;13536:3;13562:66;13536:92;13535:125;13513:147;;13689:2;13682:3;:9;;13695:6;13681:20;13674:27;;;;13729:3;13715:18;;;;9758:3992;;;:::o;1685:431::-;1787:7;;1837:251;1880:4;:11;1871:6;:20;1864:28;;;;:::i;:::-;1906:16;1925:22;:4;1940:6;1925:14;:22::i;:::-;1906:41;;;-1:-1:-1;1971:12:29;1906:41;1982:1;1971:12;:::i;:::-;1961:22;;;;:::i;:::-;;;2001:8;2013:1;2001:13;1997:57;;2034:5;;;1997:57;2067:10;2076:1;2067:10;;:::i;:::-;;;1850:238;1837:251;;;2104:5;1685:431;-1:-1:-1;;;1685:431:29:o;5750:153:25:-;5848:9;5886:4;5891:3;5886:9;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5750:153:25;;;;:::o;9465:436::-;9633:11;;9585:12;;9617;9626:3;9617:6;:12;:::i;:::-;:27;;9609:36;;;;;;9656:16;9685:3;9675:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:14:25;-1:-1:-1;9656:33:25;-1:-1:-1;9783:2:25;9774:12;;;;9806:26;;;;9851:22;9774:12;9806:26;9869:3;9851:6;:22::i;:::-;-1:-1:-1;9891:3:25;;9465:436;-1:-1:-1;;;;;9465:436:25:o;6152:254::-;6296:11;;6251:10;;6285:7;:3;6291:1;6285:7;:::i;:::-;:22;;6277:31;;;;;;-1:-1:-1;6358:22:25;6372:1;6358:22;6352:29;6383:6;6348:42;;6152:254::o;6655:258::-;6799:11;;6754:10;;6788:7;:3;6794:1;6788:7;:::i;:::-;:22;;6780:31;;;;;;-1:-1:-1;6861:22:25;6875:1;6861:22;6855:29;6886:10;6851:46;;6655:258::o;5274:229::-;5376:4;5430:5;:12;5415:4;:11;:27;:81;;;;;5458:38;5465:4;5471:1;5474:5;5481:1;5484:4;:11;5458:6;:38::i;9430:163:29:-;9527:7;9567:19;:4;9582:3;9567:14;:19::i;:::-;9557:29;;:7;:3;9563:1;9557:7;:::i;:::-;:29;;;;:::i;4093:307:25:-;4246:4;4339:54;4346:5;4353:11;4381;4366:5;:12;:26;;;;:::i;:::-;4339:6;:54::i;:::-;4281:42;4288:4;4294:6;4316;4302:4;:11;:20;;;;:::i;4281:42::-;:112;;4093:307;-1:-1:-1;;;;;4093:307:25:o;1765:1248::-;1966:6;2003:3;2020:14;;;2016:39;;;-1:-1:-1;2047:8:25;2016:39;2174:2;2152:26;;;;;;2203:32;;;;2066:15;2254:705;2282:8;2276:3;:14;2254:705;;;2395:14;;2431:15;;2477:6;;;2473:421;;2564:12;2609:2;2598:8;:13;2594:175;;;-1:-1:-1;;;2594:175:25;;;2748:1;2740:3;2724:13;2729:8;2724:2;:13;:::i;:::-;:19;;;;:::i;:::-;2719:25;;:1;:25;:::i;:::-;2715:30;;:1;:30;:::i;:::-;:34;;;;:::i;:::-;2713:37;2706:44;;2594:175;2786:11;2800:35;2826:8;;;2807;;;2800:35;:::i;:::-;2786:49;-1:-1:-1;2857:9:25;;2853:26;;2875:4;-1:-1:-1;2868:11:25;;-1:-1:-1;;;;;;;2868:11:25;2853:26;2485:409;;2473:421;2907:13;2918:2;2907:13;;:::i;:::-;;-1:-1:-1;2934:14:25;2946:2;2934:14;;:::i;:::-;;;2303:656;;2299:2;2292:9;;;;;:::i;:::-;;;2254:705;;;-1:-1:-1;2976:30:25;2997:8;2983:3;2976:30;:::i;:::-;2969:37;;;;;1765:1248;;;;;;;;;:::o;8595:645::-;8768:2;8761:3;:9;8754:165;;8837:10;;8824:24;;8875:10;8883:2;8831:4;8875:10;:::i;:::-;;-1:-1:-1;8899:9:25;8906:2;8899:9;;:::i;:::-;;-1:-1:-1;8772:9:25;8779:2;8772:9;;:::i;:::-;;;8754:165;;;9081:10;;9140:11;;9007:2;:8;;;;9001:3;:15;-1:-1:-1;;9000:21:25;9093:9;;9077:26;;;9136:22;;9188:21;9175:35;;8595:645::o;3439:264::-;3613:4;3665:31;3672:5;3679:11;3692:3;3665:6;:31::i;:::-;3636:25;3643:4;3649:6;3657:3;3636:6;:25::i;:::-;:60;;3439:264;-1:-1:-1;;;;;;3439:264:25:o;311:274::-;475:11;;428;;459:12;468:3;459:6;:12;:::i;:::-;:27;;451:36;;;;;;-1:-1:-1;537:26:25;;551:2;537:26;527:42;;311:274::o;1738:184:111:-;1790:77;1787:1;1780:88;1887:4;1884:1;1877:15;1911:4;1908:1;1901:15;2610:184;2662:77;2659:1;2652:88;2759:4;2756:1;2749:15;2783:4;2780:1;2773:15;2799:195;2838:3;-1:-1:-1;;2862:5:111;2859:77;2856:103;;2939:18;;:::i;:::-;-1:-1:-1;2986:1:111;2975:13;;2799:195::o;12431:184::-;12483:77;12480:1;12473:88;12580:4;12577:1;12570:15;12604:4;12601:1;12594:15;12620:125;12685:9;;;12706:10;;;12703:36;;;12719:18;;:::i;12750:128::-;12817:9;;;12838:11;;;12835:37;;;12852:18;;:::i;12883:196::-;12922:3;12950:5;12940:39;;12959:18;;:::i;:::-;-1:-1:-1;;;12995:78:111;;12883:196::o;13084:249::-;13182:1;13171:16;;;13153;;;;13149:39;13213:66;13203:77;;13292:10;13282:21;;13200:104;13197:130;;;13307:18;;:::i;13690:184::-;13742:77;13739:1;13732:88;13839:4;13836:1;13829:15;13863:4;13860:1;13853:15;13879:168;13952:9;;;13983;;14000:15;;;13994:22;;13980:37;13970:71;;14021:18;;:::i;14052:482::-;14141:1;14184:5;14141:1;14198:330;14219:7;14209:8;14206:21;14198:330;;;14338:4;-1:-1:-1;;14266:77:111;14260:4;14257:87;14254:113;;;14347:18;;:::i;:::-;14397:7;14387:8;14383:22;14380:55;;;14417:16;;;;14380:55;14496:22;;;;14456:15;;;;14198:330;;;14202:3;14052:482;;;;;:::o;14539:866::-;14588:5;14618:8;14608:80;;-1:-1:-1;14659:1:111;14673:5;;14608:80;14707:4;14697:76;;-1:-1:-1;14744:1:111;14758:5;;14697:76;14789:4;14807:1;14802:59;;;;14875:1;14870:130;;;;14782:218;;14802:59;14832:1;14823:10;;14846:5;;;14870:130;14907:3;14897:8;14894:17;14891:43;;;14914:18;;:::i;:::-;-1:-1:-1;;14970:1:111;14956:16;;14985:5;;14782:218;;15084:2;15074:8;15071:16;15065:3;15059:4;15056:13;15052:36;15046:2;15036:8;15033:16;15028:2;15022:4;15019:12;15015:35;15012:77;15009:159;;;-1:-1:-1;15121:19:111;;;15153:5;;15009:159;15200:34;15225:8;15219:4;15200:34;:::i;:::-;15330:6;-1:-1:-1;;15258:79:111;15249:7;15246:92;15243:118;;;15341:18;;:::i;:::-;15379:20;;14539:866;-1:-1:-1;;;14539:866:111:o;15410:131::-;15470:5;15499:36;15526:8;15520:4;15499:36;:::i;15546:200::-;15612:9;;;15585:4;15640:9;;15668:10;;15680:12;;;15664:29;15703:12;;;15695:21;;15661:56;15658:82;;;15720:18;;:::i;:::-;15658:82;15546:200;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1828400",
                "executionCost": "1926",
                "totalCost": "1830326"
              },
              "external": {
                "testCompareNames()": "infinite",
                "testIterateRRs()": "infinite",
                "testKeyTag()": "infinite",
                "testLabelCount()": "infinite",
                "testNameLength()": "infinite",
                "testSerialNumberGt()": "infinite"
              }
            },
            "methodIdentifiers": {
              "testCompareNames()": "976e62ac",
              "testIterateRRs()": "706fc4de",
              "testKeyTag()": "bb73daed",
              "testLabelCount()": "cc60617b",
              "testNameLength()": "0250cf9a",
              "testSerialNumberGt()": "9e4a090d"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"testCompareNames\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIterateRRs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testKeyTag\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testLabelCount\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNameLength\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSerialNumberGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/dnssec-oracle/TestRRUtils.sol\":\"TestRRUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\n/**\\n* @dev A library for working with mutable byte buffers in Solidity.\\n*\\n* Byte buffers are mutable and expandable, and provide a variety of primitives\\n* for writing to them. At any time you can fetch a bytes object containing the\\n* current contents of the buffer. The bytes object should not be stored between\\n* operations, as it may change due to resizing of the buffer.\\n*/\\nlibrary Buffer {\\n    /**\\n    * @dev Represents a mutable buffer. Buffers have a current value (buf) and\\n    *      a capacity. The capacity may be longer than the current value, in\\n    *      which case it can be extended without the need to allocate more memory.\\n    */\\n    struct buffer {\\n        bytes buf;\\n        uint capacity;\\n    }\\n\\n    /**\\n    * @dev Initializes a buffer with an initial capacity.\\n    * @param buf The buffer to initialize.\\n    * @param capacity The number of bytes of space to allocate the buffer.\\n    * @return The buffer, for chaining.\\n    */\\n    function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\\n        if (capacity % 32 != 0) {\\n            capacity += 32 - (capacity % 32);\\n        }\\n        // Allocate space for the buffer data\\n        buf.capacity = capacity;\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(buf, ptr)\\n            mstore(ptr, 0)\\n            mstore(0x40, add(32, add(ptr, capacity)))\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Initializes a new buffer from an existing bytes object.\\n    *      Changes to the buffer may mutate the original value.\\n    * @param b The bytes object to initialize the buffer with.\\n    * @return A new buffer.\\n    */\\n    function fromBytes(bytes memory b) internal pure returns(buffer memory) {\\n        buffer memory buf;\\n        buf.buf = b;\\n        buf.capacity = b.length;\\n        return buf;\\n    }\\n\\n    function resize(buffer memory buf, uint capacity) private pure {\\n        bytes memory oldbuf = buf.buf;\\n        init(buf, capacity);\\n        append(buf, oldbuf);\\n    }\\n\\n    function max(uint a, uint b) private pure returns(uint) {\\n        if (a > b) {\\n            return a;\\n        }\\n        return b;\\n    }\\n\\n    /**\\n    * @dev Sets buffer length to 0.\\n    * @param buf The buffer to truncate.\\n    * @return The original buffer, for chaining..\\n    */\\n    function truncate(buffer memory buf) internal pure returns (buffer memory) {\\n        assembly {\\n            let bufptr := mload(buf)\\n            mstore(bufptr, 0)\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The start offset to write to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes memory data, uint len) internal pure returns(buffer memory) {\\n        require(len <= data.length);\\n\\n        if (off + len > buf.capacity) {\\n            resize(buf, max(buf.capacity, len + off) * 2);\\n        }\\n\\n        uint dest;\\n        uint src;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Start address = buffer address + offset + sizeof(buffer length)\\n            dest := add(add(bufptr, 32), off)\\n            // Update buffer length if we're extending it\\n            if gt(add(len, off), buflen) {\\n                mstore(bufptr, add(len, off))\\n            }\\n            src := add(data, 32)\\n        }\\n\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint mask = (256 ** (32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @param len The number of bytes to copy.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data, uint len) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, len);\\n    }\\n\\n    /**\\n    * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, data.length);\\n    }\\n\\n    /**\\n    * @dev Writes a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write the byte at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeUint8(buffer memory buf, uint off, uint8 data) internal pure returns(buffer memory) {\\n        if (off >= buf.capacity) {\\n            resize(buf, buf.capacity * 2);\\n        }\\n\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Length of existing buffer data\\n            let buflen := mload(bufptr)\\n            // Address = buffer address + sizeof(buffer length) + off\\n            let dest := add(add(bufptr, off), 32)\\n            mstore8(dest, data)\\n            // Update buffer length if we extended it\\n            if eq(off, buflen) {\\n                mstore(bufptr, add(buflen, 1))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\\n        return writeUint8(buf, buf.buf.length, data);\\n    }\\n\\n    /**\\n    * @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\\n    *      exceed the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (left-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function write(buffer memory buf, uint off, bytes32 data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        unchecked {\\n            uint mask = (256 ** len) - 1;\\n            // Right-align data\\n            data = data >> (8 * (32 - len));\\n            assembly {\\n                // Memory address of the buffer data\\n                let bufptr := mload(buf)\\n                // Address = buffer address + sizeof(buffer length) + off + len\\n                let dest := add(add(bufptr, off), len)\\n                mstore(dest, or(and(mload(dest), not(mask)), data))\\n                // Update buffer length if we extended it\\n                if gt(add(off, len), mload(bufptr)) {\\n                    mstore(bufptr, add(off, len))\\n                }\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n    * @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\\n    *      capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeBytes20(buffer memory buf, uint off, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, off, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chhaining.\\n    */\\n    function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, bytes32(data), 20);\\n    }\\n\\n    /**\\n    * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param data The data to append.\\n    * @return The original buffer, for chaining.\\n    */\\n    function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\\n        return write(buf, buf.buf.length, data, 32);\\n    }\\n\\n    /**\\n    * @dev Writes an integer to the buffer. Resizes if doing so would exceed\\n    *      the capacity of the buffer.\\n    * @param buf The buffer to append to.\\n    * @param off The offset to write at.\\n    * @param data The data to append.\\n    * @param len The number of bytes to write (right-aligned).\\n    * @return The original buffer, for chaining.\\n    */\\n    function writeInt(buffer memory buf, uint off, uint data, uint len) private pure returns(buffer memory) {\\n        if (len + off > buf.capacity) {\\n            resize(buf, (len + off) * 2);\\n        }\\n\\n        uint mask = (256 ** len) - 1;\\n        assembly {\\n            // Memory address of the buffer data\\n            let bufptr := mload(buf)\\n            // Address = buffer address + off + sizeof(buffer length) + len\\n            let dest := add(add(bufptr, off), len)\\n            mstore(dest, or(and(mload(dest), not(mask)), data))\\n            // Update buffer length if we extended it\\n            if gt(add(off, len), mload(bufptr)) {\\n                mstore(bufptr, add(off, len))\\n            }\\n        }\\n        return buf;\\n    }\\n\\n    /**\\n     * @dev Appends a byte to the end of the buffer. Resizes if doing so would\\n     * exceed the capacity of the buffer.\\n     * @param buf The buffer to append to.\\n     * @param data The data to append.\\n     * @return The original buffer.\\n     */\\n    function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\\n        return writeInt(buf, buf.buf.length, data, len);\\n    }\\n}\\n\",\"keccak256\":\"0x18e42be1a3e4f7b4442d7ab0b524af5e09163503439954faf0ab3792cce91caa\"},\"contracts/dnssec-oracle/BytesUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nlibrary BytesUtils {\\n    /*\\n     * @dev Returns the keccak-256 hash of a byte range.\\n     * @param self The byte string to hash.\\n     * @param offset The position to start hashing at.\\n     * @param len The number of bytes to hash.\\n     * @return The hash of the byte range.\\n     */\\n    function keccak(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(offset + len <= self.length);\\n        assembly {\\n            ret := keccak256(add(add(self, 32), offset), len)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal.\\n     * @param self The first bytes to compare.\\n     * @param other The second bytes to compare.\\n     * @return The result of the comparison.\\n     */\\n    function compare(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        return compare(self, 0, self.length, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns a positive number if `other` comes lexicographically after\\n     *      `self`, a negative number if it comes before, or zero if the\\n     *      contents of the two bytes are equal. Comparison is done per-rune,\\n     *      on unicode codepoints.\\n     * @param self The first bytes to compare.\\n     * @param offset The offset of self.\\n     * @param len    The length of self.\\n     * @param other The second bytes to compare.\\n     * @param otheroffset The offset of the other string.\\n     * @param otherlen    The length of the other string.\\n     * @return The result of the comparison.\\n     */\\n    function compare(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len,\\n        bytes memory other,\\n        uint256 otheroffset,\\n        uint256 otherlen\\n    ) internal pure returns (int256) {\\n        uint256 shortest = len;\\n        if (otherlen < len) shortest = otherlen;\\n\\n        uint256 selfptr;\\n        uint256 otherptr;\\n\\n        assembly {\\n            selfptr := add(self, add(offset, 32))\\n            otherptr := add(other, add(otheroffset, 32))\\n        }\\n        for (uint256 idx = 0; idx < shortest; idx += 32) {\\n            uint256 a;\\n            uint256 b;\\n            assembly {\\n                a := mload(selfptr)\\n                b := mload(otherptr)\\n            }\\n            if (a != b) {\\n                // Mask out irrelevant bytes and check again\\n                uint256 mask;\\n                if (shortest > 32) {\\n                    mask = type(uint256).max;\\n                } else {\\n                    mask = ~(2**(8 * (32 - shortest + idx)) - 1);\\n                }\\n                int256 diff = int256(a & mask) - int256(b & mask);\\n                if (diff != 0) return diff;\\n            }\\n            selfptr += 32;\\n            otherptr += 32;\\n        }\\n\\n        return int256(len) - int256(otherlen);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @param len The number of bytes to compare\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset,\\n        uint256 len\\n    ) internal pure returns (bool) {\\n        return keccak(self, offset, len) == keccak(other, otherOffset, len);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal with offsets.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @param otherOffset The offset into the second byte range.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other,\\n        uint256 otherOffset\\n    ) internal pure returns (bool) {\\n        return\\n            keccak(self, offset, self.length - offset) ==\\n            keccak(other, otherOffset, other.length - otherOffset);\\n    }\\n\\n    /*\\n     * @dev Compares a range of 'self' to all of 'other' and returns True iff\\n     *      they are equal.\\n     * @param self The first byte range to compare.\\n     * @param offset The offset into the first byte range.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(\\n        bytes memory self,\\n        uint256 offset,\\n        bytes memory other\\n    ) internal pure returns (bool) {\\n        return\\n            self.length >= offset + other.length &&\\n            equals(self, offset, other, 0, other.length);\\n    }\\n\\n    /*\\n     * @dev Returns true if the two byte ranges are equal.\\n     * @param self The first byte range to compare.\\n     * @param other The second byte range to compare.\\n     * @return True if the byte ranges are equal, false otherwise.\\n     */\\n    function equals(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return\\n            self.length == other.length &&\\n            equals(self, 0, other, 0, self.length);\\n    }\\n\\n    /*\\n     * @dev Returns the 8-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 8 bits of the string, interpreted as an integer.\\n     */\\n    function readUint8(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint8 ret)\\n    {\\n        return uint8(self[idx]);\\n    }\\n\\n    /*\\n     * @dev Returns the 16-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 16 bits of the string, interpreted as an integer.\\n     */\\n    function readUint16(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint16 ret)\\n    {\\n        require(idx + 2 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32-bit number at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bits of the string, interpreted as an integer.\\n     */\\n    function readUint32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (uint32 ret)\\n    {\\n        require(idx + 4 <= self.length);\\n        assembly {\\n            ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes32(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes32 ret)\\n    {\\n        require(idx + 32 <= self.length);\\n        assembly {\\n            ret := mload(add(add(self, 32), idx))\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the 32 byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytes20(bytes memory self, uint256 idx)\\n        internal\\n        pure\\n        returns (bytes20 ret)\\n    {\\n        require(idx + 20 <= self.length);\\n        assembly {\\n            ret := and(\\n                mload(add(add(self, 32), idx)),\\n                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000\\n            )\\n        }\\n    }\\n\\n    /*\\n     * @dev Returns the n byte value at the specified index of self.\\n     * @param self The byte string.\\n     * @param idx The index into the bytes.\\n     * @param len The number of bytes.\\n     * @return The specified 32 bytes of the string.\\n     */\\n    function readBytesN(\\n        bytes memory self,\\n        uint256 idx,\\n        uint256 len\\n    ) internal pure returns (bytes32 ret) {\\n        require(len <= 32);\\n        require(idx + len <= self.length);\\n        assembly {\\n            let mask := not(sub(exp(256, sub(32, len)), 1))\\n            ret := and(mload(add(add(self, 32), idx)), mask)\\n        }\\n    }\\n\\n    function memcpy(\\n        uint256 dest,\\n        uint256 src,\\n        uint256 len\\n    ) private pure {\\n        // Copy word-length chunks while possible\\n        for (; len >= 32; len -= 32) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n            dest += 32;\\n            src += 32;\\n        }\\n\\n        // Copy remaining bytes\\n        unchecked {\\n            uint256 mask = (256**(32 - len)) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask))\\n                let destpart := and(mload(dest), mask)\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n\\n    /*\\n     * @dev Copies a substring into a new byte string.\\n     * @param self The byte string to copy from.\\n     * @param offset The offset to start copying at.\\n     * @param len The number of bytes to copy.\\n     */\\n    function substring(\\n        bytes memory self,\\n        uint256 offset,\\n        uint256 len\\n    ) internal pure returns (bytes memory) {\\n        require(offset + len <= self.length);\\n\\n        bytes memory ret = new bytes(len);\\n        uint256 dest;\\n        uint256 src;\\n\\n        assembly {\\n            dest := add(ret, 32)\\n            src := add(add(self, 32), offset)\\n        }\\n        memcpy(dest, src, len);\\n\\n        return ret;\\n    }\\n\\n    // Maps characters from 0x30 to 0x7A to their base32 values.\\n    // 0xFF represents invalid characters in that range.\\n    bytes constant base32HexTable =\\n        hex\\\"00010203040506070809FFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1FFFFFFFFFFFFFFFFFFFFF0A0B0C0D0E0F101112131415161718191A1B1C1D1E1F\\\";\\n\\n    /**\\n     * @dev Decodes unpadded base32 data of up to one word in length.\\n     * @param self The data to decode.\\n     * @param off Offset into the string to start at.\\n     * @param len Number of characters to decode.\\n     * @return The decoded data, left aligned.\\n     */\\n    function base32HexDecodeWord(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len\\n    ) internal pure returns (bytes32) {\\n        require(len <= 52);\\n\\n        uint256 ret = 0;\\n        uint8 decoded;\\n        for (uint256 i = 0; i < len; i++) {\\n            bytes1 char = self[off + i];\\n            require(char >= 0x30 && char <= 0x7A);\\n            decoded = uint8(base32HexTable[uint256(uint8(char)) - 0x30]);\\n            require(decoded <= 0x20);\\n            if (i == len - 1) {\\n                break;\\n            }\\n            ret = (ret << 5) | decoded;\\n        }\\n\\n        uint256 bitlen = len * 5;\\n        if (len % 8 == 0) {\\n            // Multiple of 8 characters, no padding\\n            ret = (ret << 5) | decoded;\\n        } else if (len % 8 == 2) {\\n            // Two extra characters - 1 byte\\n            ret = (ret << 3) | (decoded >> 2);\\n            bitlen -= 2;\\n        } else if (len % 8 == 4) {\\n            // Four extra characters - 2 bytes\\n            ret = (ret << 1) | (decoded >> 4);\\n            bitlen -= 4;\\n        } else if (len % 8 == 5) {\\n            // Five extra characters - 3 bytes\\n            ret = (ret << 4) | (decoded >> 1);\\n            bitlen -= 1;\\n        } else if (len % 8 == 7) {\\n            // Seven extra characters - 4 bytes\\n            ret = (ret << 2) | (decoded >> 3);\\n            bitlen -= 3;\\n        } else {\\n            revert();\\n        }\\n\\n        return bytes32(ret << (256 - bitlen));\\n    }\\n\\n    /**\\n     * @dev Finds the first occurrence of the byte `needle` in `self`.\\n     * @param self The string to search\\n     * @param off The offset to start searching at\\n     * @param len The number of bytes to search\\n     * @param needle The byte to search for\\n     * @return The offset of `needle` in `self`, or 2**256-1 if it was not found.\\n     */\\n    function find(\\n        bytes memory self,\\n        uint256 off,\\n        uint256 len,\\n        bytes1 needle\\n    ) internal pure returns (uint256) {\\n        for (uint256 idx = off; idx < off + len; idx++) {\\n            if (self[idx] == needle) {\\n                return idx;\\n            }\\n        }\\n        return type(uint256).max;\\n    }\\n}\\n\",\"keccak256\":\"0xbb12e0c376de4b977f5b43a85b8b28d951c16362a58e35d061d7543f16a923a9\"},\"contracts/dnssec-oracle/RRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"./BytesUtils.sol\\\";\\nimport \\\"@ensdomains/buffer/contracts/Buffer.sol\\\";\\n\\n/**\\n * @dev RRUtils is a library that provides utilities for parsing DNS resource records.\\n */\\nlibrary RRUtils {\\n    using BytesUtils for *;\\n    using Buffer for *;\\n\\n    /**\\n     * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The length of the DNS name at 'offset', in bytes.\\n     */\\n    function nameLength(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 idx = offset;\\n        while (true) {\\n            assert(idx < self.length);\\n            uint256 labelLen = self.readUint8(idx);\\n            idx += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n        }\\n        return idx - offset;\\n    }\\n\\n    /**\\n     * @dev Returns a DNS format name at the specified offset of self.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return ret The name.\\n     */\\n    function readName(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (bytes memory ret)\\n    {\\n        uint256 len = nameLength(self, offset);\\n        return self.substring(offset, len);\\n    }\\n\\n    /**\\n     * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\\n     * @param self The byte array to read a name from.\\n     * @param offset The offset to start reading at.\\n     * @return The number of labels in the DNS name at 'offset', in bytes.\\n     */\\n    function labelCount(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        uint256 count = 0;\\n        while (true) {\\n            assert(offset < self.length);\\n            uint256 labelLen = self.readUint8(offset);\\n            offset += labelLen + 1;\\n            if (labelLen == 0) {\\n                break;\\n            }\\n            count += 1;\\n        }\\n        return count;\\n    }\\n\\n    uint256 constant RRSIG_TYPE = 0;\\n    uint256 constant RRSIG_ALGORITHM = 2;\\n    uint256 constant RRSIG_LABELS = 3;\\n    uint256 constant RRSIG_TTL = 4;\\n    uint256 constant RRSIG_EXPIRATION = 8;\\n    uint256 constant RRSIG_INCEPTION = 12;\\n    uint256 constant RRSIG_KEY_TAG = 16;\\n    uint256 constant RRSIG_SIGNER_NAME = 18;\\n\\n    struct SignedSet {\\n        uint16 typeCovered;\\n        uint8 algorithm;\\n        uint8 labels;\\n        uint32 ttl;\\n        uint32 expiration;\\n        uint32 inception;\\n        uint16 keytag;\\n        bytes signerName;\\n        bytes data;\\n        bytes name;\\n    }\\n\\n    function readSignedSet(bytes memory data)\\n        internal\\n        pure\\n        returns (SignedSet memory self)\\n    {\\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\\n        self.labels = data.readUint8(RRSIG_LABELS);\\n        self.ttl = data.readUint32(RRSIG_TTL);\\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\\n        self.inception = data.readUint32(RRSIG_INCEPTION);\\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\\n        self.data = data.substring(\\n            RRSIG_SIGNER_NAME + self.signerName.length,\\n            data.length - RRSIG_SIGNER_NAME - self.signerName.length\\n        );\\n    }\\n\\n    function rrs(SignedSet memory rrset)\\n        internal\\n        pure\\n        returns (RRIterator memory)\\n    {\\n        return iterateRRs(rrset.data, 0);\\n    }\\n\\n    /**\\n     * @dev An iterator over resource records.\\n     */\\n    struct RRIterator {\\n        bytes data;\\n        uint256 offset;\\n        uint16 dnstype;\\n        uint16 class;\\n        uint32 ttl;\\n        uint256 rdataOffset;\\n        uint256 nextOffset;\\n    }\\n\\n    /**\\n     * @dev Begins iterating over resource records.\\n     * @param self The byte string to read from.\\n     * @param offset The offset to start reading at.\\n     * @return ret An iterator object.\\n     */\\n    function iterateRRs(bytes memory self, uint256 offset)\\n        internal\\n        pure\\n        returns (RRIterator memory ret)\\n    {\\n        ret.data = self;\\n        ret.nextOffset = offset;\\n        next(ret);\\n    }\\n\\n    /**\\n     * @dev Returns true iff there are more RRs to iterate.\\n     * @param iter The iterator to check.\\n     * @return True iff the iterator has finished.\\n     */\\n    function done(RRIterator memory iter) internal pure returns (bool) {\\n        return iter.offset >= iter.data.length;\\n    }\\n\\n    /**\\n     * @dev Moves the iterator to the next resource record.\\n     * @param iter The iterator to advance.\\n     */\\n    function next(RRIterator memory iter) internal pure {\\n        iter.offset = iter.nextOffset;\\n        if (iter.offset >= iter.data.length) {\\n            return;\\n        }\\n\\n        // Skip the name\\n        uint256 off = iter.offset + nameLength(iter.data, iter.offset);\\n\\n        // Read type, class, and ttl\\n        iter.dnstype = iter.data.readUint16(off);\\n        off += 2;\\n        iter.class = iter.data.readUint16(off);\\n        off += 2;\\n        iter.ttl = iter.data.readUint32(off);\\n        off += 4;\\n\\n        // Read the rdata\\n        uint256 rdataLength = iter.data.readUint16(off);\\n        off += 2;\\n        iter.rdataOffset = off;\\n        iter.nextOffset = off + rdataLength;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the owner name from the RR.\\n     */\\n    function name(RRIterator memory iter) internal pure returns (bytes memory) {\\n        return\\n            iter.data.substring(\\n                iter.offset,\\n                nameLength(iter.data, iter.offset)\\n            );\\n    }\\n\\n    /**\\n     * @dev Returns the rdata portion of the current record.\\n     * @param iter The iterator.\\n     * @return A new bytes object containing the RR's RDATA.\\n     */\\n    function rdata(RRIterator memory iter)\\n        internal\\n        pure\\n        returns (bytes memory)\\n    {\\n        return\\n            iter.data.substring(\\n                iter.rdataOffset,\\n                iter.nextOffset - iter.rdataOffset\\n            );\\n    }\\n\\n    uint256 constant DNSKEY_FLAGS = 0;\\n    uint256 constant DNSKEY_PROTOCOL = 2;\\n    uint256 constant DNSKEY_ALGORITHM = 3;\\n    uint256 constant DNSKEY_PUBKEY = 4;\\n\\n    struct DNSKEY {\\n        uint16 flags;\\n        uint8 protocol;\\n        uint8 algorithm;\\n        bytes publicKey;\\n    }\\n\\n    function readDNSKEY(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DNSKEY memory self) {\\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\\n        self.publicKey = data.substring(\\n            offset + DNSKEY_PUBKEY,\\n            length - DNSKEY_PUBKEY\\n        );\\n    }\\n\\n    uint256 constant DS_KEY_TAG = 0;\\n    uint256 constant DS_ALGORITHM = 2;\\n    uint256 constant DS_DIGEST_TYPE = 3;\\n    uint256 constant DS_DIGEST = 4;\\n\\n    struct DS {\\n        uint16 keytag;\\n        uint8 algorithm;\\n        uint8 digestType;\\n        bytes digest;\\n    }\\n\\n    function readDS(\\n        bytes memory data,\\n        uint256 offset,\\n        uint256 length\\n    ) internal pure returns (DS memory self) {\\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\\n    }\\n\\n    function compareNames(bytes memory self, bytes memory other)\\n        internal\\n        pure\\n        returns (int256)\\n    {\\n        if (self.equals(other)) {\\n            return 0;\\n        }\\n\\n        uint256 off;\\n        uint256 otheroff;\\n        uint256 prevoff;\\n        uint256 otherprevoff;\\n        uint256 counts = labelCount(self, 0);\\n        uint256 othercounts = labelCount(other, 0);\\n\\n        // Keep removing labels from the front of the name until both names are equal length\\n        while (counts > othercounts) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            counts--;\\n        }\\n\\n        while (othercounts > counts) {\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            othercounts--;\\n        }\\n\\n        // Compare the last nonequal labels to each other\\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\\n            prevoff = off;\\n            off = progress(self, off);\\n            otherprevoff = otheroff;\\n            otheroff = progress(other, otheroff);\\n            counts -= 1;\\n        }\\n\\n        if (off == 0) {\\n            return -1;\\n        }\\n        if (otheroff == 0) {\\n            return 1;\\n        }\\n\\n        return\\n            self.compare(\\n                prevoff + 1,\\n                self.readUint8(prevoff),\\n                other,\\n                otherprevoff + 1,\\n                other.readUint8(otherprevoff)\\n            );\\n    }\\n\\n    /**\\n     * @dev Compares two serial numbers using RFC1982 serial number math.\\n     */\\n    function serialNumberGte(uint32 i1, uint32 i2)\\n        internal\\n        pure\\n        returns (bool)\\n    {\\n        return int32(i1) - int32(i2) >= 0;\\n    }\\n\\n    function progress(bytes memory body, uint256 off)\\n        internal\\n        pure\\n        returns (uint256)\\n    {\\n        return off + 1 + body.readUint8(off);\\n    }\\n\\n    /**\\n     * @dev Computes the keytag for a chunk of data.\\n     * @param data The data to compute a keytag for.\\n     * @return The computed key tag.\\n     */\\n    function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n        /* This function probably deserves some explanation.\\n         * The DNSSEC keytag function is a checksum that relies on summing up individual bytes\\n         * from the input string, with some mild bitshifting. Here's a Naive solidity implementation:\\n         *\\n         *     function computeKeytag(bytes memory data) internal pure returns (uint16) {\\n         *         uint ac;\\n         *         for (uint i = 0; i < data.length; i++) {\\n         *             ac += i & 1 == 0 ? uint16(data.readUint8(i)) << 8 : data.readUint8(i);\\n         *         }\\n         *         return uint16(ac + (ac >> 16));\\n         *     }\\n         *\\n         * The EVM, with its 256 bit words, is exceedingly inefficient at doing byte-by-byte operations;\\n         * the code above, on reasonable length inputs, consumes over 100k gas. But we can make the EVM's\\n         * large words work in our favour.\\n         *\\n         * The code below works by treating the input as a series of 256 bit words. It first masks out\\n         * even and odd bytes from each input word, adding them to two separate accumulators `ac1` and `ac2`.\\n         * The bytes are separated by empty bytes, so as long as no individual sum exceeds 2^16-1, we're\\n         * effectively summing 16 different numbers with each EVM ADD opcode.\\n         *\\n         * Once it's added up all the inputs, it has to add all the 16 bit values in `ac1` and `ac2` together.\\n         * It does this using the same trick - mask out every other value, shift to align them, add them together.\\n         * After the first addition on both accumulators, there's enough room to add the two accumulators together,\\n         * and the remaining sums can be done just on ac1.\\n         */\\n        unchecked {\\n            require(data.length <= 8192, \\\"Long keys not permitted\\\");\\n            uint256 ac1;\\n            uint256 ac2;\\n            for (uint256 i = 0; i < data.length + 31; i += 32) {\\n                uint256 word;\\n                assembly {\\n                    word := mload(add(add(data, 32), i))\\n                }\\n                if (i + 32 > data.length) {\\n                    uint256 unused = 256 - (data.length - i) * 8;\\n                    word = (word >> unused) << unused;\\n                }\\n                ac1 +=\\n                    (word &\\n                        0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >>\\n                    8;\\n                ac2 += (word &\\n                    0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);\\n            }\\n            ac1 =\\n                (ac1 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac1 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac2 =\\n                (ac2 &\\n                    0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) +\\n                ((ac2 &\\n                    0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >>\\n                    16);\\n            ac1 = (ac1 << 8) + ac2;\\n            ac1 =\\n                (ac1 &\\n                    0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >>\\n                    32);\\n            ac1 =\\n                (ac1 &\\n                    0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) +\\n                ((ac1 &\\n                    0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >>\\n                    64);\\n            ac1 =\\n                (ac1 &\\n                    0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +\\n                (ac1 >> 128);\\n            ac1 += (ac1 >> 16) & 0xFFFF;\\n            return uint16(ac1);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc40cbcdbc625038ecec82017337ada164c9778069136c0ade9f0ab07aaa6f188\"},\"test/dnssec-oracle/TestRRUtils.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\nimport \\\"../../contracts/dnssec-oracle/RRUtils.sol\\\";\\nimport \\\"../../contracts/dnssec-oracle/BytesUtils.sol\\\";\\n\\ncontract TestRRUtils {\\n  using BytesUtils for *;\\n  using RRUtils for *;\\n\\n  uint16 constant DNSTYPE_A = 1;\\n  uint16 constant DNSTYPE_CNAME = 5;\\n  uint16 constant DNSTYPE_MX = 15;\\n  uint16 constant DNSTYPE_TEXT = 16;\\n  uint16 constant DNSTYPE_RRSIG = 46;\\n  uint16 constant DNSTYPE_TYPE1234 = 1234;\\n\\n  function testNameLength() public pure {\\n    require(hex'00'.nameLength(0) == 1, \\\"nameLength('.') == 1\\\");\\n    require(hex'0361626300'.nameLength(4) == 1, \\\"nameLength('.') == 1\\\");\\n    require(hex'0361626300'.nameLength(0) == 5, \\\"nameLength('abc.') == 5\\\");\\n  }\\n\\n  function testLabelCount() public pure {\\n    require(hex'00'.labelCount(0) == 0, \\\"labelCount('.') == 0\\\");\\n    require(hex'016100'.labelCount(0) == 1, \\\"labelCount('a.') == 1\\\");\\n    require(hex'016201610000'.labelCount(0) == 2, \\\"labelCount('b.a.') == 2\\\");\\n    require(hex'066574686c61620378797a00'.labelCount(6 +1) == 1, \\\"nameLength('(bthlab).xyz.') == 6\\\");\\n  }\\n\\n  function testIterateRRs() public pure {\\n    // a. IN A 3600 127.0.0.1\\n    // b.a. IN A 3600 192.168.1.1\\n    bytes memory rrs = hex'0161000001000100000e1000047400000101620161000001000100000e100004c0a80101';\\n    bytes[2] memory names = [bytes(hex'016100'), bytes(hex'0162016100')];\\n    bytes[2] memory rdatas = [bytes(hex'74000001'), bytes(hex'c0a80101')];\\n    uint i = 0;\\n    for(RRUtils.RRIterator memory iter = rrs.iterateRRs(0); !iter.done(); iter.next()) {\\n      require(uint(iter.dnstype) == 1, \\\"Type matches\\\");\\n      require(uint(iter.class) == 1, \\\"Class matches\\\");\\n      require(uint(iter.ttl) == 3600, \\\"TTL matches\\\");\\n      require(keccak256(iter.name()) == keccak256(names[i]), \\\"Name matches\\\");\\n      require(keccak256(iter.rdata()) == keccak256(rdatas[i]), \\\"Rdata matches\\\");\\n      i++;\\n    }\\n    require(i == 2, \\\"Expected 2 records\\\");\\n  }\\n\\n  // Canonical ordering https://tools.ietf.org/html/rfc4034#section-6.1\\n  function testCompareNames() public pure {\\n    bytes memory bthLabXyz = hex'066274686c61620378797a00';\\n    bytes memory ethLabXyz = hex'066574686c61620378797a00';\\n    bytes memory xyz = hex'0378797a00';\\n    bytes memory a_b_c  = hex'01610162016300';\\n    bytes memory b_b_c  = hex'01620162016300';\\n    bytes memory c      = hex'016300';\\n    bytes memory d      = hex'016400';\\n    bytes memory a_d_c  = hex'01610164016300';\\n    bytes memory b_a_c  = hex'01620161016300';\\n    bytes memory ab_c_d = hex'0261620163016400';\\n    bytes memory a_c_d  = hex'01610163016400';\\n\\n    require(hex'0301616100'.compareNames(hex'0302616200') <  0,  \\\"label lengths are correctly checked\\\");\\n    require(a_b_c.compareNames(c)      >  0,  \\\"one name has a difference of >1 label to with the same root name\\\");\\n    require(a_b_c.compareNames(d)      <  0, \\\"one name has a difference of >1 label to with different root name\\\");\\n    require(a_b_c.compareNames(a_d_c)  <  0, \\\"two names start the same but have differences in later labels\\\");\\n    require(a_b_c.compareNames(b_a_c)  >  0, \\\"the first label sorts later, but the first label sorts earlier\\\");\\n    require(ab_c_d.compareNames(a_c_d) >  0, \\\"two names where the first label on one is a prefix of the first label on the other\\\");\\n    require(a_b_c.compareNames(b_b_c)  <  0, \\\"two names where the first label on one is a prefix of the first label on the other\\\");\\n    require(xyz.compareNames(ethLabXyz) < 0, \\\"xyz comes before ethLab.xyz\\\");\\n    require(bthLabXyz.compareNames(ethLabXyz) < 0, \\\"bthLab.xyz comes before ethLab.xyz\\\");\\n    require(bthLabXyz.compareNames(bthLabXyz) == 0, \\\"bthLab.xyz and bthLab.xyz are the same\\\");\\n    require(ethLabXyz.compareNames(bthLabXyz) >  0, \\\"ethLab.xyz comes after bethLab.xyz\\\");\\n    require(bthLabXyz.compareNames(xyz)       >  0, \\\"bthLab.xyz comes after xyz\\\");\\n  }\\n\\n  function testSerialNumberGt() public pure {\\n    require(RRUtils.serialNumberGte(1, 0), \\\"1 >= 0\\\");\\n    require(!RRUtils.serialNumberGte(0, 1), \\\"!(0 <= 1)\\\");\\n    require(RRUtils.serialNumberGte(0, 0xFFFFFFFF), \\\"0 >= 0xFFFFFFFF\\\");\\n    require(!RRUtils.serialNumberGte(0xFFFFFFFF, 0), \\\"!(0 <= 0xFFFFFFFF)\\\");\\n    require(RRUtils.serialNumberGte(0x11111111, 0xAAAAAAAA), \\\"0x11111111 >= 0xAAAAAAAA\\\");\\n    require(RRUtils.serialNumberGte(1, 1), \\\"1 >= 1\\\");\\n  }\\n\\n  function testKeyTag() public view {\\n    require(hex'0101030803010001a80020a95566ba42e886bb804cda84e47ef56dbd7aec612615552cec906d2116d0ef207028c51554144dfeafe7c7cb8f005dd18234133ac0710a81182ce1fd14ad2283bc83435f9df2f6313251931a176df0da51e54f42e604860dfb359580250f559cc543c4ffd51cbe3de8cfd06719237f9fc47ee729da06835fa452e825e9a18ebc2ecbcf563474652c33cf56a9033bcdf5d973121797ec8089041b6e03a1b72d0a735b984e03687309332324f27c2dba85e9db15e83a0143382e974b0621c18e625ecec907577d9e7bade95241a81ebbe8a901d4d3276e40b114c0a2e6fc38d19c2e6aab02644b2813f575fc21601e0dee49cd9ee96a43103e524d62873d'.computeKeytag() == 19036, \\\"Invalid keytag\\\");\\n    require(hex'010003050440000003ba2fa05a75e173bede89eb71831ab14035f2408ad09df4d8dc8f8f72e8f13506feaddf7b04cb14958b82966e3420562302c4002bc4fd088432e160519bb14dae82443850c1423e06085710b5caf070d46b7ba7e481414f6a5fe225fdca984c959091645d0cf1c9a1a313d7e7fb7ba60b967b71a65f8cef2c3768e11b081c8fcf'.computeKeytag() == 21693, \\\"Invalid keytag (2)\\\");\\n    require(hex'0100030503010001bfa54c38d909fabb0f937d70d775ba0df4c0badb09707d995249406950407a621c794c68b186b15dbf8f9f9ea231e9f96414ccda4eceb50b17a9ac6c4bd4b95da04849e96ee791578b703bc9ae184fb1794bac792a0787f693a40f19f523ee6dbd3599dbaaa9a50437926ecf6438845d1d49448962524f2a1a7a36b3a0a1eca3'.computeKeytag() == 33630);\\n    require(hex'0101030803010001acffb409bcc939f831f7a1e5ec88f7a59255ec53040be432027390a4ce896d6f9086f3c5e177fbfe118163aaec7af1462c47945944c4e2c026be5e98bbcded25978272e1e3e079c5094d573f0e83c92f02b32d3513b1550b826929c80dd0f92cac966d17769fd5867b647c3f38029abdc48152eb8f207159ecc5d232c7c1537c79f4b7ac28ff11682f21681bf6d6aba555032bf6f9f036beb2aaa5b3778d6eebfba6bf9ea191be4ab0caea759e2f773a1f9029c73ecb8d5735b9321db085f1b8e2d8038fe2941992548cee0d67dd4547e11dd63af9c9fc1c5466fb684cf009d7197c2cf79e792ab501e6a8a1ca519af2cb9b5f6367e94c0d47502451357be1b5'.computeKeytag() == 20326, \\\"Invalid keytag (3)\\\");\\n  }\\n}\",\"keccak256\":\"0x64d7c29d6863b414730833560884808372ad899d9d60ac4f03acba2a5583e3c0\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "test/utils/mocks/DummyOffchainResolver.sol": {
        "DummyOffchainResolver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "string[]",
                  "name": "urls",
                  "type": "string[]"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes4",
                  "name": "callbackFunction",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "extraData",
                  "type": "bytes"
                }
              ],
              "name": "OffchainLookup",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "resolve",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "extraData",
                  "type": "bytes"
                }
              ],
              "name": "resolveCallback",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610653806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780639061b9231461006e578063b4a858011461008f575b600080fd5b6100596100543660046102f5565b6100af565b60405190151581526020015b60405180910390f35b61008161007c366004610387565b610148565b604051610065929190610457565b6100a261009d366004610387565b610238565b604051610065919061048f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f9061b92300000000000000000000000000000000000000000000000000000000148061014257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040805160018082528183019092526060916000918291816020015b60608152602001906001900390816101645790505090506040518060400160405280601481526020017f68747470733a2f2f6578616d706c652e636f6d2f000000000000000000000000815250816000815181106101c4576101c46104a2565b60209081029190910101526040517f556f183000000000000000000000000000000000000000000000000000000000815261022f9030908390889088907fb4a8580100000000000000000000000000000000000000000000000000000000908390839060040161051a565b60405180910390fd5b6060828260405161024a92919061060d565b6040518091039020858560405161026292919061060d565b6040518091039020146102d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f526573706f6e73652064617461206572726f7200000000000000000000000000604482015260640161022f565b60408051306020820152016040516020818303038152906040529050949350505050565b60006020828403121561030757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461033757600080fd5b9392505050565b60008083601f84011261035057600080fd5b50813567ffffffffffffffff81111561036857600080fd5b60208301915083602082850101111561038057600080fd5b9250929050565b6000806000806040858703121561039d57600080fd5b843567ffffffffffffffff808211156103b557600080fd5b6103c18883890161033e565b909650945060208701359150808211156103da57600080fd5b506103e78782880161033e565b95989497509550505050565b6000815180845260005b81811015610419576020818501810151868301820152016103fd565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60408152600061046a60408301856103f3565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60208152600061033760208301846103f3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600060a0820173ffffffffffffffffffffffffffffffffffffffff8a168352602060a081850152818a5180845260c08601915060c08160051b8701019350828c0160005b828110156105aa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408887030184526105988683516103f3565b9550928401929084019060010161055e565b505050505082810360408401526105c281888a6104d1565b7fffffffff0000000000000000000000000000000000000000000000000000000087166060850152905082810360808401526105ff8185876104d1565b9a9950505050505050505050565b818382376000910190815291905056fea26469706673582212206915e5a895f39ed5b8fb7f704830cec8e23c8197960b0b7cb445fbaa5c7b222964736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x653 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x9061B923 EQ PUSH2 0x6E JUMPI DUP1 PUSH4 0xB4A85801 EQ PUSH2 0x8F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0xAF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x81 PUSH2 0x7C CALLDATASIZE PUSH1 0x4 PUSH2 0x387 JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65 SWAP3 SWAP2 SWAP1 PUSH2 0x457 JUMP JUMPDEST PUSH2 0xA2 PUSH2 0x9D CALLDATASIZE PUSH1 0x4 PUSH2 0x387 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65 SWAP2 SWAP1 PUSH2 0x48F JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x9061B92300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x142 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x164 JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68747470733A2F2F6578616D706C652E636F6D2F000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C4 JUMPI PUSH2 0x1C4 PUSH2 0x4A2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x556F183000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x22F SWAP1 ADDRESS SWAP1 DUP4 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH32 0xB4A8580100000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 SWAP1 DUP4 SWAP1 PUSH1 0x4 ADD PUSH2 0x51A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x24A SWAP3 SWAP2 SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x262 SWAP3 SWAP2 SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 EQ PUSH2 0x2D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526573706F6E73652064617461206572726F7200000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x22F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C1 DUP9 DUP4 DUP10 ADD PUSH2 0x33E JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E7 DUP8 DUP3 DUP9 ADD PUSH2 0x33E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x419 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3FD JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x46A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x337 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND DUP4 MSTORE PUSH1 0x20 PUSH1 0xA0 DUP2 DUP6 ADD MSTORE DUP2 DUP11 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP13 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5AA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 DUP9 DUP8 SUB ADD DUP5 MSTORE PUSH2 0x598 DUP7 DUP4 MLOAD PUSH2 0x3F3 JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x55E JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x5C2 DUP2 DUP9 DUP11 PUSH2 0x4D1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND PUSH1 0x60 DUP6 ADD MSTORE SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x5FF DUP2 DUP6 DUP8 PUSH2 0x4D1 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH10 0x15E5A895F39ED5B8FB7F PUSH17 0x4830CEC8E23C8197960B0B7CB445FBAA5C PUSH28 0x222964736F6C63430008110033000000000000000000000000000000 ",
              "sourceMap": "327:1074:109:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@resolveCallback_22506": {
                  "entryPoint": 568,
                  "id": 22506,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@resolve_22477": {
                  "entryPoint": 328,
                  "id": 22477,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@supportsInterface_22435": {
                  "entryPoint": 175,
                  "id": 22435,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_3081": {
                  "entryPoint": null,
                  "id": 3081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 830,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 757,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr": {
                  "entryPoint": 903,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_encode_bytes": {
                  "entryPoint": 1011,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_bytes_calldata": {
                  "entryPoint": 1233,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1549,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_calldata_ptr_t_bytes4_t_bytes_calldata_ptr__to_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1306,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1167,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                  "entryPoint": 1111,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3b0caf6665b5290cbc2282e9ad21c8e19c7ef4ed49064f8ac133df79eb082dfd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x32": {
                  "entryPoint": 1186,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:5798:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:111"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:111",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:111"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:111",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:111",
                            "type": ""
                          }
                        ],
                        "src": "14:332:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:111",
                            "type": ""
                          }
                        ],
                        "src": "351:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "615:275:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "664:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "673:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "676:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "666:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "666:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "666:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "643:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "651:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "639:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "639:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "658:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "635:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "635:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "628:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "628:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "625:55:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "689:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "712:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "699:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "699:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "762:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "771:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "774:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "764:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "764:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "764:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "734:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "742:18:111",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "731:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "731:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "728:50:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "787:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "803:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "811:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "799:17:111"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "787:8:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "868:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "877:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "880:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "870:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "870:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "839:6:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "847:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "835:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "835:19:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "856:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "831:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "831:30:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "863:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "828:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "828:39:111"
                              },
                              "nodeType": "YulIf",
                              "src": "825:59:111"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "578:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "586:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "594:8:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "604:6:111",
                            "type": ""
                          }
                        ],
                        "src": "543:347:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1020:592:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1066:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1075:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1078:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1068:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1068:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1068:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1041:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1050:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1037:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1037:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1062:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1033:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1033:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1030:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1091:37:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1118:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1105:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1105:23:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1095:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1137:28:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1147:18:111",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1141:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1192:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1201:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1204:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1194:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1194:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1194:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1180:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1188:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1177:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1177:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1174:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1217:84:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1273:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1284:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1269:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1269:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1293:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1243:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1243:58:111"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1221:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1231:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1310:18:111",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "1320:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1310:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1337:18:111",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1347:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1337:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1364:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1397:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1408:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1393:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1393:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1380:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1380:32:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1368:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1441:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1450:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1453:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1443:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1443:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1443:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1427:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1437:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1424:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1424:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1421:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1466:86:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1522:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1533:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1518:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1518:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1544:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1492:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1492:60:111"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1470:8:111",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1480:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1561:18:111",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1571:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1561:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1588:18:111",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "1598:8:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1588:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "962:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "973:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "985:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "993:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1001:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1009:6:111",
                            "type": ""
                          }
                        ],
                        "src": "895:717:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1666:432:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1676:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1696:5:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1690:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1690:12:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1680:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1718:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1723:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1711:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1711:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1711:19:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1739:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1748:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1743:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1810:110:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1824:14:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1834:4:111",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "1828:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1866:3:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1871:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1862:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1862:11:111"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "1875:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1858:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1858:20:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1894:5:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1901:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1890:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1890:13:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1905:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1886:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1886:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1880:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1880:29:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1851:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1851:59:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1851:59:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1769:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1772:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1766:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1766:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1780:21:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1782:17:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1791:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1794:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1787:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1787:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1782:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1762:3:111",
                                "statements": []
                              },
                              "src": "1758:162:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "1944:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1949:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1940:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1940:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1958:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1936:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1936:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1965:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1929:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1929:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1929:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1976:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1991:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2004:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2012:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2000:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2000:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2017:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1996:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1996:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1987:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1987:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2087:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1983:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1983:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1976:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1643:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1650:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1658:3:111",
                            "type": ""
                          }
                        ],
                        "src": "1617:481:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2250:190:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2267:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2278:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2260:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2260:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2260:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2290:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2315:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2327:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2338:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2323:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2323:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2298:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2298:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2290:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2362:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2373:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2358:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2358:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2382:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2390:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2378:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2378:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2351:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2351:83:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2351:83:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2211:9:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2222:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2230:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2241:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2103:337:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2564:98:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2581:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2592:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2574:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2574:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2574:21:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2604:52:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2629:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2641:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2652:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2637:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2637:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2612:16:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2612:44:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2604:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2533:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2544:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2555:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2445:217:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2699:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2716:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2719:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2709:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2709:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2709:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2813:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2816:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2806:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2806:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2806:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2837:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2840:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2830:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2830:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2830:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2667:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2888:152:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2905:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2908:77:111",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2898:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2898:88:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2898:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3002:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3005:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2995:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2995:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2995:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3026:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3029:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3019:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3019:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3019:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2856:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3111:259:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3128:3:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3133:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3121:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3121:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3121:19:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3166:3:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3171:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3162:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3162:14:111"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "3178:5:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3185:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3149:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3149:43:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3149:43:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "3216:3:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "3221:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3212:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3212:16:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3230:4:111",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3208:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3208:27:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3237:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3201:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3201:38:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3201:38:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3248:116:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3263:3:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3276:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3284:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3272:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3272:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3289:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3268:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3268:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3259:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3259:98:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3359:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3255:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3255:109:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3248:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "3080:5:111",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3087:6:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3095:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3103:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3045:325:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3418:107:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3435:3:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3444:5:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3451:66:111",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3440:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3440:78:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3428:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3428:91:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3428:91:111"
                            }
                          ]
                        },
                        "name": "abi_encode_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3402:5:111",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3409:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3375:150:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3867:1074:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3877:33:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3895:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3906:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3891:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3891:19:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3881:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3926:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3941:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3949:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3937:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3937:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3919:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3919:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3919:74:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4002:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4012:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4006:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4034:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4045:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4030:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4030:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4050:3:111",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4023:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4023:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4023:31:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4063:17:111",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "4074:6:111"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "4067:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4089:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4109:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4103:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4103:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4093:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4132:6:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4140:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4125:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4125:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4125:22:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4156:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4167:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4178:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4163:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4163:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4156:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4191:54:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4213:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4228:1:111",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "4231:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "4224:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4224:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4209:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4209:30:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4241:3:111",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4205:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4205:40:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4195:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4254:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4272:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4280:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4268:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4268:15:111"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4258:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4292:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4301:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4296:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4360:264:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4381:3:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4394:6:111"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4402:9:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "4390:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4390:22:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4414:66:111",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4386:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4386:95:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4374:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4374:108:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4374:108:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4495:49:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "4528:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4522:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4522:13:111"
                                        },
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4537:6:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "4505:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4505:39:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4495:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4557:25:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "4571:6:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4579:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4567:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4567:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4557:6:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4595:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4606:3:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4611:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4602:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4602:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4595:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4322:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4325:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4319:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4319:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4333:18:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4335:14:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4344:1:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4347:1:111",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4340:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4340:9:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4335:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4315:3:111",
                                "statements": []
                              },
                              "src": "4311:313:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4644:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4655:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4640:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4640:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4664:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4672:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4660:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4660:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4633:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4633:50:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4633:50:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4692:63:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4732:6:111"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4740:6:111"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4748:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4706:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4706:49:111"
                              },
                              "variables": [
                                {
                                  "name": "tail_3",
                                  "nodeType": "YulTypedName",
                                  "src": "4696:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "4782:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4794:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4805:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4790:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4790:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4764:17:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4764:45:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4764:45:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4829:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4840:3:111",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4825:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4825:19:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "4850:6:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4858:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4846:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4846:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4818:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4818:51:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4818:51:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4878:57:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "4912:6:111"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4920:6:111"
                                  },
                                  {
                                    "name": "tail_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4928:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4886:25:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4886:49:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4878:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_calldata_ptr_t_bytes4_t_bytes_calldata_ptr__to_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3788:9:111",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "3799:6:111",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3807:6:111",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3815:6:111",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3823:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3831:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3839:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3847:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3858:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3530:1411:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5093:124:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5116:3:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5121:6:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5129:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "5103:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5103:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5103:33:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5145:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5159:3:111"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5164:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5155:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5155:16:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5149:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5187:2:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5191:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5180:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5180:13:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5180:13:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5202:9:111",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "5209:2:111"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5202:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "5061:3:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5066:6:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5074:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "5085:3:111",
                            "type": ""
                          }
                        ],
                        "src": "4946:271:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5396:169:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5413:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5424:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5406:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5406:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5406:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5447:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5458:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5443:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5443:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5463:2:111",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5436:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5436:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5436:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5486:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5497:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5482:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5482:18:111"
                                  },
                                  {
                                    "hexValue": "526573706f6e73652064617461206572726f72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5502:21:111",
                                    "type": "",
                                    "value": "Response data error"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5475:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5475:49:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5475:49:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5533:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5545:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5556:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5541:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5541:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5533:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3b0caf6665b5290cbc2282e9ad21c8e19c7ef4ed49064f8ac133df79eb082dfd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5373:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5387:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5222:343:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5671:125:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5681:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5693:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5704:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5689:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5689:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5681:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5723:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5738:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5746:42:111",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5734:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5734:55:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5716:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5716:74:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5716:74:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5640:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5651:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5662:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5570:226:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_bytes4(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_calldata_ptr_t_bytes4_t_bytes_calldata_ptr__to_t_address_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_bytes_memory_ptr_t_bytes4_t_bytes_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 160)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        let _1 := 32\n        mstore(add(headStart, _1), 160)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        pos := add(headStart, 192)\n        let tail_2 := add(add(headStart, shl(5, length)), 192)\n        let srcPtr := add(value1, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        mstore(add(headStart, 64), sub(tail_2, headStart))\n        let tail_3 := abi_encode_bytes_calldata(value2, value3, tail_2)\n        abi_encode_bytes4(value4, add(headStart, 96))\n        mstore(add(headStart, 128), sub(tail_3, headStart))\n        tail := abi_encode_bytes_calldata(value5, value6, tail_3)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_3b0caf6665b5290cbc2282e9ad21c8e19c7ef4ed49064f8ac133df79eb082dfd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Response data error\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780639061b9231461006e578063b4a858011461008f575b600080fd5b6100596100543660046102f5565b6100af565b60405190151581526020015b60405180910390f35b61008161007c366004610387565b610148565b604051610065929190610457565b6100a261009d366004610387565b610238565b604051610065919061048f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f9061b92300000000000000000000000000000000000000000000000000000000148061014257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040805160018082528183019092526060916000918291816020015b60608152602001906001900390816101645790505090506040518060400160405280601481526020017f68747470733a2f2f6578616d706c652e636f6d2f000000000000000000000000815250816000815181106101c4576101c46104a2565b60209081029190910101526040517f556f183000000000000000000000000000000000000000000000000000000000815261022f9030908390889088907fb4a8580100000000000000000000000000000000000000000000000000000000908390839060040161051a565b60405180910390fd5b6060828260405161024a92919061060d565b6040518091039020858560405161026292919061060d565b6040518091039020146102d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f526573706f6e73652064617461206572726f7200000000000000000000000000604482015260640161022f565b60408051306020820152016040516020818303038152906040529050949350505050565b60006020828403121561030757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461033757600080fd5b9392505050565b60008083601f84011261035057600080fd5b50813567ffffffffffffffff81111561036857600080fd5b60208301915083602082850101111561038057600080fd5b9250929050565b6000806000806040858703121561039d57600080fd5b843567ffffffffffffffff808211156103b557600080fd5b6103c18883890161033e565b909650945060208701359150808211156103da57600080fd5b506103e78782880161033e565b95989497509550505050565b6000815180845260005b81811015610419576020818501810151868301820152016103fd565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60408152600061046a60408301856103f3565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60208152600061033760208301846103f3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600060a0820173ffffffffffffffffffffffffffffffffffffffff8a168352602060a081850152818a5180845260c08601915060c08160051b8701019350828c0160005b828110156105aa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408887030184526105988683516103f3565b9550928401929084019060010161055e565b505050505082810360408401526105c281888a6104d1565b7fffffffff0000000000000000000000000000000000000000000000000000000087166060850152905082810360808401526105ff8185876104d1565b9a9950505050505050505050565b818382376000910190815291905056fea26469706673582212206915e5a895f39ed5b8fb7f704830cec8e23c8197960b0b7cb445fbaa5c7b222964736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x9061B923 EQ PUSH2 0x6E JUMPI DUP1 PUSH4 0xB4A85801 EQ PUSH2 0x8F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0xAF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x81 PUSH2 0x7C CALLDATASIZE PUSH1 0x4 PUSH2 0x387 JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65 SWAP3 SWAP2 SWAP1 PUSH2 0x457 JUMP JUMPDEST PUSH2 0xA2 PUSH2 0x9D CALLDATASIZE PUSH1 0x4 PUSH2 0x387 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65 SWAP2 SWAP1 PUSH2 0x48F JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x9061B92300000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x142 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x164 JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x68747470733A2F2F6578616D706C652E636F6D2F000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C4 JUMPI PUSH2 0x1C4 PUSH2 0x4A2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x556F183000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x22F SWAP1 ADDRESS SWAP1 DUP4 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH32 0xB4A8580100000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 SWAP1 DUP4 SWAP1 PUSH1 0x4 ADD PUSH2 0x51A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x24A SWAP3 SWAP2 SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x262 SWAP3 SWAP2 SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 EQ PUSH2 0x2D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x526573706F6E73652064617461206572726F7200000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x22F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C1 DUP9 DUP4 DUP10 ADD PUSH2 0x33E JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E7 DUP8 DUP3 DUP9 ADD PUSH2 0x33E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x419 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3FD JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x46A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x337 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND DUP4 MSTORE PUSH1 0x20 PUSH1 0xA0 DUP2 DUP6 ADD MSTORE DUP2 DUP11 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP13 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5AA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 DUP9 DUP8 SUB ADD DUP5 MSTORE PUSH2 0x598 DUP7 DUP4 MLOAD PUSH2 0x3F3 JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x55E JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x5C2 DUP2 DUP9 DUP11 PUSH2 0x4D1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 AND PUSH1 0x60 DUP6 ADD MSTORE SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x5FF DUP2 DUP6 DUP8 PUSH2 0x4D1 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH10 0x15E5A895F39ED5B8FB7F PUSH17 0x4830CEC8E23C8197960B0B7CB445FBAA5C PUSH28 0x222964736F6C63430008110033000000000000000000000000000000 ",
              "sourceMap": "327:1074:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;393:273;;;;;;:::i;:::-;;:::i;:::-;;;516:14:111;;509:22;491:41;;479:2;464:18;393:273:109;;;;;;;;672:412;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1090:309::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;393:273::-;518:4;557:50;;;572:35;557:50;;:102;;-1:-1:-1;952:25:16;937:40;;;;623:36:109;538:121;393:273;-1:-1:-1;;393:273:109:o;672:412::-;838:15;;;851:1;838:15;;;;;;;;;782:12;;796:7;;;;838:15;;;;;;;;;;;;;;;;;;;;815:38;;863:32;;;;;;;;;;;;;;;;;:4;868:1;863:7;;;;;;;;:::i;:::-;;;;;;;;;;:32;912:165;;;;;;;948:4;;967;;985;;;;1003:46;;985:4;;;;912:165;;;:::i;:::-;;;;;;;;1090:309;1213:12;1295:9;;1285:20;;;;;;;:::i;:::-;;;;;;;;1272:8;;1262:19;;;;;;;:::i;:::-;;;;;;;;:43;1241:109;;;;;;;5424:2:111;1241:109:109;;;5406:21:111;5463:2;5443:18;;;5436:30;5502:21;5482:18;;;5475:49;5541:18;;1241:109:109;5222:343:111;1241:109:109;1367:25;;;1386:4;1367:25;;;5716:74:111;5689:18;1367:25:109;;;;;;;;;;;;1360:32;;1090:309;;;;;;:::o;14:332:111:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:111:o;543:347::-;594:8;604:6;658:3;651:4;643:6;639:17;635:27;625:55;;676:1;673;666:12;625:55;-1:-1:-1;699:20:111;;742:18;731:30;;728:50;;;774:1;771;764:12;728:50;811:4;803:6;799:17;787:29;;863:3;856:4;847:6;839;835:19;831:30;828:39;825:59;;;880:1;877;870:12;825:59;543:347;;;;;:::o;895:717::-;985:6;993;1001;1009;1062:2;1050:9;1041:7;1037:23;1033:32;1030:52;;;1078:1;1075;1068:12;1030:52;1118:9;1105:23;1147:18;1188:2;1180:6;1177:14;1174:34;;;1204:1;1201;1194:12;1174:34;1243:58;1293:7;1284:6;1273:9;1269:22;1243:58;:::i;:::-;1320:8;;-1:-1:-1;1217:84:111;-1:-1:-1;1408:2:111;1393:18;;1380:32;;-1:-1:-1;1424:16:111;;;1421:36;;;1453:1;1450;1443:12;1421:36;;1492:60;1544:7;1533:8;1522:9;1518:24;1492:60;:::i;:::-;895:717;;;;-1:-1:-1;1571:8:111;-1:-1:-1;;;;895:717:111:o;1617:481::-;1658:3;1696:5;1690:12;1723:6;1718:3;1711:19;1748:1;1758:162;1772:6;1769:1;1766:13;1758:162;;;1834:4;1890:13;;;1886:22;;1880:29;1862:11;;;1858:20;;1851:59;1787:12;1758:162;;;1762:3;1965:1;1958:4;1949:6;1944:3;1940:16;1936:27;1929:38;2087:4;2017:66;2012:2;2004:6;2000:15;1996:88;1991:3;1987:98;1983:109;1976:116;;;1617:481;;;;:::o;2103:337::-;2278:2;2267:9;2260:21;2241:4;2298:44;2338:2;2327:9;2323:18;2315:6;2298:44;:::i;:::-;2290:52;;2390:42;2382:6;2378:55;2373:2;2362:9;2358:18;2351:83;2103:337;;;;;:::o;2445:217::-;2592:2;2581:9;2574:21;2555:4;2612:44;2652:2;2641:9;2637:18;2629:6;2612:44;:::i;2856:184::-;2908:77;2905:1;2898:88;3005:4;3002:1;2995:15;3029:4;3026:1;3019:15;3045:325;3133:6;3128:3;3121:19;3185:6;3178:5;3171:4;3166:3;3162:14;3149:43;;3237:1;3230:4;3221:6;3216:3;3212:16;3208:27;3201:38;3103:3;3359:4;3289:66;3284:2;3276:6;3272:15;3268:88;3263:3;3259:98;3255:109;3248:116;;3045:325;;;;:::o;3530:1411::-;3858:4;3906:3;3895:9;3891:19;3949:42;3941:6;3937:55;3926:9;3919:74;4012:2;4050:3;4045:2;4034:9;4030:18;4023:31;4074:6;4109;4103:13;4140:6;4132;4125:22;4178:3;4167:9;4163:19;4156:26;;4241:3;4231:6;4228:1;4224:14;4213:9;4209:30;4205:40;4191:54;;4280:2;4272:6;4268:15;4301:1;4311:313;4325:6;4322:1;4319:13;4311:313;;;4414:66;4402:9;4394:6;4390:22;4386:95;4381:3;4374:108;4505:39;4537:6;4528;4522:13;4505:39;:::i;:::-;4495:49;-1:-1:-1;4602:12:111;;;;4567:15;;;;4347:1;4340:9;4311:313;;;4315:3;;;;;4672:9;4664:6;4660:22;4655:2;4644:9;4640:18;4633:50;4706:49;4748:6;4740;4732;4706:49;:::i;:::-;3451:66;3440:78;;4805:2;4790:18;;3428:91;4692:63;-1:-1:-1;4858:9:111;4850:6;4846:22;4840:3;4829:9;4825:19;4818:51;4886:49;4928:6;4920;4912;4886:49;:::i;:::-;4878:57;3530:1411;-1:-1:-1;;;;;;;;;;3530:1411:111:o;4946:271::-;5129:6;5121;5116:3;5103:33;5085:3;5155:16;;5180:13;;;5155:16;4946:271;-1:-1:-1;4946:271:111:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "323800",
                "executionCost": "362",
                "totalCost": "324162"
              },
              "external": {
                "resolve(bytes,bytes)": "infinite",
                "resolveCallback(bytes,bytes)": "infinite",
                "supportsInterface(bytes4)": "347"
              }
            },
            "methodIdentifiers": {
              "resolve(bytes,bytes)": "9061b923",
              "resolveCallback(bytes,bytes)": "b4a85801",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"urls\",\"type\":\"string[]\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"callbackFunction\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"OffchainLookup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"resolveCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/utils/mocks/DummyOffchainResolver.sol\":\"DummyOffchainResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/resolvers/profiles/IExtendedResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IExtendedResolver {\\n    function resolve(bytes memory name, bytes memory data)\\n        external\\n        view\\n        returns (bytes memory, address);\\n}\\n\",\"keccak256\":\"0x0a586a1725cdc5f90f2e302c620a4a033adfc87e49bbcc5a43604ba579bce7a7\",\"license\":\"MIT\"},\"test/utils/mocks/DummyOffchainResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\nimport \\\"../../../contracts/resolvers/profiles/IExtendedResolver.sol\\\";\\n\\nerror OffchainLookup(\\n    address sender,\\n    string[] urls,\\n    bytes callData,\\n    bytes4 callbackFunction,\\n    bytes extraData\\n);\\n\\ncontract DummyOffchainResolver is IExtendedResolver, ERC165 {\\n    function supportsInterface(bytes4 interfaceId)\\n        public\\n        view\\n        virtual\\n        override\\n        returns (bool)\\n    {\\n        return\\n            interfaceId == type(IExtendedResolver).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    function resolve(\\n        bytes calldata, /* name */\\n        bytes calldata data\\n    ) external view returns (bytes memory, address) {\\n        string[] memory urls = new string[](1);\\n        urls[0] = \\\"https://example.com/\\\";\\n        revert OffchainLookup(\\n            address(this),\\n            urls,\\n            data,\\n            DummyOffchainResolver.resolveCallback.selector,\\n            data\\n        );\\n    }\\n\\n    function resolveCallback(bytes calldata response, bytes calldata extraData)\\n        external\\n        view\\n        returns (bytes memory)\\n    {\\n        require(\\n            keccak256(response) == keccak256(extraData),\\n            \\\"Response data error\\\"\\n        );\\n        return abi.encode(address(this));\\n    }\\n}\\n\",\"keccak256\":\"0xd7b1f30a9351ad8f30f69231961a730a3bfef6247d4f98fd83731dfb38d0c856\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "test/utils/mocks/MockERC20.sol": {
        "MockERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
              },
              "approve(address,uint256)": {
                "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
              },
              "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
              },
              "decimals()": {
                "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
              },
              "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
              },
              "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "symbol()": {
                "details": "Returns the symbol of the token, usually a shorter version of the name."
              },
              "totalSupply()": {
                "details": "See {IERC20-totalSupply}."
              },
              "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_22570": {
                  "entryPoint": null,
                  "id": 22570,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_865": {
                  "entryPoint": null,
                  "id": 865,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_1407": {
                  "entryPoint": null,
                  "id": 1407,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1396": {
                  "entryPoint": 472,
                  "id": 1396,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_mint_1225": {
                  "entryPoint": 240,
                  "id": 1225,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@decimals_895": {
                  "entryPoint": 235,
                  "id": 895,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_string_fromMemory": {
                  "entryPoint": 550,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_array$_t_address_$dyn_memory_ptr_fromMemory": {
                  "entryPoint": 691,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 499,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 1690,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_helper": {
                  "entryPoint": 1338,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "checked_exp_t_uint256_t_uint256": {
                  "entryPoint": 1593,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_unsigned": {
                  "entryPoint": 1411,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 1614,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_string_storage": {
                  "entryPoint": 1030,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
                  "entryPoint": 1112,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 970,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 1662,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 1316,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 1640,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 477,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7823:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "70:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "75:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "66:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "66:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "106:4:111",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "96:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "127:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "130:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "120:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "191:230:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "201:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "217:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "211:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "211:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "201:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "229:58:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "251:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "267:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "273:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "263:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "263:13:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "282:2:111",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "278:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "278:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "259:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "259:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "247:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "247:40:111"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "233:10:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "362:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "364:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "364:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "364:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "305:10:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "325:2:111",
                                                "type": "",
                                                "value": "64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "329:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "321:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "321:10:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "333:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "317:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "317:18:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:34:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:10:111"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "353:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "338:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "338:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:62:111"
                              },
                              "nodeType": "YulIf",
                              "src": "296:88:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "400:2:111",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "404:10:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "393:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "393:22:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "393:22:111"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "171:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "180:6:111",
                            "type": ""
                          }
                        ],
                        "src": "146:275:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "490:586:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "539:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "548:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "551:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "541:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "541:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "541:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "518:6:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "526:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "514:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "514:17:111"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "510:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "510:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "503:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "503:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "500:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "564:23:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "580:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "574:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "574:13:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "568:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "626:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "628:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "628:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "628:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "602:2:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "614:2:111",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "618:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "610:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "610:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "622:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "606:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "606:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "599:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "599:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "596:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "657:14:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "667:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "661:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "680:68:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "723:2:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "727:4:111",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "719:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "719:13:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "738:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "734:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "734:7:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "715:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "715:27:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "744:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "711:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "711:36:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "695:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "695:53:111"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "684:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "764:7:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "773:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "757:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "757:19:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "757:19:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "822:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "831:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "834:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "824:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "824:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "824:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "799:6:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "807:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "795:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "795:15:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "812:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "791:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "791:24:111"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "817:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "788:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "788:33:111"
                              },
                              "nodeType": "YulIf",
                              "src": "785:53:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "847:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "856:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "851:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "912:88:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "array_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "941:7:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "950:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "937:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "937:15:111"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "954:2:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "933:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "933:24:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "973:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "981:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "969:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "969:14:111"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "985:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "965:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "965:23:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "959:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "959:30:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "926:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "926:64:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "926:64:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "877:1:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "880:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "874:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "874:9:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "884:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "886:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "895:1:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "898:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "891:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "891:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "886:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "870:3:111",
                                "statements": []
                              },
                              "src": "866:134:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1024:7:111"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1033:2:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1020:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1020:16:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1038:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1016:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1016:25:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1043:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1009:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1009:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1009:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1054:16:111",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "1063:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1054:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "464:6:111",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "472:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "480:5:111",
                            "type": ""
                          }
                        ],
                        "src": "426:650:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1241:1368:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1287:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1296:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1299:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1289:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1289:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1289:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1262:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1271:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1258:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1258:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1283:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1254:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1254:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1251:52:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1312:30:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1332:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1326:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1326:16:111"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1316:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1351:28:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1369:2:111",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1373:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1365:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1365:10:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1377:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1361:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1361:18:111"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1355:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1406:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1415:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1418:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1408:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1408:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1408:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1394:6:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1402:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1391:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1391:14:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1388:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1431:71:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1474:9:111"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1485:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1470:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1470:22:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1494:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1441:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1441:61:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1431:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1511:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1521:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1515:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1532:41:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1558:9:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1569:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1554:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1554:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1548:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1548:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1536:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1602:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1611:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1614:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1604:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1604:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1604:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1588:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1598:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1585:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1585:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1582:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1627:73:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1670:9:111"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1681:8:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1666:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1666:24:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1692:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1637:28:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1637:63:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1627:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1709:41:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1735:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1731:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1731:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1725:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1725:25:111"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1713:8:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1779:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1788:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1791:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1781:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1781:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1781:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1765:8:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1775:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1762:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1762:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1759:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1804:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1818:9:111"
                                  },
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1829:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1814:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1814:24:111"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1808:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1886:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1895:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1898:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1888:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1888:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1888:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1865:2:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1869:4:111",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1861:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1861:13:111"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1876:7:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1857:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1857:27:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1850:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1850:35:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1847:55:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1911:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1927:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1921:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1921:9:111"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1915:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1953:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1955:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1955:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1955:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1945:2:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1949:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1942:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1942:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1939:36:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1984:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1998:1:111",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2001:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1994:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1994:10:111"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "1988:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2013:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "2044:2:111"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2048:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2040:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2040:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2024:15:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2024:28:111"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "2017:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2061:16:111",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "2074:3:111"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2065:5:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2093:3:111"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2098:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2086:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2086:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2086:15:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2110:19:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2121:3:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2126:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2117:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2117:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:3:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2138:34:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2160:2:111"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "2164:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2156:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2156:11:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2169:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2152:20:111"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "2142:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2204:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2213:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2216:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2206:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2206:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2206:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2187:6:111"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2195:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2184:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2184:19:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2181:39:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2229:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2244:2:111"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2248:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2240:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2240:11:111"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "2233:3:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2316:263:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2330:23:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2349:3:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2343:5:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2343:10:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "2334:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2432:74:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "2450:11:111",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2460:1:111",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulTypedName",
                                              "src": "2454:2:111",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "2485:2:111"
                                              },
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "2489:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "2478:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2478:14:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2478:14:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "2379:5:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2390:5:111"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2405:3:111",
                                                          "type": "",
                                                          "value": "160"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "2410:1:111",
                                                          "type": "",
                                                          "value": "1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "shl",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2401:3:111"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2401:11:111"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "2414:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2397:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2397:19:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "2386:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2386:31:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "2376:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2376:42:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "2369:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2369:50:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2366:140:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "2526:3:111"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "2531:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2519:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2519:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2519:18:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2550:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "2561:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2566:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2557:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2557:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "2550:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "2271:3:111"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2276:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2268:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2268:15:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2284:23:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2286:19:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2297:3:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2302:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2293:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2293:12:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "2286:3:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2264:3:111",
                                "statements": []
                              },
                              "src": "2260:319:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2588:15:111",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "2598:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2588:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_array$_t_address_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1191:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1202:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1214:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1222:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1230:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1081:1528:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2669:325:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2679:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2693:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2696:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2689:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2689:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2679:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2710:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2740:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2746:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "2736:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2736:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "2714:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2787:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2789:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "2803:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2811:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "2799:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2799:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2789:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2767:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2760:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2760:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2757:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2877:111:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2898:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2905:3:111",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2910:10:111",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "2901:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2901:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2891:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2891:31:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2891:31:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2942:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2945:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2935:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2935:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2935:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2970:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2973:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2963:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2963:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2963:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2833:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2864:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2853:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2853:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "2830:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2830:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2827:161:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2649:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2658:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2614:380:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3055:65:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3072:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3075:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3065:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3065:14:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3065:14:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3088:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3106:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3109:4:111",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "3096:9:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3096:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "3088:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "3038:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "3046:4:111",
                            "type": ""
                          }
                        ],
                        "src": "2999:121:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3206:464:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3239:425:111",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3253:11:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "3263:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "3257:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3284:2:111"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "3288:5:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3277:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3277:17:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3277:17:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3307:31:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3329:2:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3333:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "3319:9:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3319:19:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "3311:4:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3351:57:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "3374:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3384:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3391:10:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3403:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3387:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3387:19:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3380:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3380:27:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3370:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3370:38:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "3355:11:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3445:23:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "3447:19:111",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "3462:4:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "3447:11:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "3427:10:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3439:4:111",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3424:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3424:20:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3421:47:111"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3481:41:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "3495:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3505:1:111",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3512:3:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3517:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3508:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3508:12:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3501:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3501:20:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3491:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3491:31:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "3485:2:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3535:24:111",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "3548:11:111"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "3539:5:111",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3633:21:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "3642:5:111"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "3649:2:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "3635:6:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3635:17:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3635:17:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "3583:5:111"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "3590:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3580:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3580:13:111"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "3594:26:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "3596:22:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "3609:5:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3616:1:111",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3605:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3605:13:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "3596:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "3576:3:111",
                                      "statements": []
                                    },
                                    "src": "3572:82:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "3222:3:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3227:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3219:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3219:11:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3216:448:111"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "3178:5:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "3185:3:111",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "3190:10:111",
                            "type": ""
                          }
                        ],
                        "src": "3125:545:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3760:81:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3770:65:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "3785:4:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3803:1:111",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3806:3:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3799:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3799:11:111"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3816:1:111",
                                                    "type": "",
                                                    "value": "0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "not",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3812:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3812:6:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "3795:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3795:24:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "3791:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3791:29:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3781:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3781:40:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3827:1:111",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "3830:3:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3823:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3823:11:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3778:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3778:57:111"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "3770:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "3737:4:111",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "3743:3:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "3751:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3675:166:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3942:1256:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3952:24:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "3972:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3966:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3966:10:111"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "3956:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4019:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4021:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4021:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4021:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3991:6:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4007:2:111",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4011:1:111",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "4003:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4003:10:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4015:1:111",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3999:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3999:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3988:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3988:30:111"
                              },
                              "nodeType": "YulIf",
                              "src": "3985:56:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "4094:4:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "4132:4:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "4126:5:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4126:11:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "4100:25:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4100:38:111"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "4140:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "4050:43:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4050:97:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4050:97:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4156:18:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4173:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "4160:9:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4183:23:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4202:4:111",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4187:11:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4215:24:111",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "4228:11:111"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "4215:9:111"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "4285:656:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4299:35:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "4318:6:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4330:2:111",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "4326:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4326:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4314:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4314:20:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "4303:7:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4347:49:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "4391:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "4361:29:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4361:35:111"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "4351:6:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4409:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4418:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "4413:1:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "4496:172:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4521:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4539:3:111"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4544:9:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4535:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4535:19:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4529:5:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4529:26:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4514:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4514:42:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "4514:42:111"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4573:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4587:6:111"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4595:1:111",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4583:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4583:14:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4573:6:111"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4614:40:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4631:9:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4642:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4627:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4627:27:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4614:9:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4443:1:111"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "4446:7:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4440:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4440:14:111"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "4455:28:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4457:24:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4466:1:111"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4469:11:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4462:3:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4462:19:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4457:1:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "4436:3:111",
                                          "statements": []
                                        },
                                        "src": "4432:236:111"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "4716:166:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "4734:43:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4761:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4766:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4757:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4757:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4751:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4751:26:111"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "4738:9:111",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4801:6:111"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4813:9:111"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4840:1:111",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4843:6:111"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "4836:3:111"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4836:14:111"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4852:3:111",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4832:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4832:24:111"
                                                              },
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4862:1:111",
                                                                    "type": "",
                                                                    "value": "0"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "not",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4858:3:111"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4858:6:111"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "4828:3:111"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4828:37:111"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4824:3:111"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4824:42:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4809:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4809:58:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4794:6:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4794:74:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "4794:74:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "4687:7:111"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "4696:6:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4684:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4684:19:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "4681:201:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "4902:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "4916:1:111",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4919:6:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4912:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4912:14:111"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4928:1:111",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4908:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4908:22:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4895:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4895:36:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "4895:36:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "4278:663:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4283:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "4958:234:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4972:14:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4985:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "4976:5:111",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "5021:67:111",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "5039:35:111",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5058:3:111"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5063:9:111"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5054:3:111"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5054:19:111"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5048:5:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5048:26:111"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5039:5:111"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "5002:6:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "4999:89:111"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "5108:4:111"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5167:5:111"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5174:6:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "5114:52:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5114:67:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "5101:6:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5101:81:111"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "5101:81:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "4950:242:111",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "4258:6:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4266:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4255:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4255:14:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "4248:944:111"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "3927:4:111",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "3933:3:111",
                            "type": ""
                          }
                        ],
                        "src": "3846:1352:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5235:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5252:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5259:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5264:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "5255:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5255:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5245:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5245:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5245:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5292:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5295:4:111",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5285:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5285:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5285:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5316:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5319:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5309:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5309:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5309:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5203:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5399:358:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5409:16:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5424:1:111",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5413:7:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5434:16:111",
                              "value": {
                                "name": "power_1",
                                "nodeType": "YulIdentifier",
                                "src": "5443:7:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "5434:5:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5459:13:111",
                              "value": {
                                "name": "_base",
                                "nodeType": "YulIdentifier",
                                "src": "5467:5:111"
                              },
                              "variableNames": [
                                {
                                  "name": "base",
                                  "nodeType": "YulIdentifier",
                                  "src": "5459:4:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5523:228:111",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "5568:22:111",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x11",
                                              "nodeType": "YulIdentifier",
                                              "src": "5570:16:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5570:18:111"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "5570:18:111"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "5543:4:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5557:1:111",
                                                  "type": "",
                                                  "value": "0"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "5553:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5553:6:111"
                                            },
                                            {
                                              "name": "base",
                                              "nodeType": "YulIdentifier",
                                              "src": "5561:4:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "5549:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5549:17:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "5540:2:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5540:27:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5537:53:111"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "5629:29:111",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "5631:25:111",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "power",
                                                "nodeType": "YulIdentifier",
                                                "src": "5644:5:111"
                                              },
                                              {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "5651:4:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "5640:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5640:16:111"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "power",
                                              "nodeType": "YulIdentifier",
                                              "src": "5631:5:111"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "5610:8:111"
                                        },
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5620:7:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "5606:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5606:22:111"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5603:55:111"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5671:23:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "5683:4:111"
                                        },
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "5689:4:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "5679:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5679:15:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "5671:4:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5707:34:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5723:7:111"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "5732:8:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5719:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5719:22:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "5707:8:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "5492:8:111"
                                  },
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5502:7:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5489:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5489:21:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5511:3:111",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5485:3:111",
                                "statements": []
                              },
                              "src": "5481:270:111"
                            }
                          ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "_base",
                            "nodeType": "YulTypedName",
                            "src": "5363:5:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "5370:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "5383:5:111",
                            "type": ""
                          },
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "5390:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5335:422:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5821:747:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5859:52:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5873:10:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5882:1:111",
                                      "type": "",
                                      "value": "1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "5873:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "5896:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "5841:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5834:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5834:16:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5831:80:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5944:52:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5958:10:111",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5967:1:111",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "5958:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "5981:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "5930:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5923:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5923:12:111"
                              },
                              "nodeType": "YulIf",
                              "src": "5920:76:111"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "6032:52:111",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "6046:10:111",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6055:1:111",
                                          "type": "",
                                          "value": "1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "6046:5:111"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "6069:5:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "6025:59:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6030:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "6100:123:111",
                                    "statements": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "6135:22:111",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "panic_error_0x11",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6137:16:111"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6137:18:111"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "6137:18:111"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "6120:8:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6130:3:111",
                                              "type": "",
                                              "value": "255"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "6117:2:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6117:17:111"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "6114:43:111"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "6170:25:111",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "6183:8:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6193:1:111",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "6179:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6179:16:111"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "6170:5:111"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "6208:5:111"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "6093:130:111",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6098:1:111",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "6012:4:111"
                              },
                              "nodeType": "YulSwitch",
                              "src": "6005:218:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6321:70:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6335:28:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "6348:4:111"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "6354:8:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "exp",
                                        "nodeType": "YulIdentifier",
                                        "src": "6344:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6344:19:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "6335:5:111"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "6376:5:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "6245:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6251:2:111",
                                            "type": "",
                                            "value": "11"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "6242:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6242:12:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "6259:8:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6269:2:111",
                                            "type": "",
                                            "value": "78"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "6256:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6256:16:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6238:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6238:35:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "6282:4:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6288:3:111",
                                            "type": "",
                                            "value": "307"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "6279:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6279:13:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "6297:8:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6307:2:111",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "6294:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6294:16:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6275:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6275:36:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "6235:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6235:77:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6232:159:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6400:57:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "6442:4:111"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "6448:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_helper",
                                  "nodeType": "YulIdentifier",
                                  "src": "6423:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6423:34:111"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6404:7:111",
                                  "type": ""
                                },
                                {
                                  "name": "base_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6413:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6502:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6504:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6504:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6504:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6472:7:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6489:1:111",
                                            "type": "",
                                            "value": "0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "6485:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6485:6:111"
                                      },
                                      {
                                        "name": "base_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6493:6:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "6481:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6481:19:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6469:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6469:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6466:58:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6533:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6546:7:111"
                                  },
                                  {
                                    "name": "base_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6555:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "6542:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6542:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "6533:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "5792:4:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "5798:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "5811:5:111",
                            "type": ""
                          }
                        ],
                        "src": "5762:806:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6643:61:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6653:45:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "6683:4:111"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "6689:8:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_unsigned",
                                  "nodeType": "YulIdentifier",
                                  "src": "6662:20:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6662:36:111"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "6653:5:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_t_uint256_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "6614:4:111",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "6620:8:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "6633:5:111",
                            "type": ""
                          }
                        ],
                        "src": "6573:131:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6761:116:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6771:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6786:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6789:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "6782:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6782:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "6771:7:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6849:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6851:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6851:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6851:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "6820:1:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6813:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6813:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "6827:1:111"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "product",
                                                "nodeType": "YulIdentifier",
                                                "src": "6834:7:111"
                                              },
                                              {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "6843:1:111"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "6830:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6830:15:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nodeType": "YulIdentifier",
                                          "src": "6824:2:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6824:22:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "6810:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6810:37:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6803:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6803:45:111"
                              },
                              "nodeType": "YulIf",
                              "src": "6800:71:111"
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6740:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6743:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "6749:7:111",
                            "type": ""
                          }
                        ],
                        "src": "6709:168:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6914:95:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6931:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6938:3:111",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6943:10:111",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6934:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6934:20:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6924:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6924:31:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6924:31:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6971:1:111",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6974:4:111",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6964:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6964:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6964:15:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6995:1:111",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6998:4:111",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6988:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6988:15:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6988:15:111"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6882:127:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7061:88:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7092:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7094:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7094:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7094:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7077:5:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7088:1:111",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "7084:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7084:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "7074:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7074:17:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7071:43:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7123:20:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7134:5:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7141:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7130:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7130:13:111"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "7123:3:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7043:5:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "7053:3:111",
                            "type": ""
                          }
                        ],
                        "src": "7014:135:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7328:181:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7345:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7356:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7338:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7338:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7338:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7379:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7390:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7375:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7375:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7395:2:111",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7368:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7368:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7368:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7418:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7429:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7414:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7414:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7434:33:111",
                                    "type": "",
                                    "value": "ERC20: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7407:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7407:61:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7407:61:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7477:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7489:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7500:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7485:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7485:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7477:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7305:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7319:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7154:355:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7562:77:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7572:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7583:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7586:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7579:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7579:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "7572:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7611:22:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7613:16:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7613:18:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7613:18:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7603:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "7606:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7600:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7600:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "7597:36:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7545:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7548:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "7554:3:111",
                            "type": ""
                          }
                        ],
                        "src": "7514:125:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7745:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7755:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7767:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7778:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7763:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7763:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7755:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7797:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7808:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7790:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7790:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7790:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7714:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7725:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7736:4:111",
                            "type": ""
                          }
                        ],
                        "src": "7644:177:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        if gt(_1, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let _2 := 0x20\n        let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), _2))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), _2), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _2) }\n        {\n            mstore(add(add(array_1, i), _2), mload(add(add(offset, i), _2)))\n        }\n        mstore(add(add(array_1, _1), _2), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_array$_t_address_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let _2 := 32\n        let offset_1 := mload(add(headStart, _2))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        let offset_2 := mload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let _3 := add(headStart, offset_2)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _1) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let dst := allocate_memory(add(_5, _2))\n        let dst_1 := dst\n        mstore(dst, _4)\n        dst := add(dst, _2)\n        let srcEnd := add(add(_3, _5), _2)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, sub(shl(160, 1), 1))))\n            {\n                let _6 := 0\n                revert(_6, _6)\n            }\n            mstore(dst, value)\n            dst := add(dst, _2)\n        }\n        value2 := dst_1\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(not(0), base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, exponent)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b506040516200121f3803806200121f8339810160408190526200003491620002b3565b8282600362000044838262000458565b50600462000053828262000458565b5050506200008e336200006b620000eb60201b60201c565b6200007b9060ff16600a62000639565b620000889060646200064e565b620000f0565b60005b8151811015620000e157620000cc828281518110620000b457620000b462000668565b60200260200101516200006b620000eb60201b60201c565b80620000d8816200067e565b91505062000091565b50505050620006b0565b601290565b6001600160a01b0382166200014b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200015f91906200069a565b90915550506001600160a01b038216600090815260208190526040812080548392906200018e9084906200069a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200021e576200021e620001dd565b604052919050565b600082601f8301126200023857600080fd5b81516001600160401b03811115620002545762000254620001dd565b60206200026a601f8301601f19168201620001f3565b82815285828487010111156200027f57600080fd5b60005b838110156200029f57858101830151828201840152820162000282565b506000928101909101919091529392505050565b600080600060608486031215620002c957600080fd5b83516001600160401b0380821115620002e157600080fd5b620002ef8783880162000226565b94506020915081860151818111156200030757600080fd5b620003158882890162000226565b9450506040860151818111156200032b57600080fd5b8601601f810188136200033d57600080fd5b805182811115620003525762000352620001dd565b8060051b925062000365848401620001f3565b818152928201840192848101908a8511156200038057600080fd5b928501925b84841015620003ba57835192506001600160a01b0383168314620003a95760008081fd5b828252928501929085019062000385565b8096505050505050509250925092565b600181811c90821680620003df57607f821691505b6020821081036200040057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d857600081815260208120601f850160051c810160208610156200042f5750805b601f850160051c820191505b8181101562000450578281556001016200043b565b505050505050565b81516001600160401b03811115620004745762000474620001dd565b6200048c81620004858454620003ca565b8462000406565b602080601f831160018114620004c45760008415620004ab5750858301515b600019600386901b1c1916600185901b17855562000450565b600085815260208120601f198616915b82811015620004f557888601518255948401946001909101908401620004d4565b5085821015620005145787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200057b5781600019048211156200055f576200055f62000524565b808516156200056d57918102915b93841c93908002906200053f565b509250929050565b600082620005945750600162000633565b81620005a35750600062000633565b8160018114620005bc5760028114620005c757620005e7565b600191505062000633565b60ff841115620005db57620005db62000524565b50506001821b62000633565b5060208310610133831016604e8410600b84101617156200060c575081810a62000633565b6200061883836200053a565b80600019048211156200062f576200062f62000524565b0290505b92915050565b600062000647838362000583565b9392505050565b808202811582820484141762000633576200063362000524565b634e487b7160e01b600052603260045260246000fd5b60006001820162000693576200069362000524565b5060010190565b8082018082111562000633576200063362000524565b610b5f80620006c06000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094c565b60405180910390f35b6100ff6100fa3660046109e1565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a0b565b6102ac565b604051601281526020016100e3565b6100ff6101513660046109e1565b6102d0565b610113610164366004610a47565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a23660046109e1565b61032b565b6100ff6101b53660046109e1565b610401565b6101136101c8366004610a69565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a9c565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a9c565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aef565b61040f565b60606004805461020f90610a9c565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d9908490610aef565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093f91815260200190565b60405180910390a3610693565b600060208083528351808285015260005b818110156109795785810183015185820160400152820161095d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109dc57600080fd5b919050565b600080604083850312156109f457600080fd5b6109fd836109b8565b946020939093013593505050565b600080600060608486031215610a2057600080fd5b610a29846109b8565b9250610a37602085016109b8565b9150604084013590509250925092565b600060208284031215610a5957600080fd5b610a62826109b8565b9392505050565b60008060408385031215610a7c57600080fd5b610a85836109b8565b9150610a93602084016109b8565b90509250929050565b600181811c90821680610ab057607f821691505b602082108103610ae9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f62ed71fbacfb97dfa3e6401f2d119f5f3dde22f0ee484f940b634f8494c295964736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x121F CODESIZE SUB DUP1 PUSH3 0x121F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x2B3 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x3 PUSH3 0x44 DUP4 DUP3 PUSH3 0x458 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x53 DUP3 DUP3 PUSH3 0x458 JUMP JUMPDEST POP POP POP PUSH3 0x8E CALLER PUSH3 0x6B PUSH3 0xEB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x7B SWAP1 PUSH1 0xFF AND PUSH1 0xA PUSH3 0x639 JUMP JUMPDEST PUSH3 0x88 SWAP1 PUSH1 0x64 PUSH3 0x64E JUMP JUMPDEST PUSH3 0xF0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0xE1 JUMPI PUSH3 0xCC DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0xB4 JUMPI PUSH3 0xB4 PUSH3 0x668 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH3 0x6B PUSH3 0xEB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH3 0xD8 DUP2 PUSH3 0x67E JUMP JUMPDEST SWAP2 POP POP PUSH3 0x91 JUMP JUMPDEST POP POP POP POP PUSH3 0x6B0 JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x14B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0x15F SWAP2 SWAP1 PUSH3 0x69A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH3 0x18E SWAP1 DUP5 SWAP1 PUSH3 0x69A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x21E JUMPI PUSH3 0x21E PUSH3 0x1DD JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x254 JUMPI PUSH3 0x254 PUSH3 0x1DD JUMP JUMPDEST PUSH1 0x20 PUSH3 0x26A PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH3 0x1F3 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP6 DUP3 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x29F JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP3 DUP3 ADD DUP5 ADD MSTORE DUP3 ADD PUSH3 0x282 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 DUP2 ADD SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x2EF DUP8 DUP4 DUP9 ADD PUSH3 0x226 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 SWAP2 POP DUP2 DUP7 ADD MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x315 DUP9 DUP3 DUP10 ADD PUSH3 0x226 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x1F DUP2 ADD DUP9 SGT PUSH3 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD DUP3 DUP2 GT ISZERO PUSH3 0x352 JUMPI PUSH3 0x352 PUSH3 0x1DD JUMP JUMPDEST DUP1 PUSH1 0x5 SHL SWAP3 POP PUSH3 0x365 DUP5 DUP5 ADD PUSH3 0x1F3 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP3 DUP3 ADD DUP5 ADD SWAP3 DUP5 DUP2 ADD SWAP1 DUP11 DUP6 GT ISZERO PUSH3 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 DUP6 ADD SWAP3 JUMPDEST DUP5 DUP5 LT ISZERO PUSH3 0x3BA JUMPI DUP4 MLOAD SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP4 EQ PUSH3 0x3A9 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP3 DUP3 MSTORE SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH3 0x385 JUMP JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x3DF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x400 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x1D8 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x42F JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x450 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x43B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x474 JUMPI PUSH3 0x474 PUSH3 0x1DD JUMP JUMPDEST PUSH3 0x48C DUP2 PUSH3 0x485 DUP5 SLOAD PUSH3 0x3CA JUMP JUMPDEST DUP5 PUSH3 0x406 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x4C4 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x4AB JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x450 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x4F5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x4D4 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x514 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x57B JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x55F JUMPI PUSH3 0x55F PUSH3 0x524 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x56D JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x53F JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x594 JUMPI POP PUSH1 0x1 PUSH3 0x633 JUMP JUMPDEST DUP2 PUSH3 0x5A3 JUMPI POP PUSH1 0x0 PUSH3 0x633 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x5BC JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x5C7 JUMPI PUSH3 0x5E7 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x633 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x5DB JUMPI PUSH3 0x5DB PUSH3 0x524 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x633 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x60C JUMPI POP DUP2 DUP2 EXP PUSH3 0x633 JUMP JUMPDEST PUSH3 0x618 DUP4 DUP4 PUSH3 0x53A JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x62F JUMPI PUSH3 0x62F PUSH3 0x524 JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x647 DUP4 DUP4 PUSH3 0x583 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH3 0x633 JUMPI PUSH3 0x633 PUSH3 0x524 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH3 0x693 JUMPI PUSH3 0x693 PUSH3 0x524 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH3 0x633 JUMPI PUSH3 0x633 PUSH3 0x524 JUMP JUMPDEST PUSH2 0xB5F DUP1 PUSH3 0x6C0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xA0B JUMP JUMPDEST PUSH2 0x2AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0xA47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x31C JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x32B JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x401 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA69 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9C JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x23B SWAP1 PUSH2 0xA9C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2BA DUP6 DUP3 DUP6 PUSH2 0x5C2 JUMP JUMPDEST PUSH2 0x2C5 DUP6 DUP6 DUP6 PUSH2 0x699 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2A0 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x317 SWAP1 DUP8 SWAP1 PUSH2 0xAEF JUMP JUMPDEST PUSH2 0x40F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9C JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C5 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x40F JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x699 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x554 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x693 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x686 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH2 0x693 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x40F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8D9 SWAP1 DUP5 SWAP1 PUSH2 0xAEF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x93F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x979 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x95D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FD DUP4 PUSH2 0x9B8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA29 DUP5 PUSH2 0x9B8 JUMP JUMPDEST SWAP3 POP PUSH2 0xA37 PUSH1 0x20 DUP6 ADD PUSH2 0x9B8 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA62 DUP3 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA85 DUP4 PUSH2 0x9B8 JUMP JUMPDEST SWAP2 POP PUSH2 0xA93 PUSH1 0x20 DUP5 ADD PUSH2 0x9B8 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAB0 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xAE9 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2A6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0x2E 0xD7 0x1F 0xBA 0xCF 0xB9 PUSH30 0xFA3E6401F2D119F5F3DDE22F0EE484F940B634F8494C295964736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "135:365:110:-:0;;;169:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;287:4;293:6;2044:5:6;:13;287:4:110;2044:5:6;:13;:::i;:::-;-1:-1:-1;2067:7:6;:17;2077:7;2067;:17;:::i;:::-;;1978:113;;311:48:110::1;317:10;347;:8;;;:10;;:::i;:::-;335:23;::::0;339:19:::1;;335:2;:23;:::i;:::-;329:29;::::0;:3:::1;:29;:::i;:::-;311:5;:48::i;:::-;375:9;370:122;394:9;:16;390:1;:20;370:122;;;431:50;437:9;447:1;437:12;;;;;;;;:::i;:::-;;;;;;;469:10;:8;;;:10;;:::i;431:50::-;412:3:::0;::::1;::::0;::::1;:::i;:::-;;;;370:122;;;;169:329:::0;;;135:365;;3093:91:6;3175:2;;3093:91::o;8415:389::-;-1:-1:-1;;;;;8498:21:6;;8490:65;;;;-1:-1:-1;;;8490:65:6;;7356:2:111;8490:65:6;;;7338:21:111;7395:2;7375:18;;;7368:30;7434:33;7414:18;;;7407:61;7485:18;;8490:65:6;;;;;;;;8642:6;8626:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8658:18:6;;:9;:18;;;;;;;;;;:28;;8680:6;;8658:9;:28;;8680:6;;8658:28;:::i;:::-;;;;-1:-1:-1;;8701:37:6;;7790:25:111;;;-1:-1:-1;;;;;8701:37:6;;;8718:1;;8701:37;;7778:2:111;7763:18;8701:37:6;;;;;;;8415:389;;:::o;11795:121::-;;;;:::o;14:127:111:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:111;247:40;;-1:-1:-1;;;;;302:34:111;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:111:o;426:650::-;480:5;533:3;526:4;518:6;514:17;510:27;500:55;;551:1;548;541:12;500:55;574:13;;-1:-1:-1;;;;;599:26:111;;596:52;;;628:18;;:::i;:::-;667:4;695:53;738:2;719:13;;-1:-1:-1;;715:27:111;711:36;;695:53;:::i;:::-;773:2;764:7;757:19;817:3;812:2;807;799:6;795:15;791:24;788:33;785:53;;;834:1;831;824:12;785:53;856:1;866:134;880:2;877:1;874:9;866:134;;;969:14;;;965:23;;959:30;937:15;;;933:24;;926:64;891:10;;866:134;;;-1:-1:-1;1043:1:111;1020:16;;;1016:25;;;1009:36;;;;1024:7;426:650;-1:-1:-1;;;426:650:111:o;1081:1528::-;1214:6;1222;1230;1283:2;1271:9;1262:7;1258:23;1254:32;1251:52;;;1299:1;1296;1289:12;1251:52;1326:16;;-1:-1:-1;;;;;1391:14:111;;;1388:34;;;1418:1;1415;1408:12;1388:34;1441:61;1494:7;1485:6;1474:9;1470:22;1441:61;:::i;:::-;1431:71;;1521:2;1511:12;;1569:2;1558:9;1554:18;1548:25;1598:2;1588:8;1585:16;1582:36;;;1614:1;1611;1604:12;1582:36;1637:63;1692:7;1681:8;1670:9;1666:24;1637:63;:::i;:::-;1627:73;;;1746:2;1735:9;1731:18;1725:25;1775:2;1765:8;1762:16;1759:36;;;1791:1;1788;1781:12;1759:36;1814:24;;1869:4;1861:13;;1857:27;-1:-1:-1;1847:55:111;;1898:1;1895;1888:12;1847:55;1927:2;1921:9;1949:2;1945;1942:10;1939:36;;;1955:18;;:::i;:::-;2001:2;1998:1;1994:10;1984:20;;2024:28;2048:2;2044;2040:11;2024:28;:::i;:::-;2086:15;;;2156:11;;;2152:20;;;2117:12;;;;2184:19;;;2181:39;;;2216:1;2213;2206:12;2181:39;2240:11;;;;2260:319;2276:6;2271:3;2268:15;2260:319;;;2343:10;;;-1:-1:-1;;;;;;2386:31:111;;2376:42;;2366:140;;2460:1;2489:2;2485;2478:14;2366:140;2519:18;;;2293:12;;;;2557;;;;2260:319;;;2598:5;2588:15;;;;;;;;1081:1528;;;;;:::o;2614:380::-;2693:1;2689:12;;;;2736;;;2757:61;;2811:4;2803:6;2799:17;2789:27;;2757:61;2864:2;2856:6;2853:14;2833:18;2830:38;2827:161;;2910:10;2905:3;2901:20;2898:1;2891:31;2945:4;2942:1;2935:15;2973:4;2970:1;2963:15;2827:161;;2614:380;;;:::o;3125:545::-;3227:2;3222:3;3219:11;3216:448;;;3263:1;3288:5;3284:2;3277:17;3333:4;3329:2;3319:19;3403:2;3391:10;3387:19;3384:1;3380:27;3374:4;3370:38;3439:4;3427:10;3424:20;3421:47;;;-1:-1:-1;3462:4:111;3421:47;3517:2;3512:3;3508:12;3505:1;3501:20;3495:4;3491:31;3481:41;;3572:82;3590:2;3583:5;3580:13;3572:82;;;3635:17;;;3616:1;3605:13;3572:82;;;3576:3;;;3125:545;;;:::o;3846:1352::-;3966:10;;-1:-1:-1;;;;;3988:30:111;;3985:56;;;4021:18;;:::i;:::-;4050:97;4140:6;4100:38;4132:4;4126:11;4100:38;:::i;:::-;4094:4;4050:97;:::i;:::-;4202:4;;4266:2;4255:14;;4283:1;4278:663;;;;4985:1;5002:6;4999:89;;;-1:-1:-1;5054:19:111;;;5048:26;4999:89;-1:-1:-1;;3803:1:111;3799:11;;;3795:24;3791:29;3781:40;3827:1;3823:11;;;3778:57;5101:81;;4248:944;;4278:663;3072:1;3065:14;;;3109:4;3096:18;;-1:-1:-1;;4314:20:111;;;4432:236;4446:7;4443:1;4440:14;4432:236;;;4535:19;;;4529:26;4514:42;;4627:27;;;;4595:1;4583:14;;;;4462:19;;4432:236;;;4436:3;4696:6;4687:7;4684:19;4681:201;;;4757:19;;;4751:26;-1:-1:-1;;4840:1:111;4836:14;;;4852:3;4832:24;4828:37;4824:42;4809:58;4794:74;;4681:201;-1:-1:-1;;;;;4928:1:111;4912:14;;;4908:22;4895:36;;-1:-1:-1;3846:1352:111:o;5203:127::-;5264:10;5259:3;5255:20;5252:1;5245:31;5295:4;5292:1;5285:15;5319:4;5316:1;5309:15;5335:422;5424:1;5467:5;5424:1;5481:270;5502:7;5492:8;5489:21;5481:270;;;5561:4;5557:1;5553:6;5549:17;5543:4;5540:27;5537:53;;;5570:18;;:::i;:::-;5620:7;5610:8;5606:22;5603:55;;;5640:16;;;;5603:55;5719:22;;;;5679:15;;;;5481:270;;;5485:3;5335:422;;;;;:::o;5762:806::-;5811:5;5841:8;5831:80;;-1:-1:-1;5882:1:111;5896:5;;5831:80;5930:4;5920:76;;-1:-1:-1;5967:1:111;5981:5;;5920:76;6012:4;6030:1;6025:59;;;;6098:1;6093:130;;;;6005:218;;6025:59;6055:1;6046:10;;6069:5;;;6093:130;6130:3;6120:8;6117:17;6114:43;;;6137:18;;:::i;:::-;-1:-1:-1;;6193:1:111;6179:16;;6208:5;;6005:218;;6307:2;6297:8;6294:16;6288:3;6282:4;6279:13;6275:36;6269:2;6259:8;6256:16;6251:2;6245:4;6242:12;6238:35;6235:77;6232:159;;;-1:-1:-1;6344:19:111;;;6376:5;;6232:159;6423:34;6448:8;6442:4;6423:34;:::i;:::-;6493:6;6489:1;6485:6;6481:19;6472:7;6469:32;6466:58;;;6504:18;;:::i;:::-;6542:20;;-1:-1:-1;5762:806:111;;;;;:::o;6573:131::-;6633:5;6662:36;6689:8;6683:4;6662:36;:::i;:::-;6653:45;6573:131;-1:-1:-1;;;6573:131:111:o;6709:168::-;6782:9;;;6813;;6830:15;;;6824:22;;6810:37;6800:71;;6851:18;;:::i;6882:127::-;6943:10;6938:3;6934:20;6931:1;6924:31;6974:4;6971:1;6964:15;6998:4;6995:1;6988:15;7014:135;7053:3;7074:17;;;7071:43;;7094:18;;:::i;:::-;-1:-1:-1;7141:1:111;7130:13;;7014:135::o;7514:125::-;7579:9;;;7600:10;;;7597:36;;;7613:18;;:::i;7644:177::-;135:365:110;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_afterTokenTransfer_1407": {
                  "entryPoint": null,
                  "id": 1407,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1342": {
                  "entryPoint": 1039,
                  "id": 1342,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1396": {
                  "entryPoint": null,
                  "id": 1396,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_msgSender_2845": {
                  "entryPoint": null,
                  "id": 2845,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_spendAllowance_1385": {
                  "entryPoint": 1474,
                  "id": 1385,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_transfer_1169": {
                  "entryPoint": 1689,
                  "id": 1169,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@allowance_962": {
                  "entryPoint": null,
                  "id": 962,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_987": {
                  "entryPoint": 658,
                  "id": 987,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_919": {
                  "entryPoint": null,
                  "id": 919,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decimals_895": {
                  "entryPoint": null,
                  "id": 895,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@decreaseAllowance_1092": {
                  "entryPoint": 811,
                  "id": 1092,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@increaseAllowance_1050": {
                  "entryPoint": 720,
                  "id": 1050,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_875": {
                  "entryPoint": 512,
                  "id": 875,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@symbol_885": {
                  "entryPoint": 796,
                  "id": 885,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_905": {
                  "entryPoint": null,
                  "id": 905,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1020": {
                  "entryPoint": 684,
                  "id": 1020,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_944": {
                  "entryPoint": 1025,
                  "id": 944,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 2488,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 2631,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2665,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2571,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 2529,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2380,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2799,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 2716,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:5950:111",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:111",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "135:486:111",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "145:12:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "155:2:111",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "149:2:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "173:9:111"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "184:2:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "166:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "166:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "166:21:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "196:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "216:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "210:5:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "210:13:111"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "200:6:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "243:9:111"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "254:2:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "239:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "239:18:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "259:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "232:34:111"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "275:10:111",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "284:1:111",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "279:1:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "344:90:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "373:9:111"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "384:1:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "369:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "369:17:111"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "388:2:111",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "365:3:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "365:26:111"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "407:6:111"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "415:1:111"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "403:3:111"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "403:14:111"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "419:2:111"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "399:3:111"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "399:23:111"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "393:5:111"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "393:30:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "358:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "358:66:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "358:66:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:1:111"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "308:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "302:13:111"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "316:19:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "318:15:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "327:1:111"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "330:2:111"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "323:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "323:10:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "318:1:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "298:3:111",
                                "statements": []
                              },
                              "src": "294:140:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "458:9:111"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "469:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "454:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "454:22:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "478:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "450:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "450:31:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "483:1:111",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "443:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "443:42:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "443:42:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "494:121:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "510:9:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "529:6:111"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "537:2:111",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "525:3:111"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "525:15:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "542:66:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "521:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "521:88:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "506:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "506:104:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "612:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "502:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "502:113:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "494:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "104:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "115:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "126:4:111",
                            "type": ""
                          }
                        ],
                        "src": "14:607:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "675:147:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "685:29:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "707:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "694:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "694:20:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "685:5:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "800:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "809:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "812:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "802:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "802:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "802:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "736:5:111"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "747:5:111"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "754:42:111",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "743:3:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "743:54:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "733:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "733:65:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "726:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "726:73:111"
                              },
                              "nodeType": "YulIf",
                              "src": "723:93:111"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "654:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "665:5:111",
                            "type": ""
                          }
                        ],
                        "src": "626:196:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "914:167:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "960:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "969:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "972:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "962:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "962:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "962:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "935:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "931:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "931:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "956:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "927:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "927:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "924:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "985:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1014:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "995:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "995:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "985:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1033:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1060:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1071:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1056:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1056:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1043:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1043:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1033:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "872:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "883:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "895:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "903:6:111",
                            "type": ""
                          }
                        ],
                        "src": "827:254:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1181:92:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1191:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1203:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1214:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1199:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1199:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1191:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1233:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1258:6:111"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1251:6:111"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1251:14:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1244:6:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1244:22:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1226:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1226:41:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1226:41:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1150:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1161:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1172:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1086:187:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1379:76:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1389:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1401:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1412:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1397:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1431:9:111"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1442:6:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1424:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1424:25:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1424:25:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1348:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1359:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1370:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1278:177:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1564:224:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1610:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1619:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1622:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1612:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1612:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1612:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1585:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1594:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1581:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1581:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1606:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1577:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1577:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "1574:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1635:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1664:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1645:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1645:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1635:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1683:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1716:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1727:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1712:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1712:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1693:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1693:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1683:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1740:42:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1767:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1778:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1763:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1763:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1750:12:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1750:32:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1740:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1514:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1525:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1537:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1545:6:111",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1553:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1460:328:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1890:87:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1900:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1912:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1923:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1908:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1908:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1900:4:111"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1942:9:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1957:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1965:4:111",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1953:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1953:17:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1935:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1935:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1935:36:111"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1859:9:111",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1870:6:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1881:4:111",
                            "type": ""
                          }
                        ],
                        "src": "1793:184:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2052:116:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2098:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2107:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2110:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2100:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2100:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2100:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2073:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2082:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2069:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2069:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2094:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2065:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2065:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2062:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2123:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2152:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2133:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2133:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2123:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2018:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2029:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2041:6:111",
                            "type": ""
                          }
                        ],
                        "src": "1982:186:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2260:173:111",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2306:16:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2315:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2318:1:111",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2308:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2308:12:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2308:12:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2281:7:111"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2290:9:111"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2277:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2277:23:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2302:2:111",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2273:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2273:32:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2270:52:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2331:39:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2360:9:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2341:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2341:29:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2331:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2379:48:111",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2412:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2423:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2408:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2408:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2389:18:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2389:38:111"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2379:6:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2218:9:111",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2229:7:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2241:6:111",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2249:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2173:260:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2493:382:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2503:22:111",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2517:1:111",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2520:4:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2513:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2513:12:111"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2503:6:111"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2534:38:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2564:4:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2570:1:111",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "2560:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2560:12:111"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "2538:18:111",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2611:31:111",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2613:27:111",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "2627:6:111"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2635:4:111",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "2623:3:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2623:17:111"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2613:6:111"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2591:18:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2584:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2584:26:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2581:61:111"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2701:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2722:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2725:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2715:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2715:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2715:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2823:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2826:4:111",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2816:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2816:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2816:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2851:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2854:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2844:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2844:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2844:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2657:18:111"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2680:6:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2688:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2677:2:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2677:14:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "2654:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2654:38:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2651:218:111"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2473:4:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2482:6:111",
                            "type": ""
                          }
                        ],
                        "src": "2438:437:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2928:231:111",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2938:16:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2949:1:111"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2952:1:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2945:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2945:9:111"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "2938:3:111"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2985:168:111",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3006:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3009:77:111",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2999:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2999:88:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2999:88:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3107:1:111",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3110:4:111",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3100:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3100:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3100:15:111"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3135:1:111",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3138:4:111",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3128:6:111"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3128:15:111"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3128:15:111"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2969:1:111"
                                  },
                                  {
                                    "name": "sum",
                                    "nodeType": "YulIdentifier",
                                    "src": "2972:3:111"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2966:2:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2966:10:111"
                              },
                              "nodeType": "YulIf",
                              "src": "2963:190:111"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2911:1:111",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2914:1:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "2920:3:111",
                            "type": ""
                          }
                        ],
                        "src": "2880:279:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3338:227:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3355:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3366:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3348:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3348:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3348:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3389:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3400:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3385:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3385:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3405:2:111",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3378:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3378:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3378:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3428:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3439:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3424:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3424:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3444:34:111",
                                    "type": "",
                                    "value": "ERC20: decreased allowance below"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3417:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3499:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3510:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3495:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3495:18:111"
                                  },
                                  {
                                    "hexValue": "207a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3515:7:111",
                                    "type": "",
                                    "value": " zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3488:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3488:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3488:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3532:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3544:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3555:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3540:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3540:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3532:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3315:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3329:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3164:401:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3744:226:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3761:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3772:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3754:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3754:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3754:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3795:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3806:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3791:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3791:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3811:2:111",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3784:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3784:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3784:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3834:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3845:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3830:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3830:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3850:34:111",
                                    "type": "",
                                    "value": "ERC20: approve from the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3823:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3823:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3823:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3905:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3916:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3901:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3901:18:111"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3921:6:111",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3894:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3894:34:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3894:34:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3937:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3949:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3960:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3945:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3945:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3937:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3721:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3735:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3570:400:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4149:224:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4166:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4177:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4159:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4159:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4159:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4200:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4211:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4196:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4196:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4216:2:111",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4189:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4189:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4189:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4239:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4250:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4235:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4235:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4255:34:111",
                                    "type": "",
                                    "value": "ERC20: approve to the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4228:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4228:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4228:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4310:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4321:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4306:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4306:18:111"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4326:4:111",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4299:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4299:32:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4299:32:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4340:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4352:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4363:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4348:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4348:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4340:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4126:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4140:4:111",
                            "type": ""
                          }
                        ],
                        "src": "3975:398:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4552:179:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4569:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4580:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4562:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4562:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4562:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4603:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4614:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4599:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4599:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4619:2:111",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4592:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4592:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4592:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4642:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4653:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4638:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4638:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4658:31:111",
                                    "type": "",
                                    "value": "ERC20: insufficient allowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4631:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4631:59:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4631:59:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4699:26:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4711:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4722:2:111",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4707:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4707:18:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4699:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4529:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4543:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4378:353:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4910:227:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4927:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4938:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4920:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4920:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4920:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4961:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4972:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4957:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4957:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4977:2:111",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4950:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4950:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4950:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5011:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5016:34:111",
                                    "type": "",
                                    "value": "ERC20: transfer from the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5071:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5082:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5067:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5067:18:111"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5087:7:111",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5060:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5060:35:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5060:35:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5104:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5116:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5127:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5112:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5112:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5104:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4887:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4901:4:111",
                            "type": ""
                          }
                        ],
                        "src": "4736:401:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5316:225:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5333:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5344:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5326:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5326:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5326:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5367:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5378:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5363:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5363:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5383:2:111",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5356:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5356:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5356:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5406:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5417:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5402:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5402:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5422:34:111",
                                    "type": "",
                                    "value": "ERC20: transfer to the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5395:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5395:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5395:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5477:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5488:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5473:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5473:18:111"
                                  },
                                  {
                                    "hexValue": "657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5493:5:111",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5466:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5466:33:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5466:33:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5508:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5520:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5531:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5516:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5516:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5508:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5293:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5307:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5142:399:111"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5720:228:111",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5737:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5748:2:111",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5730:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5730:21:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5730:21:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5771:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5782:2:111",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5767:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5767:18:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5787:2:111",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5760:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5760:30:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5760:30:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5810:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5821:2:111",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5806:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5806:18:111"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5826:34:111",
                                    "type": "",
                                    "value": "ERC20: transfer amount exceeds b"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5799:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5799:62:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5799:62:111"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5881:9:111"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5892:2:111",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5877:3:111"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5877:18:111"
                                  },
                                  {
                                    "hexValue": "616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5897:8:111",
                                    "type": "",
                                    "value": "alance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5870:6:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5870:36:111"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5870:36:111"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5915:27:111",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5927:9:111"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5938:3:111",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5923:3:111"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5923:19:111"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5915:4:111"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5697:9:111",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5711:4:111",
                            "type": ""
                          }
                        ],
                        "src": "5546:402:111"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 111,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094c565b60405180910390f35b6100ff6100fa3660046109e1565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a0b565b6102ac565b604051601281526020016100e3565b6100ff6101513660046109e1565b6102d0565b610113610164366004610a47565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a23660046109e1565b61032b565b6100ff6101b53660046109e1565b610401565b6101136101c8366004610a69565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a9c565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a9c565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aef565b61040f565b60606004805461020f90610a9c565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d9908490610aef565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093f91815260200190565b60405180910390a3610693565b600060208083528351808285015260005b818110156109795785810183015185820160400152820161095d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109dc57600080fd5b919050565b600080604083850312156109f457600080fd5b6109fd836109b8565b946020939093013593505050565b600080600060608486031215610a2057600080fd5b610a29846109b8565b9250610a37602085016109b8565b9150604084013590509250925092565b600060208284031215610a5957600080fd5b610a62826109b8565b9392505050565b60008060408385031215610a7c57600080fd5b610a85836109b8565b9150610a93602084016109b8565b90509250929050565b600181811c90821680610ab057607f821691505b602082108103610ae9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f62ed71fbacfb97dfa3e6401f2d119f5f3dde22f0ee484f940b634f8494c295964736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xA0B JUMP JUMPDEST PUSH2 0x2AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0xA47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x31C JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x32B JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x401 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA69 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9C JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x23B SWAP1 PUSH2 0xA9C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2BA DUP6 DUP3 DUP6 PUSH2 0x5C2 JUMP JUMPDEST PUSH2 0x2C5 DUP6 DUP6 DUP6 PUSH2 0x699 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2A0 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x317 SWAP1 DUP8 SWAP1 PUSH2 0xAEF JUMP JUMPDEST PUSH2 0x40F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9C JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C5 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x40F JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x699 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x554 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x693 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x686 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH2 0x693 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x40F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8D9 SWAP1 DUP5 SWAP1 PUSH2 0xAEF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x93F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x979 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x95D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FD DUP4 PUSH2 0x9B8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA29 DUP5 PUSH2 0x9B8 JUMP JUMPDEST SWAP3 POP PUSH2 0xA37 PUSH1 0x20 DUP6 ADD PUSH2 0x9B8 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA62 DUP3 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA85 DUP4 PUSH2 0x9B8 JUMP JUMPDEST SWAP2 POP PUSH2 0xA93 PUSH1 0x20 DUP5 ADD PUSH2 0x9B8 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAB0 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xAE9 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2A6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0x2E 0xD7 0x1F 0xBA 0xCF 0xB9 PUSH30 0xFA3E6401F2D119F5F3DDE22F0EE484F940B634F8494C295964736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "135:365:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1251:14:111;;1244:22;1226:41;;1214:2;1199:18;4433:197:6;1086:187:111;3244:106:6;3331:12;;3244:106;;;1424:25:111;;;1412:2;1397:18;3244:106:6;1278:177:111;5192:286:6;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1935:36:111;;1923:2;1908:18;3093:91:6;1793:184:111;5873:236:6;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;3508:18;;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6596:429::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;4091:18;;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149;2156:98;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:14;4570:32:6;719:10:14;4586:7:6;4595:6;4570:8;:32::i;:::-;4619:4;4612:11;;;4433:197;;;;;:::o;5192:286::-;5319:4;719:10:14;5375:38:6;5391:4;719:10:14;5406:6:6;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:6;;5192:286;-1:-1:-1;;;;5192:286:6:o;5873:236::-;719:10:14;5961:4:6;6040:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5961:4;;719:10:14;6015:66:6;;719:10:14;;6040:27:6;;:40;;6070:10;;6040:40;:::i;:::-;6015:8;:66::i;2367:102::-;2423:13;2455:7;2448:14;;;;;:::i;6596:429::-;719:10:14;6689:4:6;6770:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6689:4;;719:10:14;6815:35:6;;;;6807:85;;;;;;;3366:2:111;6807:85:6;;;3348:21:111;3405:2;3385:18;;;3378:30;3444:34;3424:18;;;3417:62;3515:7;3495:18;;;3488:35;3540:19;;6807:85:6;;;;;;;;;6926:60;6935:5;6942:7;6970:15;6951:16;:34;6926:8;:60::i;3729:189::-;3808:4;719:10:14;3862:28:6;719:10:14;3879:2:6;3883:6;3862:9;:28::i;10123:370::-;10254:19;;;10246:68;;;;;;;3772:2:111;10246:68:6;;;3754:21:111;3811:2;3791:18;;;3784:30;3850:34;3830:18;;;3823:62;3921:6;3901:18;;;3894:34;3945:19;;10246:68:6;3570:400:111;10246:68:6;10332:21;;;10324:68;;;;;;;4177:2:111;10324:68:6;;;4159:21:111;4216:2;4196:18;;;4189:30;4255:34;4235:18;;;4228:62;4326:4;4306:18;;;4299:32;4348:19;;10324:68:6;3975:398:111;10324:68:6;10403:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10454:32;;1424:25:111;;;10454:32:6;;1397:18:111;10454:32:6;;;;;;;10123:370;;;:::o;10770:441::-;4091:18;;;;10900:24;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10986:17;10966:37;;10962:243;;11047:6;11027:16;:26;;11019:68;;;;;;;4580:2:111;11019:68:6;;;4562:21:111;4619:2;4599:18;;;4592:30;4658:31;4638:18;;;4631:59;4707:18;;11019:68:6;4378:353:111;11019:68:6;11129:51;11138:5;11145:7;11173:6;11154:16;:25;11129:8;:51::i;:::-;10890:321;10770:441;;;:::o;7488:651::-;7614:18;;;7606:68;;;;;;;4938:2:111;7606:68:6;;;4920:21:111;4977:2;4957:18;;;4950:30;5016:34;4996:18;;;4989:62;5087:7;5067:18;;;5060:35;5112:19;;7606:68:6;4736:401:111;7606:68:6;7692:16;;;7684:64;;;;;;;5344:2:111;7684:64:6;;;5326:21:111;5383:2;5363:18;;;5356:30;5422:34;5402:18;;;5395:62;5493:5;5473:18;;;5466:33;5516:19;;7684:64:6;5142:399:111;7684:64:6;7830:15;;;7808:19;7830:15;;;;;;;;;;;7863:21;;;;7855:72;;;;;;;5748:2:111;7855:72:6;;;5730:21:111;5787:2;5767:18;;;5760:30;5826:34;5806:18;;;5799:62;5897:8;5877:18;;;5870:36;5923:19;;7855:72:6;5546:402:111;7855:72:6;7961:15;;;;:9;:15;;;;;;;;;;;7979:20;;;7961:38;;8019:13;;;;;;;;:23;;7993:6;;7961:9;8019:23;;7993:6;;8019:23;:::i;:::-;;;;;;;;8073:2;8058:26;;8067:4;8058:26;;;8077:6;8058:26;;;;1424:25:111;;1412:2;1397:18;;1278:177;8058:26:6;;;;;;;;8095:37;11795:121;14:607:111;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:196::-;694:20;;754:42;743:54;;733:65;;723:93;;812:1;809;802:12;723:93;626:196;;;:::o;827:254::-;895:6;903;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;995:29;1014:9;995:29;:::i;:::-;985:39;1071:2;1056:18;;;;1043:32;;-1:-1:-1;;;827:254:111:o;1460:328::-;1537:6;1545;1553;1606:2;1594:9;1585:7;1581:23;1577:32;1574:52;;;1622:1;1619;1612:12;1574:52;1645:29;1664:9;1645:29;:::i;:::-;1635:39;;1693:38;1727:2;1716:9;1712:18;1693:38;:::i;:::-;1683:48;;1778:2;1767:9;1763:18;1750:32;1740:42;;1460:328;;;;;:::o;1982:186::-;2041:6;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;1982:186;-1:-1:-1;;;1982:186:111:o;2173:260::-;2241:6;2249;2302:2;2290:9;2281:7;2277:23;2273:32;2270:52;;;2318:1;2315;2308:12;2270:52;2341:29;2360:9;2341:29;:::i;:::-;2331:39;;2389:38;2423:2;2412:9;2408:18;2389:38;:::i;:::-;2379:48;;2173:260;;;;;:::o;2438:437::-;2517:1;2513:12;;;;2560;;;2581:61;;2635:4;2627:6;2623:17;2613:27;;2581:61;2688:2;2680:6;2677:14;2657:18;2654:38;2651:218;;2725:77;2722:1;2715:88;2826:4;2823:1;2816:15;2854:4;2851:1;2844:15;2651:218;;2438:437;;;:::o;2880:279::-;2945:9;;;2966:10;;;2963:190;;;3009:77;3006:1;2999:88;3110:4;3107:1;3100:15;3138:4;3135:1;3128:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "582200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24603",
                "balanceOf(address)": "2561",
                "decimals()": "244",
                "decreaseAllowance(address,uint256)": "26862",
                "increaseAllowance(address,uint256)": "infinite",
                "name()": "infinite",
                "symbol()": "infinite",
                "totalSupply()": "2304",
                "transfer(address,uint256)": "infinite",
                "transferFrom(address,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/utils/mocks/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping(address => uint256) private _balances;\\n\\n    mapping(address => mapping(address => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * The default value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n     * overridden;\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) public virtual override returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, amount);\\n        _transfer(from, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, _allowances[owner][spender] + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        uint256 currentAllowance = _allowances[owner][spender];\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        unchecked {\\n            _approve(owner, spender, currentAllowance - subtractedValue);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves `amount` of tokens from `sender` to `recipient`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {\\n        require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, amount);\\n\\n        uint256 fromBalance = _balances[from];\\n        require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        unchecked {\\n            _balances[from] = fromBalance - amount;\\n        }\\n        _balances[to] += amount;\\n\\n        emit Transfer(from, to, amount);\\n\\n        _afterTokenTransfer(from, to, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n\\n        _afterTokenTransfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        unchecked {\\n            _balances[account] = accountBalance - amount;\\n        }\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n\\n        _afterTokenTransfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     */\\n    function _approve(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Spend `amount` form the allowance of `owner` toward `spender`.\\n     *\\n     * Does not update the allowance amount in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Might emit an {Approval} event.\\n     */\\n    function _spendAllowance(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * has been transferred to `to`.\\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0xdadd41acb749920eccf40aeaa8d291adf9751399a7343561bad13e7a8d99be0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"test/utils/mocks/MockERC20.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity >=0.8.17 <0.9.0;\\n\\nimport {ERC20} from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\n\\ncontract MockERC20 is ERC20 {\\n    constructor(\\n        string memory name,\\n        string memory symbol,\\n        address[] memory addresses\\n    ) ERC20(name, symbol) {\\n        _mint(msg.sender, 100 * 10**uint256(decimals()));\\n\\n        for (uint256 i = 0; i < addresses.length; i++) {\\n            _mint(addresses[i], 100 * 10**uint256(decimals()));\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3d4c42c57a66e4af80a3ed48ddce8c398567c0cc1f08f4665f9a5b42a43d4503\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 836,
                "contract": "test/utils/mocks/MockERC20.sol:MockERC20",
                "label": "_balances",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 842,
                "contract": "test/utils/mocks/MockERC20.sol:MockERC20",
                "label": "_allowances",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 844,
                "contract": "test/utils/mocks/MockERC20.sol:MockERC20",
                "label": "_totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 846,
                "contract": "test/utils/mocks/MockERC20.sol:MockERC20",
                "label": "_name",
                "offset": 0,
                "slot": "3",
                "type": "t_string_storage"
              },
              {
                "astId": 848,
                "contract": "test/utils/mocks/MockERC20.sol:MockERC20",
                "label": "_symbol",
                "offset": 0,
                "slot": "4",
                "type": "t_string_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> @ensdomains/buffer/contracts/Buffer.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "@ensdomains/buffer/contracts/Buffer.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> @ensdomains/solsha1/contracts/SHA1.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "@ensdomains/solsha1/contracts/SHA1.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnsregistrar/PublicSuffixList.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnsregistrar/PublicSuffixList.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnsregistrar/SimplePublicSuffixList.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnsregistrar/SimplePublicSuffixList.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnsregistrar/TLDPublicSuffixList.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnsregistrar/TLDPublicSuffixList.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/BytesUtils.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/BytesUtils.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/Owned.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/Owned.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/RRUtils.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/RRUtils.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/algorithms/Algorithm.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/algorithms/Algorithm.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/algorithms/EllipticCurve.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/algorithms/EllipticCurve.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/algorithms/RSASHA1Algorithm.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/algorithms/RSASHA1Algorithm.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/algorithms/RSASHA256Algorithm.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/algorithms/RSASHA256Algorithm.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/algorithms/RSAVerify.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/algorithms/RSAVerify.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/digests/Digest.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/digests/Digest.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/digests/DummyDigest.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/digests/DummyDigest.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/digests/SHA1Digest.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/digests/SHA1Digest.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnssec-oracle/digests/SHA256Digest.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnssec-oracle/digests/SHA256Digest.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/ethregistrar/BaseRegistrarImplementation.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/ethregistrar/BaseRegistrarImplementation.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/ethregistrar/IBaseRegistrar.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/ethregistrar/IBaseRegistrar.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/ethregistrar/IBulkRenewal.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/ethregistrar/IBulkRenewal.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/ethregistrar/StringUtils.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/ethregistrar/StringUtils.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/registry/ENS.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/registry/ENS.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/registry/ENSRegistry.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/registry/ENSRegistryWithFallback.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/registry/ENSRegistryWithFallback.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/registry/FIFSRegistrar.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/registry/FIFSRegistrar.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/registry/IReverseRegistrar.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/registry/IReverseRegistrar.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/registry/ReverseRegistrar.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/registry/ReverseRegistrar.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/registry/TestRegistrar.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/registry/TestRegistrar.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/resolvers/OwnedResolver.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/resolvers/OwnedResolver.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/root/Controllable.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/root/Controllable.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/root/Ownable.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/root/Ownable.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/root/Root.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/root/Root.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> test/dnssec-oracle/TestBytesUtils.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "test/dnssec-oracle/TestBytesUtils.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> test/dnssec-oracle/TestRRUtils.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "test/dnssec-oracle/TestRRUtils.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3420",
        "formattedMessage": "Warning: Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.17;\"\n--> contracts/ethregistrar/IBaseRegistrar.sol\n\n",
        "message": "Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.17;\"",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/ethregistrar/IBaseRegistrar.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3420",
        "formattedMessage": "Warning: Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.17;\"\n--> contracts/ethregistrar/IBulkRenewal.sol\n\n",
        "message": "Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.17;\"",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/ethregistrar/IBulkRenewal.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:20:9:\n   |\n20 |         address owner = records[node].owner;\n   |         ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:150:5:\n    |\n150 |     function owner(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4580,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4307
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 443,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 430
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:41:9:\n   |\n41 |         address owner,\n   |         ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:150:5:\n    |\n150 |     function owner(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4580,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4307
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 991,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 978
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:42:9:\n   |\n42 |         address resolver,\n   |         ^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:170:5:\n    |\n170 |     function resolver(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4922,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4753
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1017,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 1001
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:43:9:\n   |\n43 |         uint64 ttl\n   |         ^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:185:5:\n    |\n185 |     function ttl(bytes32 node) public view virtual override returns (uint64) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 5204,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 5090
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1037,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 1027
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:60:9:\n   |\n60 |         address owner,\n   |         ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:150:5:\n    |\n150 |     function owner(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4580,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4307
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1557,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 1544
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:61:9:\n   |\n61 |         address resolver,\n   |         ^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:170:5:\n    |\n170 |     function resolver(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4922,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4753
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1583,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 1567
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:62:9:\n   |\n62 |         uint64 ttl\n   |         ^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:185:5:\n    |\n185 |     function ttl(bytes32 node) public view virtual override returns (uint64) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 5204,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 5090
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1603,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 1593
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:73:37:\n   |\n73 |     function setOwner(bytes32 node, address owner)\n   |                                     ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:150:5:\n    |\n150 |     function owner(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4580,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4307
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 2042,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 2029
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistry.sol:92:9:\n   |\n92 |         address owner\n   |         ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:150:5:\n    |\n150 |     function owner(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4580,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4307
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 2600,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 2587
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/registry/ENSRegistry.sol:105:40:\n    |\n105 |     function setResolver(bytes32 node, address resolver)\n    |                                        ^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:170:5:\n    |\n170 |     function resolver(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4922,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4753
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 3069,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 3053
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/registry/ENSRegistry.sol:120:35:\n    |\n120 |     function setTTL(bytes32 node, uint64 ttl)\n    |                                   ^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:185:5:\n    |\n185 |     function ttl(bytes32 node) public view virtual override returns (uint64) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 5204,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 5090
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 3428,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 3418
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/registry/ENSRegistry.sol:210:31:\n    |\n210 |     function isApprovedForAll(address owner, address operator)\n    |                               ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:150:5:\n    |\n150 |     function owner(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4580,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4307
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 5909,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 5896
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/registry/ENSRegistry.sol:220:38:\n    |\n220 |     function _setOwner(bytes32 node, address owner) internal virtual {\n    |                                      ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:150:5:\n    |\n150 |     function owner(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4580,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4307
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 6121,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 6108
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/registry/ENSRegistry.sol:226:9:\n    |\n226 |         address resolver,\n    |         ^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:170:5:\n    |\n170 |     function resolver(bytes32 node)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 4922,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 4753
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 6265,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 6249
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/registry/ENSRegistry.sol:227:9:\n    |\n227 |         uint64 ttl\n    |         ^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ENSRegistry.sol:185:5:\n    |\n185 |     function ttl(bytes32 node) public view virtual override returns (uint64) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 5204,
            "file": "contracts/registry/ENSRegistry.sol",
            "message": "The shadowed declaration is here:",
            "start": 5090
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 6285,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 6275
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2319",
        "formattedMessage": "Warning: This declaration shadows a builtin symbol.\n  --> contracts/dnssec-oracle/DNSSECImpl.sol:99:61:\n   |\n99 |     function verifyRRSet(RRSetWithSignature[] memory input, uint256 now)\n   |                                                             ^^^^^^^^^^^\n\n",
        "message": "This declaration shadows a builtin symbol.",
        "severity": "warning",
        "sourceLocation": {
          "end": 3625,
          "file": "contracts/dnssec-oracle/DNSSECImpl.sol",
          "start": 3614
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2319",
        "formattedMessage": "Warning: This declaration shadows a builtin symbol.\n   --> contracts/dnssec-oracle/DNSSECImpl.sol:132:9:\n    |\n132 |         uint256 now\n    |         ^^^^^^^^^^^\n\n",
        "message": "This declaration shadows a builtin symbol.",
        "severity": "warning",
        "sourceLocation": {
          "end": 4734,
          "file": "contracts/dnssec-oracle/DNSSECImpl.sol",
          "start": 4723
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/registry/ReverseRegistrar.sol:141:9:\n    |\n141 |         bytes32 node = claimForAddr(addr, owner, resolver);\n    |         ^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/registry/ReverseRegistrar.sol:151:5:\n    |\n151 |     function node(address addr) public pure override returns (bytes32) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 5452,
            "file": "contracts/registry/ReverseRegistrar.sol",
            "message": "The shadowed declaration is here:",
            "start": 5251
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 4965,
          "file": "contracts/registry/ReverseRegistrar.sol",
          "start": 4953
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/ethregistrar/ExponentialPremiumPriceOracle.sol:65:29:\n   |\n65 |     function decayedPremium(uint256 startPremium, uint256 elapsed)\n   |                             ^^^^^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n --> contracts/ethregistrar/ExponentialPremiumPriceOracle.sol:8:5:\n  |\n8 |     uint256 immutable startPremium;\n  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 233,
            "file": "contracts/ethregistrar/ExponentialPremiumPriceOracle.sol",
            "message": "The shadowed declaration is here:",
            "start": 203
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 2210,
          "file": "contracts/ethregistrar/ExponentialPremiumPriceOracle.sol",
          "start": 2190
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/registry/ENSRegistryWithFallback.sol:58:38:\n   |\n58 |     function _setOwner(bytes32 node, address owner) internal override {\n   |                                      ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> contracts/registry/ENSRegistryWithFallback.sol:37:5:\n   |\n37 |     function owner(bytes32 node) public view override returns (address) {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 1042,
            "file": "contracts/registry/ENSRegistryWithFallback.sol",
            "message": "The shadowed declaration is here:",
            "start": 851
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1446,
          "file": "contracts/registry/ENSRegistryWithFallback.sol",
          "start": 1433
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/wrapper/NameWrapper.sol:311:9:\n    |\n311 |         bytes calldata name,\n    |         ^^^^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> contracts/wrapper/NameWrapper.sol:40:5:\n   |\n40 |     string public constant name = \"NameWrapper\";\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 1651,
            "file": "contracts/wrapper/NameWrapper.sol",
            "message": "The shadowed declaration is here:",
            "start": 1608
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 10375,
          "file": "contracts/wrapper/NameWrapper.sol",
          "start": 10356
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/wrapper/NameWrapper.sol:781:45:\n    |\n781 |     function _addLabel(string memory label, bytes memory name)\n    |                                             ^^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> contracts/wrapper/NameWrapper.sol:40:5:\n   |\n40 |     string public constant name = \"NameWrapper\";\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 1651,
            "file": "contracts/wrapper/NameWrapper.sol",
            "message": "The shadowed declaration is here:",
            "start": 1608
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 25681,
          "file": "contracts/wrapper/NameWrapper.sol",
          "start": 25664
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/wrapper/NameWrapper.sol:813:9:\n    |\n813 |         bytes memory name,\n    |         ^^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> contracts/wrapper/NameWrapper.sol:40:5:\n   |\n40 |     string public constant name = \"NameWrapper\";\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 1651,
            "file": "contracts/wrapper/NameWrapper.sol",
            "message": "The shadowed declaration is here:",
            "start": 1608
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 26546,
          "file": "contracts/wrapper/NameWrapper.sol",
          "start": 26529
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/wrapper/NameWrapper.sol:831:9:\n    |\n831 |         bytes memory name = _addLabel(label, names[parentNode]);\n    |         ^^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> contracts/wrapper/NameWrapper.sol:40:5:\n   |\n40 |     string public constant name = \"NameWrapper\";\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 1651,
            "file": "contracts/wrapper/NameWrapper.sol",
            "message": "The shadowed declaration is here:",
            "start": 1608
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 27010,
          "file": "contracts/wrapper/NameWrapper.sol",
          "start": 26993
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/wrapper/NameWrapper.sol:862:9:\n    |\n862 |         bytes memory name = _addLabel(label, names[parentNode]);\n    |         ^^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> contracts/wrapper/NameWrapper.sol:40:5:\n   |\n40 |     string public constant name = \"NameWrapper\";\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 1651,
            "file": "contracts/wrapper/NameWrapper.sol",
            "message": "The shadowed declaration is here:",
            "start": 1608
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 27828,
          "file": "contracts/wrapper/NameWrapper.sol",
          "start": 27811
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/registry/ENSRegistry.sol:28:5:\n   |\n28 |     constructor() public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 687,
          "file": "contracts/registry/ENSRegistry.sol",
          "start": 618
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/root/Root.sol:18:5:\n   |\n18 |     constructor(ENS _ens) public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 508,
          "file": "contracts/root/Root.sol",
          "start": 452
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/root/Ownable.sol:16:5:\n   |\n16 |     constructor() public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 326,
          "file": "contracts/root/Ownable.sol",
          "start": 270
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/dnssec-oracle/Owned.sol:14:5:\n   |\n14 |     constructor() public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 267,
          "file": "contracts/dnssec-oracle/Owned.sol",
          "start": 211
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5815",
        "formattedMessage": "Warning: Interface functions are implicitly \"virtual\"\n  --> contracts/dnssec-oracle/algorithms/Algorithm.sol:14:5:\n   |\n14 |     function verify(\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Interface functions are implicitly \"virtual\"",
        "severity": "warning",
        "sourceLocation": {
          "end": 529,
          "file": "contracts/dnssec-oracle/algorithms/Algorithm.sol",
          "start": 379
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5815",
        "formattedMessage": "Warning: Interface functions are implicitly \"virtual\"\n  --> contracts/dnssec-oracle/digests/Digest.sol:13:5:\n   |\n13 |     function verify(bytes calldata data, bytes calldata hash)\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Interface functions are implicitly \"virtual\"",
        "severity": "warning",
        "sourceLocation": {
          "end": 460,
          "file": "contracts/dnssec-oracle/digests/Digest.sol",
          "start": 333
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/ethregistrar/LinearPremiumPriceOracle.sol:18:5:\n   |\n18 |     constructor(\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 776,
          "file": "contracts/ethregistrar/LinearPremiumPriceOracle.sol",
          "start": 458
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/registry/ENSRegistryWithFallback.sol:15:5:\n   |\n15 |     constructor(ENS _old) public ENSRegistry() {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 318,
          "file": "contracts/registry/ENSRegistryWithFallback.sol",
          "start": 248
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/registry/FIFSRegistrar.sol:25:5:\n   |\n25 |     constructor(ENS ensAddr, bytes32 node) public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 695,
          "file": "contracts/registry/FIFSRegistrar.sol",
          "start": 594
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/ethregistrar/StablePriceOracle.sol:82:9:\n   |\n82 |         string memory name,\n   |         ^^^^^^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 2430,
          "file": "contracts/ethregistrar/StablePriceOracle.sol",
          "start": 2412
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/ethregistrar/StablePriceOracle.sol:83:9:\n   |\n83 |         uint256 expires,\n   |         ^^^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 2455,
          "file": "contracts/ethregistrar/StablePriceOracle.sol",
          "start": 2440
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/ethregistrar/StablePriceOracle.sol:84:9:\n   |\n84 |         uint256 duration\n   |         ^^^^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 2481,
          "file": "contracts/ethregistrar/StablePriceOracle.sol",
          "start": 2465
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/ethregistrar/LinearPremiumPriceOracle.sol:29:9:\n   |\n29 |         string memory name,\n   |         ^^^^^^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 827,
          "file": "contracts/ethregistrar/LinearPremiumPriceOracle.sol",
          "start": 809
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n  --> contracts/dnsregistrar/TLDPublicSuffixList.sol:12:5:\n   |\n12 |     function isPublicSuffix(bytes calldata name)\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 505,
          "file": "contracts/dnsregistrar/TLDPublicSuffixList.sol",
          "start": 267
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n  --> contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol:10:5:\n   |\n10 |     function verify(\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 368,
          "file": "contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol",
          "start": 208
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n  --> contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol:17:5:\n   |\n17 |     function verify(\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 766,
          "file": "contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol",
          "start": 444
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n   --> contracts/ethregistrar/BaseRegistrarImplementation.sol:195:5:\n    |\n195 |     function supportsInterface(bytes4 interfaceID)\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 7094,
          "file": "contracts/ethregistrar/BaseRegistrarImplementation.sol",
          "start": 6809
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n  --> contracts/wrapper/test/NameGriefer.sol:48:5:\n   |\n48 |     function onERC1155BatchReceived(\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 1768,
          "file": "contracts/wrapper/test/NameGriefer.sol",
          "start": 1514
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n  --> contracts/wrapper/test/NameGriefer.sol:58:5:\n   |\n58 |     function supportsInterface(bytes4 interfaceID)\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 2293,
          "file": "contracts/wrapper/test/NameGriefer.sol",
          "start": 1774
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n  --> test/dnssec-oracle/TestRRUtils.sol:85:3:\n   |\n85 |   function testKeyTag() public view {\n   |   ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 6146,
          "file": "test/dnssec-oracle/TestRRUtils.sol",
          "start": 4263
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "@ensdomains/buffer/contracts/Buffer.sol": {
        "ast": {
          "absolutePath": "@ensdomains/buffer/contracts/Buffer.sol",
          "exportedSymbols": {
            "Buffer": [
              521
            ]
          },
          "id": 522,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Buffer",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "25:376:0",
                "text": " @dev A library for working with mutable byte buffers in Solidity.\n Byte buffers are mutable and expandable, and provide a variety of primitives\n for writing to them. At any time you can fetch a bytes object containing the\n current contents of the buffer. The bytes object should not be stored between\n operations, as it may change due to resizing of the buffer."
              },
              "fullyImplemented": true,
              "id": 521,
              "linearizedBaseContracts": [
                521
              ],
              "name": "Buffer",
              "nameLocation": "410:6:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "Buffer.buffer",
                  "id": 7,
                  "members": [
                    {
                      "constant": false,
                      "id": 4,
                      "mutability": "mutable",
                      "name": "buf",
                      "nameLocation": "707:3:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 7,
                      "src": "701:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "701:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6,
                      "mutability": "mutable",
                      "name": "capacity",
                      "nameLocation": "725:8:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 7,
                      "src": "720:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "720:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "buffer",
                  "nameLocation": "684:6:0",
                  "nodeType": "StructDefinition",
                  "scope": 521,
                  "src": "677:63:0",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44,
                    "nodeType": "Block",
                    "src": "1062:370:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 19,
                              "name": "capacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13,
                              "src": "1076:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "3332",
                              "id": 20,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1087:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            "src": "1076:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1093:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1076:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 34,
                        "nodeType": "IfStatement",
                        "src": "1072:81:0",
                        "trueBody": {
                          "id": 33,
                          "nodeType": "Block",
                          "src": "1096:57:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 31,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 24,
                                  "name": "capacity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13,
                                  "src": "1110:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 30,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "3332",
                                    "id": 25,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1122:2:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 28,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 26,
                                          "name": "capacity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13,
                                          "src": "1128:8:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "%",
                                        "rightExpression": {
                                          "hexValue": "3332",
                                          "id": 27,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1139:2:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_32_by_1",
                                            "typeString": "int_const 32"
                                          },
                                          "value": "32"
                                        },
                                        "src": "1128:13:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 29,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1127:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1122:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1110:32:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32,
                              "nodeType": "ExpressionStatement",
                              "src": "1110:32:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 39,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 35,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11,
                              "src": "1208:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 37,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "1212:8:0",
                            "memberName": "capacity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6,
                            "src": "1208:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 38,
                            "name": "capacity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13,
                            "src": "1223:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1208:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 40,
                        "nodeType": "ExpressionStatement",
                        "src": "1208:23:0"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1250:156:0",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1264:22:0",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1281:4:0",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1275:5:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1275:11:0"
                              },
                              "variables": [
                                {
                                  "name": "ptr",
                                  "nodeType": "YulTypedName",
                                  "src": "1268:3:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "buf",
                                    "nodeType": "YulIdentifier",
                                    "src": "1306:3:0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1311:3:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1299:6:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1299:16:0"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1299:16:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1335:3:0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1340:1:0",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1328:6:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1328:14:0"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1328:14:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1362:4:0",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1372:2:0",
                                        "type": "",
                                        "value": "32"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1380:3:0"
                                          },
                                          {
                                            "name": "capacity",
                                            "nodeType": "YulIdentifier",
                                            "src": "1385:8:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1376:3:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1376:18:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1368:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1368:27:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1355:6:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1355:41:0"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1355:41:0"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 11,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1306:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1385:8:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 41,
                        "nodeType": "InlineAssembly",
                        "src": "1241:165:0"
                      },
                      {
                        "expression": {
                          "id": 42,
                          "name": "buf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11,
                          "src": "1422:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 18,
                        "id": 43,
                        "nodeType": "Return",
                        "src": "1415:10:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8,
                    "nodeType": "StructuredDocumentation",
                    "src": "746:226:0",
                    "text": " @dev Initializes a buffer with an initial capacity.\n @param buf The buffer to initialize.\n @param capacity The number of bytes of space to allocate the buffer.\n @return The buffer, for chaining."
                  },
                  "id": 45,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "init",
                  "nameLocation": "986:4:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "1005:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 45,
                        "src": "991:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 10,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9,
                            "name": "buffer",
                            "nameLocations": [
                              "991:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "991:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "991:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13,
                        "mutability": "mutable",
                        "name": "capacity",
                        "nameLocation": "1015:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 45,
                        "src": "1010:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1010:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "990:34:0"
                  },
                  "returnParameters": {
                    "id": 18,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 45,
                        "src": "1047:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 16,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 15,
                            "name": "buffer",
                            "nameLocations": [
                              "1047:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "1047:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "1047:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1046:15:0"
                  },
                  "scope": 521,
                  "src": "977:455:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 73,
                    "nodeType": "Block",
                    "src": "1747:108:0",
                    "statements": [
                      {
                        "assignments": [
                          56
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 56,
                            "mutability": "mutable",
                            "name": "buf",
                            "nameLocation": "1771:3:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 73,
                            "src": "1757:17:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                              "typeString": "struct Buffer.buffer"
                            },
                            "typeName": {
                              "id": 55,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 54,
                                "name": "buffer",
                                "nameLocations": [
                                  "1757:6:0"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 7,
                                "src": "1757:6:0"
                              },
                              "referencedDeclaration": 7,
                              "src": "1757:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                                "typeString": "struct Buffer.buffer"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 57,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1757:17:0"
                      },
                      {
                        "expression": {
                          "id": 62,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 58,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 56,
                              "src": "1784:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 60,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "1788:3:0",
                            "memberName": "buf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4,
                            "src": "1784:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 61,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 48,
                            "src": "1794:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "1784:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 63,
                        "nodeType": "ExpressionStatement",
                        "src": "1784:11:0"
                      },
                      {
                        "expression": {
                          "id": 69,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 64,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 56,
                              "src": "1805:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 66,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "1809:8:0",
                            "memberName": "capacity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6,
                            "src": "1805:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 67,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 48,
                              "src": "1820:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 68,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1822:6:0",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1820:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1805:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 70,
                        "nodeType": "ExpressionStatement",
                        "src": "1805:23:0"
                      },
                      {
                        "expression": {
                          "id": 71,
                          "name": "buf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 56,
                          "src": "1845:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 53,
                        "id": 72,
                        "nodeType": "Return",
                        "src": "1838:10:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 46,
                    "nodeType": "StructuredDocumentation",
                    "src": "1438:232:0",
                    "text": " @dev Initializes a new buffer from an existing bytes object.\n      Changes to the buffer may mutate the original value.\n @param b The bytes object to initialize the buffer with.\n @return A new buffer."
                  },
                  "id": 74,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fromBytes",
                  "nameLocation": "1684:9:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 49,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 48,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1707:1:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 74,
                        "src": "1694:14:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 47,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1694:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1693:16:0"
                  },
                  "returnParameters": {
                    "id": 53,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 52,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 74,
                        "src": "1732:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 51,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50,
                            "name": "buffer",
                            "nameLocations": [
                              "1732:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "1732:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "1732:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1731:15:0"
                  },
                  "scope": 521,
                  "src": "1675:180:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 97,
                    "nodeType": "Block",
                    "src": "1924:104:0",
                    "statements": [
                      {
                        "assignments": [
                          83
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 83,
                            "mutability": "mutable",
                            "name": "oldbuf",
                            "nameLocation": "1947:6:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 97,
                            "src": "1934:19:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 82,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1934:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 86,
                        "initialValue": {
                          "expression": {
                            "id": 84,
                            "name": "buf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 77,
                            "src": "1956:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                              "typeString": "struct Buffer.buffer memory"
                            }
                          },
                          "id": 85,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1960:3:0",
                          "memberName": "buf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4,
                          "src": "1956:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1934:29:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 88,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 77,
                              "src": "1978:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "id": 89,
                              "name": "capacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 79,
                              "src": "1983:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 87,
                            "name": "init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45,
                            "src": "1973:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 90,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1973:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "id": 91,
                        "nodeType": "ExpressionStatement",
                        "src": "1973:19:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 93,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 77,
                              "src": "2009:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "id": 94,
                              "name": "oldbuf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 83,
                              "src": "2014:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 92,
                            "name": "append",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              241,
                              264
                            ],
                            "referencedDeclaration": 264,
                            "src": "2002:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 95,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2002:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "id": 96,
                        "nodeType": "ExpressionStatement",
                        "src": "2002:19:0"
                      }
                    ]
                  },
                  "id": 98,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resize",
                  "nameLocation": "1870:6:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 80,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 77,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "1891:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 98,
                        "src": "1877:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 76,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 75,
                            "name": "buffer",
                            "nameLocations": [
                              "1877:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "1877:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "1877:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 79,
                        "mutability": "mutable",
                        "name": "capacity",
                        "nameLocation": "1901:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 98,
                        "src": "1896:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 78,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1896:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1876:34:0"
                  },
                  "returnParameters": {
                    "id": 81,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1924:0:0"
                  },
                  "scope": 521,
                  "src": "1861:167:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 116,
                    "nodeType": "Block",
                    "src": "2090:78:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 107,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 100,
                            "src": "2104:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 108,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 102,
                            "src": "2108:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2104:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 113,
                        "nodeType": "IfStatement",
                        "src": "2100:44:0",
                        "trueBody": {
                          "id": 112,
                          "nodeType": "Block",
                          "src": "2111:33:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 110,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 100,
                                "src": "2132:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 106,
                              "id": 111,
                              "nodeType": "Return",
                              "src": "2125:8:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 114,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2160:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 106,
                        "id": 115,
                        "nodeType": "Return",
                        "src": "2153:8:0"
                      }
                    ]
                  },
                  "id": 117,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "max",
                  "nameLocation": "2043:3:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 100,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "2052:1:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "2047:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 99,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2047:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 102,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "2060:1:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "2055:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 101,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2055:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2046:16:0"
                  },
                  "returnParameters": {
                    "id": 106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 105,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "2084:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 104,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2084:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2083:6:0"
                  },
                  "scope": 521,
                  "src": "2034:134:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 130,
                    "nodeType": "Block",
                    "src": "2391:123:0",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2410:78:0",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2424:24:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "buf",
                                    "nodeType": "YulIdentifier",
                                    "src": "2444:3:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2438:5:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2438:10:0"
                              },
                              "variables": [
                                {
                                  "name": "bufptr",
                                  "nodeType": "YulTypedName",
                                  "src": "2428:6:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "bufptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2468:6:0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2476:1:0",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2461:6:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2461:17:0"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2461:17:0"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 121,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2444:3:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 127,
                        "nodeType": "InlineAssembly",
                        "src": "2401:87:0"
                      },
                      {
                        "expression": {
                          "id": 128,
                          "name": "buf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 121,
                          "src": "2504:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 126,
                        "id": 129,
                        "nodeType": "Return",
                        "src": "2497:10:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 118,
                    "nodeType": "StructuredDocumentation",
                    "src": "2174:137:0",
                    "text": " @dev Sets buffer length to 0.\n @param buf The buffer to truncate.\n @return The original buffer, for chaining.."
                  },
                  "id": 131,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "truncate",
                  "nameLocation": "2325:8:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 122,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 121,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "2348:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 131,
                        "src": "2334:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 120,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 119,
                            "name": "buffer",
                            "nameLocations": [
                              "2334:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "2334:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "2334:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2333:19:0"
                  },
                  "returnParameters": {
                    "id": 126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 125,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 131,
                        "src": "2376:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 124,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 123,
                            "name": "buffer",
                            "nameLocations": [
                              "2376:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "2376:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "2376:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2375:15:0"
                  },
                  "scope": 521,
                  "src": "2316:198:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 216,
                    "nodeType": "Block",
                    "src": "2984:1272:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 148,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 141,
                                "src": "3002:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 149,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 139,
                                  "src": "3009:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3014:6:0",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3009:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3002:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 147,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2994:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2994:27:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 153,
                        "nodeType": "ExpressionStatement",
                        "src": "2994:27:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 154,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 137,
                              "src": "3036:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 155,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 141,
                              "src": "3042:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3036:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 157,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 135,
                              "src": "3048:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 158,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3052:8:0",
                            "memberName": "capacity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6,
                            "src": "3048:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3036:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 174,
                        "nodeType": "IfStatement",
                        "src": "3032:100:0",
                        "trueBody": {
                          "id": 173,
                          "nodeType": "Block",
                          "src": "3062:70:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 161,
                                    "name": "buf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 135,
                                    "src": "3083:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 170,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 163,
                                            "name": "buf",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 135,
                                            "src": "3092:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                              "typeString": "struct Buffer.buffer memory"
                                            }
                                          },
                                          "id": 164,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "3096:8:0",
                                          "memberName": "capacity",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6,
                                          "src": "3092:12:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 167,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 165,
                                            "name": "len",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 141,
                                            "src": "3106:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 166,
                                            "name": "off",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 137,
                                            "src": "3112:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "3106:9:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 162,
                                        "name": "max",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 117,
                                        "src": "3088:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 168,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3088:28:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 169,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3119:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "3088:32:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 160,
                                  "name": "resize",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 98,
                                  "src": "3076:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (struct Buffer.buffer memory,uint256) pure"
                                  }
                                },
                                "id": 171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3076:45:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 172,
                              "nodeType": "ExpressionStatement",
                              "src": "3076:45:0"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          176
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 176,
                            "mutability": "mutable",
                            "name": "dest",
                            "nameLocation": "3147:4:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 216,
                            "src": "3142:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 175,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3142:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 177,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3142:9:0"
                      },
                      {
                        "assignments": [
                          179
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 179,
                            "mutability": "mutable",
                            "name": "src",
                            "nameLocation": "3166:3:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 216,
                            "src": "3161:8:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 178,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3161:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 180,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3161:8:0"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "3188:502:0",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3251:24:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "buf",
                                    "nodeType": "YulIdentifier",
                                    "src": "3271:3:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3265:5:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3265:10:0"
                              },
                              "variables": [
                                {
                                  "name": "bufptr",
                                  "nodeType": "YulTypedName",
                                  "src": "3255:6:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3334:27:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "bufptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3354:6:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3348:5:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3348:13:0"
                              },
                              "variables": [
                                {
                                  "name": "buflen",
                                  "nodeType": "YulTypedName",
                                  "src": "3338:6:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3453:33:0",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "bufptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3469:6:0"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3477:2:0",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3465:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3465:15:0"
                                  },
                                  {
                                    "name": "off",
                                    "nodeType": "YulIdentifier",
                                    "src": "3482:3:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3461:3:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3461:25:0"
                              },
                              "variableNames": [
                                {
                                  "name": "dest",
                                  "nodeType": "YulIdentifier",
                                  "src": "3453:4:0"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3586:61:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "bufptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3611:6:0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "3623:3:0"
                                            },
                                            {
                                              "name": "off",
                                              "nodeType": "YulIdentifier",
                                              "src": "3628:3:0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3619:3:0"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3619:13:0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3604:6:0"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3604:29:0"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3604:29:0"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "3567:3:0"
                                      },
                                      {
                                        "name": "off",
                                        "nodeType": "YulIdentifier",
                                        "src": "3572:3:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3563:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3563:13:0"
                                  },
                                  {
                                    "name": "buflen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3578:6:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3560:2:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3560:25:0"
                              },
                              "nodeType": "YulIf",
                              "src": "3557:90:0"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3660:20:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "3671:4:0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3677:2:0",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3667:3:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3667:13:0"
                              },
                              "variableNames": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "3660:3:0"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 135,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3271:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 139,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3671:4:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 176,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3453:4:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 141,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3567:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 141,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3623:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 137,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3482:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 137,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3572:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 137,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3628:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 179,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3660:3:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 181,
                        "nodeType": "InlineAssembly",
                        "src": "3179:511:0"
                      },
                      {
                        "body": {
                          "id": 198,
                          "nodeType": "Block",
                          "src": "3779:136:0",
                          "statements": [
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "3802:56:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dest",
                                          "nodeType": "YulIdentifier",
                                          "src": "3827:4:0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "3839:3:0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3833:5:0"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3833:10:0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3820:6:0"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3820:24:0"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3820:24:0"
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 176,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "3827:4:0",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 179,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "3839:3:0",
                                  "valueSize": 1
                                }
                              ],
                              "id": 189,
                              "nodeType": "InlineAssembly",
                              "src": "3793:65:0"
                            },
                            {
                              "expression": {
                                "id": 192,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 190,
                                  "name": "dest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 176,
                                  "src": "3871:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 191,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3879:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "3871:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 193,
                              "nodeType": "ExpressionStatement",
                              "src": "3871:10:0"
                            },
                            {
                              "expression": {
                                "id": 196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 194,
                                  "name": "src",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 179,
                                  "src": "3895:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3902:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "3895:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 197,
                              "nodeType": "ExpressionStatement",
                              "src": "3895:9:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 182,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 141,
                            "src": "3757:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "3332",
                            "id": 183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3764:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "3757:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 199,
                        "loopExpression": {
                          "expression": {
                            "id": 187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 185,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 141,
                              "src": "3768:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "-=",
                            "rightHandSide": {
                              "hexValue": "3332",
                              "id": 186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3775:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            "src": "3768:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 188,
                          "nodeType": "ExpressionStatement",
                          "src": "3768:9:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "3750:165:0"
                      },
                      {
                        "id": 213,
                        "nodeType": "UncheckedBlock",
                        "src": "3957:272:0",
                        "statements": [
                          {
                            "assignments": [
                              201
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 201,
                                "mutability": "mutable",
                                "name": "mask",
                                "nameLocation": "3986:4:0",
                                "nodeType": "VariableDeclaration",
                                "scope": 213,
                                "src": "3981:9:0",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 200,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3981:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 211,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 207,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "323536",
                                      "id": 202,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3994:3:0",
                                      "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": 205,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3332",
                                            "id": 203,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4002:2:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 204,
                                            "name": "len",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 141,
                                            "src": "4007:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4002:8:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 206,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "4001:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3994:17:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 208,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3993:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4015:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "3993:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3981:35:0"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "4039:180:0",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "4057:41:0",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "4082:3:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "4076:5:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4076:10:0"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "mask",
                                            "nodeType": "YulIdentifier",
                                            "src": "4092:4:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "4088:3:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4088:9:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4072:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4072:26:0"
                                  },
                                  "variables": [
                                    {
                                      "name": "srcpart",
                                      "nodeType": "YulTypedName",
                                      "src": "4061:7:0",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "4115:38:0",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "dest",
                                            "nodeType": "YulIdentifier",
                                            "src": "4141:4:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "4135:5:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4135:11:0"
                                      },
                                      {
                                        "name": "mask",
                                        "nodeType": "YulIdentifier",
                                        "src": "4148:4:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4131:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4131:22:0"
                                  },
                                  "variables": [
                                    {
                                      "name": "destpart",
                                      "nodeType": "YulTypedName",
                                      "src": "4119:8:0",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dest",
                                        "nodeType": "YulIdentifier",
                                        "src": "4177:4:0"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "destpart",
                                            "nodeType": "YulIdentifier",
                                            "src": "4186:8:0"
                                          },
                                          {
                                            "name": "srcpart",
                                            "nodeType": "YulIdentifier",
                                            "src": "4196:7:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "or",
                                          "nodeType": "YulIdentifier",
                                          "src": "4183:2:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4183:21:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "4170:6:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4170:35:0"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "4170:35:0"
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 176,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "4141:4:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 176,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "4177:4:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 201,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "4092:4:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 201,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "4148:4:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 179,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "4082:3:0",
                                "valueSize": 1
                              }
                            ],
                            "id": 212,
                            "nodeType": "InlineAssembly",
                            "src": "4030:189:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 214,
                          "name": "buf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 135,
                          "src": "4246:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 146,
                        "id": 215,
                        "nodeType": "Return",
                        "src": "4239:10:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 132,
                    "nodeType": "StructuredDocumentation",
                    "src": "2520:349:0",
                    "text": " @dev Writes a byte string to a buffer. Resizes if doing so would exceed\n      the capacity of the buffer.\n @param buf The buffer to append to.\n @param off The start offset to write to.\n @param data The data to append.\n @param len The number of bytes to copy.\n @return The original buffer, for chaining."
                  },
                  "id": 217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "write",
                  "nameLocation": "2883:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 135,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "2903:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "2889:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 134,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 133,
                            "name": "buffer",
                            "nameLocations": [
                              "2889:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "2889:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "2889:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 137,
                        "mutability": "mutable",
                        "name": "off",
                        "nameLocation": "2913:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "2908:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 136,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2908:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 139,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2931:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "2918:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 138,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2918:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 141,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "2942:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "2937:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 140,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2937:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2888:58:0"
                  },
                  "returnParameters": {
                    "id": 146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 145,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "2969:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 144,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 143,
                            "name": "buffer",
                            "nameLocations": [
                              "2969:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "2969:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "2969:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2968:15:0"
                  },
                  "scope": 521,
                  "src": "2874:1382:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 240,
                    "nodeType": "Block",
                    "src": "4672:61:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 232,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 221,
                              "src": "4695:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 233,
                                  "name": "buf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 221,
                                  "src": "4700:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                    "typeString": "struct Buffer.buffer memory"
                                  }
                                },
                                "id": 234,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4704:3:0",
                                "memberName": "buf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4,
                                "src": "4700:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4708:6:0",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4700:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 236,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 223,
                              "src": "4716:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 237,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 225,
                              "src": "4722:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 231,
                            "name": "write",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              217,
                              377
                            ],
                            "referencedDeclaration": 217,
                            "src": "4689:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256,bytes memory,uint256) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4689:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 230,
                        "id": 239,
                        "nodeType": "Return",
                        "src": "4682:44:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 218,
                    "nodeType": "StructuredDocumentation",
                    "src": "4262:303:0",
                    "text": " @dev Appends a byte string to a buffer. Resizes if doing so would exceed\n      the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @param len The number of bytes to copy.\n @return The original buffer, for chaining."
                  },
                  "id": 241,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "append",
                  "nameLocation": "4579:6:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 221,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "4600:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 241,
                        "src": "4586:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 220,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 219,
                            "name": "buffer",
                            "nameLocations": [
                              "4586:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "4586:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "4586:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 223,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4618:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 241,
                        "src": "4605:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 222,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4605:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 225,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "4629:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 241,
                        "src": "4624:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 224,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4624:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4585:48:0"
                  },
                  "returnParameters": {
                    "id": 230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 229,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 241,
                        "src": "4657:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 228,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 227,
                            "name": "buffer",
                            "nameLocations": [
                              "4657:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "4657:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "4657:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4656:15:0"
                  },
                  "scope": 521,
                  "src": "4570:163:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 263,
                    "nodeType": "Block",
                    "src": "5093:69:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 254,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 245,
                              "src": "5116:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 255,
                                  "name": "buf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 245,
                                  "src": "5121:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                    "typeString": "struct Buffer.buffer memory"
                                  }
                                },
                                "id": 256,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5125:3:0",
                                "memberName": "buf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4,
                                "src": "5121:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5129:6:0",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "5121:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 258,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 247,
                              "src": "5137:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 259,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 247,
                                "src": "5143:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5148:6:0",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "5143:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 253,
                            "name": "write",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              217,
                              377
                            ],
                            "referencedDeclaration": 217,
                            "src": "5110:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256,bytes memory,uint256) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5110:45:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 252,
                        "id": 262,
                        "nodeType": "Return",
                        "src": "5103:52:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 242,
                    "nodeType": "StructuredDocumentation",
                    "src": "4739:257:0",
                    "text": " @dev Appends a byte string to a buffer. Resizes if doing so would exceed\n      the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer, for chaining."
                  },
                  "id": 264,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "append",
                  "nameLocation": "5010:6:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 245,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "5031:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 264,
                        "src": "5017:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 244,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 243,
                            "name": "buffer",
                            "nameLocations": [
                              "5017:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "5017:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "5017:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 247,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5049:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 264,
                        "src": "5036:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 246,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5036:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5016:38:0"
                  },
                  "returnParameters": {
                    "id": 252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 251,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 264,
                        "src": "5078:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 250,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 249,
                            "name": "buffer",
                            "nameLocations": [
                              "5078:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "5078:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "5078:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5077:15:0"
                  },
                  "scope": 521,
                  "src": "5001:161:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 295,
                    "nodeType": "Block",
                    "src": "5572:617:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 278,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 270,
                            "src": "5586:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "expression": {
                              "id": 279,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 268,
                              "src": "5593:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 280,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5597:8:0",
                            "memberName": "capacity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6,
                            "src": "5593:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5586:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 291,
                        "nodeType": "IfStatement",
                        "src": "5582:79:0",
                        "trueBody": {
                          "id": 290,
                          "nodeType": "Block",
                          "src": "5607:54:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 283,
                                    "name": "buf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 268,
                                    "src": "5628:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 284,
                                        "name": "buf",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 268,
                                        "src": "5633:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                          "typeString": "struct Buffer.buffer memory"
                                        }
                                      },
                                      "id": 285,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5637:8:0",
                                      "memberName": "capacity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6,
                                      "src": "5633:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 286,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5648:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "5633:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 282,
                                  "name": "resize",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 98,
                                  "src": "5621:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (struct Buffer.buffer memory,uint256) pure"
                                  }
                                },
                                "id": 288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5621:29:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 289,
                              "nodeType": "ExpressionStatement",
                              "src": "5621:29:0"
                            }
                          ]
                        }
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5680:483:0",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5743:24:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "buf",
                                    "nodeType": "YulIdentifier",
                                    "src": "5763:3:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5757:5:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5757:10:0"
                              },
                              "variables": [
                                {
                                  "name": "bufptr",
                                  "nodeType": "YulTypedName",
                                  "src": "5747:6:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5826:27:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "bufptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5846:6:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5840:5:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5840:13:0"
                              },
                              "variables": [
                                {
                                  "name": "buflen",
                                  "nodeType": "YulTypedName",
                                  "src": "5830:6:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5936:37:0",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "bufptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5956:6:0"
                                      },
                                      {
                                        "name": "off",
                                        "nodeType": "YulIdentifier",
                                        "src": "5964:3:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5952:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5952:16:0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5970:2:0",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5948:3:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5948:25:0"
                              },
                              "variables": [
                                {
                                  "name": "dest",
                                  "nodeType": "YulTypedName",
                                  "src": "5940:4:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dest",
                                    "nodeType": "YulIdentifier",
                                    "src": "5994:4:0"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "6000:4:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore8",
                                  "nodeType": "YulIdentifier",
                                  "src": "5986:7:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5986:19:0"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5986:19:0"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6091:62:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "bufptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "6116:6:0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "buflen",
                                              "nodeType": "YulIdentifier",
                                              "src": "6128:6:0"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6136:1:0",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6124:3:0"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6124:14:0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6109:6:0"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6109:30:0"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6109:30:0"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "off",
                                    "nodeType": "YulIdentifier",
                                    "src": "6078:3:0"
                                  },
                                  {
                                    "name": "buflen",
                                    "nodeType": "YulIdentifier",
                                    "src": "6083:6:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "6075:2:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6075:15:0"
                              },
                              "nodeType": "YulIf",
                              "src": "6072:81:0"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 268,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5763:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 272,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6000:4:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 270,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5964:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 270,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6078:3:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 292,
                        "nodeType": "InlineAssembly",
                        "src": "5671:492:0"
                      },
                      {
                        "expression": {
                          "id": 293,
                          "name": "buf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 268,
                          "src": "6179:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 277,
                        "id": 294,
                        "nodeType": "Return",
                        "src": "6172:10:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 265,
                    "nodeType": "StructuredDocumentation",
                    "src": "5168:301:0",
                    "text": " @dev Writes a byte to the buffer. Resizes if doing so would exceed the\n      capacity of the buffer.\n @param buf The buffer to append to.\n @param off The offset to write the byte at.\n @param data The data to append.\n @return The original buffer, for chaining."
                  },
                  "id": 296,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "writeUint8",
                  "nameLocation": "5483:10:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 273,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 268,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "5508:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 296,
                        "src": "5494:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 267,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 266,
                            "name": "buffer",
                            "nameLocations": [
                              "5494:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "5494:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "5494:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 270,
                        "mutability": "mutable",
                        "name": "off",
                        "nameLocation": "5518:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 296,
                        "src": "5513:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 269,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5513:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 272,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5529:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 296,
                        "src": "5523:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 271,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5523:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5493:41:0"
                  },
                  "returnParameters": {
                    "id": 277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 276,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 296,
                        "src": "5557:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 275,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 274,
                            "name": "buffer",
                            "nameLocations": [
                              "5557:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "5557:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "5557:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5556:15:0"
                  },
                  "scope": 521,
                  "src": "5474:715:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 316,
                    "nodeType": "Block",
                    "src": "6541:61:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 309,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 300,
                              "src": "6569:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 310,
                                  "name": "buf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 300,
                                  "src": "6574:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                    "typeString": "struct Buffer.buffer memory"
                                  }
                                },
                                "id": 311,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6578:3:0",
                                "memberName": "buf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4,
                                "src": "6574:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6582:6:0",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "6574:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 313,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 302,
                              "src": "6590:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 308,
                            "name": "writeUint8",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 296,
                            "src": "6558:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$_t_uint8_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256,uint8) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6558:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 307,
                        "id": 315,
                        "nodeType": "Return",
                        "src": "6551:44:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 297,
                    "nodeType": "StructuredDocumentation",
                    "src": "6195:252:0",
                    "text": " @dev Appends a byte to the buffer. Resizes if doing so would exceed the\n      capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer, for chaining."
                  },
                  "id": 317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "appendUint8",
                  "nameLocation": "6461:11:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 300,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "6487:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 317,
                        "src": "6473:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 299,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 298,
                            "name": "buffer",
                            "nameLocations": [
                              "6473:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "6473:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "6473:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 302,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6498:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 317,
                        "src": "6492:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 301,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "6492:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6472:31:0"
                  },
                  "returnParameters": {
                    "id": 307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 306,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 317,
                        "src": "6526:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 305,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 304,
                            "name": "buffer",
                            "nameLocations": [
                              "6526:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "6526:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "6526:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6525:15:0"
                  },
                  "scope": 521,
                  "src": "6452:150:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 376,
                    "nodeType": "Block",
                    "src": "7079:783:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 333,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 327,
                              "src": "7093:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 334,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 323,
                              "src": "7099:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7093:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 336,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 321,
                              "src": "7105:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 337,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7109:8:0",
                            "memberName": "capacity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6,
                            "src": "7105:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7093:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 350,
                        "nodeType": "IfStatement",
                        "src": "7089:83:0",
                        "trueBody": {
                          "id": 349,
                          "nodeType": "Block",
                          "src": "7119:53:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 340,
                                    "name": "buf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 321,
                                    "src": "7140:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 343,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 341,
                                            "name": "len",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 327,
                                            "src": "7146:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 342,
                                            "name": "off",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 323,
                                            "src": "7152:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7146:9:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 344,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "7145:11:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 345,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7159:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "7145:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 339,
                                  "name": "resize",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 98,
                                  "src": "7133:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (struct Buffer.buffer memory,uint256) pure"
                                  }
                                },
                                "id": 347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7133:28:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 348,
                              "nodeType": "ExpressionStatement",
                              "src": "7133:28:0"
                            }
                          ]
                        }
                      },
                      {
                        "id": 373,
                        "nodeType": "UncheckedBlock",
                        "src": "7182:654:0",
                        "statements": [
                          {
                            "assignments": [
                              352
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 352,
                                "mutability": "mutable",
                                "name": "mask",
                                "nameLocation": "7211:4:0",
                                "nodeType": "VariableDeclaration",
                                "scope": 373,
                                "src": "7206:9:0",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 351,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7206:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 359,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "323536",
                                      "id": 353,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7219:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_256_by_1",
                                        "typeString": "int_const 256"
                                      },
                                      "value": "256"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "id": 354,
                                      "name": "len",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 327,
                                      "src": "7226:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7219:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 356,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7218:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7233:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "7218:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7206:28:0"
                          },
                          {
                            "expression": {
                              "id": 370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 360,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 325,
                                "src": "7280:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 361,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 325,
                                  "src": "7287:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 367,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "38",
                                        "id": 362,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7296:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        "value": "8"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 365,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "hexValue": "3332",
                                              "id": 363,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "7301:2:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_32_by_1",
                                                "typeString": "int_const 32"
                                              },
                                              "value": "32"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "id": 364,
                                              "name": "len",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 327,
                                              "src": "7306:3:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7301:8:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 366,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "7300:10:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7296:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 368,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7295:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7287:24:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "7280:31:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 371,
                            "nodeType": "ExpressionStatement",
                            "src": "7280:31:0"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "7334:492:0",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7405:24:0",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "buf",
                                        "nodeType": "YulIdentifier",
                                        "src": "7425:3:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7419:5:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7419:10:0"
                                  },
                                  "variables": [
                                    {
                                      "name": "bufptr",
                                      "nodeType": "YulTypedName",
                                      "src": "7409:6:0",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7526:38:0",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "bufptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "7546:6:0"
                                          },
                                          {
                                            "name": "off",
                                            "nodeType": "YulIdentifier",
                                            "src": "7554:3:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7542:3:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7542:16:0"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "7560:3:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:26:0"
                                  },
                                  "variables": [
                                    {
                                      "name": "dest",
                                      "nodeType": "YulTypedName",
                                      "src": "7530:4:0",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dest",
                                        "nodeType": "YulIdentifier",
                                        "src": "7588:4:0"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "dest",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7607:4:0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7601:5:0"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7601:11:0"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "mask",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7618:4:0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "not",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7614:3:0"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7614:9:0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "7597:3:0"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7597:27:0"
                                          },
                                          {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "7626:4:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "or",
                                          "nodeType": "YulIdentifier",
                                          "src": "7594:2:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7594:37:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:6:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:51:0"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "7581:51:0"
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "7743:69:0",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "bufptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "7772:6:0"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "off",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7784:3:0"
                                                },
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7789:3:0"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7780:3:0"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7780:13:0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7765:6:0"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7765:29:0"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "7765:29:0"
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "off",
                                            "nodeType": "YulIdentifier",
                                            "src": "7717:3:0"
                                          },
                                          {
                                            "name": "len",
                                            "nodeType": "YulIdentifier",
                                            "src": "7722:3:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7713:3:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7713:13:0"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "bufptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "7734:6:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "7728:5:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7728:13:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7710:2:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7710:32:0"
                                  },
                                  "nodeType": "YulIf",
                                  "src": "7707:105:0"
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 321,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7425:3:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 325,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7626:4:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 327,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7560:3:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 327,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7722:3:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 327,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7789:3:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 352,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7618:4:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 323,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7554:3:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 323,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7717:3:0",
                                "valueSize": 1
                              },
                              {
                                "declaration": 323,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7784:3:0",
                                "valueSize": 1
                              }
                            ],
                            "id": 372,
                            "nodeType": "InlineAssembly",
                            "src": "7325:501:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 374,
                          "name": "buf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 321,
                          "src": "7852:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 332,
                        "id": 375,
                        "nodeType": "Return",
                        "src": "7845:10:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 318,
                    "nodeType": "StructuredDocumentation",
                    "src": "6608:362:0",
                    "text": " @dev Writes up to 32 bytes to the buffer. Resizes if doing so would\n      exceed the capacity of the buffer.\n @param buf The buffer to append to.\n @param off The offset to write at.\n @param data The data to append.\n @param len The number of bytes to write (left-aligned).\n @return The original buffer, for chaining."
                  },
                  "id": 377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "write",
                  "nameLocation": "6984:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 321,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "7004:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "6990:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 320,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 319,
                            "name": "buffer",
                            "nameLocations": [
                              "6990:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "6990:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "6990:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 323,
                        "mutability": "mutable",
                        "name": "off",
                        "nameLocation": "7014:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "7009:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 322,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7009:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 325,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7027:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "7019:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 324,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7019:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 327,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "7038:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "7033:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 326,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7033:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6989:53:0"
                  },
                  "returnParameters": {
                    "id": 332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 331,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "7064:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 330,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 329,
                            "name": "buffer",
                            "nameLocations": [
                              "7064:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "7064:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "7064:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7063:15:0"
                  },
                  "scope": 521,
                  "src": "6975:887:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 401,
                    "nodeType": "Block",
                    "src": "8271:58:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 392,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 381,
                              "src": "8294:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "id": 393,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 383,
                              "src": "8299:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 396,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 385,
                                  "src": "8312:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                ],
                                "id": 395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8304:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 394,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8304:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8304:13:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "3230",
                              "id": 398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8319:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              }
                            ],
                            "id": 391,
                            "name": "write",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              217,
                              377
                            ],
                            "referencedDeclaration": 377,
                            "src": "8288:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256,bytes32,uint256) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8288:34:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 390,
                        "id": 400,
                        "nodeType": "Return",
                        "src": "8281:41:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 378,
                    "nodeType": "StructuredDocumentation",
                    "src": "7868:295:0",
                    "text": " @dev Writes a bytes20 to the buffer. Resizes if doing so would exceed the\n      capacity of the buffer.\n @param buf The buffer to append to.\n @param off The offset to write at.\n @param data The data to append.\n @return The original buffer, for chaining."
                  },
                  "id": 402,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "writeBytes20",
                  "nameLocation": "8177:12:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 381,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "8204:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 402,
                        "src": "8190:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 380,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 379,
                            "name": "buffer",
                            "nameLocations": [
                              "8190:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "8190:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "8190:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 383,
                        "mutability": "mutable",
                        "name": "off",
                        "nameLocation": "8214:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 402,
                        "src": "8209:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 382,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8209:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 385,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8227:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 402,
                        "src": "8219:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        },
                        "typeName": {
                          "id": 384,
                          "name": "bytes20",
                          "nodeType": "ElementaryTypeName",
                          "src": "8219:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes20",
                            "typeString": "bytes20"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8189:43:0"
                  },
                  "returnParameters": {
                    "id": 390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 389,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 402,
                        "src": "8256:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 388,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 387,
                            "name": "buffer",
                            "nameLocations": [
                              "8256:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "8256:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "8256:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8255:15:0"
                  },
                  "scope": 521,
                  "src": "8168:161:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 426,
                    "nodeType": "Block",
                    "src": "8690:69:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 415,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 406,
                              "src": "8713:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 416,
                                  "name": "buf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 406,
                                  "src": "8718:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                    "typeString": "struct Buffer.buffer memory"
                                  }
                                },
                                "id": 417,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "8722:3:0",
                                "memberName": "buf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4,
                                "src": "8718:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8726:6:0",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "8718:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 421,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 408,
                                  "src": "8742:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                ],
                                "id": 420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8734:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 419,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8734:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8734:13:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "3230",
                              "id": 423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8749:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              }
                            ],
                            "id": 414,
                            "name": "write",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              217,
                              377
                            ],
                            "referencedDeclaration": 377,
                            "src": "8707:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256,bytes32,uint256) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8707:45:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 413,
                        "id": 425,
                        "nodeType": "Return",
                        "src": "8700:52:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 403,
                    "nodeType": "StructuredDocumentation",
                    "src": "8335:256:0",
                    "text": " @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\n      the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer, for chhaining."
                  },
                  "id": 427,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "appendBytes20",
                  "nameLocation": "8605:13:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 406,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "8633:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 427,
                        "src": "8619:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 405,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 404,
                            "name": "buffer",
                            "nameLocations": [
                              "8619:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "8619:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "8619:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 408,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8646:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 427,
                        "src": "8638:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        },
                        "typeName": {
                          "id": 407,
                          "name": "bytes20",
                          "nodeType": "ElementaryTypeName",
                          "src": "8638:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes20",
                            "typeString": "bytes20"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8618:33:0"
                  },
                  "returnParameters": {
                    "id": 413,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 412,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 427,
                        "src": "8675:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 411,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 410,
                            "name": "buffer",
                            "nameLocations": [
                              "8675:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "8675:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "8675:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8674:15:0"
                  },
                  "scope": 521,
                  "src": "8596:163:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 448,
                    "nodeType": "Block",
                    "src": "9119:60:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 440,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 431,
                              "src": "9142:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 441,
                                  "name": "buf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 431,
                                  "src": "9147:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                    "typeString": "struct Buffer.buffer memory"
                                  }
                                },
                                "id": 442,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9151:3:0",
                                "memberName": "buf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4,
                                "src": "9147:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9155:6:0",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "9147:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 444,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 433,
                              "src": "9163:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "3332",
                              "id": 445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9169:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              }
                            ],
                            "id": 439,
                            "name": "write",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              217,
                              377
                            ],
                            "referencedDeclaration": 377,
                            "src": "9136:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256,bytes32,uint256) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9136:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 438,
                        "id": 447,
                        "nodeType": "Return",
                        "src": "9129:43:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 428,
                    "nodeType": "StructuredDocumentation",
                    "src": "8765:255:0",
                    "text": " @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\n      the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer, for chaining."
                  },
                  "id": 449,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "appendBytes32",
                  "nameLocation": "9034:13:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 431,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "9062:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 449,
                        "src": "9048:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 430,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 429,
                            "name": "buffer",
                            "nameLocations": [
                              "9048:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "9048:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "9048:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 433,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9075:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 449,
                        "src": "9067:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 432,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9067:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9047:33:0"
                  },
                  "returnParameters": {
                    "id": 438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 437,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 449,
                        "src": "9104:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 436,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 435,
                            "name": "buffer",
                            "nameLocations": [
                              "9104:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "9104:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "9104:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9103:15:0"
                  },
                  "scope": 521,
                  "src": "9025:154:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 495,
                    "nodeType": "Block",
                    "src": "9653:628:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 465,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 459,
                              "src": "9667:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 466,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 455,
                              "src": "9673:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9667:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 468,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 453,
                              "src": "9679:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 469,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9683:8:0",
                            "memberName": "capacity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6,
                            "src": "9679:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9667:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 482,
                        "nodeType": "IfStatement",
                        "src": "9663:83:0",
                        "trueBody": {
                          "id": 481,
                          "nodeType": "Block",
                          "src": "9693:53:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 472,
                                    "name": "buf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 453,
                                    "src": "9714:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 478,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 475,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 473,
                                            "name": "len",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 459,
                                            "src": "9720:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 474,
                                            "name": "off",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 455,
                                            "src": "9726:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "9720:9:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 476,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9719:11:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 477,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9733:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "9719:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 471,
                                  "name": "resize",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 98,
                                  "src": "9707:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (struct Buffer.buffer memory,uint256) pure"
                                  }
                                },
                                "id": 479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9707:28:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 480,
                              "nodeType": "ExpressionStatement",
                              "src": "9707:28:0"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          484
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 484,
                            "mutability": "mutable",
                            "name": "mask",
                            "nameLocation": "9761:4:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 495,
                            "src": "9756:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 483,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9756:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 491,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "323536",
                                  "id": 485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9769:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "id": 486,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 459,
                                  "src": "9776:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9769:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 488,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "9768:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9783:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9768:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9756:28:0"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "9803:452:0",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9866:24:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "buf",
                                    "nodeType": "YulIdentifier",
                                    "src": "9886:3:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9880:5:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9880:10:0"
                              },
                              "variables": [
                                {
                                  "name": "bufptr",
                                  "nodeType": "YulTypedName",
                                  "src": "9870:6:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9979:38:0",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "bufptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9999:6:0"
                                      },
                                      {
                                        "name": "off",
                                        "nodeType": "YulIdentifier",
                                        "src": "10007:3:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9995:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9995:16:0"
                                  },
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "10013:3:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9991:3:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9991:26:0"
                              },
                              "variables": [
                                {
                                  "name": "dest",
                                  "nodeType": "YulTypedName",
                                  "src": "9983:4:0",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dest",
                                    "nodeType": "YulIdentifier",
                                    "src": "10037:4:0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "dest",
                                                "nodeType": "YulIdentifier",
                                                "src": "10056:4:0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "10050:5:0"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10050:11:0"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "mask",
                                                "nodeType": "YulIdentifier",
                                                "src": "10067:4:0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "10063:3:0"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10063:9:0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "10046:3:0"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10046:27:0"
                                      },
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "10075:4:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "10043:2:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10043:37:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10030:6:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10030:51:0"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10030:51:0"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10184:61:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "bufptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10209:6:0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "off",
                                              "nodeType": "YulIdentifier",
                                              "src": "10221:3:0"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "10226:3:0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10217:3:0"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10217:13:0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10202:6:0"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10202:29:0"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10202:29:0"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "off",
                                        "nodeType": "YulIdentifier",
                                        "src": "10158:3:0"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "10163:3:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10154:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10154:13:0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "bufptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10175:6:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "10169:5:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10169:13:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10151:2:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10151:32:0"
                              },
                              "nodeType": "YulIf",
                              "src": "10148:97:0"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 453,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9886:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 457,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10075:4:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 459,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10013:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 459,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10163:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 459,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10226:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 484,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10067:4:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 455,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10007:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 455,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10158:3:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 455,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10221:3:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 492,
                        "nodeType": "InlineAssembly",
                        "src": "9794:461:0"
                      },
                      {
                        "expression": {
                          "id": 493,
                          "name": "buf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 453,
                          "src": "10271:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 464,
                        "id": 494,
                        "nodeType": "Return",
                        "src": "10264:10:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 450,
                    "nodeType": "StructuredDocumentation",
                    "src": "9185:359:0",
                    "text": " @dev Writes an integer to the buffer. Resizes if doing so would exceed\n      the capacity of the buffer.\n @param buf The buffer to append to.\n @param off The offset to write at.\n @param data The data to append.\n @param len The number of bytes to write (right-aligned).\n @return The original buffer, for chaining."
                  },
                  "id": 496,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "writeInt",
                  "nameLocation": "9558:8:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 453,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "9581:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 496,
                        "src": "9567:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 452,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 451,
                            "name": "buffer",
                            "nameLocations": [
                              "9567:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "9567:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "9567:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 455,
                        "mutability": "mutable",
                        "name": "off",
                        "nameLocation": "9591:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 496,
                        "src": "9586:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 454,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9586:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 457,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9601:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 496,
                        "src": "9596:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 456,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9596:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 459,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "9612:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 496,
                        "src": "9607:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 458,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9607:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9566:50:0"
                  },
                  "returnParameters": {
                    "id": 464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 463,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 496,
                        "src": "9638:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 462,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 461,
                            "name": "buffer",
                            "nameLocations": [
                              "9638:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "9638:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "9638:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9637:15:0"
                  },
                  "scope": 521,
                  "src": "9549:732:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 519,
                    "nodeType": "Block",
                    "src": "10638:64:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 511,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 500,
                              "src": "10664:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 512,
                                  "name": "buf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 500,
                                  "src": "10669:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                    "typeString": "struct Buffer.buffer memory"
                                  }
                                },
                                "id": 513,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "10673:3:0",
                                "memberName": "buf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4,
                                "src": "10669:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10677:6:0",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "10669:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 515,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 502,
                              "src": "10685:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 516,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 504,
                              "src": "10691:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 510,
                            "name": "writeInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "10655:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256,uint256,uint256) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10655:40:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "functionReturnParameters": 509,
                        "id": 518,
                        "nodeType": "Return",
                        "src": "10648:47:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 497,
                    "nodeType": "StructuredDocumentation",
                    "src": "10287:250:0",
                    "text": " @dev Appends a byte to the end of the buffer. Resizes if doing so would\n exceed the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer."
                  },
                  "id": 520,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "appendInt",
                  "nameLocation": "10551:9:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 500,
                        "mutability": "mutable",
                        "name": "buf",
                        "nameLocation": "10575:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "10561:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 499,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 498,
                            "name": "buffer",
                            "nameLocations": [
                              "10561:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "10561:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "10561:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 502,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "10585:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "10580:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 501,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10580:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 504,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "10596:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "10591:8:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 503,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10591:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10560:40:0"
                  },
                  "returnParameters": {
                    "id": 509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 508,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "10623:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                          "typeString": "struct Buffer.buffer"
                        },
                        "typeName": {
                          "id": 507,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 506,
                            "name": "buffer",
                            "nameLocations": [
                              "10623:6:0"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7,
                            "src": "10623:6:0"
                          },
                          "referencedDeclaration": 7,
                          "src": "10623:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                            "typeString": "struct Buffer.buffer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10622:15:0"
                  },
                  "scope": 521,
                  "src": "10542:160:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 522,
              "src": "402:10302:0",
              "usedErrors": []
            }
          ],
          "src": "0:10705:0"
        },
        "id": 0
      },
      "@ensdomains/solsha1/contracts/SHA1.sol": {
        "ast": {
          "absolutePath": "@ensdomains/solsha1/contracts/SHA1.sol",
          "exportedSymbols": {
            "SHA1": [
              537
            ]
          },
          "id": 538,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 523,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:1"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SHA1",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 537,
              "linearizedBaseContracts": [
                537
              ],
              "name": "SHA1",
              "nameLocation": "33:4:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "f6d7d8f638af86edbd3db0363022953a79197e2b970840dd72ca38b9b4ada892",
                  "id": 527,
                  "name": "Debug",
                  "nameLocation": "50:5:1",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 526,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 525,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "64:1:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 527,
                        "src": "56:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 524,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "56:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "55:11:1"
                  },
                  "src": "44:23:1"
                },
                {
                  "body": {
                    "id": 535,
                    "nodeType": "Block",
                    "src": "141:5593:1",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "160:5568:1",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "217:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "238:4:1",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:5:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:11:1"
                              },
                              "variables": [
                                {
                                  "name": "scratch",
                                  "nodeType": "YulTypedName",
                                  "src": "221:7:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "326:22:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "343:4:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "337:5:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "337:11:1"
                              },
                              "variables": [
                                {
                                  "name": "len",
                                  "nodeType": "YulTypedName",
                                  "src": "330:3:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "361:21:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "373:4:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "379:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "369:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "369:13:1"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "361:4:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "441:61:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "len",
                                            "nodeType": "YulIdentifier",
                                            "src": "469:3:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "474:1:1",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "465:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "465:11:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "478:18:1",
                                        "type": "",
                                        "value": "0xFFFFFFFFFFFFFFC0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "461:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "461:36:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "499:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "457:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "457:45:1"
                              },
                              "variables": [
                                {
                                  "name": "totallen",
                                  "nodeType": "YulTypedName",
                                  "src": "445:8:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "567:33:1",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "569:29:1",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "totallen",
                                              "nodeType": "YulIdentifier",
                                              "src": "585:8:1"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "595:2:1",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "581:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "581:17:1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "totallen",
                                            "nodeType": "YulIdentifier",
                                            "src": "569:8:1"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "560:40:1",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "565:1:1",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "totallen",
                                        "nodeType": "YulIdentifier",
                                        "src": "529:8:1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "539:3:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "525:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "525:18:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "545:1:1",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "522:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "522:25:1"
                              },
                              "nodeType": "YulSwitch",
                              "src": "515:85:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "614:59:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "623:50:1",
                                "type": "",
                                "value": "0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0"
                              },
                              "variables": [
                                {
                                  "name": "h",
                                  "nodeType": "YulTypedName",
                                  "src": "618:1:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "732:380:1",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "750:11:1",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "760:1:1",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "750:6:1"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "796:302:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "818:30:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "ptr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "838:3:1"
                                                  },
                                                  {
                                                    "name": "off",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "843:3:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "834:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "834:13:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "828:5:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "828:20:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "result",
                                              "nodeType": "YulIdentifier",
                                              "src": "818:6:1"
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "869:24:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "count",
                                                "nodeType": "YulIdentifier",
                                                "src": "882:5:1"
                                              },
                                              {
                                                "name": "off",
                                                "nodeType": "YulIdentifier",
                                                "src": "889:3:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "878:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "878:15:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "count",
                                              "nodeType": "YulIdentifier",
                                              "src": "869:5:1"
                                            }
                                          ]
                                        },
                                        {
                                          "body": {
                                            "nodeType": "YulBlock",
                                            "src": "931:149:1",
                                            "statements": [
                                              {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "957:49:1",
                                                "value": {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "981:3:1",
                                                              "type": "",
                                                              "value": "256"
                                                            },
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "kind": "number",
                                                                  "nodeType": "YulLiteral",
                                                                  "src": "990:2:1",
                                                                  "type": "",
                                                                  "value": "32"
                                                                },
                                                                {
                                                                  "name": "count",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "994:5:1"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "986:3:1"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "986:14:1"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "exp",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "977:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "977:24:1"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "1003:1:1",
                                                          "type": "",
                                                          "value": "1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "sub",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "973:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "973:32:1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "969:3:1"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "969:37:1"
                                                },
                                                "variables": [
                                                  {
                                                    "name": "mask",
                                                    "nodeType": "YulTypedName",
                                                    "src": "961:4:1",
                                                    "type": ""
                                                  }
                                                ]
                                              },
                                              {
                                                "nodeType": "YulAssignment",
                                                "src": "1031:27:1",
                                                "value": {
                                                  "arguments": [
                                                    {
                                                      "name": "result",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1045:6:1"
                                                    },
                                                    {
                                                      "name": "mask",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1053:4:1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1041:3:1"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1041:17:1"
                                                },
                                                "variableNames": [
                                                  {
                                                    "name": "result",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1031:6:1"
                                                  }
                                                ]
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "arguments": [
                                              {
                                                "name": "count",
                                                "nodeType": "YulIdentifier",
                                                "src": "920:5:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "927:2:1",
                                                "type": "",
                                                "value": "32"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "lt",
                                              "nodeType": "YulIdentifier",
                                              "src": "917:2:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "917:13:1"
                                          },
                                          "nodeType": "YulIf",
                                          "src": "914:166:1"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "off",
                                          "nodeType": "YulIdentifier",
                                          "src": "784:3:1"
                                        },
                                        {
                                          "name": "count",
                                          "nodeType": "YulIdentifier",
                                          "src": "789:5:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "781:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "781:14:1"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "778:320:1"
                                  }
                                ]
                              },
                              "name": "readword",
                              "nodeType": "YulFunctionDefinition",
                              "parameters": [
                                {
                                  "name": "ptr",
                                  "nodeType": "YulTypedName",
                                  "src": "705:3:1",
                                  "type": ""
                                },
                                {
                                  "name": "off",
                                  "nodeType": "YulTypedName",
                                  "src": "710:3:1",
                                  "type": ""
                                },
                                {
                                  "name": "count",
                                  "nodeType": "YulTypedName",
                                  "src": "715:5:1",
                                  "type": ""
                                }
                              ],
                              "returnVariables": [
                                {
                                  "name": "result",
                                  "nodeType": "YulTypedName",
                                  "src": "725:6:1",
                                  "type": ""
                                }
                              ],
                              "src": "687:425:1"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1181:4229:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "scratch",
                                          "nodeType": "YulIdentifier",
                                          "src": "1206:7:1"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "data",
                                              "nodeType": "YulIdentifier",
                                              "src": "1224:4:1"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "1230:1:1"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "1233:3:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "readword",
                                            "nodeType": "YulIdentifier",
                                            "src": "1215:8:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1215:22:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1199:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1199:39:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1199:39:1"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "scratch",
                                              "nodeType": "YulIdentifier",
                                              "src": "1266:7:1"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1275:2:1",
                                              "type": "",
                                              "value": "32"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1262:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1262:16:1"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "data",
                                              "nodeType": "YulIdentifier",
                                              "src": "1289:4:1"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1299:1:1"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "1302:2:1",
                                                  "type": "",
                                                  "value": "32"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1295:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1295:10:1"
                                            },
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "1307:3:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "readword",
                                            "nodeType": "YulIdentifier",
                                            "src": "1280:8:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1280:31:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1255:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1255:57:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1255:57:1"
                                  },
                                  {
                                    "cases": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "1453:44:1",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "scratch",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1467:7:1"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "len",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1480:3:1"
                                                          },
                                                          {
                                                            "name": "i",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1485:1:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "sub",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1476:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1476:11:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1463:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1463:25:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1490:4:1",
                                                    "type": "",
                                                    "value": "0x80"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore8",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1455:7:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1455:40:1"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "1455:40:1"
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "1446:51:1",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1451:1:1",
                                          "type": "",
                                          "value": "1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "len",
                                              "nodeType": "YulIdentifier",
                                              "src": "1417:3:1"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "1422:1:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "1413:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1413:11:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1426:2:1",
                                          "type": "",
                                          "value": "64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "1410:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1410:19:1"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "1403:94:1"
                                  },
                                  {
                                    "cases": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "1633:70:1",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "scratch",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1646:7:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1655:2:1",
                                                        "type": "",
                                                        "value": "32"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1642:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1642:16:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "scratch",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1673:7:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1682:2:1",
                                                                "type": "",
                                                                "value": "32"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "add",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "1669:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1669:16:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "mload",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1663:5:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1663:23:1"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "len",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1692:3:1"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1697:1:1",
                                                            "type": "",
                                                            "value": "8"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "mul",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1688:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1688:11:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "or",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1660:2:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1660:40:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1635:6:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1635:66:1"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "1635:66:1"
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "1626:77:1",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1631:1:1",
                                          "type": "",
                                          "value": "1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1588:1:1"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "totallen",
                                              "nodeType": "YulIdentifier",
                                              "src": "1595:8:1"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1605:2:1",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "1591:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1591:17:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "eq",
                                        "nodeType": "YulIdentifier",
                                        "src": "1585:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1585:24:1"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "1578:125:1"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "1826:461:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "1848:157:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1878:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1891:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1894:2:1",
                                                                "type": "",
                                                                "value": "12"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "sub",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "1887:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1887:10:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1874:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1874:24:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1868:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1868:31:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1911:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1924:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1927:2:1",
                                                                "type": "",
                                                                "value": "32"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "sub",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "1920:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1920:10:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1907:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1907:24:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1901:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1901:31:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1864:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1864:69:1"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1949:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1962:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1965:2:1",
                                                                "type": "",
                                                                "value": "56"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "sub",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "1958:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1958:10:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1945:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1945:24:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1939:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1939:31:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1982:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1995:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1998:2:1",
                                                                "type": "",
                                                                "value": "64"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "sub",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "1991:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1991:10:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "1978:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1978:24:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1972:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1972:31:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1935:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1935:69:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "xor",
                                              "nodeType": "YulIdentifier",
                                              "src": "1860:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1860:145:1"
                                          },
                                          "variables": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulTypedName",
                                              "src": "1852:4:1",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2026:193:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "temp",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2045:4:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2051:1:1",
                                                        "type": "",
                                                        "value": "2"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mul",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2041:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2041:12:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2055:66:1",
                                                    "type": "",
                                                    "value": "0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2037:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2037:85:1"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "temp",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2132:4:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2138:10:1",
                                                        "type": "",
                                                        "value": "0x80000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2128:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2128:21:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2151:66:1",
                                                    "type": "",
                                                    "value": "0x0000000100000001000000010000000100000001000000010000000100000001"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2124:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2124:94:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "or",
                                              "nodeType": "YulIdentifier",
                                              "src": "2034:2:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2034:185:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "2026:4:1"
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "scratch",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2251:7:1"
                                                  },
                                                  {
                                                    "name": "j",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2260:1:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2247:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2247:15:1"
                                              },
                                              {
                                                "name": "temp",
                                                "nodeType": "YulIdentifier",
                                                "src": "2264:4:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "2240:6:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2240:29:1"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2240:29:1"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "1798:1:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1801:3:1",
                                          "type": "",
                                          "value": "128"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "1795:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1795:10:1"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "1806:19:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "1808:15:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "j",
                                                "nodeType": "YulIdentifier",
                                                "src": "1817:1:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1820:2:1",
                                                "type": "",
                                                "value": "12"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1813:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1813:10:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "j",
                                              "nodeType": "YulIdentifier",
                                              "src": "1808:1:1"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "1779:15:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "1781:11:1",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1790:2:1",
                                            "type": "",
                                            "value": "64"
                                          },
                                          "variables": [
                                            {
                                              "name": "j",
                                              "nodeType": "YulTypedName",
                                              "src": "1785:1:1",
                                              "type": ""
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "src": "1775:512:1"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2356:463:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "2378:159:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2408:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2421:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2424:2:1",
                                                                "type": "",
                                                                "value": "24"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "sub",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "2417:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2417:10:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2404:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2404:24:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2398:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2398:31:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2441:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2454:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2457:2:1",
                                                                "type": "",
                                                                "value": "64"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "sub",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "2450:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2450:10:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2437:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2437:24:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2431:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2431:31:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2394:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2394:69:1"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2479:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2492:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2495:3:1",
                                                                "type": "",
                                                                "value": "112"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "sub",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "2488:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2488:11:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2475:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2475:25:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2469:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2469:32:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2513:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2526:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2529:3:1",
                                                                "type": "",
                                                                "value": "128"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "sub",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "2522:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2522:11:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2509:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2509:25:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2503:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2503:32:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "xor",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2465:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2465:71:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "xor",
                                              "nodeType": "YulIdentifier",
                                              "src": "2390:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2390:147:1"
                                          },
                                          "variables": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulTypedName",
                                              "src": "2382:4:1",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2558:193:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "temp",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2577:4:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2583:1:1",
                                                        "type": "",
                                                        "value": "4"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mul",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2573:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2573:12:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2587:66:1",
                                                    "type": "",
                                                    "value": "0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2569:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2569:85:1"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "temp",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2664:4:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2670:10:1",
                                                        "type": "",
                                                        "value": "0x40000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2660:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2660:21:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2683:66:1",
                                                    "type": "",
                                                    "value": "0x0000000300000003000000030000000300000003000000030000000300000003"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2656:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2656:94:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "or",
                                              "nodeType": "YulIdentifier",
                                              "src": "2566:2:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2566:185:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "2558:4:1"
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "scratch",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2783:7:1"
                                                  },
                                                  {
                                                    "name": "j",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2792:1:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2779:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2779:15:1"
                                              },
                                              {
                                                "name": "temp",
                                                "nodeType": "YulIdentifier",
                                                "src": "2796:4:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "2772:6:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2772:29:1"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "2772:29:1"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "2328:1:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2331:3:1",
                                          "type": "",
                                          "value": "320"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2325:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2325:10:1"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "2336:19:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2338:15:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "j",
                                                "nodeType": "YulIdentifier",
                                                "src": "2347:1:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2350:2:1",
                                                "type": "",
                                                "value": "24"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2343:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2343:10:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "j",
                                              "nodeType": "YulIdentifier",
                                              "src": "2338:1:1"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "2308:16:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "2310:12:1",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2319:3:1",
                                            "type": "",
                                            "value": "128"
                                          },
                                          "variables": [
                                            {
                                              "name": "j",
                                              "nodeType": "YulTypedName",
                                              "src": "2314:1:1",
                                              "type": ""
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "src": "2304:515:1"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2837:10:1",
                                    "value": {
                                      "name": "h",
                                      "nodeType": "YulIdentifier",
                                      "src": "2846:1:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulTypedName",
                                        "src": "2841:1:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2864:10:1",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2873:1:1",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulTypedName",
                                        "src": "2868:1:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2891:10:1",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2900:1:1",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "k",
                                        "nodeType": "YulTypedName",
                                        "src": "2895:1:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2966:2341:1",
                                      "statements": [
                                        {
                                          "cases": [
                                            {
                                              "body": {
                                                "nodeType": "YulBlock",
                                                "src": "3033:345:1",
                                                "statements": [
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3114:64:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3127:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3130:23:1",
                                                              "type": "",
                                                              "value": "0x100000000000000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3123:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3123:31:1"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3160:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3163:13:1",
                                                              "type": "",
                                                              "value": "0x10000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3156:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3156:21:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "xor",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3119:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3119:59:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3114:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3203:54:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3216:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3219:33:1",
                                                              "type": "",
                                                              "value": "0x1000000000000000000000000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3212:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3212:41:1"
                                                        },
                                                        {
                                                          "name": "f",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3255:1:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3208:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3208:49:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3203:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3282:34:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3295:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3298:13:1",
                                                              "type": "",
                                                              "value": "0x10000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3291:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3291:21:1"
                                                        },
                                                        {
                                                          "name": "f",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3314:1:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "xor",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3287:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3287:29:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3282:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3341:15:1",
                                                    "value": {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "3346:10:1",
                                                      "type": "",
                                                      "value": "0x5A827999"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "k",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3341:1:1"
                                                      }
                                                    ]
                                                  }
                                                ]
                                              },
                                              "nodeType": "YulCase",
                                              "src": "3026:352:1",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3031:1:1",
                                                "type": "",
                                                "value": "0"
                                              }
                                            },
                                            {
                                              "body": {
                                                "nodeType": "YulBlock",
                                                "src": "3405:276:1",
                                                "statements": [
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3476:84:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3489:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3492:33:1",
                                                              "type": "",
                                                              "value": "0x1000000000000000000000000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3485:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3485:41:1"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3532:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3535:23:1",
                                                              "type": "",
                                                              "value": "0x100000000000000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3528:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3528:31:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "xor",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3481:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3481:79:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3476:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3585:34:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3598:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3601:13:1",
                                                              "type": "",
                                                              "value": "0x10000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3594:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3594:21:1"
                                                        },
                                                        {
                                                          "name": "f",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3617:1:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "xor",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3590:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3590:29:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3585:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3644:15:1",
                                                    "value": {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "3649:10:1",
                                                      "type": "",
                                                      "value": "0x6ED9EBA1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "k",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3644:1:1"
                                                      }
                                                    ]
                                                  }
                                                ]
                                              },
                                              "nodeType": "YulCase",
                                              "src": "3399:282:1",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3404:1:1",
                                                "type": "",
                                                "value": "1"
                                              }
                                            },
                                            {
                                              "body": {
                                                "nodeType": "YulBlock",
                                                "src": "3709:407:1",
                                                "statements": [
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3796:83:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3808:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3811:33:1",
                                                              "type": "",
                                                              "value": "0x1000000000000000000000000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3804:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3804:41:1"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3851:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3854:23:1",
                                                              "type": "",
                                                              "value": "0x100000000000000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3847:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3847:31:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "or",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3801:2:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3801:78:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3796:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3904:34:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "3917:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "3920:13:1",
                                                              "type": "",
                                                              "value": "0x10000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3913:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3913:21:1"
                                                        },
                                                        {
                                                          "name": "f",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3936:1:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3909:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3909:29:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3904:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "3963:91:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "name": "x",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3979:1:1"
                                                                },
                                                                {
                                                                  "kind": "number",
                                                                  "nodeType": "YulLiteral",
                                                                  "src": "3982:33:1",
                                                                  "type": "",
                                                                  "value": "0x1000000000000000000000000000000"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3975:3:1"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "3975:41:1"
                                                            },
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "name": "x",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4022:1:1"
                                                                },
                                                                {
                                                                  "kind": "number",
                                                                  "nodeType": "YulLiteral",
                                                                  "src": "4025:23:1",
                                                                  "type": "",
                                                                  "value": "0x100000000000000000000"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4018:3:1"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "4018:31:1"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3971:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "3971:79:1"
                                                        },
                                                        {
                                                          "name": "f",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4052:1:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "or",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3968:2:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3968:86:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3963:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "4079:15:1",
                                                    "value": {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "4084:10:1",
                                                      "type": "",
                                                      "value": "0x8F1BBCDC"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "k",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4079:1:1"
                                                      }
                                                    ]
                                                  }
                                                ]
                                              },
                                              "nodeType": "YulCase",
                                              "src": "3702:414:1",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3707:1:1",
                                                "type": "",
                                                "value": "2"
                                              }
                                            },
                                            {
                                              "body": {
                                                "nodeType": "YulBlock",
                                                "src": "4144:276:1",
                                                "statements": [
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "4215:84:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "4228:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "4231:33:1",
                                                              "type": "",
                                                              "value": "0x1000000000000000000000000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4224:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "4224:41:1"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "4271:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "4274:23:1",
                                                              "type": "",
                                                              "value": "0x100000000000000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4267:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "4267:31:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "xor",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4220:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "4220:79:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4215:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "4324:34:1",
                                                    "value": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "x",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "4337:1:1"
                                                            },
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "4340:13:1",
                                                              "type": "",
                                                              "value": "0x10000000000"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4333:3:1"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "4333:21:1"
                                                        },
                                                        {
                                                          "name": "f",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4356:1:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "xor",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4329:3:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "4329:29:1"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "f",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4324:1:1"
                                                      }
                                                    ]
                                                  },
                                                  {
                                                    "nodeType": "YulAssignment",
                                                    "src": "4383:15:1",
                                                    "value": {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "4388:10:1",
                                                      "type": "",
                                                      "value": "0xCA62C1D6"
                                                    },
                                                    "variableNames": [
                                                      {
                                                        "name": "k",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4383:1:1"
                                                      }
                                                    ]
                                                  }
                                                ]
                                              },
                                              "nodeType": "YulCase",
                                              "src": "4137:283:1",
                                              "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4142:1:1",
                                                "type": "",
                                                "value": "3"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "j",
                                                "nodeType": "YulIdentifier",
                                                "src": "2999:1:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3002:2:1",
                                                "type": "",
                                                "value": "20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "2995:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2995:10:1"
                                          },
                                          "nodeType": "YulSwitch",
                                          "src": "2988:1432:1"
                                        },
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "4507:80:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "x",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4527:1:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4530:49:1",
                                                    "type": "",
                                                    "value": "0x80000000000000000000000000000000000000000000000"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "div",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4523:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4523:57:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4582:4:1",
                                                "type": "",
                                                "value": "0x1F"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "4519:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4519:68:1"
                                          },
                                          "variables": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulTypedName",
                                              "src": "4511:4:1",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4608:84:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "x",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4627:1:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4630:41:1",
                                                        "type": "",
                                                        "value": "0x800000000000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4623:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4623:49:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4674:10:1",
                                                    "type": "",
                                                    "value": "0xFFFFFFE0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4619:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4619:66:1"
                                              },
                                              {
                                                "name": "temp",
                                                "nodeType": "YulIdentifier",
                                                "src": "4687:4:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "or",
                                              "nodeType": "YulIdentifier",
                                              "src": "4616:2:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4616:76:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "4608:4:1"
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4713:20:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "f",
                                                "nodeType": "YulIdentifier",
                                                "src": "4725:1:1"
                                              },
                                              {
                                                "name": "temp",
                                                "nodeType": "YulIdentifier",
                                                "src": "4728:4:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4721:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4721:12:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "4713:4:1"
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4754:37:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "x",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4770:1:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4773:10:1",
                                                    "type": "",
                                                    "value": "0xFFFFFFFF"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4766:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4766:18:1"
                                              },
                                              {
                                                "name": "temp",
                                                "nodeType": "YulIdentifier",
                                                "src": "4786:4:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4762:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4762:29:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "4754:4:1"
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4812:20:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "k",
                                                "nodeType": "YulIdentifier",
                                                "src": "4824:1:1"
                                              },
                                              {
                                                "name": "temp",
                                                "nodeType": "YulIdentifier",
                                                "src": "4827:4:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4820:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4820:12:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "4812:4:1"
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4853:115:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "scratch",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4879:7:1"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "j",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4892:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4895:1:1",
                                                                "type": "",
                                                                "value": "4"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "mul",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "4888:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4888:9:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4875:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4875:23:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4869:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4869:30:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4901:59:1",
                                                    "type": "",
                                                    "value": "0x100000000000000000000000000000000000000000000000000000000"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "div",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4865:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4865:96:1"
                                              },
                                              {
                                                "name": "temp",
                                                "nodeType": "YulIdentifier",
                                                "src": "4963:4:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4861:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4861:107:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "temp",
                                              "nodeType": "YulIdentifier",
                                              "src": "4853:4:1"
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4989:86:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "x",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5001:1:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5004:13:1",
                                                    "type": "",
                                                    "value": "0x10000000000"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "div",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4997:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4997:21:1"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "temp",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5024:4:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5030:43:1",
                                                    "type": "",
                                                    "value": "0x10000000000000000000000000000000000000000"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mul",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5020:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5020:54:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "or",
                                              "nodeType": "YulIdentifier",
                                              "src": "4994:2:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4994:81:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "4989:1:1"
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "5096:193:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "x",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5108:1:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5111:50:1",
                                                    "type": "",
                                                    "value": "0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5104:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5104:58:1"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "x",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5179:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "5182:15:1",
                                                                "type": "",
                                                                "value": "0x4000000000000"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "div",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "5175:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "5175:23:1"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5200:10:1",
                                                            "type": "",
                                                            "value": "0xC0000000"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "and",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5171:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5171:40:1"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "x",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5221:1:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "5224:23:1",
                                                                "type": "",
                                                                "value": "0x400000000000000000000"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "div",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "5217:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "5217:31:1"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5250:10:1",
                                                            "type": "",
                                                            "value": "0x3FFFFFFF"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "and",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5213:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5213:48:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "or",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5168:2:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5168:94:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5264:23:1",
                                                    "type": "",
                                                    "value": "0x100000000000000000000"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mul",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5164:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5164:124:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "or",
                                              "nodeType": "YulIdentifier",
                                              "src": "5101:2:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5101:188:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "5096:1:1"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "j",
                                          "nodeType": "YulIdentifier",
                                          "src": "2940:1:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2943:2:1",
                                          "type": "",
                                          "value": "80"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2937:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2937:9:1"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "2947:18:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2949:14:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "j",
                                                "nodeType": "YulIdentifier",
                                                "src": "2958:1:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2961:1:1",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2954:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2954:9:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "j",
                                              "nodeType": "YulIdentifier",
                                              "src": "2949:1:1"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "2922:14:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "2924:10:1",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2933:1:1",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "j",
                                              "nodeType": "YulTypedName",
                                              "src": "2928:1:1",
                                              "type": ""
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "src": "2918:2389:1"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5325:71:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "h",
                                              "nodeType": "YulIdentifier",
                                              "src": "5338:1:1"
                                            },
                                            {
                                              "name": "x",
                                              "nodeType": "YulIdentifier",
                                              "src": "5341:1:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5334:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5334:9:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5345:50:1",
                                          "type": "",
                                          "value": "0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "5330:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5330:66:1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "h",
                                        "nodeType": "YulIdentifier",
                                        "src": "5325:1:1"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1148:1:1"
                                  },
                                  {
                                    "name": "totallen",
                                    "nodeType": "YulIdentifier",
                                    "src": "1151:8:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1145:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1145:15:1"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1161:19:1",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1163:15:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1172:1:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1175:2:1",
                                          "type": "",
                                          "value": "64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1168:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1168:10:1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1163:1:1"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1130:14:1",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1132:10:1",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1141:1:1",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulTypedName",
                                        "src": "1136:1:1",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "1126:4284:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5423:295:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "h",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5454:1:1"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5457:11:1",
                                                            "type": "",
                                                            "value": "0x100000000"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "div",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5450:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5450:19:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5471:42:1",
                                                        "type": "",
                                                        "value": "0xFFFFFFFF00000000000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5446:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5446:68:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "h",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5524:1:1"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5527:9:1",
                                                            "type": "",
                                                            "value": "0x1000000"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "div",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5520:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5520:17:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5539:34:1",
                                                        "type": "",
                                                        "value": "0xFFFFFFFF000000000000000000000000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5516:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5516:58:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "or",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5443:2:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5443:132:1"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "h",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5585:1:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5588:7:1",
                                                        "type": "",
                                                        "value": "0x10000"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5581:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5581:15:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5598:26:1",
                                                    "type": "",
                                                    "value": "0xFFFFFFFF0000000000000000"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "and",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5577:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5577:48:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "or",
                                              "nodeType": "YulIdentifier",
                                              "src": "5440:2:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5440:186:1"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "h",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5636:1:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5639:5:1",
                                                    "type": "",
                                                    "value": "0x100"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "div",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5632:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5632:13:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5647:18:1",
                                                "type": "",
                                                "value": "0xFFFFFFFF00000000"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "5628:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5628:38:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "or",
                                          "nodeType": "YulIdentifier",
                                          "src": "5437:2:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5437:230:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "h",
                                            "nodeType": "YulIdentifier",
                                            "src": "5673:1:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5676:10:1",
                                            "type": "",
                                            "value": "0xFFFFFFFF"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5669:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5669:18:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "5434:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5434:254:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5690:27:1",
                                    "type": "",
                                    "value": "0x1000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "5430:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5430:288:1"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "5423:3:1"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 529,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1224:4:1",
                            "valueSize": 1
                          },
                          {
                            "declaration": 529,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1289:4:1",
                            "valueSize": 1
                          },
                          {
                            "declaration": 529,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "343:4:1",
                            "valueSize": 1
                          },
                          {
                            "declaration": 529,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "361:4:1",
                            "valueSize": 1
                          },
                          {
                            "declaration": 529,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "373:4:1",
                            "valueSize": 1
                          },
                          {
                            "declaration": 532,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5423:3:1",
                            "valueSize": 1
                          }
                        ],
                        "id": 534,
                        "nodeType": "InlineAssembly",
                        "src": "151:5577:1"
                      }
                    ]
                  },
                  "id": 536,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sha1",
                  "nameLocation": "82:4:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 529,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "100:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 536,
                        "src": "87:17:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 528,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "87:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "86:19:1"
                  },
                  "returnParameters": {
                    "id": 533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 532,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "136:3:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 536,
                        "src": "128:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        },
                        "typeName": {
                          "id": 531,
                          "name": "bytes20",
                          "nodeType": "ElementaryTypeName",
                          "src": "128:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes20",
                            "typeString": "bytes20"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "127:13:1"
                  },
                  "scope": 537,
                  "src": "73:5661:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 538,
              "src": "25:5711:1",
              "usedErrors": []
            }
          ],
          "src": "0:5737:1"
        },
        "id": 1
      },
      "@openzeppelin/contracts/access/Ownable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
          "exportedSymbols": {
            "Context": [
              2855
            ],
            "Ownable": [
              642
            ]
          },
          "id": 643,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 539,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "87:23:2"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../utils/Context.sol",
              "id": 540,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 643,
              "sourceUnit": 2856,
              "src": "112:30:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 542,
                    "name": "Context",
                    "nameLocations": [
                      "668:7:2"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2855,
                    "src": "668:7:2"
                  },
                  "id": 543,
                  "nodeType": "InheritanceSpecifier",
                  "src": "668:7:2"
                }
              ],
              "canonicalName": "Ownable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 541,
                "nodeType": "StructuredDocumentation",
                "src": "144:494:2",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 642,
              "linearizedBaseContracts": [
                642,
                2855
              ],
              "name": "Ownable",
              "nameLocation": "657:7:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 545,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nameLocation": "698:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 642,
                  "src": "682:22:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 544,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "682:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
                  "id": 551,
                  "name": "OwnershipTransferred",
                  "nameLocation": "717:20:2",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 547,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "754:13:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 551,
                        "src": "738:29:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 546,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "738:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 549,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "785:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 551,
                        "src": "769:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 548,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "769:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "737:57:2"
                  },
                  "src": "711:84:2"
                },
                {
                  "body": {
                    "id": 560,
                    "nodeType": "Block",
                    "src": "911:49:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 556,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2845,
                                "src": "940:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "940:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 555,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 641,
                            "src": "921:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "921:32:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 559,
                        "nodeType": "ExpressionStatement",
                        "src": "921:32:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 552,
                    "nodeType": "StructuredDocumentation",
                    "src": "801:91:2",
                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                  },
                  "id": 561,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 553,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "908:2:2"
                  },
                  "returnParameters": {
                    "id": 554,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "911:0:2"
                  },
                  "scope": 642,
                  "src": "897:63:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 569,
                    "nodeType": "Block",
                    "src": "1091:30:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 567,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 545,
                          "src": "1108:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 566,
                        "id": 568,
                        "nodeType": "Return",
                        "src": "1101:13:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 562,
                    "nodeType": "StructuredDocumentation",
                    "src": "966:65:2",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 570,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "1045:5:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 563,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1050:2:2"
                  },
                  "returnParameters": {
                    "id": 566,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 565,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 570,
                        "src": "1082:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 564,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1082:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1081:9:2"
                  },
                  "scope": 642,
                  "src": "1036:85:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 583,
                    "nodeType": "Block",
                    "src": "1230:96:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 574,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 570,
                                  "src": "1248:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1248:7:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 576,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2845,
                                  "src": "1259:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1259:12:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1248:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1273:34:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 573,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1240:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1240:68:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 581,
                        "nodeType": "ExpressionStatement",
                        "src": "1240:68:2"
                      },
                      {
                        "id": 582,
                        "nodeType": "PlaceholderStatement",
                        "src": "1318:1:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 571,
                    "nodeType": "StructuredDocumentation",
                    "src": "1127:77:2",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 584,
                  "name": "onlyOwner",
                  "nameLocation": "1218:9:2",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 572,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1227:2:2"
                  },
                  "src": "1209:117:2",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 597,
                    "nodeType": "Block",
                    "src": "1722:47:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1759:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1751:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 591,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1751:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1751:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 590,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 641,
                            "src": "1732:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1732:30:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 596,
                        "nodeType": "ExpressionStatement",
                        "src": "1732:30:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 585,
                    "nodeType": "StructuredDocumentation",
                    "src": "1332:331:2",
                    "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                  },
                  "functionSelector": "715018a6",
                  "id": 598,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 588,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 587,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "1712:9:2"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "1712:9:2"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1712:9:2"
                    }
                  ],
                  "name": "renounceOwnership",
                  "nameLocation": "1677:17:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 586,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1694:2:2"
                  },
                  "returnParameters": {
                    "id": 589,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1722:0:2"
                  },
                  "scope": 642,
                  "src": "1668:101:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 620,
                    "nodeType": "Block",
                    "src": "1988:128:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 607,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 601,
                                "src": "2006:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 610,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2026:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 609,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2018:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 608,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2018:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2018:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2006:22:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2030:40:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 606,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1998:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1998:73:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 615,
                        "nodeType": "ExpressionStatement",
                        "src": "1998:73:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 617,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 601,
                              "src": "2100:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 616,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 641,
                            "src": "2081:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2081:28:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 619,
                        "nodeType": "ExpressionStatement",
                        "src": "2081:28:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 599,
                    "nodeType": "StructuredDocumentation",
                    "src": "1775:138:2",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 621,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 604,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 603,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "1978:9:2"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "1978:9:2"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1978:9:2"
                    }
                  ],
                  "name": "transferOwnership",
                  "nameLocation": "1927:17:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 601,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "1953:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 621,
                        "src": "1945:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 600,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1945:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1944:18:2"
                  },
                  "returnParameters": {
                    "id": 605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1988:0:2"
                  },
                  "scope": 642,
                  "src": "1918:198:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 640,
                    "nodeType": "Block",
                    "src": "2333:124:2",
                    "statements": [
                      {
                        "assignments": [
                          628
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 628,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "2351:8:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 640,
                            "src": "2343:16:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 627,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2343:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 630,
                        "initialValue": {
                          "id": 629,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 545,
                          "src": "2362:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2343:25:2"
                      },
                      {
                        "expression": {
                          "id": 633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 631,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 545,
                            "src": "2378:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 632,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 624,
                            "src": "2387:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2378:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 634,
                        "nodeType": "ExpressionStatement",
                        "src": "2378:17:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 636,
                              "name": "oldOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 628,
                              "src": "2431:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 637,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 624,
                              "src": "2441:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 635,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 551,
                            "src": "2410:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2410:40:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 639,
                        "nodeType": "EmitStatement",
                        "src": "2405:45:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 622,
                    "nodeType": "StructuredDocumentation",
                    "src": "2122:143:2",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
                  },
                  "id": 641,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferOwnership",
                  "nameLocation": "2279:18:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 624,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2306:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 641,
                        "src": "2298:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 623,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2298:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2297:18:2"
                  },
                  "returnParameters": {
                    "id": 626,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2333:0:2"
                  },
                  "scope": 642,
                  "src": "2270:187:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 643,
              "src": "639:1820:2",
              "usedErrors": []
            }
          ],
          "src": "87:2373:2"
        },
        "id": 2
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "exportedSymbols": {
            "IERC1155": [
              764
            ],
            "IERC165": [
              3094
            ]
          },
          "id": 765,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 644,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "95:23:3"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../../utils/introspection/IERC165.sol",
              "id": 645,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 765,
              "sourceUnit": 3095,
              "src": "120:47:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 647,
                    "name": "IERC165",
                    "nameLocations": [
                      "357:7:3"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3094,
                    "src": "357:7:3"
                  },
                  "id": 648,
                  "nodeType": "InheritanceSpecifier",
                  "src": "357:7:3"
                }
              ],
              "canonicalName": "IERC1155",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 646,
                "nodeType": "StructuredDocumentation",
                "src": "169:165:3",
                "text": " @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._"
              },
              "fullyImplemented": false,
              "id": 764,
              "linearizedBaseContracts": [
                764,
                3094
              ],
              "name": "IERC1155",
              "nameLocation": "345:8:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 649,
                    "nodeType": "StructuredDocumentation",
                    "src": "371:121:3",
                    "text": " @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."
                  },
                  "eventSelector": "c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62",
                  "id": 661,
                  "name": "TransferSingle",
                  "nameLocation": "503:14:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 651,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "534:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "518:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 650,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "518:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 653,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "560:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "544:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 652,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "544:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 655,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "582:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "566:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 654,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "566:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 657,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "594:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "586:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 656,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "586:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 659,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "606:5:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "598:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 658,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "598:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "517:95:3"
                  },
                  "src": "497:116:3"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 662,
                    "nodeType": "StructuredDocumentation",
                    "src": "619:144:3",
                    "text": " @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."
                  },
                  "eventSelector": "4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb",
                  "id": 676,
                  "name": "TransferBatch",
                  "nameLocation": "774:13:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 664,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "813:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 676,
                        "src": "797:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "797:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 666,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "847:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 676,
                        "src": "831:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 665,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "831:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 668,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "877:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 676,
                        "src": "861:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 667,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "861:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 671,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "899:3:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 676,
                        "src": "889:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 669,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "889:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 670,
                          "nodeType": "ArrayTypeName",
                          "src": "889:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 674,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "922:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 676,
                        "src": "912:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 672,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "912:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 673,
                          "nodeType": "ArrayTypeName",
                          "src": "912:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "787:147:3"
                  },
                  "src": "768:167:3"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 677,
                    "nodeType": "StructuredDocumentation",
                    "src": "941:147:3",
                    "text": " @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."
                  },
                  "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
                  "id": 685,
                  "name": "ApprovalForAll",
                  "nameLocation": "1099:14:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 679,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1130:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 685,
                        "src": "1114:23:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 678,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1114:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 681,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1155:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 685,
                        "src": "1139:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 680,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1139:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 683,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "1170:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 685,
                        "src": "1165:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 682,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1165:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1113:66:3"
                  },
                  "src": "1093:87:3"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 686,
                    "nodeType": "StructuredDocumentation",
                    "src": "1186:343:3",
                    "text": " @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."
                  },
                  "eventSelector": "6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b",
                  "id": 692,
                  "name": "URI",
                  "nameLocation": "1540:3:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 688,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1551:5:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 692,
                        "src": "1544:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 687,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1544:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 690,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1574:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 692,
                        "src": "1558:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 689,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1558:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1543:34:3"
                  },
                  "src": "1534:44:3"
                },
                {
                  "documentation": {
                    "id": 693,
                    "nodeType": "StructuredDocumentation",
                    "src": "1584:173:3",
                    "text": " @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 702,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "1771:9:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 695,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1789:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 702,
                        "src": "1781:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 694,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1781:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 697,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1806:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 702,
                        "src": "1798:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1798:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1780:29:3"
                  },
                  "returnParameters": {
                    "id": 701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 700,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 702,
                        "src": "1833:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 699,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1833:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1832:9:3"
                  },
                  "scope": 764,
                  "src": "1762:80:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 703,
                    "nodeType": "StructuredDocumentation",
                    "src": "1848:188:3",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 715,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nameLocation": "2050:14:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 706,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nameLocation": "2084:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 715,
                        "src": "2065:27:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 704,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2065:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 705,
                          "nodeType": "ArrayTypeName",
                          "src": "2065:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 709,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2113:3:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 715,
                        "src": "2094:22:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 707,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2094:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 708,
                          "nodeType": "ArrayTypeName",
                          "src": "2094:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2064:53:3"
                  },
                  "returnParameters": {
                    "id": 714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 713,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 715,
                        "src": "2165:16:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 711,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2165:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 712,
                          "nodeType": "ArrayTypeName",
                          "src": "2165:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2164:18:3"
                  },
                  "scope": 764,
                  "src": "2041:142:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 716,
                    "nodeType": "StructuredDocumentation",
                    "src": "2189:248:3",
                    "text": " @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller."
                  },
                  "functionSelector": "a22cb465",
                  "id": 723,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "2451:17:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 721,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 718,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2477:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 723,
                        "src": "2469:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 717,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2469:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 720,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "2492:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 723,
                        "src": "2487:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 719,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2487:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2468:33:3"
                  },
                  "returnParameters": {
                    "id": 722,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2510:0:3"
                  },
                  "scope": 764,
                  "src": "2442:69:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 724,
                    "nodeType": "StructuredDocumentation",
                    "src": "2517:135:3",
                    "text": " @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 733,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "2666:16:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 726,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2691:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 733,
                        "src": "2683:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 725,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2683:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 728,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2708:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 733,
                        "src": "2700:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 727,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2700:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2682:35:3"
                  },
                  "returnParameters": {
                    "id": 732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 731,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 733,
                        "src": "2741:4:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 730,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2741:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2740:6:3"
                  },
                  "scope": 764,
                  "src": "2657:90:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 734,
                    "nodeType": "StructuredDocumentation",
                    "src": "2753:559:3",
                    "text": " @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."
                  },
                  "functionSelector": "f242432a",
                  "id": 747,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "3326:16:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 736,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3360:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 747,
                        "src": "3352:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 735,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3352:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 738,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3382:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 747,
                        "src": "3374:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 737,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3374:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 740,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3402:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 747,
                        "src": "3394:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 739,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3394:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 742,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3422:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 747,
                        "src": "3414:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 741,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3414:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 744,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3453:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 747,
                        "src": "3438:19:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 743,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3438:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3342:121:3"
                  },
                  "returnParameters": {
                    "id": 746,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3472:0:3"
                  },
                  "scope": 764,
                  "src": "3317:156:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 748,
                    "nodeType": "StructuredDocumentation",
                    "src": "3479:390:3",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 763,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nameLocation": "3883:21:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 750,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3922:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 763,
                        "src": "3914:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 749,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3914:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 752,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3944:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 763,
                        "src": "3936:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 751,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3936:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 755,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "3975:3:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 763,
                        "src": "3956:22:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 753,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3956:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 754,
                          "nodeType": "ArrayTypeName",
                          "src": "3956:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 758,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "4007:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 763,
                        "src": "3988:26:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 756,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3988:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 757,
                          "nodeType": "ArrayTypeName",
                          "src": "3988:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 760,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4039:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 763,
                        "src": "4024:19:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 759,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4024:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3904:145:3"
                  },
                  "returnParameters": {
                    "id": 762,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4058:0:3"
                  },
                  "scope": 764,
                  "src": "3874:185:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 765,
              "src": "335:3726:3",
              "usedErrors": []
            }
          ],
          "src": "95:3967:3"
        },
        "id": 3
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
          "exportedSymbols": {
            "IERC1155Receiver": [
              805
            ],
            "IERC165": [
              3094
            ]
          },
          "id": 806,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 766,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:4"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../../utils/introspection/IERC165.sol",
              "id": 767,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 806,
              "sourceUnit": 3095,
              "src": "143:47:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 769,
                    "name": "IERC165",
                    "nameLocations": [
                      "262:7:4"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3094,
                    "src": "262:7:4"
                  },
                  "id": 770,
                  "nodeType": "InheritanceSpecifier",
                  "src": "262:7:4"
                }
              ],
              "canonicalName": "IERC1155Receiver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 768,
                "nodeType": "StructuredDocumentation",
                "src": "192:39:4",
                "text": " @dev _Available since v3.1._"
              },
              "fullyImplemented": false,
              "id": 805,
              "linearizedBaseContracts": [
                805,
                3094
              ],
              "name": "IERC1155Receiver",
              "nameLocation": "242:16:4",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 771,
                    "nodeType": "StructuredDocumentation",
                    "src": "276:826:4",
                    "text": " @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 786,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nameLocation": "1116:17:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 782,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 773,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1151:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 786,
                        "src": "1143:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 772,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1143:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 775,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1177:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 786,
                        "src": "1169:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 774,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1169:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 777,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1199:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 786,
                        "src": "1191:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 776,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 779,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1219:5:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 786,
                        "src": "1211:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1211:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 781,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1249:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 786,
                        "src": "1234:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 780,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1234:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1133:126:4"
                  },
                  "returnParameters": {
                    "id": 785,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 784,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 786,
                        "src": "1278:6:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 783,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1278:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1277:8:4"
                  },
                  "scope": 805,
                  "src": "1107:179:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 787,
                    "nodeType": "StructuredDocumentation",
                    "src": "1292:994:4",
                    "text": " @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"
                  },
                  "functionSelector": "bc197c81",
                  "id": 804,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nameLocation": "2300:22:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 789,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2340:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 804,
                        "src": "2332:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 788,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2332:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 791,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2366:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 804,
                        "src": "2358:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 790,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2358:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 794,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2399:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 804,
                        "src": "2380:22:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 792,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2380:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 793,
                          "nodeType": "ArrayTypeName",
                          "src": "2380:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 797,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "2431:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 804,
                        "src": "2412:25:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 795,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2412:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 796,
                          "nodeType": "ArrayTypeName",
                          "src": "2412:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 799,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2462:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 804,
                        "src": "2447:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 798,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2447:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2322:150:4"
                  },
                  "returnParameters": {
                    "id": 803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 802,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 804,
                        "src": "2491:6:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 801,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2491:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2490:8:4"
                  },
                  "scope": 805,
                  "src": "2291:208:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 806,
              "src": "232:2269:4",
              "usedErrors": []
            }
          ],
          "src": "118:2384:4"
        },
        "id": 4
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
          "exportedSymbols": {
            "IERC1155": [
              764
            ],
            "IERC1155MetadataURI": [
              820
            ],
            "IERC165": [
              3094
            ]
          },
          "id": 821,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 807,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "117:23:5"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "file": "../IERC1155.sol",
              "id": 808,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 821,
              "sourceUnit": 765,
              "src": "142:25:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 810,
                    "name": "IERC1155",
                    "nameLocations": [
                      "397:8:5"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 764,
                    "src": "397:8:5"
                  },
                  "id": 811,
                  "nodeType": "InheritanceSpecifier",
                  "src": "397:8:5"
                }
              ],
              "canonicalName": "IERC1155MetadataURI",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 809,
                "nodeType": "StructuredDocumentation",
                "src": "169:194:5",
                "text": " @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n _Available since v3.1._"
              },
              "fullyImplemented": false,
              "id": 820,
              "linearizedBaseContracts": [
                820,
                764,
                3094
              ],
              "name": "IERC1155MetadataURI",
              "nameLocation": "374:19:5",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 812,
                    "nodeType": "StructuredDocumentation",
                    "src": "412:192:5",
                    "text": " @dev Returns the URI for token type `id`.\n If the `\\{id\\}` substring is present in the URI, it must be replaced by\n clients with the actual token type ID."
                  },
                  "functionSelector": "0e89341c",
                  "id": 819,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nameLocation": "618:3:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 814,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "630:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 819,
                        "src": "622:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 813,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "622:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "621:12:5"
                  },
                  "returnParameters": {
                    "id": 818,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 817,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 819,
                        "src": "657:13:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 816,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "657:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "656:15:5"
                  },
                  "scope": 820,
                  "src": "609:63:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 821,
              "src": "364:310:5",
              "usedErrors": []
            }
          ],
          "src": "117:558:5"
        },
        "id": 5
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "exportedSymbols": {
            "Context": [
              2855
            ],
            "ERC20": [
              1408
            ],
            "IERC20": [
              1486
            ],
            "IERC20Metadata": [
              1511
            ]
          },
          "id": 1409,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 822,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "105:23:6"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 823,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1409,
              "sourceUnit": 1487,
              "src": "130:22:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
              "file": "./extensions/IERC20Metadata.sol",
              "id": 824,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1409,
              "sourceUnit": 1512,
              "src": "153:41:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../../utils/Context.sol",
              "id": 825,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1409,
              "sourceUnit": 2856,
              "src": "195:33:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 827,
                    "name": "Context",
                    "nameLocations": [
                      "1421:7:6"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2855,
                    "src": "1421:7:6"
                  },
                  "id": 828,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1421:7:6"
                },
                {
                  "baseName": {
                    "id": 829,
                    "name": "IERC20",
                    "nameLocations": [
                      "1430:6:6"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1486,
                    "src": "1430:6:6"
                  },
                  "id": 830,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1430:6:6"
                },
                {
                  "baseName": {
                    "id": 831,
                    "name": "IERC20Metadata",
                    "nameLocations": [
                      "1438:14:6"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1511,
                    "src": "1438:14:6"
                  },
                  "id": 832,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1438:14:6"
                }
              ],
              "canonicalName": "ERC20",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 826,
                "nodeType": "StructuredDocumentation",
                "src": "230:1172:6",
                "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."
              },
              "fullyImplemented": true,
              "id": 1408,
              "linearizedBaseContracts": [
                1408,
                1511,
                1486,
                2855
              ],
              "name": "ERC20",
              "nameLocation": "1412:5:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 836,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "1495:9:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "1459:45:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 835,
                    "keyType": {
                      "id": 833,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1467:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1459:27:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 834,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1478:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 842,
                  "mutability": "mutable",
                  "name": "_allowances",
                  "nameLocation": "1567:11:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "1511:67:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 841,
                    "keyType": {
                      "id": 837,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1519:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1511:47:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 840,
                      "keyType": {
                        "id": 838,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1538:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1530:27:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 839,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1549:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 844,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nameLocation": "1601:12:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "1585:28:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 843,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1585:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 846,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1635:5:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "1620:20:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 845,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 848,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "1661:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "1646:22:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 847,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1646:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 864,
                    "nodeType": "Block",
                    "src": "2034:57:6",
                    "statements": [
                      {
                        "expression": {
                          "id": 858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 856,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 846,
                            "src": "2044:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 857,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 851,
                            "src": "2052:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2044:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 859,
                        "nodeType": "ExpressionStatement",
                        "src": "2044:13:6"
                      },
                      {
                        "expression": {
                          "id": 862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 860,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 848,
                            "src": "2067:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 861,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 853,
                            "src": "2077:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2067:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 863,
                        "nodeType": "ExpressionStatement",
                        "src": "2067:17:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 849,
                    "nodeType": "StructuredDocumentation",
                    "src": "1675:298:6",
                    "text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."
                  },
                  "id": 865,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 854,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 851,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "2004:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 865,
                        "src": "1990:19:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 850,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1990:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 853,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "2025:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 865,
                        "src": "2011:21:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 852,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2011:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1989:44:6"
                  },
                  "returnParameters": {
                    "id": 855,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2034:0:6"
                  },
                  "scope": 1408,
                  "src": "1978:113:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1498
                  ],
                  "body": {
                    "id": 874,
                    "nodeType": "Block",
                    "src": "2225:29:6",
                    "statements": [
                      {
                        "expression": {
                          "id": 872,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 846,
                          "src": "2242:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 871,
                        "id": 873,
                        "nodeType": "Return",
                        "src": "2235:12:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 866,
                    "nodeType": "StructuredDocumentation",
                    "src": "2097:54:6",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 875,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "2165:4:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 868,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2192:8:6"
                  },
                  "parameters": {
                    "id": 867,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2169:2:6"
                  },
                  "returnParameters": {
                    "id": 871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 870,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 875,
                        "src": "2210:13:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 869,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2210:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2209:15:6"
                  },
                  "scope": 1408,
                  "src": "2156:98:6",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1504
                  ],
                  "body": {
                    "id": 884,
                    "nodeType": "Block",
                    "src": "2438:31:6",
                    "statements": [
                      {
                        "expression": {
                          "id": 882,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 848,
                          "src": "2455:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 881,
                        "id": 883,
                        "nodeType": "Return",
                        "src": "2448:14:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 876,
                    "nodeType": "StructuredDocumentation",
                    "src": "2260:102:6",
                    "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                  },
                  "functionSelector": "95d89b41",
                  "id": 885,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "2376:6:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 878,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2405:8:6"
                  },
                  "parameters": {
                    "id": 877,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2382:2:6"
                  },
                  "returnParameters": {
                    "id": 881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 880,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 885,
                        "src": "2423:13:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 879,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2423:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2422:15:6"
                  },
                  "scope": 1408,
                  "src": "2367:102:6",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1510
                  ],
                  "body": {
                    "id": 894,
                    "nodeType": "Block",
                    "src": "3158:26:6",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "3138",
                          "id": 892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3175:2:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "functionReturnParameters": 891,
                        "id": 893,
                        "nodeType": "Return",
                        "src": "3168:9:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 886,
                    "nodeType": "StructuredDocumentation",
                    "src": "2475:613:6",
                    "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
                  },
                  "functionSelector": "313ce567",
                  "id": 895,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "3102:8:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 888,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3133:8:6"
                  },
                  "parameters": {
                    "id": 887,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3110:2:6"
                  },
                  "returnParameters": {
                    "id": 891,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 890,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 895,
                        "src": "3151:5:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 889,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3151:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3150:7:6"
                  },
                  "scope": 1408,
                  "src": "3093:91:6",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1417
                  ],
                  "body": {
                    "id": 904,
                    "nodeType": "Block",
                    "src": "3314:36:6",
                    "statements": [
                      {
                        "expression": {
                          "id": 902,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 844,
                          "src": "3331:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 901,
                        "id": 903,
                        "nodeType": "Return",
                        "src": "3324:19:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 896,
                    "nodeType": "StructuredDocumentation",
                    "src": "3190:49:6",
                    "text": " @dev See {IERC20-totalSupply}."
                  },
                  "functionSelector": "18160ddd",
                  "id": 905,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "3253:11:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 898,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3287:8:6"
                  },
                  "parameters": {
                    "id": 897,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3264:2:6"
                  },
                  "returnParameters": {
                    "id": 901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 900,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 905,
                        "src": "3305:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 899,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3305:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3304:9:6"
                  },
                  "scope": 1408,
                  "src": "3244:106:6",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1425
                  ],
                  "body": {
                    "id": 918,
                    "nodeType": "Block",
                    "src": "3491:42:6",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 914,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 836,
                            "src": "3508:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 916,
                          "indexExpression": {
                            "id": 915,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 908,
                            "src": "3518:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3508:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 913,
                        "id": 917,
                        "nodeType": "Return",
                        "src": "3501:25:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 906,
                    "nodeType": "StructuredDocumentation",
                    "src": "3356:47:6",
                    "text": " @dev See {IERC20-balanceOf}."
                  },
                  "functionSelector": "70a08231",
                  "id": 919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "3417:9:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 910,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3464:8:6"
                  },
                  "parameters": {
                    "id": 909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 908,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3435:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "3427:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 907,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3427:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3426:17:6"
                  },
                  "returnParameters": {
                    "id": 913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 912,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "3482:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 911,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3482:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3481:9:6"
                  },
                  "scope": 1408,
                  "src": "3408:125:6",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1435
                  ],
                  "body": {
                    "id": 943,
                    "nodeType": "Block",
                    "src": "3814:104:6",
                    "statements": [
                      {
                        "assignments": [
                          931
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 931,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "3832:5:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 943,
                            "src": "3824:13:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 930,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3824:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 934,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 932,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2845,
                            "src": "3840:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3840:12:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3824:28:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 936,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 931,
                              "src": "3872:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 937,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 922,
                              "src": "3879:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 938,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 924,
                              "src": "3883:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 935,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1169,
                            "src": "3862:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3862:28:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 940,
                        "nodeType": "ExpressionStatement",
                        "src": "3862:28:6"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3907:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 929,
                        "id": 942,
                        "nodeType": "Return",
                        "src": "3900:11:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 920,
                    "nodeType": "StructuredDocumentation",
                    "src": "3539:185:6",
                    "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 944,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "3738:8:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 926,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3790:8:6"
                  },
                  "parameters": {
                    "id": 925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 922,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3755:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 944,
                        "src": "3747:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 921,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3747:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 924,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3767:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 944,
                        "src": "3759:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 923,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3759:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3746:28:6"
                  },
                  "returnParameters": {
                    "id": 929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 928,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 944,
                        "src": "3808:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 927,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3808:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3807:6:6"
                  },
                  "scope": 1408,
                  "src": "3729:189:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1445
                  ],
                  "body": {
                    "id": 961,
                    "nodeType": "Block",
                    "src": "4074:51:6",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 955,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 842,
                              "src": "4091:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 957,
                            "indexExpression": {
                              "id": 956,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 947,
                              "src": "4103:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4091:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 959,
                          "indexExpression": {
                            "id": 958,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 949,
                            "src": "4110:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4091:27:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 954,
                        "id": 960,
                        "nodeType": "Return",
                        "src": "4084:34:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 945,
                    "nodeType": "StructuredDocumentation",
                    "src": "3924:47:6",
                    "text": " @dev See {IERC20-allowance}."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 962,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "3985:9:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 951,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4047:8:6"
                  },
                  "parameters": {
                    "id": 950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 947,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4003:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 962,
                        "src": "3995:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 946,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3995:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 949,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "4018:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 962,
                        "src": "4010:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 948,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4010:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3994:32:6"
                  },
                  "returnParameters": {
                    "id": 954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 953,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 962,
                        "src": "4065:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 952,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4065:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4064:9:6"
                  },
                  "scope": 1408,
                  "src": "3976:149:6",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1455
                  ],
                  "body": {
                    "id": 986,
                    "nodeType": "Block",
                    "src": "4522:108:6",
                    "statements": [
                      {
                        "assignments": [
                          974
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 974,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "4540:5:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 986,
                            "src": "4532:13:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 973,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4532:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 977,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 975,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2845,
                            "src": "4548:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4548:12:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4532:28:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 979,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 974,
                              "src": "4579:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 980,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 965,
                              "src": "4586:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 981,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 967,
                              "src": "4595:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 978,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1342,
                            "src": "4570:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4570:32:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 983,
                        "nodeType": "ExpressionStatement",
                        "src": "4570:32:6"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4619:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 972,
                        "id": 985,
                        "nodeType": "Return",
                        "src": "4612:11:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 963,
                    "nodeType": "StructuredDocumentation",
                    "src": "4131:297:6",
                    "text": " @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 987,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "4442:7:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 969,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4498:8:6"
                  },
                  "parameters": {
                    "id": 968,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 965,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "4458:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 987,
                        "src": "4450:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 964,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4450:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 967,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4475:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 987,
                        "src": "4467:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 966,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4467:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4449:33:6"
                  },
                  "returnParameters": {
                    "id": 972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 971,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 987,
                        "src": "4516:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 970,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4516:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4515:6:6"
                  },
                  "scope": 1408,
                  "src": "4433:197:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1467
                  ],
                  "body": {
                    "id": 1019,
                    "nodeType": "Block",
                    "src": "5325:153:6",
                    "statements": [
                      {
                        "assignments": [
                          1001
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1001,
                            "mutability": "mutable",
                            "name": "spender",
                            "nameLocation": "5343:7:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1019,
                            "src": "5335:15:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1000,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5335:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1004,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1002,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2845,
                            "src": "5353:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5353:12:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5335:30:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1006,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 990,
                              "src": "5391:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1007,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1001,
                              "src": "5397:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1008,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 994,
                              "src": "5406:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1005,
                            "name": "_spendAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1385,
                            "src": "5375:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5375:38:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1010,
                        "nodeType": "ExpressionStatement",
                        "src": "5375:38:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1012,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 990,
                              "src": "5433:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1013,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 992,
                              "src": "5439:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1014,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 994,
                              "src": "5443:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1011,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1169,
                            "src": "5423:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5423:27:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1016,
                        "nodeType": "ExpressionStatement",
                        "src": "5423:27:6"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 1017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5467:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 999,
                        "id": 1018,
                        "nodeType": "Return",
                        "src": "5460:11:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 988,
                    "nodeType": "StructuredDocumentation",
                    "src": "4636:551:6",
                    "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."
                  },
                  "functionSelector": "23b872dd",
                  "id": 1020,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "5201:12:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 996,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5301:8:6"
                  },
                  "parameters": {
                    "id": 995,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 990,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5231:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1020,
                        "src": "5223:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 989,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5223:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 992,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5253:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1020,
                        "src": "5245:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 991,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5245:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 994,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5273:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1020,
                        "src": "5265:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 993,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5265:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5213:72:6"
                  },
                  "returnParameters": {
                    "id": 999,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 998,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1020,
                        "src": "5319:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 997,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5319:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5318:6:6"
                  },
                  "scope": 1408,
                  "src": "5192:286:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1049,
                    "nodeType": "Block",
                    "src": "5967:142:6",
                    "statements": [
                      {
                        "assignments": [
                          1031
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1031,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "5985:5:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1049,
                            "src": "5977:13:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1030,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5977:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1034,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1032,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2845,
                            "src": "5993:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5993:12:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5977:28:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1036,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1031,
                              "src": "6024:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1037,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1023,
                              "src": "6031:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 1038,
                                    "name": "_allowances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 842,
                                    "src": "6040:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 1040,
                                  "indexExpression": {
                                    "id": 1039,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1031,
                                    "src": "6052:5:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6040:18:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1042,
                                "indexExpression": {
                                  "id": 1041,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1023,
                                  "src": "6059:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6040:27:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 1043,
                                "name": "addedValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "6070:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6040:40:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1035,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1342,
                            "src": "6015:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6015:66:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1046,
                        "nodeType": "ExpressionStatement",
                        "src": "6015:66:6"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 1047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6098:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 1029,
                        "id": 1048,
                        "nodeType": "Return",
                        "src": "6091:11:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1021,
                    "nodeType": "StructuredDocumentation",
                    "src": "5484:384:6",
                    "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
                  },
                  "functionSelector": "39509351",
                  "id": 1050,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nameLocation": "5882:17:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1023,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "5908:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1050,
                        "src": "5900:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1022,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5900:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1025,
                        "mutability": "mutable",
                        "name": "addedValue",
                        "nameLocation": "5925:10:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1050,
                        "src": "5917:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1024,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5917:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5899:37:6"
                  },
                  "returnParameters": {
                    "id": 1029,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1028,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1050,
                        "src": "5961:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1027,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5961:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5960:6:6"
                  },
                  "scope": 1408,
                  "src": "5873:236:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1091,
                    "nodeType": "Block",
                    "src": "6695:330:6",
                    "statements": [
                      {
                        "assignments": [
                          1061
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1061,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "6713:5:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1091,
                            "src": "6705:13:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1060,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6705:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1064,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1062,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2845,
                            "src": "6721:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6721:12:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6705:28:6"
                      },
                      {
                        "assignments": [
                          1066
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1066,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "6751:16:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1091,
                            "src": "6743:24:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1065,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6743:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1072,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1067,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 842,
                              "src": "6770:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 1069,
                            "indexExpression": {
                              "id": 1068,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1061,
                              "src": "6782:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6770:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1071,
                          "indexExpression": {
                            "id": 1070,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1053,
                            "src": "6789:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6770:27:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6743:54:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1074,
                                "name": "currentAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1066,
                                "src": "6815:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1075,
                                "name": "subtractedValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1055,
                                "src": "6835:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6815:35:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                              "id": 1077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6852:39:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                              },
                              "value": "ERC20: decreased allowance below zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                              }
                            ],
                            "id": 1073,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6807:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6807:85:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1079,
                        "nodeType": "ExpressionStatement",
                        "src": "6807:85:6"
                      },
                      {
                        "id": 1088,
                        "nodeType": "UncheckedBlock",
                        "src": "6902:95:6",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1081,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1061,
                                  "src": "6935:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1082,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1053,
                                  "src": "6942:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1083,
                                    "name": "currentAllowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1066,
                                    "src": "6951:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 1084,
                                    "name": "subtractedValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1055,
                                    "src": "6970:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6951:34:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1080,
                                "name": "_approve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1342,
                                "src": "6926:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 1086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6926:60:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1087,
                            "nodeType": "ExpressionStatement",
                            "src": "6926:60:6"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 1089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7014:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 1059,
                        "id": 1090,
                        "nodeType": "Return",
                        "src": "7007:11:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1051,
                    "nodeType": "StructuredDocumentation",
                    "src": "6115:476:6",
                    "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
                  },
                  "functionSelector": "a457c2d7",
                  "id": 1092,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nameLocation": "6605:17:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1053,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "6631:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1092,
                        "src": "6623:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6623:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1055,
                        "mutability": "mutable",
                        "name": "subtractedValue",
                        "nameLocation": "6648:15:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1092,
                        "src": "6640:23:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6640:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6622:42:6"
                  },
                  "returnParameters": {
                    "id": 1059,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1058,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1092,
                        "src": "6689:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1057,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6689:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6688:6:6"
                  },
                  "scope": 1408,
                  "src": "6596:429:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1168,
                    "nodeType": "Block",
                    "src": "7596:543:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1103,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1095,
                                "src": "7614:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1106,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7630:1:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7622:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1104,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7622:7:6",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7622:10:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7614:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                              "id": 1109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7634:39:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              },
                              "value": "ERC20: transfer from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              }
                            ],
                            "id": 1102,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7606:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7606:68:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1111,
                        "nodeType": "ExpressionStatement",
                        "src": "7606:68:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1113,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1097,
                                "src": "7692:2:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1116,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7706:1:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7698:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1114,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7698:7:6",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7698:10:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7692:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 1119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7710:37:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              },
                              "value": "ERC20: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              }
                            ],
                            "id": 1112,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7684:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7684:64:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1121,
                        "nodeType": "ExpressionStatement",
                        "src": "7684:64:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1123,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1095,
                              "src": "7780:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1124,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1097,
                              "src": "7786:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1125,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1099,
                              "src": "7790:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1122,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1396,
                            "src": "7759:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7759:38:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1127,
                        "nodeType": "ExpressionStatement",
                        "src": "7759:38:6"
                      },
                      {
                        "assignments": [
                          1129
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1129,
                            "mutability": "mutable",
                            "name": "fromBalance",
                            "nameLocation": "7816:11:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1168,
                            "src": "7808:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1128,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7808:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1133,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1130,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 836,
                            "src": "7830:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1132,
                          "indexExpression": {
                            "id": 1131,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1095,
                            "src": "7840:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7830:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7808:37:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1135,
                                "name": "fromBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1129,
                                "src": "7863:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1136,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1099,
                                "src": "7878:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7863:21:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                              "id": 1138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7886:40:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                              },
                              "value": "ERC20: transfer amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                              }
                            ],
                            "id": 1134,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7855:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7855:72:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1140,
                        "nodeType": "ExpressionStatement",
                        "src": "7855:72:6"
                      },
                      {
                        "id": 1149,
                        "nodeType": "UncheckedBlock",
                        "src": "7937:73:6",
                        "statements": [
                          {
                            "expression": {
                              "id": 1147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 1141,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 836,
                                  "src": "7961:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1143,
                                "indexExpression": {
                                  "id": 1142,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1095,
                                  "src": "7971:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7961:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1144,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1129,
                                  "src": "7979:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 1145,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1099,
                                  "src": "7993:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7979:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7961:38:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1148,
                            "nodeType": "ExpressionStatement",
                            "src": "7961:38:6"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 1154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1150,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 836,
                              "src": "8019:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1152,
                            "indexExpression": {
                              "id": 1151,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1097,
                              "src": "8029:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8019:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 1153,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1099,
                            "src": "8036:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8019:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1155,
                        "nodeType": "ExpressionStatement",
                        "src": "8019:23:6"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1157,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1095,
                              "src": "8067:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1158,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1097,
                              "src": "8073:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1159,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1099,
                              "src": "8077:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1156,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1476,
                            "src": "8058:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8058:26:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1161,
                        "nodeType": "EmitStatement",
                        "src": "8053:31:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1163,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1095,
                              "src": "8115:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1164,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1097,
                              "src": "8121:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1165,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1099,
                              "src": "8125:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1162,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1407,
                            "src": "8095:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8095:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1167,
                        "nodeType": "ExpressionStatement",
                        "src": "8095:37:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1093,
                    "nodeType": "StructuredDocumentation",
                    "src": "7031:452:6",
                    "text": " @dev Moves `amount` of tokens from `sender` to `recipient`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."
                  },
                  "id": 1169,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "7497:9:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1095,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "7524:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1169,
                        "src": "7516:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1094,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7516:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1097,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "7546:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1169,
                        "src": "7538:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1096,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7538:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1099,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "7566:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1169,
                        "src": "7558:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1098,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7558:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7506:72:6"
                  },
                  "returnParameters": {
                    "id": 1101,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7596:0:6"
                  },
                  "scope": 1408,
                  "src": "7488:651:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1224,
                    "nodeType": "Block",
                    "src": "8480:324:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1178,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1172,
                                "src": "8498:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1181,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8517:1:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8509:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1179,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8509:7:6",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8509:10:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "8498:21:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 1184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8521:33:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              },
                              "value": "ERC20: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              }
                            ],
                            "id": 1177,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8490:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8490:65:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1186,
                        "nodeType": "ExpressionStatement",
                        "src": "8490:65:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1190,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8595:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8587:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1188,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8587:7:6",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8587:10:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1192,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1172,
                              "src": "8599:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1193,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1174,
                              "src": "8608:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1187,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1396,
                            "src": "8566:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8566:49:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1195,
                        "nodeType": "ExpressionStatement",
                        "src": "8566:49:6"
                      },
                      {
                        "expression": {
                          "id": 1198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1196,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 844,
                            "src": "8626:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 1197,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1174,
                            "src": "8642:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8626:22:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1199,
                        "nodeType": "ExpressionStatement",
                        "src": "8626:22:6"
                      },
                      {
                        "expression": {
                          "id": 1204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1200,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 836,
                              "src": "8658:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1202,
                            "indexExpression": {
                              "id": 1201,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1172,
                              "src": "8668:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8658:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 1203,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1174,
                            "src": "8680:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8658:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1205,
                        "nodeType": "ExpressionStatement",
                        "src": "8658:28:6"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8718:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8710:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1207,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8710:7:6",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8710:10:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1211,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1172,
                              "src": "8722:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1212,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1174,
                              "src": "8731:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1206,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1476,
                            "src": "8701:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8701:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1214,
                        "nodeType": "EmitStatement",
                        "src": "8696:42:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8777:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8769:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1216,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8769:7:6",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8769:10:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1220,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1172,
                              "src": "8781:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1221,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1174,
                              "src": "8790:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1215,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1407,
                            "src": "8749:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8749:48:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1223,
                        "nodeType": "ExpressionStatement",
                        "src": "8749:48:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1170,
                    "nodeType": "StructuredDocumentation",
                    "src": "8145:265:6",
                    "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."
                  },
                  "id": 1225,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "8424:5:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1172,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "8438:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1225,
                        "src": "8430:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8430:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1174,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "8455:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1225,
                        "src": "8447:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1173,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8447:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8429:33:6"
                  },
                  "returnParameters": {
                    "id": 1176,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8480:0:6"
                  },
                  "scope": 1408,
                  "src": "8415:389:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1296,
                    "nodeType": "Block",
                    "src": "9189:511:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1234,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1228,
                                "src": "9207:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1237,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9226:1:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1236,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9218:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1235,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9218:7:6",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9218:10:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9207:21:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 1240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9230:35:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              },
                              "value": "ERC20: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              }
                            ],
                            "id": 1233,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9199:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9199:67:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1242,
                        "nodeType": "ExpressionStatement",
                        "src": "9199:67:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1244,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1228,
                              "src": "9298:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1247,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9315:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9307:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1245,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9307:7:6",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9307:10:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1249,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1230,
                              "src": "9319:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1243,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1396,
                            "src": "9277:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9277:49:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1251,
                        "nodeType": "ExpressionStatement",
                        "src": "9277:49:6"
                      },
                      {
                        "assignments": [
                          1253
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1253,
                            "mutability": "mutable",
                            "name": "accountBalance",
                            "nameLocation": "9345:14:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1296,
                            "src": "9337:22:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1252,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9337:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1257,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1254,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 836,
                            "src": "9362:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1256,
                          "indexExpression": {
                            "id": 1255,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1228,
                            "src": "9372:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9362:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9337:43:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1259,
                                "name": "accountBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1253,
                                "src": "9398:14:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1260,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1230,
                                "src": "9416:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9398:24:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                              "id": 1262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9424:36:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                              },
                              "value": "ERC20: burn amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                              }
                            ],
                            "id": 1258,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9390:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9390:71:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1264,
                        "nodeType": "ExpressionStatement",
                        "src": "9390:71:6"
                      },
                      {
                        "id": 1273,
                        "nodeType": "UncheckedBlock",
                        "src": "9471:79:6",
                        "statements": [
                          {
                            "expression": {
                              "id": 1271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 1265,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 836,
                                  "src": "9495:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1267,
                                "indexExpression": {
                                  "id": 1266,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1228,
                                  "src": "9505:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9495:18:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1268,
                                  "name": "accountBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1253,
                                  "src": "9516:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 1269,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1230,
                                  "src": "9533:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9516:23:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9495:44:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1272,
                            "nodeType": "ExpressionStatement",
                            "src": "9495:44:6"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 1276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1274,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 844,
                            "src": "9559:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 1275,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1230,
                            "src": "9575:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9559:22:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1277,
                        "nodeType": "ExpressionStatement",
                        "src": "9559:22:6"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1279,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1228,
                              "src": "9606:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1282,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9623:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9615:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1280,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9615:7:6",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9615:10:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1284,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1230,
                              "src": "9627:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1278,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1476,
                            "src": "9597:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9597:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1286,
                        "nodeType": "EmitStatement",
                        "src": "9592:42:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1288,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1228,
                              "src": "9665:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1291,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9682:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9674:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1289,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9674:7:6",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9674:10:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1293,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1230,
                              "src": "9686:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1287,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1407,
                            "src": "9645:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9645:48:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1295,
                        "nodeType": "ExpressionStatement",
                        "src": "9645:48:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1226,
                    "nodeType": "StructuredDocumentation",
                    "src": "8810:309:6",
                    "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
                  },
                  "id": 1297,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "9133:5:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1228,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "9147:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1297,
                        "src": "9139:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1227,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9139:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1230,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "9164:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1297,
                        "src": "9156:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9156:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9138:33:6"
                  },
                  "returnParameters": {
                    "id": 1232,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9189:0:6"
                  },
                  "scope": 1408,
                  "src": "9124:576:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1341,
                    "nodeType": "Block",
                    "src": "10236:257:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1308,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1300,
                                "src": "10254:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10271:1:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10263:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1309,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10263:7:6",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10263:10:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10254:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                              "id": 1314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10275:38:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              },
                              "value": "ERC20: approve from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              }
                            ],
                            "id": 1307,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10246:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10246:68:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1316,
                        "nodeType": "ExpressionStatement",
                        "src": "10246:68:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1318,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1302,
                                "src": "10332:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1321,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10351:1:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1320,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10343:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1319,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10343:7:6",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10343:10:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10332:21:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                              "id": 1324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10355:36:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              },
                              "value": "ERC20: approve to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              }
                            ],
                            "id": 1317,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10324:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10324:68:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1326,
                        "nodeType": "ExpressionStatement",
                        "src": "10324:68:6"
                      },
                      {
                        "expression": {
                          "id": 1333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1327,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 842,
                                "src": "10403:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 1330,
                              "indexExpression": {
                                "id": 1328,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1300,
                                "src": "10415:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10403:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1331,
                            "indexExpression": {
                              "id": 1329,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1302,
                              "src": "10422:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10403:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1332,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1304,
                            "src": "10433:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10403:36:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1334,
                        "nodeType": "ExpressionStatement",
                        "src": "10403:36:6"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1336,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1300,
                              "src": "10463:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1337,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1302,
                              "src": "10470:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1338,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "10479:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1335,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1485,
                            "src": "10454:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10454:32:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1340,
                        "nodeType": "EmitStatement",
                        "src": "10449:37:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1298,
                    "nodeType": "StructuredDocumentation",
                    "src": "9706:412:6",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
                  },
                  "id": 1342,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "10132:8:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1300,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "10158:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1342,
                        "src": "10150:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10150:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1302,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "10181:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1342,
                        "src": "10173:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10173:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1304,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "10206:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1342,
                        "src": "10198:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1303,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10198:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10140:78:6"
                  },
                  "returnParameters": {
                    "id": 1306,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10236:0:6"
                  },
                  "scope": 1408,
                  "src": "10123:370:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1384,
                    "nodeType": "Block",
                    "src": "10890:321:6",
                    "statements": [
                      {
                        "assignments": [
                          1353
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1353,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "10908:16:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1384,
                            "src": "10900:24:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1352,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10900:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1358,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1355,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1345,
                              "src": "10937:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1356,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1347,
                              "src": "10944:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1354,
                            "name": "allowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 962,
                            "src": "10927:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view returns (uint256)"
                            }
                          },
                          "id": 1357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10927:25:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10900:52:6"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1359,
                            "name": "currentAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1353,
                            "src": "10966:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1362,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10991:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1361,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10991:7:6",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 1360,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "10986:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 1363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10986:13:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 1364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "11000:3:6",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "10986:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10966:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1383,
                        "nodeType": "IfStatement",
                        "src": "10962:243:6",
                        "trueBody": {
                          "id": 1382,
                          "nodeType": "Block",
                          "src": "11005:200:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1367,
                                      "name": "currentAllowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1353,
                                      "src": "11027:16:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 1368,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1349,
                                      "src": "11047:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11027:26:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365",
                                    "id": 1370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11055:31:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe",
                                      "typeString": "literal_string \"ERC20: insufficient allowance\""
                                    },
                                    "value": "ERC20: insufficient allowance"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe",
                                      "typeString": "literal_string \"ERC20: insufficient allowance\""
                                    }
                                  ],
                                  "id": 1366,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "11019:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11019:68:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1372,
                              "nodeType": "ExpressionStatement",
                              "src": "11019:68:6"
                            },
                            {
                              "id": 1381,
                              "nodeType": "UncheckedBlock",
                              "src": "11101:94:6",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1374,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1345,
                                        "src": "11138:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 1375,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1347,
                                        "src": "11145:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1378,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 1376,
                                          "name": "currentAllowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1353,
                                          "src": "11154:16:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 1377,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1349,
                                          "src": "11173:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11154:25:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1373,
                                      "name": "_approve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1342,
                                      "src": "11129:8:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,address,uint256)"
                                      }
                                    },
                                    "id": 1379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11129:51:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1380,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11129:51:6"
                                }
                              ]
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1343,
                    "nodeType": "StructuredDocumentation",
                    "src": "10499:266:6",
                    "text": " @dev Spend `amount` form the allowance of `owner` toward `spender`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."
                  },
                  "id": 1385,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_spendAllowance",
                  "nameLocation": "10779:15:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1345,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "10812:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1385,
                        "src": "10804:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10804:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1347,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "10835:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1385,
                        "src": "10827:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1346,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10827:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1349,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "10860:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1385,
                        "src": "10852:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1348,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10852:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10794:78:6"
                  },
                  "returnParameters": {
                    "id": 1351,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10890:0:6"
                  },
                  "scope": 1408,
                  "src": "10770:441:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1395,
                    "nodeType": "Block",
                    "src": "11914:2:6",
                    "statements": []
                  },
                  "documentation": {
                    "id": 1386,
                    "nodeType": "StructuredDocumentation",
                    "src": "11217:573:6",
                    "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 1396,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "11804:20:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1388,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "11842:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1396,
                        "src": "11834:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1387,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11834:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1390,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "11864:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1396,
                        "src": "11856:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11856:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1392,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "11884:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1396,
                        "src": "11876:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11876:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11824:72:6"
                  },
                  "returnParameters": {
                    "id": 1394,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11914:0:6"
                  },
                  "scope": 1408,
                  "src": "11795:121:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1406,
                    "nodeType": "Block",
                    "src": "12622:2:6",
                    "statements": []
                  },
                  "documentation": {
                    "id": 1397,
                    "nodeType": "StructuredDocumentation",
                    "src": "11922:577:6",
                    "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 1407,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_afterTokenTransfer",
                  "nameLocation": "12513:19:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1399,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "12550:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1407,
                        "src": "12542:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1398,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12542:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1401,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "12572:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1407,
                        "src": "12564:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1400,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12564:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1403,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "12592:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1407,
                        "src": "12584:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1402,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12584:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12532:72:6"
                  },
                  "returnParameters": {
                    "id": 1405,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12622:0:6"
                  },
                  "scope": 1408,
                  "src": "12504:120:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 1409,
              "src": "1403:11223:6",
              "usedErrors": []
            }
          ],
          "src": "105:12522:6"
        },
        "id": 6
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              1486
            ]
          },
          "id": 1487,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1410,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "106:23:7"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC20",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1411,
                "nodeType": "StructuredDocumentation",
                "src": "131:70:7",
                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
              },
              "fullyImplemented": false,
              "id": 1486,
              "linearizedBaseContracts": [
                1486
              ],
              "name": "IERC20",
              "nameLocation": "212:6:7",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1412,
                    "nodeType": "StructuredDocumentation",
                    "src": "225:66:7",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 1417,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "305:11:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1413,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "316:2:7"
                  },
                  "returnParameters": {
                    "id": 1416,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1415,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1417,
                        "src": "342:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1414,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "341:9:7"
                  },
                  "scope": 1486,
                  "src": "296:55:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1418,
                    "nodeType": "StructuredDocumentation",
                    "src": "357:72:7",
                    "text": " @dev Returns the amount of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 1425,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "443:9:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1420,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "461:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1425,
                        "src": "453:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1419,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "453:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "452:17:7"
                  },
                  "returnParameters": {
                    "id": 1424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1423,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1425,
                        "src": "493:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "493:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "492:9:7"
                  },
                  "scope": 1486,
                  "src": "434:68:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1426,
                    "nodeType": "StructuredDocumentation",
                    "src": "508:202:7",
                    "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 1435,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "724:8:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1428,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "741:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1435,
                        "src": "733:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1427,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "733:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1430,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "753:6:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1435,
                        "src": "745:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1429,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "745:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "732:28:7"
                  },
                  "returnParameters": {
                    "id": 1434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1433,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1435,
                        "src": "779:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1432,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "779:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "778:6:7"
                  },
                  "scope": 1486,
                  "src": "715:70:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1436,
                    "nodeType": "StructuredDocumentation",
                    "src": "791:264:7",
                    "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 1445,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "1069:9:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1438,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1087:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1445,
                        "src": "1079:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1437,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1079:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1440,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1102:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1445,
                        "src": "1094:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1439,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1094:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1078:32:7"
                  },
                  "returnParameters": {
                    "id": 1444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1443,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1445,
                        "src": "1134:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1442,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1134:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1133:9:7"
                  },
                  "scope": 1486,
                  "src": "1060:83:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1446,
                    "nodeType": "StructuredDocumentation",
                    "src": "1149:642:7",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 1455,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "1805:7:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1448,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1821:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1455,
                        "src": "1813:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1447,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1813:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1450,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1838:6:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1455,
                        "src": "1830:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1830:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1812:33:7"
                  },
                  "returnParameters": {
                    "id": 1454,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1453,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1455,
                        "src": "1864:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1452,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1864:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1863:6:7"
                  },
                  "scope": 1486,
                  "src": "1796:74:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1456,
                    "nodeType": "StructuredDocumentation",
                    "src": "1876:287:7",
                    "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 1467,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "2177:12:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1458,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2207:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1467,
                        "src": "2199:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2199:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1460,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2229:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1467,
                        "src": "2221:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1459,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2221:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1462,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2249:6:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1467,
                        "src": "2241:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2241:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2189:72:7"
                  },
                  "returnParameters": {
                    "id": 1466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1465,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1467,
                        "src": "2280:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1464,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2280:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2279:6:7"
                  },
                  "scope": 1486,
                  "src": "2168:118:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1468,
                    "nodeType": "StructuredDocumentation",
                    "src": "2292:158:7",
                    "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                  },
                  "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                  "id": 1476,
                  "name": "Transfer",
                  "nameLocation": "2461:8:7",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1470,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2486:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1476,
                        "src": "2470:20:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1469,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2470:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1472,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2508:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1476,
                        "src": "2492:18:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1471,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2492:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1474,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2520:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1476,
                        "src": "2512:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1473,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2512:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2469:57:7"
                  },
                  "src": "2455:72:7"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1477,
                    "nodeType": "StructuredDocumentation",
                    "src": "2533:148:7",
                    "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                  },
                  "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                  "id": 1485,
                  "name": "Approval",
                  "nameLocation": "2692:8:7",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1484,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1479,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2717:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "2701:21:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1478,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2701:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1481,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2740:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "2724:23:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1480,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2724:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1483,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2757:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "2749:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1482,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2749:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2700:63:7"
                  },
                  "src": "2686:78:7"
                }
              ],
              "scope": 1487,
              "src": "202:2564:7",
              "usedErrors": []
            }
          ],
          "src": "106:2661:7"
        },
        "id": 7
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
          "exportedSymbols": {
            "IERC20": [
              1486
            ],
            "IERC20Metadata": [
              1511
            ]
          },
          "id": 1512,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1488,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "110:23:8"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "../IERC20.sol",
              "id": 1489,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1512,
              "sourceUnit": 1487,
              "src": "135:23:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1491,
                    "name": "IERC20",
                    "nameLocations": [
                      "305:6:8"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1486,
                    "src": "305:6:8"
                  },
                  "id": 1492,
                  "nodeType": "InheritanceSpecifier",
                  "src": "305:6:8"
                }
              ],
              "canonicalName": "IERC20Metadata",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1490,
                "nodeType": "StructuredDocumentation",
                "src": "160:116:8",
                "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"
              },
              "fullyImplemented": false,
              "id": 1511,
              "linearizedBaseContracts": [
                1511,
                1486
              ],
              "name": "IERC20Metadata",
              "nameLocation": "287:14:8",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1493,
                    "nodeType": "StructuredDocumentation",
                    "src": "318:54:8",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 1498,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "386:4:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1494,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "390:2:8"
                  },
                  "returnParameters": {
                    "id": 1497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1496,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1498,
                        "src": "416:13:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1495,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "416:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "415:15:8"
                  },
                  "scope": 1511,
                  "src": "377:54:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1499,
                    "nodeType": "StructuredDocumentation",
                    "src": "437:56:8",
                    "text": " @dev Returns the symbol of the token."
                  },
                  "functionSelector": "95d89b41",
                  "id": 1504,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "507:6:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1500,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "513:2:8"
                  },
                  "returnParameters": {
                    "id": 1503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1502,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1504,
                        "src": "539:13:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1501,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "539:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "538:15:8"
                  },
                  "scope": 1511,
                  "src": "498:56:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1505,
                    "nodeType": "StructuredDocumentation",
                    "src": "560:65:8",
                    "text": " @dev Returns the decimals places of the token."
                  },
                  "functionSelector": "313ce567",
                  "id": 1510,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "639:8:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1506,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "647:2:8"
                  },
                  "returnParameters": {
                    "id": 1509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1508,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1510,
                        "src": "673:5:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1507,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "673:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "672:7:8"
                  },
                  "scope": 1511,
                  "src": "630:50:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1512,
              "src": "277:405:8",
              "usedErrors": []
            }
          ],
          "src": "110:573:8"
        },
        "id": 8
      },
      "@openzeppelin/contracts/token/ERC721/ERC721.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
          "exportedSymbols": {
            "Address": [
              2833
            ],
            "Context": [
              2855
            ],
            "ERC165": [
              3082
            ],
            "ERC721": [
              2377
            ],
            "IERC165": [
              3094
            ],
            "IERC721": [
              2493
            ],
            "IERC721Metadata": [
              2538
            ],
            "IERC721Receiver": [
              2511
            ],
            "Strings": [
              3058
            ]
          },
          "id": 2378,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1513,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:23:9"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
              "file": "./IERC721.sol",
              "id": 1514,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2378,
              "sourceUnit": 2494,
              "src": "132:23:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
              "file": "./IERC721Receiver.sol",
              "id": 1515,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2378,
              "sourceUnit": 2512,
              "src": "156:31:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
              "file": "./extensions/IERC721Metadata.sol",
              "id": 1516,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2378,
              "sourceUnit": 2539,
              "src": "188:42:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "../../utils/Address.sol",
              "id": 1517,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2378,
              "sourceUnit": 2834,
              "src": "231:33:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../../utils/Context.sol",
              "id": 1518,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2378,
              "sourceUnit": 2856,
              "src": "265:33:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "../../utils/Strings.sol",
              "id": 1519,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2378,
              "sourceUnit": 3059,
              "src": "299:33:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "../../utils/introspection/ERC165.sol",
              "id": 1520,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2378,
              "sourceUnit": 3083,
              "src": "333:46:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1522,
                    "name": "Context",
                    "nameLocations": [
                      "647:7:9"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2855,
                    "src": "647:7:9"
                  },
                  "id": 1523,
                  "nodeType": "InheritanceSpecifier",
                  "src": "647:7:9"
                },
                {
                  "baseName": {
                    "id": 1524,
                    "name": "ERC165",
                    "nameLocations": [
                      "656:6:9"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3082,
                    "src": "656:6:9"
                  },
                  "id": 1525,
                  "nodeType": "InheritanceSpecifier",
                  "src": "656:6:9"
                },
                {
                  "baseName": {
                    "id": 1526,
                    "name": "IERC721",
                    "nameLocations": [
                      "664:7:9"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2493,
                    "src": "664:7:9"
                  },
                  "id": 1527,
                  "nodeType": "InheritanceSpecifier",
                  "src": "664:7:9"
                },
                {
                  "baseName": {
                    "id": 1528,
                    "name": "IERC721Metadata",
                    "nameLocations": [
                      "673:15:9"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2538,
                    "src": "673:15:9"
                  },
                  "id": 1529,
                  "nodeType": "InheritanceSpecifier",
                  "src": "673:15:9"
                }
              ],
              "canonicalName": "ERC721",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1521,
                "nodeType": "StructuredDocumentation",
                "src": "381:246:9",
                "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."
              },
              "fullyImplemented": true,
              "id": 2377,
              "linearizedBaseContracts": [
                2377,
                2538,
                2493,
                3082,
                3094,
                2855
              ],
              "name": "ERC721",
              "nameLocation": "637:6:9",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 1532,
                  "libraryName": {
                    "id": 1530,
                    "name": "Address",
                    "nameLocations": [
                      "701:7:9"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2833,
                    "src": "701:7:9"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "695:26:9",
                  "typeName": {
                    "id": 1531,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "713:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 1535,
                  "libraryName": {
                    "id": 1533,
                    "name": "Strings",
                    "nameLocations": [
                      "732:7:9"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3058,
                    "src": "732:7:9"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "726:26:9",
                  "typeName": {
                    "id": 1534,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 1537,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "791:5:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "776:20:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1536,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 1539,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "838:7:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "823:22:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1538,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "823:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 1543,
                  "mutability": "mutable",
                  "name": "_owners",
                  "nameLocation": "934:7:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "898:43:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 1542,
                    "keyType": {
                      "id": 1540,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "906:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "898:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 1541,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "917:7:9",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 1547,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "1028:9:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "992:45:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 1546,
                    "keyType": {
                      "id": 1544,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1000:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "992:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 1545,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1011:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 1551,
                  "mutability": "mutable",
                  "name": "_tokenApprovals",
                  "nameLocation": "1129:15:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "1093:51:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 1550,
                    "keyType": {
                      "id": 1548,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1101:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1093:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 1549,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1112:7:9",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 1557,
                  "mutability": "mutable",
                  "name": "_operatorApprovals",
                  "nameLocation": "1252:18:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 2377,
                  "src": "1199:71:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 1556,
                    "keyType": {
                      "id": 1552,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1207:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1199:44:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 1555,
                      "keyType": {
                        "id": 1553,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1226:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1218:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 1554,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1237:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1573,
                    "nodeType": "Block",
                    "src": "1446:57:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 1567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1565,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1537,
                            "src": "1456:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1566,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1560,
                            "src": "1464:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1456:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 1568,
                        "nodeType": "ExpressionStatement",
                        "src": "1456:13:9"
                      },
                      {
                        "expression": {
                          "id": 1571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1569,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1539,
                            "src": "1479:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1570,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1562,
                            "src": "1489:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1479:17:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 1572,
                        "nodeType": "ExpressionStatement",
                        "src": "1479:17:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1558,
                    "nodeType": "StructuredDocumentation",
                    "src": "1277:108:9",
                    "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
                  },
                  "id": 1574,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1560,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "1416:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1574,
                        "src": "1402:19:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1559,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1402:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1562,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "1437:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1574,
                        "src": "1423:21:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1561,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1423:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1401:44:9"
                  },
                  "returnParameters": {
                    "id": 1564,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1446:0:9"
                  },
                  "scope": 2377,
                  "src": "1390:113:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3081,
                    3093
                  ],
                  "body": {
                    "id": 1604,
                    "nodeType": "Block",
                    "src": "1678:192:9",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1590,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1585,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1577,
                                "src": "1707:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1587,
                                      "name": "IERC721",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2493,
                                      "src": "1727:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721_$2493_$",
                                        "typeString": "type(contract IERC721)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721_$2493_$",
                                        "typeString": "type(contract IERC721)"
                                      }
                                    ],
                                    "id": 1586,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "1722:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 1588,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1722:13:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$2493",
                                    "typeString": "type(contract IERC721)"
                                  }
                                },
                                "id": 1589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1736:11:9",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "1722:25:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "1707:40:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1591,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1577,
                                "src": "1763:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1593,
                                      "name": "IERC721Metadata",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2538,
                                      "src": "1783:15:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$2538_$",
                                        "typeString": "type(contract IERC721Metadata)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$2538_$",
                                        "typeString": "type(contract IERC721Metadata)"
                                      }
                                    ],
                                    "id": 1592,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "1778:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 1594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1778:21:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$2538",
                                    "typeString": "type(contract IERC721Metadata)"
                                  }
                                },
                                "id": 1595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1800:11:9",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "1778:33:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "1763:48:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1707:104:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 1600,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1577,
                                "src": "1851:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 1598,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1827:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ERC721_$2377_$",
                                  "typeString": "type(contract super ERC721)"
                                }
                              },
                              "id": 1599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1833:17:9",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3081,
                              "src": "1827:23:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 1601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1827:36:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1707:156:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1584,
                        "id": 1603,
                        "nodeType": "Return",
                        "src": "1688:175:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1575,
                    "nodeType": "StructuredDocumentation",
                    "src": "1509:56:9",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 1605,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1579:17:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1581,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 1579,
                        "name": "ERC165",
                        "nameLocations": [
                          "1646:6:9"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3082,
                        "src": "1646:6:9"
                      },
                      {
                        "id": 1580,
                        "name": "IERC165",
                        "nameLocations": [
                          "1654:7:9"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3094,
                        "src": "1654:7:9"
                      }
                    ],
                    "src": "1637:25:9"
                  },
                  "parameters": {
                    "id": 1578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1577,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "1604:11:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1605,
                        "src": "1597:18:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1576,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1597:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1596:20:9"
                  },
                  "returnParameters": {
                    "id": 1584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1583,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1605,
                        "src": "1672:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1582,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1672:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1671:6:9"
                  },
                  "scope": 2377,
                  "src": "1570:300:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2418
                  ],
                  "body": {
                    "id": 1628,
                    "nodeType": "Block",
                    "src": "2010:124:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1615,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1608,
                                "src": "2028:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1618,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2045:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1617,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2037:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1616,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2037:7:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2037:10:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2028:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                              "id": 1621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2049:44:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
                                "typeString": "literal_string \"ERC721: balance query for the zero address\""
                              },
                              "value": "ERC721: balance query for the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
                                "typeString": "literal_string \"ERC721: balance query for the zero address\""
                              }
                            ],
                            "id": 1614,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2020:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2020:74:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1623,
                        "nodeType": "ExpressionStatement",
                        "src": "2020:74:9"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1624,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1547,
                            "src": "2111:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1626,
                          "indexExpression": {
                            "id": 1625,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1608,
                            "src": "2121:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2111:16:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1613,
                        "id": 1627,
                        "nodeType": "Return",
                        "src": "2104:23:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1606,
                    "nodeType": "StructuredDocumentation",
                    "src": "1876:48:9",
                    "text": " @dev See {IERC721-balanceOf}."
                  },
                  "functionSelector": "70a08231",
                  "id": 1629,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "1938:9:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1610,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1983:8:9"
                  },
                  "parameters": {
                    "id": 1609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1608,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1956:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1629,
                        "src": "1948:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1607,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1948:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1947:15:9"
                  },
                  "returnParameters": {
                    "id": 1613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1612,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1629,
                        "src": "2001:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1611,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2001:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2000:9:9"
                  },
                  "scope": 2377,
                  "src": "1929:205:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2426
                  ],
                  "body": {
                    "id": 1656,
                    "nodeType": "Block",
                    "src": "2272:154:9",
                    "statements": [
                      {
                        "assignments": [
                          1639
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1639,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "2290:5:9",
                            "nodeType": "VariableDeclaration",
                            "scope": 1656,
                            "src": "2282:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1638,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2282:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1643,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1640,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1543,
                            "src": "2298:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 1642,
                          "indexExpression": {
                            "id": 1641,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1632,
                            "src": "2306:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2298:16:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2282:32:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1645,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1639,
                                "src": "2332:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1648,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2349:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1647,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2341:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1646,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2341:7:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2341:10:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2332:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 1651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2353:43:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
                                "typeString": "literal_string \"ERC721: owner query for nonexistent token\""
                              },
                              "value": "ERC721: owner query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
                                "typeString": "literal_string \"ERC721: owner query for nonexistent token\""
                              }
                            ],
                            "id": 1644,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2324:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2324:73:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1653,
                        "nodeType": "ExpressionStatement",
                        "src": "2324:73:9"
                      },
                      {
                        "expression": {
                          "id": 1654,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1639,
                          "src": "2414:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1637,
                        "id": 1655,
                        "nodeType": "Return",
                        "src": "2407:12:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1630,
                    "nodeType": "StructuredDocumentation",
                    "src": "2140:46:9",
                    "text": " @dev See {IERC721-ownerOf}."
                  },
                  "functionSelector": "6352211e",
                  "id": 1657,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "2200:7:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1634,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2245:8:9"
                  },
                  "parameters": {
                    "id": 1633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1632,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2216:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1657,
                        "src": "2208:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1631,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2208:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2207:17:9"
                  },
                  "returnParameters": {
                    "id": 1637,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1636,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1657,
                        "src": "2263:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1635,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2262:9:9"
                  },
                  "scope": 2377,
                  "src": "2191:235:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2523
                  ],
                  "body": {
                    "id": 1666,
                    "nodeType": "Block",
                    "src": "2557:29:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 1664,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1537,
                          "src": "2574:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 1663,
                        "id": 1665,
                        "nodeType": "Return",
                        "src": "2567:12:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1658,
                    "nodeType": "StructuredDocumentation",
                    "src": "2432:51:9",
                    "text": " @dev See {IERC721Metadata-name}."
                  },
                  "functionSelector": "06fdde03",
                  "id": 1667,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "2497:4:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1660,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2524:8:9"
                  },
                  "parameters": {
                    "id": 1659,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2501:2:9"
                  },
                  "returnParameters": {
                    "id": 1663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1662,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1667,
                        "src": "2542:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1661,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2542:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2541:15:9"
                  },
                  "scope": 2377,
                  "src": "2488:98:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2529
                  ],
                  "body": {
                    "id": 1676,
                    "nodeType": "Block",
                    "src": "2721:31:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 1674,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1539,
                          "src": "2738:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 1673,
                        "id": 1675,
                        "nodeType": "Return",
                        "src": "2731:14:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1668,
                    "nodeType": "StructuredDocumentation",
                    "src": "2592:53:9",
                    "text": " @dev See {IERC721Metadata-symbol}."
                  },
                  "functionSelector": "95d89b41",
                  "id": 1677,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "2659:6:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1670,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2688:8:9"
                  },
                  "parameters": {
                    "id": 1669,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2665:2:9"
                  },
                  "returnParameters": {
                    "id": 1673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1672,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1677,
                        "src": "2706:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1671,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2706:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2705:15:9"
                  },
                  "scope": 2377,
                  "src": "2650:102:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2537
                  ],
                  "body": {
                    "id": 1718,
                    "nodeType": "Block",
                    "src": "2906:241:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1688,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1680,
                                  "src": "2932:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1687,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1950,
                                "src": "2924:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 1689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2924:16:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 1690,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2942:49:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              },
                              "value": "ERC721Metadata: URI query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              }
                            ],
                            "id": 1686,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2916:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2916:76:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1692,
                        "nodeType": "ExpressionStatement",
                        "src": "2916:76:9"
                      },
                      {
                        "assignments": [
                          1694
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1694,
                            "mutability": "mutable",
                            "name": "baseURI",
                            "nameLocation": "3017:7:9",
                            "nodeType": "VariableDeclaration",
                            "scope": 1718,
                            "src": "3003:21:9",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 1693,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "3003:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1697,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1695,
                            "name": "_baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1728,
                            "src": "3027:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () view returns (string memory)"
                            }
                          },
                          "id": 1696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3027:10:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3003:34:9"
                      },
                      {
                        "expression": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1704,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1700,
                                    "name": "baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1694,
                                    "src": "3060:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 1699,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3054:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 1698,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3054:5:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3054:14:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3069:6:9",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3054:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 1703,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3078:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3054:25:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "hexValue": "",
                            "id": 1715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3138:2:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          },
                          "id": 1716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "3054:86:9",
                          "trueExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 1709,
                                    "name": "baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1694,
                                    "src": "3106:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "id": 1710,
                                        "name": "tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1680,
                                        "src": "3115:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1711,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3123:8:9",
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2940,
                                      "src": "3115:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 1712,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3115:18:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1707,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "3089:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3093:12:9",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "3089:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1713,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3089:45:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3082:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 1705,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "3082:6:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1714,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3082:53:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1685,
                        "id": 1717,
                        "nodeType": "Return",
                        "src": "3047:93:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1678,
                    "nodeType": "StructuredDocumentation",
                    "src": "2758:55:9",
                    "text": " @dev See {IERC721Metadata-tokenURI}."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 1719,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "2827:8:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1682,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2873:8:9"
                  },
                  "parameters": {
                    "id": 1681,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1680,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2844:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1719,
                        "src": "2836:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2836:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2835:17:9"
                  },
                  "returnParameters": {
                    "id": 1685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1684,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1719,
                        "src": "2891:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1683,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2891:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2890:15:9"
                  },
                  "scope": 2377,
                  "src": "2818:329:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1727,
                    "nodeType": "Block",
                    "src": "3454:26:9",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "",
                          "id": 1725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3471:2:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        },
                        "functionReturnParameters": 1724,
                        "id": 1726,
                        "nodeType": "Return",
                        "src": "3464:9:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1720,
                    "nodeType": "StructuredDocumentation",
                    "src": "3153:230:9",
                    "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overriden in child contracts."
                  },
                  "id": 1728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_baseURI",
                  "nameLocation": "3397:8:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1721,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3405:2:9"
                  },
                  "returnParameters": {
                    "id": 1724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1723,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1728,
                        "src": "3439:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1722,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3439:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3438:15:9"
                  },
                  "scope": 2377,
                  "src": "3388:92:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2454
                  ],
                  "body": {
                    "id": 1770,
                    "nodeType": "Block",
                    "src": "3607:331:9",
                    "statements": [
                      {
                        "assignments": [
                          1738
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1738,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "3625:5:9",
                            "nodeType": "VariableDeclaration",
                            "scope": 1770,
                            "src": "3617:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1737,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3617:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1743,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1741,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1733,
                              "src": "3648:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1739,
                              "name": "ERC721",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2377,
                              "src": "3633:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721_$2377_$",
                                "typeString": "type(contract ERC721)"
                              }
                            },
                            "id": 1740,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3640:7:9",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1657,
                            "src": "3633:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 1742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3633:23:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3617:39:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1745,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1731,
                                "src": "3674:2:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 1746,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1738,
                                "src": "3680:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3674:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572",
                              "id": 1748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3687:35:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                                "typeString": "literal_string \"ERC721: approval to current owner\""
                              },
                              "value": "ERC721: approval to current owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                                "typeString": "literal_string \"ERC721: approval to current owner\""
                              }
                            ],
                            "id": 1744,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3666:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3666:57:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1750,
                        "nodeType": "ExpressionStatement",
                        "src": "3666:57:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1752,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2845,
                                    "src": "3755:10:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 1753,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3755:12:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 1754,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1738,
                                  "src": "3771:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3755:21:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 1757,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1738,
                                    "src": "3797:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1758,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2845,
                                      "src": "3804:10:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 1759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3804:12:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1756,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1827,
                                  "src": "3780:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 1760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3780:37:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3755:62:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                              "id": 1762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3831:58:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                                "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                              },
                              "value": "ERC721: approve caller is not owner nor approved for all"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                                "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                              }
                            ],
                            "id": 1751,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3734:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3734:165:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1764,
                        "nodeType": "ExpressionStatement",
                        "src": "3734:165:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1766,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1731,
                              "src": "3919:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1767,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1733,
                              "src": "3923:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1765,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2260,
                            "src": "3910:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3910:21:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1769,
                        "nodeType": "ExpressionStatement",
                        "src": "3910:21:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1729,
                    "nodeType": "StructuredDocumentation",
                    "src": "3486:46:9",
                    "text": " @dev See {IERC721-approve}."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 1771,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "3546:7:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1735,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3598:8:9"
                  },
                  "parameters": {
                    "id": 1734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1731,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3562:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1771,
                        "src": "3554:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3554:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1733,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3574:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1771,
                        "src": "3566:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1732,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3566:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3553:29:9"
                  },
                  "returnParameters": {
                    "id": 1736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3607:0:9"
                  },
                  "scope": 2377,
                  "src": "3537:401:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2462
                  ],
                  "body": {
                    "id": 1791,
                    "nodeType": "Block",
                    "src": "4084:132:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1782,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1774,
                                  "src": "4110:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1781,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1950,
                                "src": "4102:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 1783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4102:16:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 1784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4120:46:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
                                "typeString": "literal_string \"ERC721: approved query for nonexistent token\""
                              },
                              "value": "ERC721: approved query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
                                "typeString": "literal_string \"ERC721: approved query for nonexistent token\""
                              }
                            ],
                            "id": 1780,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4094:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4094:73:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1786,
                        "nodeType": "ExpressionStatement",
                        "src": "4094:73:9"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1787,
                            "name": "_tokenApprovals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1551,
                            "src": "4185:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 1789,
                          "indexExpression": {
                            "id": 1788,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1774,
                            "src": "4201:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4185:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1779,
                        "id": 1790,
                        "nodeType": "Return",
                        "src": "4178:31:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1772,
                    "nodeType": "StructuredDocumentation",
                    "src": "3944:50:9",
                    "text": " @dev See {IERC721-getApproved}."
                  },
                  "functionSelector": "081812fc",
                  "id": 1792,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nameLocation": "4008:11:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1776,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4057:8:9"
                  },
                  "parameters": {
                    "id": 1775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1774,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4028:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1792,
                        "src": "4020:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1773,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4020:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4019:17:9"
                  },
                  "returnParameters": {
                    "id": 1779,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1778,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1792,
                        "src": "4075:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1777,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4075:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4074:9:9"
                  },
                  "scope": 2377,
                  "src": "3999:217:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2470
                  ],
                  "body": {
                    "id": 1808,
                    "nodeType": "Block",
                    "src": "4367:69:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1802,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2845,
                                "src": "4396:10:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 1803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4396:12:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1804,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "4410:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1805,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1797,
                              "src": "4420:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1801,
                            "name": "_setApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2292,
                            "src": "4377:18:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 1806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4377:52:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1807,
                        "nodeType": "ExpressionStatement",
                        "src": "4377:52:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1793,
                    "nodeType": "StructuredDocumentation",
                    "src": "4222:56:9",
                    "text": " @dev See {IERC721-setApprovalForAll}."
                  },
                  "functionSelector": "a22cb465",
                  "id": 1809,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "4292:17:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1799,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4358:8:9"
                  },
                  "parameters": {
                    "id": 1798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1795,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4318:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1809,
                        "src": "4310:16:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4310:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1797,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "4333:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1809,
                        "src": "4328:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1796,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4328:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4309:33:9"
                  },
                  "returnParameters": {
                    "id": 1800,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4367:0:9"
                  },
                  "scope": 2377,
                  "src": "4283:153:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2480
                  ],
                  "body": {
                    "id": 1826,
                    "nodeType": "Block",
                    "src": "4605:59:9",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1820,
                              "name": "_operatorApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1557,
                              "src": "4622:18:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 1822,
                            "indexExpression": {
                              "id": 1821,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1812,
                              "src": "4641:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4622:25:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 1824,
                          "indexExpression": {
                            "id": 1823,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1814,
                            "src": "4648:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4622:35:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1819,
                        "id": 1825,
                        "nodeType": "Return",
                        "src": "4615:42:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1810,
                    "nodeType": "StructuredDocumentation",
                    "src": "4442:55:9",
                    "text": " @dev See {IERC721-isApprovedForAll}."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 1827,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "4511:16:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1816,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4581:8:9"
                  },
                  "parameters": {
                    "id": 1815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1812,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4536:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1827,
                        "src": "4528:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4528:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1814,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4551:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1827,
                        "src": "4543:16:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1813,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4543:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4527:33:9"
                  },
                  "returnParameters": {
                    "id": 1819,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1818,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1827,
                        "src": "4599:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1817,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4599:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4598:6:9"
                  },
                  "scope": 2377,
                  "src": "4502:162:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2446
                  ],
                  "body": {
                    "id": 1853,
                    "nodeType": "Block",
                    "src": "4845:211:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1840,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2845,
                                    "src": "4934:10:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 1841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4934:12:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1842,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1834,
                                  "src": "4948:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1839,
                                "name": "_isApprovedOrOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1991,
                                "src": "4915:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) view returns (bool)"
                                }
                              },
                              "id": 1843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4915:41:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "id": 1844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4958:51:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
                                "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
                              },
                              "value": "ERC721: transfer caller is not owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
                                "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
                              }
                            ],
                            "id": 1838,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4907:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4907:103:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1846,
                        "nodeType": "ExpressionStatement",
                        "src": "4907:103:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1848,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1830,
                              "src": "5031:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1849,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1832,
                              "src": "5037:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1850,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1834,
                              "src": "5041:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1847,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2236,
                            "src": "5021:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5021:28:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1852,
                        "nodeType": "ExpressionStatement",
                        "src": "5021:28:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1828,
                    "nodeType": "StructuredDocumentation",
                    "src": "4670:51:9",
                    "text": " @dev See {IERC721-transferFrom}."
                  },
                  "functionSelector": "23b872dd",
                  "id": 1854,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "4735:12:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1836,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4836:8:9"
                  },
                  "parameters": {
                    "id": 1835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1830,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4765:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1854,
                        "src": "4757:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4757:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1832,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4787:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1854,
                        "src": "4779:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1831,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4779:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1834,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4807:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1854,
                        "src": "4799:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1833,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4799:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4747:73:9"
                  },
                  "returnParameters": {
                    "id": 1837,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4845:0:9"
                  },
                  "scope": 2377,
                  "src": "4726:330:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2436
                  ],
                  "body": {
                    "id": 1872,
                    "nodeType": "Block",
                    "src": "5245:56:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1866,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1857,
                              "src": "5272:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1867,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1859,
                              "src": "5278:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1868,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1861,
                              "src": "5282:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5291:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1865,
                            "name": "safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1873,
                              1903
                            ],
                            "referencedDeclaration": 1903,
                            "src": "5255:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory)"
                            }
                          },
                          "id": 1870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5255:39:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1871,
                        "nodeType": "ExpressionStatement",
                        "src": "5255:39:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1855,
                    "nodeType": "StructuredDocumentation",
                    "src": "5062:55:9",
                    "text": " @dev See {IERC721-safeTransferFrom}."
                  },
                  "functionSelector": "42842e0e",
                  "id": 1873,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "5131:16:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1863,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5236:8:9"
                  },
                  "parameters": {
                    "id": 1862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1857,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5165:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1873,
                        "src": "5157:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1856,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5157:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1859,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5187:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1873,
                        "src": "5179:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1858,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5179:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1861,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5207:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1873,
                        "src": "5199:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1860,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5199:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5147:73:9"
                  },
                  "returnParameters": {
                    "id": 1864,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5245:0:9"
                  },
                  "scope": 2377,
                  "src": "5122:179:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2492
                  ],
                  "body": {
                    "id": 1902,
                    "nodeType": "Block",
                    "src": "5518:169:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1888,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2845,
                                    "src": "5555:10:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 1889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5555:12:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1890,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1880,
                                  "src": "5569:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1887,
                                "name": "_isApprovedOrOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1991,
                                "src": "5536:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) view returns (bool)"
                                }
                              },
                              "id": 1891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5536:41:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "id": 1892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5579:51:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
                                "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
                              },
                              "value": "ERC721: transfer caller is not owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
                                "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
                              }
                            ],
                            "id": 1886,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5528:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5528:103:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1894,
                        "nodeType": "ExpressionStatement",
                        "src": "5528:103:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1896,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1876,
                              "src": "5655:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1897,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1878,
                              "src": "5661:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1898,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1880,
                              "src": "5665:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1899,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1882,
                              "src": "5674:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1895,
                            "name": "_safeTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1932,
                            "src": "5641:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory)"
                            }
                          },
                          "id": 1900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5641:39:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1901,
                        "nodeType": "ExpressionStatement",
                        "src": "5641:39:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1874,
                    "nodeType": "StructuredDocumentation",
                    "src": "5307:55:9",
                    "text": " @dev See {IERC721-safeTransferFrom}."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 1903,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "5376:16:9",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1884,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5509:8:9"
                  },
                  "parameters": {
                    "id": 1883,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1876,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5410:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1903,
                        "src": "5402:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5402:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1878,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5432:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1903,
                        "src": "5424:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1877,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5424:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1880,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5452:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1903,
                        "src": "5444:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1879,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5444:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1882,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "5482:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1903,
                        "src": "5469:18:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1881,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5469:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5392:101:9"
                  },
                  "returnParameters": {
                    "id": 1885,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5518:0:9"
                  },
                  "scope": 2377,
                  "src": "5367:320:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1931,
                    "nodeType": "Block",
                    "src": "6690:166:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1916,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1906,
                              "src": "6710:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1917,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1908,
                              "src": "6716:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1918,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1910,
                              "src": "6720:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1915,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2236,
                            "src": "6700:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6700:28:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1920,
                        "nodeType": "ExpressionStatement",
                        "src": "6700:28:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1923,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1906,
                                  "src": "6769:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1924,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1908,
                                  "src": "6775:2:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1925,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1910,
                                  "src": "6779:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 1926,
                                  "name": "_data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1912,
                                  "src": "6788:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1922,
                                "name": "_checkOnERC721Received",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "6746:22:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                                }
                              },
                              "id": 1927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6746:48:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                              "id": 1928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6796:52:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                              },
                              "value": "ERC721: transfer to non ERC721Receiver implementer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                              }
                            ],
                            "id": 1921,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6738:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6738:111:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1930,
                        "nodeType": "ExpressionStatement",
                        "src": "6738:111:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1904,
                    "nodeType": "StructuredDocumentation",
                    "src": "5693:851:9",
                    "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
                  },
                  "id": 1932,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransfer",
                  "nameLocation": "6558:13:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1906,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "6589:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1932,
                        "src": "6581:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1905,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6581:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1908,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "6611:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1932,
                        "src": "6603:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1907,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6603:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1910,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "6631:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1932,
                        "src": "6623:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1909,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6623:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1912,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "6661:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1932,
                        "src": "6648:18:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1911,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6648:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6571:101:9"
                  },
                  "returnParameters": {
                    "id": 1914,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6690:0:9"
                  },
                  "scope": 2377,
                  "src": "6549:307:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1949,
                    "nodeType": "Block",
                    "src": "7230:54:9",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 1940,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1543,
                              "src": "7247:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 1942,
                            "indexExpression": {
                              "id": 1941,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1935,
                              "src": "7255:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7247:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7275:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7267:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1943,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7267:7:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7267:10:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7247:30:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1939,
                        "id": 1948,
                        "nodeType": "Return",
                        "src": "7240:37:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1933,
                    "nodeType": "StructuredDocumentation",
                    "src": "6862:292:9",
                    "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."
                  },
                  "id": 1950,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_exists",
                  "nameLocation": "7168:7:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1936,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1935,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "7184:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1950,
                        "src": "7176:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1934,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7176:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7175:17:9"
                  },
                  "returnParameters": {
                    "id": 1939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1938,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1950,
                        "src": "7224:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1937,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7224:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7223:6:9"
                  },
                  "scope": 2377,
                  "src": "7159:125:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1990,
                    "nodeType": "Block",
                    "src": "7541:245:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1962,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1955,
                                  "src": "7567:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1961,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1950,
                                "src": "7559:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 1963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7559:16:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 1964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7577:46:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                                "typeString": "literal_string \"ERC721: operator query for nonexistent token\""
                              },
                              "value": "ERC721: operator query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                                "typeString": "literal_string \"ERC721: operator query for nonexistent token\""
                              }
                            ],
                            "id": 1960,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7551:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7551:73:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1966,
                        "nodeType": "ExpressionStatement",
                        "src": "7551:73:9"
                      },
                      {
                        "assignments": [
                          1968
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1968,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "7642:5:9",
                            "nodeType": "VariableDeclaration",
                            "scope": 1990,
                            "src": "7634:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1967,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7634:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1973,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1971,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1955,
                              "src": "7665:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1969,
                              "name": "ERC721",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2377,
                              "src": "7650:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721_$2377_$",
                                "typeString": "type(contract ERC721)"
                              }
                            },
                            "id": 1970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7657:7:9",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1657,
                            "src": "7650:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 1972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7650:23:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7634:39:9"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1982,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1976,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1974,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1953,
                                    "src": "7691:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 1975,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1968,
                                    "src": "7702:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "7691:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1981,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 1978,
                                        "name": "tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1955,
                                        "src": "7723:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1977,
                                      "name": "getApproved",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1792,
                                      "src": "7711:11:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                        "typeString": "function (uint256) view returns (address)"
                                      }
                                    },
                                    "id": 1979,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7711:20:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 1980,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1953,
                                    "src": "7735:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "7711:31:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7691:51:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 1984,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1968,
                                    "src": "7763:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1985,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1953,
                                    "src": "7770:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1983,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1827,
                                  "src": "7746:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 1986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7746:32:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7691:87:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 1988,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7690:89:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1959,
                        "id": 1989,
                        "nodeType": "Return",
                        "src": "7683:96:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1951,
                    "nodeType": "StructuredDocumentation",
                    "src": "7290:147:9",
                    "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."
                  },
                  "id": 1991,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isApprovedOrOwner",
                  "nameLocation": "7451:18:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1953,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "7478:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1991,
                        "src": "7470:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1952,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7470:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1955,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "7495:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1991,
                        "src": "7487:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1954,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7487:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7469:34:9"
                  },
                  "returnParameters": {
                    "id": 1959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1958,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1991,
                        "src": "7535:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1957,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7535:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7534:6:9"
                  },
                  "scope": 2377,
                  "src": "7442:344:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2005,
                    "nodeType": "Block",
                    "src": "8181:43:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2000,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1994,
                              "src": "8201:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2001,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1996,
                              "src": "8205:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 2002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8214:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1999,
                            "name": "_safeMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2006,
                              2035
                            ],
                            "referencedDeclaration": 2035,
                            "src": "8191:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory)"
                            }
                          },
                          "id": 2003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8191:26:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2004,
                        "nodeType": "ExpressionStatement",
                        "src": "8191:26:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1992,
                    "nodeType": "StructuredDocumentation",
                    "src": "7792:319:9",
                    "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
                  },
                  "id": 2006,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nameLocation": "8125:9:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1997,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1994,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8143:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2006,
                        "src": "8135:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1993,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8135:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1996,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "8155:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2006,
                        "src": "8147:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1995,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8147:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8134:29:9"
                  },
                  "returnParameters": {
                    "id": 1998,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8181:0:9"
                  },
                  "scope": 2377,
                  "src": "8116:108:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2034,
                    "nodeType": "Block",
                    "src": "8560:196:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2017,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2009,
                              "src": "8576:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2018,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2011,
                              "src": "8580:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2016,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2101,
                            "src": "8570:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 2019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8570:18:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2020,
                        "nodeType": "ExpressionStatement",
                        "src": "8570:18:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 2025,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8650:1:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2024,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8642:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2023,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8642:7:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2026,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8642:10:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2027,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2009,
                                  "src": "8654:2:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2028,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2011,
                                  "src": "8658:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 2029,
                                  "name": "_data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2013,
                                  "src": "8667:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2022,
                                "name": "_checkOnERC721Received",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "8619:22:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                                }
                              },
                              "id": 2030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8619:54:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                              "id": 2031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8687:52:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                              },
                              "value": "ERC721: transfer to non ERC721Receiver implementer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                              }
                            ],
                            "id": 2021,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8598:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8598:151:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2033,
                        "nodeType": "ExpressionStatement",
                        "src": "8598:151:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2007,
                    "nodeType": "StructuredDocumentation",
                    "src": "8230:210:9",
                    "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."
                  },
                  "id": 2035,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nameLocation": "8454:9:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2009,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8481:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2035,
                        "src": "8473:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2008,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8473:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2011,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "8501:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2035,
                        "src": "8493:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2010,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8493:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2013,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "8531:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2035,
                        "src": "8518:18:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2012,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8518:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8463:79:9"
                  },
                  "returnParameters": {
                    "id": 2015,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8560:0:9"
                  },
                  "scope": 2377,
                  "src": "8445:311:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2100,
                    "nodeType": "Block",
                    "src": "9139:366:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2044,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2038,
                                "src": "9157:2:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2047,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9171:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2046,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9163:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2045,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9163:7:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9163:10:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9157:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 2050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9175:34:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                                "typeString": "literal_string \"ERC721: mint to the zero address\""
                              },
                              "value": "ERC721: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                                "typeString": "literal_string \"ERC721: mint to the zero address\""
                              }
                            ],
                            "id": 2043,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9149:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9149:61:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2052,
                        "nodeType": "ExpressionStatement",
                        "src": "9149:61:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "9228:17:9",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 2055,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2040,
                                    "src": "9237:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2054,
                                  "name": "_exists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1950,
                                  "src": "9229:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (uint256) view returns (bool)"
                                  }
                                },
                                "id": 2056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9229:16:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                              "id": 2058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9247:30:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                                "typeString": "literal_string \"ERC721: token already minted\""
                              },
                              "value": "ERC721: token already minted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                                "typeString": "literal_string \"ERC721: token already minted\""
                              }
                            ],
                            "id": 2053,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9220:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9220:58:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2060,
                        "nodeType": "ExpressionStatement",
                        "src": "9220:58:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9318:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9310:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2062,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9310:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9310:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2066,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2038,
                              "src": "9322:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2067,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2040,
                              "src": "9326:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2061,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2365,
                            "src": "9289:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9289:45:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2069,
                        "nodeType": "ExpressionStatement",
                        "src": "9289:45:9"
                      },
                      {
                        "expression": {
                          "id": 2074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2070,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1547,
                              "src": "9345:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2072,
                            "indexExpression": {
                              "id": 2071,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2038,
                              "src": "9355:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9345:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 2073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9362:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9345:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2075,
                        "nodeType": "ExpressionStatement",
                        "src": "9345:18:9"
                      },
                      {
                        "expression": {
                          "id": 2080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2076,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1543,
                              "src": "9373:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 2078,
                            "indexExpression": {
                              "id": 2077,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2040,
                              "src": "9381:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9373:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2079,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2038,
                            "src": "9392:2:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9373:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2081,
                        "nodeType": "ExpressionStatement",
                        "src": "9373:21:9"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9427:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2084,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9419:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2083,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9419:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9419:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2087,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2038,
                              "src": "9431:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2088,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2040,
                              "src": "9435:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2082,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2392,
                            "src": "9410:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9410:33:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2090,
                        "nodeType": "EmitStatement",
                        "src": "9405:38:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2094,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9482:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9474:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2092,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9474:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9474:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2096,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2038,
                              "src": "9486:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2097,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2040,
                              "src": "9490:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2091,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2376,
                            "src": "9454:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9454:44:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2099,
                        "nodeType": "ExpressionStatement",
                        "src": "9454:44:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2036,
                    "nodeType": "StructuredDocumentation",
                    "src": "8762:311:9",
                    "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."
                  },
                  "id": 2101,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "9087:5:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2038,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "9101:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2101,
                        "src": "9093:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2037,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9093:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2040,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "9113:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2101,
                        "src": "9105:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2039,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9105:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9092:29:9"
                  },
                  "returnParameters": {
                    "id": 2042,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9139:0:9"
                  },
                  "scope": 2377,
                  "src": "9078:427:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2160,
                    "nodeType": "Block",
                    "src": "9771:357:9",
                    "statements": [
                      {
                        "assignments": [
                          2108
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2108,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "9789:5:9",
                            "nodeType": "VariableDeclaration",
                            "scope": 2160,
                            "src": "9781:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2107,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9781:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2113,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2111,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2104,
                              "src": "9812:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2109,
                              "name": "ERC721",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2377,
                              "src": "9797:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721_$2377_$",
                                "typeString": "type(contract ERC721)"
                              }
                            },
                            "id": 2110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9804:7:9",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1657,
                            "src": "9797:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 2112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9797:23:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9781:39:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2115,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2108,
                              "src": "9852:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9867:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9859:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2116,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9859:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9859:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2120,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2104,
                              "src": "9871:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2114,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2365,
                            "src": "9831:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9831:48:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2122,
                        "nodeType": "ExpressionStatement",
                        "src": "9831:48:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2126,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9934:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9926:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2124,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9926:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9926:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2128,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2104,
                              "src": "9938:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2123,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2260,
                            "src": "9917:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 2129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9917:29:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2130,
                        "nodeType": "ExpressionStatement",
                        "src": "9917:29:9"
                      },
                      {
                        "expression": {
                          "id": 2135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2131,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1547,
                              "src": "9957:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2133,
                            "indexExpression": {
                              "id": 2132,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2108,
                              "src": "9967:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9957:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 2134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9977:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9957:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2136,
                        "nodeType": "ExpressionStatement",
                        "src": "9957:21:9"
                      },
                      {
                        "expression": {
                          "id": 2140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "9988:23:9",
                          "subExpression": {
                            "baseExpression": {
                              "id": 2137,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1543,
                              "src": "9995:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 2139,
                            "indexExpression": {
                              "id": 2138,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2104,
                              "src": "10003:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9995:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2141,
                        "nodeType": "ExpressionStatement",
                        "src": "9988:23:9"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2143,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2108,
                              "src": "10036:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2146,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10051:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2145,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10043:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2144,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10043:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10043:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2148,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2104,
                              "src": "10055:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2142,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2392,
                            "src": "10027:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10027:36:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2150,
                        "nodeType": "EmitStatement",
                        "src": "10022:41:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2152,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2108,
                              "src": "10094:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10109:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10101:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2153,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10101:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10101:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2157,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2104,
                              "src": "10113:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2151,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2376,
                            "src": "10074:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10074:47:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2159,
                        "nodeType": "ExpressionStatement",
                        "src": "10074:47:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2102,
                    "nodeType": "StructuredDocumentation",
                    "src": "9511:206:9",
                    "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."
                  },
                  "id": 2161,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "9731:5:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2104,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "9745:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2161,
                        "src": "9737:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2103,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9737:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9736:17:9"
                  },
                  "returnParameters": {
                    "id": 2106,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9771:0:9"
                  },
                  "scope": 2377,
                  "src": "9722:406:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2235,
                    "nodeType": "Block",
                    "src": "10561:496:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 2174,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2168,
                                    "src": "10594:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2172,
                                    "name": "ERC721",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2377,
                                    "src": "10579:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ERC721_$2377_$",
                                      "typeString": "type(contract ERC721)"
                                    }
                                  },
                                  "id": 2173,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "10586:7:9",
                                  "memberName": "ownerOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1657,
                                  "src": "10579:14:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                    "typeString": "function (uint256) view returns (address)"
                                  }
                                },
                                "id": 2175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10579:23:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 2176,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2164,
                                "src": "10606:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10579:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572",
                              "id": 2178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10612:39:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                                "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                              },
                              "value": "ERC721: transfer from incorrect owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                                "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                              }
                            ],
                            "id": 2171,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10571:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10571:81:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2180,
                        "nodeType": "ExpressionStatement",
                        "src": "10571:81:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2182,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2166,
                                "src": "10670:2:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2185,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10684:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2184,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10676:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2183,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10676:7:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2186,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10676:10:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10670:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 2188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10688:38:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                                "typeString": "literal_string \"ERC721: transfer to the zero address\""
                              },
                              "value": "ERC721: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                                "typeString": "literal_string \"ERC721: transfer to the zero address\""
                              }
                            ],
                            "id": 2181,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10662:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10662:65:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2190,
                        "nodeType": "ExpressionStatement",
                        "src": "10662:65:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2192,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2164,
                              "src": "10759:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2193,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2166,
                              "src": "10765:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2194,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2168,
                              "src": "10769:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2191,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2365,
                            "src": "10738:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10738:39:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2196,
                        "nodeType": "ExpressionStatement",
                        "src": "10738:39:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2200,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10856:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10848:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2198,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10848:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10848:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2202,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2168,
                              "src": "10860:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2197,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2260,
                            "src": "10839:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 2203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10839:29:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2204,
                        "nodeType": "ExpressionStatement",
                        "src": "10839:29:9"
                      },
                      {
                        "expression": {
                          "id": 2209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2205,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1547,
                              "src": "10879:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2207,
                            "indexExpression": {
                              "id": 2206,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2164,
                              "src": "10889:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10879:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 2208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10898:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10879:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2210,
                        "nodeType": "ExpressionStatement",
                        "src": "10879:20:9"
                      },
                      {
                        "expression": {
                          "id": 2215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2211,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1547,
                              "src": "10909:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2213,
                            "indexExpression": {
                              "id": 2212,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2166,
                              "src": "10919:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10909:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 2214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10926:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10909:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2216,
                        "nodeType": "ExpressionStatement",
                        "src": "10909:18:9"
                      },
                      {
                        "expression": {
                          "id": 2221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2217,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1543,
                              "src": "10937:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 2219,
                            "indexExpression": {
                              "id": 2218,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2168,
                              "src": "10945:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10937:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2220,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2166,
                            "src": "10956:2:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10937:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2222,
                        "nodeType": "ExpressionStatement",
                        "src": "10937:21:9"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2224,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2164,
                              "src": "10983:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2225,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2166,
                              "src": "10989:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2226,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2168,
                              "src": "10993:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2223,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2392,
                            "src": "10974:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10974:27:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2228,
                        "nodeType": "EmitStatement",
                        "src": "10969:32:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2230,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2164,
                              "src": "11032:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2231,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2166,
                              "src": "11038:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2232,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2168,
                              "src": "11042:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2229,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2376,
                            "src": "11012:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11012:38:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2234,
                        "nodeType": "ExpressionStatement",
                        "src": "11012:38:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2162,
                    "nodeType": "StructuredDocumentation",
                    "src": "10134:313:9",
                    "text": " @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."
                  },
                  "id": 2236,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "10461:9:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2169,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2164,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "10488:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2236,
                        "src": "10480:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2163,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10480:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2166,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "10510:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2236,
                        "src": "10502:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2165,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10502:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2168,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "10530:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2236,
                        "src": "10522:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2167,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10522:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10470:73:9"
                  },
                  "returnParameters": {
                    "id": 2170,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10561:0:9"
                  },
                  "scope": 2377,
                  "src": "10452:605:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2259,
                    "nodeType": "Block",
                    "src": "11232:107:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 2248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2244,
                              "name": "_tokenApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1551,
                              "src": "11242:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 2246,
                            "indexExpression": {
                              "id": 2245,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "11258:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11242:24:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2247,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2239,
                            "src": "11269:2:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11242:29:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2249,
                        "nodeType": "ExpressionStatement",
                        "src": "11242:29:9"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2253,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2241,
                                  "src": "11310:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 2251,
                                  "name": "ERC721",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2377,
                                  "src": "11295:6:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ERC721_$2377_$",
                                    "typeString": "type(contract ERC721)"
                                  }
                                },
                                "id": 2252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "11302:7:9",
                                "memberName": "ownerOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1657,
                                "src": "11295:14:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                  "typeString": "function (uint256) view returns (address)"
                                }
                              },
                              "id": 2254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11295:23:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2255,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2239,
                              "src": "11320:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2256,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "11324:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2250,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2401,
                            "src": "11286:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11286:46:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2258,
                        "nodeType": "EmitStatement",
                        "src": "11281:51:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2237,
                    "nodeType": "StructuredDocumentation",
                    "src": "11063:100:9",
                    "text": " @dev Approve `to` to operate on `tokenId`\n Emits a {Approval} event."
                  },
                  "id": 2260,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "11177:8:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2239,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "11194:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2260,
                        "src": "11186:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2238,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11186:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2241,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "11206:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2260,
                        "src": "11198:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2240,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11198:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11185:29:9"
                  },
                  "returnParameters": {
                    "id": 2243,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11232:0:9"
                  },
                  "scope": 2377,
                  "src": "11168:171:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2291,
                    "nodeType": "Block",
                    "src": "11597:184:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2271,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2263,
                                "src": "11615:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 2272,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2265,
                                "src": "11624:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11615:17:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                              "id": 2274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11634:27:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                                "typeString": "literal_string \"ERC721: approve to caller\""
                              },
                              "value": "ERC721: approve to caller"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                                "typeString": "literal_string \"ERC721: approve to caller\""
                              }
                            ],
                            "id": 2270,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11607:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11607:55:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2276,
                        "nodeType": "ExpressionStatement",
                        "src": "11607:55:9"
                      },
                      {
                        "expression": {
                          "id": 2283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 2277,
                                "name": "_operatorApprovals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1557,
                                "src": "11672:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 2280,
                              "indexExpression": {
                                "id": 2278,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2263,
                                "src": "11691:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11672:25:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2281,
                            "indexExpression": {
                              "id": 2279,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2265,
                              "src": "11698:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11672:35:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2282,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2267,
                            "src": "11710:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11672:46:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2284,
                        "nodeType": "ExpressionStatement",
                        "src": "11672:46:9"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2286,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2263,
                              "src": "11748:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2287,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2265,
                              "src": "11755:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2288,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2267,
                              "src": "11765:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2285,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2410,
                            "src": "11733:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 2289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11733:41:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2290,
                        "nodeType": "EmitStatement",
                        "src": "11728:46:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2261,
                    "nodeType": "StructuredDocumentation",
                    "src": "11345:124:9",
                    "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits a {ApprovalForAll} event."
                  },
                  "id": 2292,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setApprovalForAll",
                  "nameLocation": "11483:18:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2263,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "11519:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2292,
                        "src": "11511:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2262,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11511:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2265,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "11542:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2292,
                        "src": "11534:16:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2264,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11534:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2267,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "11565:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2292,
                        "src": "11560:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2266,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11560:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11501:78:9"
                  },
                  "returnParameters": {
                    "id": 2269,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11597:0:9"
                  },
                  "scope": 2377,
                  "src": "11474:307:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2353,
                    "nodeType": "Block",
                    "src": "12490:622:9",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2306,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2297,
                              "src": "12504:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "12507:10:9",
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2556,
                            "src": "12504:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12504:15:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2351,
                          "nodeType": "Block",
                          "src": "13070:36:9",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "74727565",
                                "id": 2349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13091:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 2305,
                              "id": 2350,
                              "nodeType": "Return",
                              "src": "13084:11:9"
                            }
                          ]
                        },
                        "id": 2352,
                        "nodeType": "IfStatement",
                        "src": "12500:606:9",
                        "trueBody": {
                          "id": 2348,
                          "nodeType": "Block",
                          "src": "12521:543:9",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 2328,
                                    "nodeType": "Block",
                                    "src": "12636:91:9",
                                    "statements": [
                                      {
                                        "expression": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 2326,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 2322,
                                            "name": "retval",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2320,
                                            "src": "12661:6:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "id": 2323,
                                                "name": "IERC721Receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2511,
                                                "src": "12671:15:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$2511_$",
                                                  "typeString": "type(contract IERC721Receiver)"
                                                }
                                              },
                                              "id": 2324,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "12687:16:9",
                                              "memberName": "onERC721Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2510,
                                              "src": "12671:32:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                              }
                                            },
                                            "id": 2325,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "12704:8:9",
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "12671:41:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "12661:51:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "functionReturnParameters": 2305,
                                        "id": 2327,
                                        "nodeType": "Return",
                                        "src": "12654:58:9"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 2329,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 2321,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 2320,
                                        "mutability": "mutable",
                                        "name": "retval",
                                        "nameLocation": "12628:6:9",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2329,
                                        "src": "12621:13:9",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 2319,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12621:6:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "12620:15:9"
                                  },
                                  "src": "12612:115:9"
                                },
                                {
                                  "block": {
                                    "id": 2345,
                                    "nodeType": "Block",
                                    "src": "12756:298:9",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2336,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 2333,
                                              "name": "reason",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2331,
                                              "src": "12778:6:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 2334,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "12785:6:9",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "12778:13:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 2335,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12795:1:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "12778:18:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 2343,
                                          "nodeType": "Block",
                                          "src": "12905:135:9",
                                          "statements": [
                                            {
                                              "AST": {
                                                "nodeType": "YulBlock",
                                                "src": "12936:86:9",
                                                "statements": [
                                                  {
                                                    "expression": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "12973:2:9",
                                                              "type": "",
                                                              "value": "32"
                                                            },
                                                            {
                                                              "name": "reason",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "12977:6:9"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12969:3:9"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "12969:15:9"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "reason",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "12992:6:9"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "mload",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12986:5:9"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "12986:13:9"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12962:6:9"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "12962:38:9"
                                                    },
                                                    "nodeType": "YulExpressionStatement",
                                                    "src": "12962:38:9"
                                                  }
                                                ]
                                              },
                                              "evmVersion": "london",
                                              "externalReferences": [
                                                {
                                                  "declaration": 2331,
                                                  "isOffset": false,
                                                  "isSlot": false,
                                                  "src": "12977:6:9",
                                                  "valueSize": 1
                                                },
                                                {
                                                  "declaration": 2331,
                                                  "isOffset": false,
                                                  "isSlot": false,
                                                  "src": "12992:6:9",
                                                  "valueSize": 1
                                                }
                                              ],
                                              "id": 2342,
                                              "nodeType": "InlineAssembly",
                                              "src": "12927:95:9"
                                            }
                                          ]
                                        },
                                        "id": 2344,
                                        "nodeType": "IfStatement",
                                        "src": "12774:266:9",
                                        "trueBody": {
                                          "id": 2341,
                                          "nodeType": "Block",
                                          "src": "12798:101:9",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                                                    "id": 2338,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "12827:52:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                      "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                                    },
                                                    "value": "ERC721: transfer to non ERC721Receiver implementer"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                      "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                                    }
                                                  ],
                                                  "id": 2337,
                                                  "name": "revert",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [
                                                    -19,
                                                    -19
                                                  ],
                                                  "referencedDeclaration": -19,
                                                  "src": "12820:6:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                    "typeString": "function (string memory) pure"
                                                  }
                                                },
                                                "id": 2339,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "12820:60:9",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 2340,
                                              "nodeType": "ExpressionStatement",
                                              "src": "12820:60:9"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 2346,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 2332,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 2331,
                                        "mutability": "mutable",
                                        "name": "reason",
                                        "nameLocation": "12748:6:9",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2346,
                                        "src": "12735:19:9",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 2330,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12735:5:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "12734:21:9"
                                  },
                                  "src": "12728:326:9"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 2313,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2845,
                                      "src": "12576:10:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 2314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12576:12:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2315,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2295,
                                    "src": "12590:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2316,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2299,
                                    "src": "12596:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2317,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2301,
                                    "src": "12605:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 2310,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2297,
                                        "src": "12555:2:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2309,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2511,
                                      "src": "12539:15:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$2511_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    },
                                    "id": 2311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12539:19:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC721Receiver_$2511",
                                      "typeString": "contract IERC721Receiver"
                                    }
                                  },
                                  "id": 2312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12559:16:9",
                                  "memberName": "onERC721Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2510,
                                  "src": "12539:36:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 2318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12539:72:9",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 2347,
                              "nodeType": "TryStatement",
                              "src": "12535:519:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2293,
                    "nodeType": "StructuredDocumentation",
                    "src": "11787:542:9",
                    "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"
                  },
                  "id": 2354,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkOnERC721Received",
                  "nameLocation": "12343:22:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2295,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "12383:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2354,
                        "src": "12375:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12375:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2297,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "12405:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2354,
                        "src": "12397:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12397:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2299,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "12425:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2354,
                        "src": "12417:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2298,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12417:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2301,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "12455:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2354,
                        "src": "12442:18:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2300,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12442:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12365:101:9"
                  },
                  "returnParameters": {
                    "id": 2305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2304,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2354,
                        "src": "12484:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2303,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12484:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12483:6:9"
                  },
                  "scope": 2377,
                  "src": "12334:778:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2364,
                    "nodeType": "Block",
                    "src": "13788:2:9",
                    "statements": []
                  },
                  "documentation": {
                    "id": 2355,
                    "nodeType": "StructuredDocumentation",
                    "src": "13118:545:9",
                    "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 2365,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "13677:20:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2357,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "13715:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2365,
                        "src": "13707:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2356,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13707:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2359,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "13737:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2365,
                        "src": "13729:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2358,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13729:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2361,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "13757:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2365,
                        "src": "13749:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2360,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13749:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13697:73:9"
                  },
                  "returnParameters": {
                    "id": 2363,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13788:0:9"
                  },
                  "scope": 2377,
                  "src": "13668:122:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2375,
                    "nodeType": "Block",
                    "src": "14281:2:9",
                    "statements": []
                  },
                  "documentation": {
                    "id": 2366,
                    "nodeType": "StructuredDocumentation",
                    "src": "13796:361:9",
                    "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 2376,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_afterTokenTransfer",
                  "nameLocation": "14171:19:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2368,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "14208:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2376,
                        "src": "14200:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2367,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14200:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2370,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14230:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2376,
                        "src": "14222:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2369,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14222:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2372,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "14250:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2376,
                        "src": "14242:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2371,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14242:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14190:73:9"
                  },
                  "returnParameters": {
                    "id": 2374,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14281:0:9"
                  },
                  "scope": 2377,
                  "src": "14162:121:9",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2378,
              "src": "628:13657:9",
              "usedErrors": []
            }
          ],
          "src": "107:14179:9"
        },
        "id": 9
      },
      "@openzeppelin/contracts/token/ERC721/IERC721.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
          "exportedSymbols": {
            "IERC165": [
              3094
            ],
            "IERC721": [
              2493
            ]
          },
          "id": 2494,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2379,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "93:23:10"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../../utils/introspection/IERC165.sol",
              "id": 2380,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2494,
              "sourceUnit": 3095,
              "src": "118:47:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2382,
                    "name": "IERC165",
                    "nameLocations": [
                      "256:7:10"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3094,
                    "src": "256:7:10"
                  },
                  "id": 2383,
                  "nodeType": "InheritanceSpecifier",
                  "src": "256:7:10"
                }
              ],
              "canonicalName": "IERC721",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2381,
                "nodeType": "StructuredDocumentation",
                "src": "167:67:10",
                "text": " @dev Required interface of an ERC721 compliant contract."
              },
              "fullyImplemented": false,
              "id": 2493,
              "linearizedBaseContracts": [
                2493,
                3094
              ],
              "name": "IERC721",
              "nameLocation": "245:7:10",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2384,
                    "nodeType": "StructuredDocumentation",
                    "src": "270:88:10",
                    "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`."
                  },
                  "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                  "id": 2392,
                  "name": "Transfer",
                  "nameLocation": "369:8:10",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2386,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "394:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2392,
                        "src": "378:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2385,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "378:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2388,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "416:2:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2392,
                        "src": "400:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2387,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "400:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2390,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "436:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2392,
                        "src": "420:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "377:67:10"
                  },
                  "src": "363:82:10"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2393,
                    "nodeType": "StructuredDocumentation",
                    "src": "451:94:10",
                    "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."
                  },
                  "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                  "id": 2401,
                  "name": "Approval",
                  "nameLocation": "556:8:10",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2400,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2395,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "581:5:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2401,
                        "src": "565:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2394,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "565:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2397,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "604:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2401,
                        "src": "588:24:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2396,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "588:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2399,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "630:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2401,
                        "src": "614:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2398,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "614:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "564:74:10"
                  },
                  "src": "550:89:10"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2402,
                    "nodeType": "StructuredDocumentation",
                    "src": "645:117:10",
                    "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."
                  },
                  "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
                  "id": 2410,
                  "name": "ApprovalForAll",
                  "nameLocation": "773:14:10",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2404,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "804:5:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2410,
                        "src": "788:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2403,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "788:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2406,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "827:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2410,
                        "src": "811:24:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2405,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2408,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "842:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2410,
                        "src": "837:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2407,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "837:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "787:64:10"
                  },
                  "src": "767:85:10"
                },
                {
                  "documentation": {
                    "id": 2411,
                    "nodeType": "StructuredDocumentation",
                    "src": "858:76:10",
                    "text": " @dev Returns the number of tokens in ``owner``'s account."
                  },
                  "functionSelector": "70a08231",
                  "id": 2418,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "948:9:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2413,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "966:5:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2418,
                        "src": "958:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2412,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "958:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "957:15:10"
                  },
                  "returnParameters": {
                    "id": 2417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2416,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "1004:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2418,
                        "src": "996:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "996:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "995:17:10"
                  },
                  "scope": 2493,
                  "src": "939:74:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2419,
                    "nodeType": "StructuredDocumentation",
                    "src": "1019:131:10",
                    "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."
                  },
                  "functionSelector": "6352211e",
                  "id": 2426,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "1164:7:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2421,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "1180:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2426,
                        "src": "1172:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2420,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1172:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1171:17:10"
                  },
                  "returnParameters": {
                    "id": 2425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2424,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1220:5:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2426,
                        "src": "1212:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2423,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1212:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1211:15:10"
                  },
                  "scope": 2493,
                  "src": "1155:72:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2427,
                    "nodeType": "StructuredDocumentation",
                    "src": "1233:690:10",
                    "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "42842e0e",
                  "id": 2436,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "1937:16:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2429,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1971:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2436,
                        "src": "1963:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1963:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2431,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1993:2:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2436,
                        "src": "1985:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2430,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1985:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2433,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2013:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2436,
                        "src": "2005:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2432,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2005:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1953:73:10"
                  },
                  "returnParameters": {
                    "id": 2435,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2035:0:10"
                  },
                  "scope": 2493,
                  "src": "1928:108:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2437,
                    "nodeType": "StructuredDocumentation",
                    "src": "2042:504:10",
                    "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 2446,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "2560:12:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2439,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2590:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2446,
                        "src": "2582:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2438,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2582:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2441,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2612:2:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2446,
                        "src": "2604:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2604:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2443,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2632:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2446,
                        "src": "2624:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2442,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2624:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2572:73:10"
                  },
                  "returnParameters": {
                    "id": 2445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2654:0:10"
                  },
                  "scope": 2493,
                  "src": "2551:104:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2447,
                    "nodeType": "StructuredDocumentation",
                    "src": "2661:452:10",
                    "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 2454,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "3127:7:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2452,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2449,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3143:2:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2454,
                        "src": "3135:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2448,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3135:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2451,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3155:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2454,
                        "src": "3147:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2450,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3147:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3134:29:10"
                  },
                  "returnParameters": {
                    "id": 2453,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3172:0:10"
                  },
                  "scope": 2493,
                  "src": "3118:55:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2455,
                    "nodeType": "StructuredDocumentation",
                    "src": "3179:139:10",
                    "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."
                  },
                  "functionSelector": "081812fc",
                  "id": 2462,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nameLocation": "3332:11:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2457,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3352:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2462,
                        "src": "3344:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3344:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3343:17:10"
                  },
                  "returnParameters": {
                    "id": 2461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2460,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3392:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2462,
                        "src": "3384:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2459,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3384:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3383:18:10"
                  },
                  "scope": 2493,
                  "src": "3323:79:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2463,
                    "nodeType": "StructuredDocumentation",
                    "src": "3408:309:10",
                    "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."
                  },
                  "functionSelector": "a22cb465",
                  "id": 2470,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "3731:17:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2468,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2465,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3757:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2470,
                        "src": "3749:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2464,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3749:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2467,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nameLocation": "3772:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2470,
                        "src": "3767:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2466,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3767:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3748:34:10"
                  },
                  "returnParameters": {
                    "id": 2469,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3791:0:10"
                  },
                  "scope": 2493,
                  "src": "3722:70:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2471,
                    "nodeType": "StructuredDocumentation",
                    "src": "3798:138:10",
                    "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 2480,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "3950:16:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2473,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3975:5:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2480,
                        "src": "3967:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2472,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3967:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2475,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3990:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2480,
                        "src": "3982:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3982:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3966:33:10"
                  },
                  "returnParameters": {
                    "id": 2479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2478,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2480,
                        "src": "4023:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2477,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4023:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4022:6:10"
                  },
                  "scope": 2493,
                  "src": "3941:88:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2481,
                    "nodeType": "StructuredDocumentation",
                    "src": "4035:556:10",
                    "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 2492,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "4605:16:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2490,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2483,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4639:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2492,
                        "src": "4631:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2482,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4631:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2485,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4661:2:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2492,
                        "src": "4653:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2484,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4653:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2487,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4681:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2492,
                        "src": "4673:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2486,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4673:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2489,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4713:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2492,
                        "src": "4698:19:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2488,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4698:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4621:102:10"
                  },
                  "returnParameters": {
                    "id": 2491,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4732:0:10"
                  },
                  "scope": 2493,
                  "src": "4596:137:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2494,
              "src": "235:4500:10",
              "usedErrors": []
            }
          ],
          "src": "93:4643:10"
        },
        "id": 10
      },
      "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
          "exportedSymbols": {
            "IERC721Receiver": [
              2511
            ]
          },
          "id": 2512,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2495,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:11"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC721Receiver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2496,
                "nodeType": "StructuredDocumentation",
                "src": "126:152:11",
                "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."
              },
              "fullyImplemented": false,
              "id": 2511,
              "linearizedBaseContracts": [
                2511
              ],
              "name": "IERC721Receiver",
              "nameLocation": "289:15:11",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2497,
                    "nodeType": "StructuredDocumentation",
                    "src": "311:485:11",
                    "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`."
                  },
                  "functionSelector": "150b7a02",
                  "id": 2510,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC721Received",
                  "nameLocation": "810:16:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2499,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "844:8:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2510,
                        "src": "836:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2498,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "836:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2501,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "870:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2510,
                        "src": "862:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2500,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "862:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2503,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "892:7:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2510,
                        "src": "884:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2502,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "884:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2505,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "924:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2510,
                        "src": "909:19:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2504,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "826:108:11"
                  },
                  "returnParameters": {
                    "id": 2509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2508,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2510,
                        "src": "953:6:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2507,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "953:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "952:8:11"
                  },
                  "scope": 2511,
                  "src": "801:160:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2512,
              "src": "279:684:11",
              "usedErrors": []
            }
          ],
          "src": "101:863:11"
        },
        "id": 11
      },
      "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
          "exportedSymbols": {
            "IERC165": [
              3094
            ],
            "IERC721": [
              2493
            ],
            "IERC721Metadata": [
              2538
            ]
          },
          "id": 2539,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2513,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "112:23:12"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
              "file": "../IERC721.sol",
              "id": 2514,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2539,
              "sourceUnit": 2494,
              "src": "137:24:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2516,
                    "name": "IERC721",
                    "nameLocations": [
                      "326:7:12"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2493,
                    "src": "326:7:12"
                  },
                  "id": 2517,
                  "nodeType": "InheritanceSpecifier",
                  "src": "326:7:12"
                }
              ],
              "canonicalName": "IERC721Metadata",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2515,
                "nodeType": "StructuredDocumentation",
                "src": "163:133:12",
                "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"
              },
              "fullyImplemented": false,
              "id": 2538,
              "linearizedBaseContracts": [
                2538,
                2493,
                3094
              ],
              "name": "IERC721Metadata",
              "nameLocation": "307:15:12",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2518,
                    "nodeType": "StructuredDocumentation",
                    "src": "340:58:12",
                    "text": " @dev Returns the token collection name."
                  },
                  "functionSelector": "06fdde03",
                  "id": 2523,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "412:4:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2519,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "416:2:12"
                  },
                  "returnParameters": {
                    "id": 2522,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2521,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2523,
                        "src": "442:13:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2520,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "442:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "441:15:12"
                  },
                  "scope": 2538,
                  "src": "403:54:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2524,
                    "nodeType": "StructuredDocumentation",
                    "src": "463:60:12",
                    "text": " @dev Returns the token collection symbol."
                  },
                  "functionSelector": "95d89b41",
                  "id": 2529,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "537:6:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2525,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "543:2:12"
                  },
                  "returnParameters": {
                    "id": 2528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2527,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2529,
                        "src": "569:13:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2526,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "569:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "568:15:12"
                  },
                  "scope": 2538,
                  "src": "528:56:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2530,
                    "nodeType": "StructuredDocumentation",
                    "src": "590:90:12",
                    "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 2537,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "694:8:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2532,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "711:7:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2537,
                        "src": "703:15:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2531,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "703:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "702:17:12"
                  },
                  "returnParameters": {
                    "id": 2536,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2535,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2537,
                        "src": "743:13:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2534,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "743:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "742:15:12"
                  },
                  "scope": 2538,
                  "src": "685:73:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2539,
              "src": "297:463:12",
              "usedErrors": []
            }
          ],
          "src": "112:649:12"
        },
        "id": 12
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
          "exportedSymbols": {
            "Address": [
              2833
            ]
          },
          "id": 2834,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2540,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".1"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Address",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2541,
                "nodeType": "StructuredDocumentation",
                "src": "126:67:13",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 2833,
              "linearizedBaseContracts": [
                2833
              ],
              "name": "Address",
              "nameLocation": "202:7:13",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2555,
                    "nodeType": "Block",
                    "src": "1241:254:13",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 2549,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2544,
                                "src": "1465:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1473:4:13",
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "1465:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1478:6:13",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1465:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1487:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1465:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2548,
                        "id": 2554,
                        "nodeType": "Return",
                        "src": "1458:30:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2542,
                    "nodeType": "StructuredDocumentation",
                    "src": "216:954:13",
                    "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="
                  },
                  "id": 2556,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nameLocation": "1184:10:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2544,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1203:7:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2556,
                        "src": "1195:15:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1195:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1194:17:13"
                  },
                  "returnParameters": {
                    "id": 2548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2547,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2556,
                        "src": "1235:4:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2546,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1235:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1234:6:13"
                  },
                  "scope": 2833,
                  "src": "1175:320:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2589,
                    "nodeType": "Block",
                    "src": "2483:241:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2567,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2509:4:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$2833",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$2833",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 2566,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2501:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2565,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2501:7:13",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2501:13:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2515:7:13",
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "2501:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 2570,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2561,
                                "src": "2526:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2501:31:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                              "id": 2572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2534:31:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              },
                              "value": "Address: insufficient balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              }
                            ],
                            "id": 2564,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2493:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2493:73:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2574,
                        "nodeType": "ExpressionStatement",
                        "src": "2493:73:13"
                      },
                      {
                        "assignments": [
                          2576,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2576,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2583:7:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2589,
                            "src": "2578:12:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2575,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2578:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 2583,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 2581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2626:2:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 2577,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2559,
                                "src": "2596:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 2578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2606:4:13",
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "2596:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 2580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 2579,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2561,
                                "src": "2618:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "2596:29:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 2582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2596:33:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2577:52:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2585,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2576,
                              "src": "2647:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                              "id": 2586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2656:60:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              },
                              "value": "Address: unable to send value, recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              }
                            ],
                            "id": 2584,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2639:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2639:78:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2588,
                        "nodeType": "ExpressionStatement",
                        "src": "2639:78:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2557,
                    "nodeType": "StructuredDocumentation",
                    "src": "1501:906:13",
                    "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                  },
                  "id": 2590,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nameLocation": "2421:9:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2562,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2559,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2447:9:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2590,
                        "src": "2431:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 2558,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:15:13",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2561,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2466:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2590,
                        "src": "2458:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2560,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2458:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2430:43:13"
                  },
                  "returnParameters": {
                    "id": 2563,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2483:0:13"
                  },
                  "scope": 2833,
                  "src": "2412:312:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2606,
                    "nodeType": "Block",
                    "src": "3555:84:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2601,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2593,
                              "src": "3585:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2602,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2595,
                              "src": "3593:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 2603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3599:32:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              },
                              "value": "Address: low-level call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              }
                            ],
                            "id": 2600,
                            "name": "functionCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2607,
                              2627
                            ],
                            "referencedDeclaration": 2627,
                            "src": "3572:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 2604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3572:60:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2599,
                        "id": 2605,
                        "nodeType": "Return",
                        "src": "3565:67:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2591,
                    "nodeType": "StructuredDocumentation",
                    "src": "2730:731:13",
                    "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
                  },
                  "id": 2607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3475:12:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2596,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2593,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3496:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2607,
                        "src": "3488:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2592,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3488:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2595,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3517:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2607,
                        "src": "3504:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2594,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3504:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3487:35:13"
                  },
                  "returnParameters": {
                    "id": 2599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2598,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2607,
                        "src": "3541:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2597,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3541:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3540:14:13"
                  },
                  "scope": 2833,
                  "src": "3466:173:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2626,
                    "nodeType": "Block",
                    "src": "4008:76:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2620,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2610,
                              "src": "4047:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2621,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2612,
                              "src": "4055:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4061:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 2623,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2614,
                              "src": "4064:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2619,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2647,
                              2697
                            ],
                            "referencedDeclaration": 2697,
                            "src": "4025:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 2624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4025:52:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2618,
                        "id": 2625,
                        "nodeType": "Return",
                        "src": "4018:59:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2608,
                    "nodeType": "StructuredDocumentation",
                    "src": "3645:211:13",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 2627,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3870:12:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2610,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3900:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2627,
                        "src": "3892:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2609,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3892:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2612,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3929:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2627,
                        "src": "3916:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2611,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3916:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2614,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "3957:12:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2627,
                        "src": "3943:26:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2613,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3943:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3882:93:13"
                  },
                  "returnParameters": {
                    "id": 2618,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2617,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2627,
                        "src": "3994:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2616,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3994:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3993:14:13"
                  },
                  "scope": 2833,
                  "src": "3861:223:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2646,
                    "nodeType": "Block",
                    "src": "4589:111:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2640,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2630,
                              "src": "4628:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2641,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2632,
                              "src": "4636:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2642,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2634,
                              "src": "4642:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                              "id": 2643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4649:43:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              },
                              "value": "Address: low-level call with value failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              }
                            ],
                            "id": 2639,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2647,
                              2697
                            ],
                            "referencedDeclaration": 2697,
                            "src": "4606:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 2644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4606:87:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2638,
                        "id": 2645,
                        "nodeType": "Return",
                        "src": "4599:94:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2628,
                    "nodeType": "StructuredDocumentation",
                    "src": "4090:351:13",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
                  },
                  "id": 2647,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4455:21:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2630,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4494:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2647,
                        "src": "4486:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2629,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4486:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2632,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4523:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2647,
                        "src": "4510:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2631,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4510:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2634,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4545:5:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2647,
                        "src": "4537:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2633,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4537:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4476:80:13"
                  },
                  "returnParameters": {
                    "id": 2638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2637,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2647,
                        "src": "4575:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2636,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4575:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4574:14:13"
                  },
                  "scope": 2833,
                  "src": "4446:254:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2696,
                    "nodeType": "Block",
                    "src": "5127:320:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2664,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "5153:4:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$2833",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$2833",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 2663,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5145:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2662,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5145:7:13",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2665,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5145:13:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5159:7:13",
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "5145:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 2667,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2654,
                                "src": "5170:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5145:30:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                              "id": 2669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5177:40:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              },
                              "value": "Address: insufficient balance for call"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              }
                            ],
                            "id": 2661,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5137:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5137:81:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2671,
                        "nodeType": "ExpressionStatement",
                        "src": "5137:81:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2674,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2650,
                                  "src": "5247:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2673,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2556,
                                "src": "5236:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5236:18:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 2676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5256:31:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              },
                              "value": "Address: call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              }
                            ],
                            "id": 2672,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5228:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5228:60:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2678,
                        "nodeType": "ExpressionStatement",
                        "src": "5228:60:13"
                      },
                      {
                        "assignments": [
                          2680,
                          2682
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2680,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5305:7:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2696,
                            "src": "5300:12:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2679,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5300:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2682,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "5327:10:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2696,
                            "src": "5314:23:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2681,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5314:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2689,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2687,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2652,
                              "src": "5367:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 2683,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2650,
                                "src": "5341:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5348:4:13",
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "5341:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 2686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 2685,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2654,
                                "src": "5360:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "5341:25:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 2688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5341:31:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5299:73:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2691,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2680,
                              "src": "5406:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2692,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2682,
                              "src": "5415:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2693,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2656,
                              "src": "5427:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2690,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2832,
                            "src": "5389:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 2694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5389:51:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2660,
                        "id": 2695,
                        "nodeType": "Return",
                        "src": "5382:58:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2648,
                    "nodeType": "StructuredDocumentation",
                    "src": "4706:237:13",
                    "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 2697,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4957:21:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2650,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4996:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2697,
                        "src": "4988:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2649,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4988:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2652,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5025:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2697,
                        "src": "5012:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2651,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5012:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2654,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5047:5:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2697,
                        "src": "5039:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2653,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5039:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2656,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "5076:12:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2697,
                        "src": "5062:26:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2655,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5062:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4978:116:13"
                  },
                  "returnParameters": {
                    "id": 2660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2659,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2697,
                        "src": "5113:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2658,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5113:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5112:14:13"
                  },
                  "scope": 2833,
                  "src": "4948:499:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2713,
                    "nodeType": "Block",
                    "src": "5724:97:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2708,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2700,
                              "src": "5760:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2709,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2702,
                              "src": "5768:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                              "id": 2710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5774:39:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              },
                              "value": "Address: low-level static call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              }
                            ],
                            "id": 2707,
                            "name": "functionStaticCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2714,
                              2749
                            ],
                            "referencedDeclaration": 2749,
                            "src": "5741:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
                            }
                          },
                          "id": 2711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5741:73:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2706,
                        "id": 2712,
                        "nodeType": "Return",
                        "src": "5734:80:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2698,
                    "nodeType": "StructuredDocumentation",
                    "src": "5453:166:13",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 2714,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "5633:18:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2703,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2700,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "5660:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2714,
                        "src": "5652:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2699,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5652:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2702,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5681:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2714,
                        "src": "5668:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2701,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5668:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5651:35:13"
                  },
                  "returnParameters": {
                    "id": 2706,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2705,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2714,
                        "src": "5710:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2704,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5710:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5709:14:13"
                  },
                  "scope": 2833,
                  "src": "5624:197:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2748,
                    "nodeType": "Block",
                    "src": "6163:228:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2728,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2717,
                                  "src": "6192:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2727,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2556,
                                "src": "6181:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6181:18:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 2730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6201:38:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              },
                              "value": "Address: static call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              }
                            ],
                            "id": 2726,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6173:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6173:67:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2732,
                        "nodeType": "ExpressionStatement",
                        "src": "6173:67:13"
                      },
                      {
                        "assignments": [
                          2734,
                          2736
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2734,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "6257:7:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2748,
                            "src": "6252:12:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2733,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6252:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2736,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "6279:10:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2748,
                            "src": "6266:23:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2735,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6266:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2741,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2739,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "6311:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 2737,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2717,
                              "src": "6293:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6300:10:13",
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "6293:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 2740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6293:23:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6251:65:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2743,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2734,
                              "src": "6350:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2744,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2736,
                              "src": "6359:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2745,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2721,
                              "src": "6371:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2742,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2832,
                            "src": "6333:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 2746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6333:51:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2725,
                        "id": 2747,
                        "nodeType": "Return",
                        "src": "6326:58:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2715,
                    "nodeType": "StructuredDocumentation",
                    "src": "5827:173:13",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 2749,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "6014:18:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2717,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6050:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2749,
                        "src": "6042:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2716,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6042:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2719,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6079:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2749,
                        "src": "6066:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2718,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6066:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2721,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "6107:12:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2749,
                        "src": "6093:26:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2720,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6093:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6032:93:13"
                  },
                  "returnParameters": {
                    "id": 2725,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2724,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2749,
                        "src": "6149:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2723,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6149:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6148:14:13"
                  },
                  "scope": 2833,
                  "src": "6005:386:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2765,
                    "nodeType": "Block",
                    "src": "6667:101:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2760,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2752,
                              "src": "6705:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2761,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2754,
                              "src": "6713:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
                              "id": 2762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6719:41:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                              },
                              "value": "Address: low-level delegate call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                              }
                            ],
                            "id": 2759,
                            "name": "functionDelegateCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2766,
                              2801
                            ],
                            "referencedDeclaration": 2801,
                            "src": "6684:20:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 2763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6684:77:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2758,
                        "id": 2764,
                        "nodeType": "Return",
                        "src": "6677:84:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2750,
                    "nodeType": "StructuredDocumentation",
                    "src": "6397:168:13",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 2766,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "6579:20:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2755,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2752,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6608:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2766,
                        "src": "6600:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2751,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6600:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2754,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6629:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2766,
                        "src": "6616:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2753,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6616:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6599:35:13"
                  },
                  "returnParameters": {
                    "id": 2758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2757,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2766,
                        "src": "6653:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2756,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6653:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6652:14:13"
                  },
                  "scope": 2833,
                  "src": "6570:198:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2800,
                    "nodeType": "Block",
                    "src": "7109:232:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2780,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2769,
                                  "src": "7138:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2779,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2556,
                                "src": "7127:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7127:18:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 2782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7147:40:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                              },
                              "value": "Address: delegate call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                              }
                            ],
                            "id": 2778,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7119:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7119:69:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2784,
                        "nodeType": "ExpressionStatement",
                        "src": "7119:69:13"
                      },
                      {
                        "assignments": [
                          2786,
                          2788
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2786,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "7205:7:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2800,
                            "src": "7200:12:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2785,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7200:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2788,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "7227:10:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2800,
                            "src": "7214:23:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2787,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7214:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2793,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2791,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2771,
                              "src": "7261:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 2789,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2769,
                              "src": "7241:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7248:12:13",
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "src": "7241:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 2792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7241:25:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7199:67:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2795,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2786,
                              "src": "7300:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2796,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2788,
                              "src": "7309:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2797,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2773,
                              "src": "7321:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2794,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2832,
                            "src": "7283:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 2798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7283:51:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2777,
                        "id": 2799,
                        "nodeType": "Return",
                        "src": "7276:58:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2767,
                    "nodeType": "StructuredDocumentation",
                    "src": "6774:175:13",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 2801,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "6963:20:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2769,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "7001:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2801,
                        "src": "6993:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6993:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2771,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7030:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2801,
                        "src": "7017:17:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2770,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7017:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2773,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "7058:12:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2801,
                        "src": "7044:26:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2772,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7044:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6983:93:13"
                  },
                  "returnParameters": {
                    "id": 2777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2776,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2801,
                        "src": "7095:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2775,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7095:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7094:14:13"
                  },
                  "scope": 2833,
                  "src": "6954:387:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2831,
                    "nodeType": "Block",
                    "src": "7721:532:13",
                    "statements": [
                      {
                        "condition": {
                          "id": 2813,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2804,
                          "src": "7735:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2829,
                          "nodeType": "Block",
                          "src": "7792:455:13",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 2817,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2806,
                                    "src": "7876:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2818,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7887:6:13",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "7876:17:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7896:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7876:21:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2827,
                                "nodeType": "Block",
                                "src": "8184:53:13",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2824,
                                          "name": "errorMessage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2808,
                                          "src": "8209:12:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 2823,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "8202:6:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 2825,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8202:20:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2826,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8202:20:13"
                                  }
                                ]
                              },
                              "id": 2828,
                              "nodeType": "IfStatement",
                              "src": "7872:365:13",
                              "trueBody": {
                                "id": 2822,
                                "nodeType": "Block",
                                "src": "7899:279:13",
                                "statements": [
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "8019:145:13",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "8041:40:13",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "returndata",
                                                "nodeType": "YulIdentifier",
                                                "src": "8070:10:13"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "8064:5:13"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8064:17:13"
                                          },
                                          "variables": [
                                            {
                                              "name": "returndata_size",
                                              "nodeType": "YulTypedName",
                                              "src": "8045:15:13",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8113:2:13",
                                                    "type": "",
                                                    "value": "32"
                                                  },
                                                  {
                                                    "name": "returndata",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8117:10:13"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8109:3:13"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8109:19:13"
                                              },
                                              {
                                                "name": "returndata_size",
                                                "nodeType": "YulIdentifier",
                                                "src": "8130:15:13"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "8102:6:13"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8102:44:13"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "8102:44:13"
                                        }
                                      ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                      {
                                        "declaration": 2806,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "8070:10:13",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 2806,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "8117:10:13",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 2821,
                                    "nodeType": "InlineAssembly",
                                    "src": "8010:154:13"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2830,
                        "nodeType": "IfStatement",
                        "src": "7731:516:13",
                        "trueBody": {
                          "id": 2816,
                          "nodeType": "Block",
                          "src": "7744:42:13",
                          "statements": [
                            {
                              "expression": {
                                "id": 2814,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2806,
                                "src": "7765:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 2812,
                              "id": 2815,
                              "nodeType": "Return",
                              "src": "7758:17:13"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2802,
                    "nodeType": "StructuredDocumentation",
                    "src": "7347:209:13",
                    "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"
                  },
                  "id": 2832,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResult",
                  "nameLocation": "7570:16:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2809,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2804,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "7601:7:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2832,
                        "src": "7596:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2803,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7596:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2806,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "7631:10:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2832,
                        "src": "7618:23:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2805,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7618:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2808,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "7665:12:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2832,
                        "src": "7651:26:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2807,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7651:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7586:97:13"
                  },
                  "returnParameters": {
                    "id": 2812,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2811,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2832,
                        "src": "7707:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2810,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7707:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7706:14:13"
                  },
                  "scope": 2833,
                  "src": "7561:692:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2834,
              "src": "194:8061:13",
              "usedErrors": []
            }
          ],
          "src": "101:8155:13"
        },
        "id": 13
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
          "exportedSymbols": {
            "Context": [
              2855
            ]
          },
          "id": 2856,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2835,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:14"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Context",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2836,
                "nodeType": "StructuredDocumentation",
                "src": "111:496:14",
                "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
              },
              "fullyImplemented": true,
              "id": 2855,
              "linearizedBaseContracts": [
                2855
              ],
              "name": "Context",
              "nameLocation": "626:7:14",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2844,
                    "nodeType": "Block",
                    "src": "702:34:14",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 2841,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "719:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "723:6:14",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "719:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2840,
                        "id": 2843,
                        "nodeType": "Return",
                        "src": "712:17:14"
                      }
                    ]
                  },
                  "id": 2845,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "649:10:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2837,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "659:2:14"
                  },
                  "returnParameters": {
                    "id": 2840,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2839,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2845,
                        "src": "693:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2838,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "693:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "692:9:14"
                  },
                  "scope": 2855,
                  "src": "640:96:14",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2853,
                    "nodeType": "Block",
                    "src": "809:32:14",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 2850,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "826:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "830:4:14",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "826:8:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 2849,
                        "id": 2852,
                        "nodeType": "Return",
                        "src": "819:15:14"
                      }
                    ]
                  },
                  "id": 2854,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "751:8:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2846,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "759:2:14"
                  },
                  "returnParameters": {
                    "id": 2849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2848,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2854,
                        "src": "793:14:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2847,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "792:16:14"
                  },
                  "scope": 2855,
                  "src": "742:99:14",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2856,
              "src": "608:235:14",
              "usedErrors": []
            }
          ],
          "src": "86:758:14"
        },
        "id": 14
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
          "exportedSymbols": {
            "Strings": [
              3058
            ]
          },
          "id": 3059,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2857,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Strings",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2858,
                "nodeType": "StructuredDocumentation",
                "src": "111:34:15",
                "text": " @dev String operations."
              },
              "fullyImplemented": true,
              "id": 3058,
              "linearizedBaseContracts": [
                3058
              ],
              "name": "Strings",
              "nameLocation": "154:7:15",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 2861,
                  "mutability": "constant",
                  "name": "_HEX_SYMBOLS",
                  "nameLocation": "193:12:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3058,
                  "src": "168:58:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 2859,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "168:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "value": {
                    "hexValue": "30313233343536373839616263646566",
                    "id": 2860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "208:18:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                      "typeString": "literal_string \"0123456789abcdef\""
                    },
                    "value": "0123456789abcdef"
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2939,
                    "nodeType": "Block",
                    "src": "399:632:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2869,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2864,
                            "src": "601:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "610:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "601:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2875,
                        "nodeType": "IfStatement",
                        "src": "597:51:15",
                        "trueBody": {
                          "id": 2874,
                          "nodeType": "Block",
                          "src": "613:35:15",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 2872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "634:3:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 2868,
                              "id": 2873,
                              "nodeType": "Return",
                              "src": "627:10:15"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2877
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2877,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "665:4:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2939,
                            "src": "657:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2876,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "657:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2879,
                        "initialValue": {
                          "id": 2878,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2864,
                          "src": "672:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "657:20:15"
                      },
                      {
                        "assignments": [
                          2881
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2881,
                            "mutability": "mutable",
                            "name": "digits",
                            "nameLocation": "695:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2939,
                            "src": "687:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2880,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "687:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2882,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "687:14:15"
                      },
                      {
                        "body": {
                          "id": 2893,
                          "nodeType": "Block",
                          "src": "729:57:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 2887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "743:8:15",
                                "subExpression": {
                                  "id": 2886,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2881,
                                  "src": "743:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2888,
                              "nodeType": "ExpressionStatement",
                              "src": "743:8:15"
                            },
                            {
                              "expression": {
                                "id": 2891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2889,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2877,
                                  "src": "765:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 2890,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "773:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "765:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2892,
                              "nodeType": "ExpressionStatement",
                              "src": "765:10:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2883,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2877,
                            "src": "718:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "726:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "718:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2894,
                        "nodeType": "WhileStatement",
                        "src": "711:75:15"
                      },
                      {
                        "assignments": [
                          2896
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2896,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "808:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2939,
                            "src": "795:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2895,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "795:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2901,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2899,
                              "name": "digits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2881,
                              "src": "827:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "817:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 2897,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "821:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 2900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "817:17:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "795:39:15"
                      },
                      {
                        "body": {
                          "id": 2932,
                          "nodeType": "Block",
                          "src": "863:131:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 2907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2905,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2881,
                                  "src": "877:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 2906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "887:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "877:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2908,
                              "nodeType": "ExpressionStatement",
                              "src": "877:11:15"
                            },
                            {
                              "expression": {
                                "id": 2926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2909,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2896,
                                    "src": "902:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2911,
                                  "indexExpression": {
                                    "id": 2910,
                                    "name": "digits",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2881,
                                    "src": "909:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "902:14:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2923,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 2916,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "932:2:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_48_by_1",
                                              "typeString": "int_const 48"
                                            },
                                            "value": "48"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 2921,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 2919,
                                                  "name": "value",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2864,
                                                  "src": "945:5:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3130",
                                                  "id": 2920,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "953:2:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "src": "945:10:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 2918,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "937:7:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 2917,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "937:7:15",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 2922,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "937:19:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "932:24:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2915,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "926:5:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 2914,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "926:5:15",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2924,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "926:31:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 2913,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "919:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 2912,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "919:6:15",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2925,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "919:39:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "902:56:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 2927,
                              "nodeType": "ExpressionStatement",
                              "src": "902:56:15"
                            },
                            {
                              "expression": {
                                "id": 2930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2928,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2864,
                                  "src": "972:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 2929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "981:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "972:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2931,
                              "nodeType": "ExpressionStatement",
                              "src": "972:11:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2902,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2864,
                            "src": "851:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "860:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "851:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2933,
                        "nodeType": "WhileStatement",
                        "src": "844:150:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2936,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2896,
                              "src": "1017:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1010:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 2934,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1010:6:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1010:14:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2868,
                        "id": 2938,
                        "nodeType": "Return",
                        "src": "1003:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2862,
                    "nodeType": "StructuredDocumentation",
                    "src": "233:90:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
                  },
                  "id": 2940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "337:8:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2864,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "354:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2940,
                        "src": "346:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2863,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "346:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "345:15:15"
                  },
                  "returnParameters": {
                    "id": 2868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2867,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2940,
                        "src": "384:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2866,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "384:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "383:15:15"
                  },
                  "scope": 3058,
                  "src": "328:703:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2980,
                    "nodeType": "Block",
                    "src": "1210:255:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2948,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2943,
                            "src": "1224:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1233:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1224:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2954,
                        "nodeType": "IfStatement",
                        "src": "1220:54:15",
                        "trueBody": {
                          "id": 2953,
                          "nodeType": "Block",
                          "src": "1236:38:15",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30783030",
                                "id": 2951,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1257:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4",
                                  "typeString": "literal_string \"0x00\""
                                },
                                "value": "0x00"
                              },
                              "functionReturnParameters": 2947,
                              "id": 2952,
                              "nodeType": "Return",
                              "src": "1250:13:15"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2956
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2956,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "1291:4:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2980,
                            "src": "1283:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2955,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1283:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2958,
                        "initialValue": {
                          "id": 2957,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2943,
                          "src": "1298:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1283:20:15"
                      },
                      {
                        "assignments": [
                          2960
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2960,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "1321:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2980,
                            "src": "1313:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2959,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1313:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2962,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 2961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1330:1:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1313:18:15"
                      },
                      {
                        "body": {
                          "id": 2973,
                          "nodeType": "Block",
                          "src": "1359:57:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 2967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "1373:8:15",
                                "subExpression": {
                                  "id": 2966,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2960,
                                  "src": "1373:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2968,
                              "nodeType": "ExpressionStatement",
                              "src": "1373:8:15"
                            },
                            {
                              "expression": {
                                "id": 2971,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2969,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2956,
                                  "src": "1395:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "38",
                                  "id": 2970,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1404:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "1395:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2972,
                              "nodeType": "ExpressionStatement",
                              "src": "1395:10:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2963,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2956,
                            "src": "1348:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1356:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1348:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2974,
                        "nodeType": "WhileStatement",
                        "src": "1341:75:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2976,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2943,
                              "src": "1444:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2977,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2960,
                              "src": "1451:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2975,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2981,
                              3057
                            ],
                            "referencedDeclaration": 3057,
                            "src": "1432:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 2978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1432:26:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2947,
                        "id": 2979,
                        "nodeType": "Return",
                        "src": "1425:33:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2941,
                    "nodeType": "StructuredDocumentation",
                    "src": "1037:94:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
                  },
                  "id": 2981,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1145:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2944,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2943,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1165:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2981,
                        "src": "1157:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2942,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1157:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1156:15:15"
                  },
                  "returnParameters": {
                    "id": 2947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2946,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2981,
                        "src": "1195:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2945,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1195:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1194:15:15"
                  },
                  "scope": 3058,
                  "src": "1136:329:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3056,
                    "nodeType": "Block",
                    "src": "1678:351:15",
                    "statements": [
                      {
                        "assignments": [
                          2992
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2992,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "1701:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 3056,
                            "src": "1688:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2991,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1688:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3001,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 2995,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1720:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 2996,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2986,
                                  "src": "1724:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1720:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 2998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1733:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1720:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1710:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 2993,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1714:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 3000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1710:25:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1688:47:15"
                      },
                      {
                        "expression": {
                          "id": 3006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3002,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2992,
                              "src": "1745:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3004,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1752:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1745:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 3005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1757:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                              "typeString": "literal_string \"0\""
                            },
                            "value": "0"
                          },
                          "src": "1745:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 3007,
                        "nodeType": "ExpressionStatement",
                        "src": "1745:15:15"
                      },
                      {
                        "expression": {
                          "id": 3012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3008,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2992,
                              "src": "1770:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3010,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 3009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1777:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1770:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "78",
                            "id": 3011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1782:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                              "typeString": "literal_string \"x\""
                            },
                            "value": "x"
                          },
                          "src": "1770:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 3013,
                        "nodeType": "ExpressionStatement",
                        "src": "1770:15:15"
                      },
                      {
                        "body": {
                          "id": 3042,
                          "nodeType": "Block",
                          "src": "1840:87:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 3036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3028,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2992,
                                    "src": "1854:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3030,
                                  "indexExpression": {
                                    "id": 3029,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3015,
                                    "src": "1861:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1854:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 3031,
                                    "name": "_HEX_SYMBOLS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "1866:12:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  },
                                  "id": 3035,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3032,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2984,
                                      "src": "1879:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 3033,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1887:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "1879:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1866:25:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "1854:37:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 3037,
                              "nodeType": "ExpressionStatement",
                              "src": "1854:37:15"
                            },
                            {
                              "expression": {
                                "id": 3040,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3038,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2984,
                                  "src": "1905:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 3039,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1915:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "1905:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3041,
                              "nodeType": "ExpressionStatement",
                              "src": "1905:11:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3022,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3015,
                            "src": "1828:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 3023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1832:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1828:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3043,
                        "initializationExpression": {
                          "assignments": [
                            3015
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3015,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1808:1:15",
                              "nodeType": "VariableDeclaration",
                              "scope": 3043,
                              "src": "1800:9:15",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3014,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1800:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3021,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 3016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1812:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 3017,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2986,
                                "src": "1816:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1812:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 3019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1825:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1812:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1800:26:15"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "1835:3:15",
                            "subExpression": {
                              "id": 3025,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3015,
                              "src": "1837:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3027,
                          "nodeType": "ExpressionStatement",
                          "src": "1835:3:15"
                        },
                        "nodeType": "ForStatement",
                        "src": "1795:132:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3045,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2984,
                                "src": "1944:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1953:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1944:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                              "id": 3048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1956:34:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                "typeString": "literal_string \"Strings: hex length insufficient\""
                              },
                              "value": "Strings: hex length insufficient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                "typeString": "literal_string \"Strings: hex length insufficient\""
                              }
                            ],
                            "id": 3044,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1936:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1936:55:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3050,
                        "nodeType": "ExpressionStatement",
                        "src": "1936:55:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3053,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2992,
                              "src": "2015:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2008:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 3051,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2008:6:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2008:14:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2990,
                        "id": 3055,
                        "nodeType": "Return",
                        "src": "2001:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2982,
                    "nodeType": "StructuredDocumentation",
                    "src": "1471:112:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
                  },
                  "id": 3057,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1597:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2987,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2984,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1617:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3057,
                        "src": "1609:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1609:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2986,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "1632:6:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3057,
                        "src": "1624:14:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1624:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1608:31:15"
                  },
                  "returnParameters": {
                    "id": 2990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2989,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3057,
                        "src": "1663:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2988,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1663:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1662:15:15"
                  },
                  "scope": 3058,
                  "src": "1588:441:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3059,
              "src": "146:1885:15",
              "usedErrors": []
            }
          ],
          "src": "86:1946:15"
        },
        "id": 15
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
          "exportedSymbols": {
            "ERC165": [
              3082
            ],
            "IERC165": [
              3094
            ]
          },
          "id": 3083,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3060,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:23:16"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "./IERC165.sol",
              "id": 3061,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3083,
              "sourceUnit": 3095,
              "src": "124:23:16",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3063,
                    "name": "IERC165",
                    "nameLocations": [
                      "754:7:16"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3094,
                    "src": "754:7:16"
                  },
                  "id": 3064,
                  "nodeType": "InheritanceSpecifier",
                  "src": "754:7:16"
                }
              ],
              "canonicalName": "ERC165",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3062,
                "nodeType": "StructuredDocumentation",
                "src": "149:576:16",
                "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."
              },
              "fullyImplemented": true,
              "id": 3082,
              "linearizedBaseContracts": [
                3082,
                3094
              ],
              "name": "ERC165",
              "nameLocation": "744:6:16",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    3093
                  ],
                  "body": {
                    "id": 3080,
                    "nodeType": "Block",
                    "src": "920:64:16",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 3078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3073,
                            "name": "interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3067,
                            "src": "937:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3075,
                                  "name": "IERC165",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3094,
                                  "src": "957:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                    "typeString": "type(contract IERC165)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                    "typeString": "type(contract IERC165)"
                                  }
                                ],
                                "id": 3074,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "952:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 3076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "952:13:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3094",
                                "typeString": "type(contract IERC165)"
                              }
                            },
                            "id": 3077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "966:11:16",
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "952:25:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "937:40:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3072,
                        "id": 3079,
                        "nodeType": "Return",
                        "src": "930:47:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3065,
                    "nodeType": "StructuredDocumentation",
                    "src": "768:56:16",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3081,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "838:17:16",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3069,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "896:8:16"
                  },
                  "parameters": {
                    "id": 3068,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3067,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "863:11:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3081,
                        "src": "856:18:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3066,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "856:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "855:20:16"
                  },
                  "returnParameters": {
                    "id": 3072,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3071,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3081,
                        "src": "914:4:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3070,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "914:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "913:6:16"
                  },
                  "scope": 3082,
                  "src": "829:155:16",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 3083,
              "src": "726:260:16",
              "usedErrors": []
            }
          ],
          "src": "99:888:16"
        },
        "id": 16
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
          "exportedSymbols": {
            "IERC165": [
              3094
            ]
          },
          "id": 3095,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3084,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "100:23:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC165",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3085,
                "nodeType": "StructuredDocumentation",
                "src": "125:279:17",
                "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."
              },
              "fullyImplemented": false,
              "id": 3094,
              "linearizedBaseContracts": [
                3094
              ],
              "name": "IERC165",
              "nameLocation": "415:7:17",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3086,
                    "nodeType": "StructuredDocumentation",
                    "src": "429:340:17",
                    "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3093,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "783:17:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3089,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3088,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "808:11:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3093,
                        "src": "801:18:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3087,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "800:20:17"
                  },
                  "returnParameters": {
                    "id": 3092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3091,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3093,
                        "src": "844:4:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3090,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:6:17"
                  },
                  "scope": 3094,
                  "src": "774:76:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3095,
              "src": "405:447:17",
              "usedErrors": []
            }
          ],
          "src": "100:753:17"
        },
        "id": 17
      },
      "contracts/dnsregistrar/DNSClaimChecker.sol": {
        "ast": {
          "absolutePath": "contracts/dnsregistrar/DNSClaimChecker.sol",
          "exportedSymbols": {
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "DNSClaimChecker": [
              3431
            ],
            "DNSSEC": [
              5064
            ],
            "RRUtils": [
              7059
            ]
          },
          "id": 3432,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3096,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:23:18"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/DNSSEC.sol",
              "file": "../dnssec-oracle/DNSSEC.sol",
              "id": 3097,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3432,
              "sourceUnit": 5065,
              "src": "56:37:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../dnssec-oracle/BytesUtils.sol",
              "id": 3098,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3432,
              "sourceUnit": 5018,
              "src": "94:41:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/RRUtils.sol",
              "file": "../dnssec-oracle/RRUtils.sol",
              "id": 3099,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3432,
              "sourceUnit": 7060,
              "src": "136:38:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ensdomains/buffer/contracts/Buffer.sol",
              "file": "@ensdomains/buffer/contracts/Buffer.sol",
              "id": 3100,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3432,
              "sourceUnit": 522,
              "src": "175:49:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "DNSClaimChecker",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 3431,
              "linearizedBaseContracts": [
                3431
              ],
              "name": "DNSClaimChecker",
              "nameLocation": "234:15:18",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 3103,
                  "libraryName": {
                    "id": 3101,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "262:10:18"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "262:10:18"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "256:27:18",
                  "typeName": {
                    "id": 3102,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "277:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 3105,
                  "libraryName": {
                    "id": 3104,
                    "name": "RRUtils",
                    "nameLocations": [
                      "294:7:18"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7059,
                    "src": "294:7:18"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "288:20:18"
                },
                {
                  "global": false,
                  "id": 3109,
                  "libraryName": {
                    "id": 3106,
                    "name": "Buffer",
                    "nameLocations": [
                      "319:6:18"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 521,
                    "src": "319:6:18"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "313:31:18",
                  "typeName": {
                    "id": 3108,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3107,
                      "name": "Buffer.buffer",
                      "nameLocations": [
                        "330:6:18",
                        "337:6:18"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 7,
                      "src": "330:13:18"
                    },
                    "referencedDeclaration": 7,
                    "src": "330:13:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                      "typeString": "struct Buffer.buffer"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 3112,
                  "mutability": "constant",
                  "name": "CLASS_INET",
                  "nameLocation": "366:10:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3431,
                  "src": "350:30:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3110,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "350:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 3111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "379:1:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3115,
                  "mutability": "constant",
                  "name": "TYPE_TXT",
                  "nameLocation": "402:8:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3431,
                  "src": "386:29:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3113,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "386:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "3136",
                    "id": 3114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "413:2:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_16_by_1",
                      "typeString": "int_const 16"
                    },
                    "value": "16"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3203,
                    "nodeType": "Block",
                    "src": "551:561:18",
                    "statements": [
                      {
                        "assignments": [
                          3130
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3130,
                            "mutability": "mutable",
                            "name": "buf",
                            "nameLocation": "631:3:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3203,
                            "src": "610:24:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                              "typeString": "struct Buffer.buffer"
                            },
                            "typeName": {
                              "id": 3129,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 3128,
                                "name": "Buffer.buffer",
                                "nameLocations": [
                                  "610:6:18",
                                  "617:6:18"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 7,
                                "src": "610:13:18"
                              },
                              "referencedDeclaration": 7,
                              "src": "610:13:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                                "typeString": "struct Buffer.buffer"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3131,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "610:24:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3135,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3117,
                                  "src": "653:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 3136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "658:6:18",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "653:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "35",
                                "id": 3137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "667:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5_by_1",
                                  "typeString": "int_const 5"
                                },
                                "value": "5"
                              },
                              "src": "653:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 3132,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3130,
                              "src": "644:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 3134,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "648:4:18",
                            "memberName": "init",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 45,
                            "src": "644:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$bound_to$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,uint256) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 3139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "644:25:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "id": 3140,
                        "nodeType": "ExpressionStatement",
                        "src": "644:25:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "045f656e73",
                              "id": 3144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "690:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f2d0687018fb278ad8ddf1072f709c8ce204add13813ec7180d0d4fbcfb146c0",
                                "typeString": "literal_string hex\"045f656e73\""
                              },
                              "value": "\u0004_ens"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_f2d0687018fb278ad8ddf1072f709c8ce204add13813ec7180d0d4fbcfb146c0",
                                "typeString": "literal_string hex\"045f656e73\""
                              }
                            ],
                            "expression": {
                              "id": 3141,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3130,
                              "src": "679:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 3143,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "683:6:18",
                            "memberName": "append",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 264,
                            "src": "679:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_struct$_buffer_$7_memory_ptr_$bound_to$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 3145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "679:22:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "id": 3146,
                        "nodeType": "ExpressionStatement",
                        "src": "679:22:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3150,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3117,
                              "src": "722:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3147,
                              "name": "buf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3130,
                              "src": "711:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                "typeString": "struct Buffer.buffer memory"
                              }
                            },
                            "id": 3149,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "715:6:18",
                            "memberName": "append",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 264,
                            "src": "711:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_struct$_buffer_$7_memory_ptr_$bound_to$_t_struct$_buffer_$7_memory_ptr_$",
                              "typeString": "function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"
                            }
                          },
                          "id": 3151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "711:16:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                            "typeString": "struct Buffer.buffer memory"
                          }
                        },
                        "id": 3152,
                        "nodeType": "ExpressionStatement",
                        "src": "711:16:18"
                      },
                      {
                        "body": {
                          "id": 3194,
                          "nodeType": "Block",
                          "src": "869:198:18",
                          "statements": [
                            {
                              "assignments": [
                                3172
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3172,
                                  "mutability": "mutable",
                                  "name": "found",
                                  "nameLocation": "888:5:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3194,
                                  "src": "883:10:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 3171,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "883:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3173,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "883:10:18"
                            },
                            {
                              "assignments": [
                                3175
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3175,
                                  "mutability": "mutable",
                                  "name": "addr",
                                  "nameLocation": "915:4:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3194,
                                  "src": "907:12:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 3174,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "907:7:18",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3176,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "907:12:18"
                            },
                            {
                              "expression": {
                                "id": 3185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 3177,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3175,
                                      "src": "934:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 3178,
                                      "name": "found",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3172,
                                      "src": "940:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 3179,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "933:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                                    "typeString": "tuple(address,bool)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 3181,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3119,
                                      "src": "957:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 3182,
                                        "name": "iter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3157,
                                        "src": "963:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                          "typeString": "struct RRUtils.RRIterator memory"
                                        }
                                      },
                                      "id": 3183,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "968:11:18",
                                      "memberName": "rdataOffset",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6318,
                                      "src": "963:16:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 3180,
                                    "name": "parseRR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3266,
                                    "src": "949:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$_t_bool_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (address,bool)"
                                    }
                                  },
                                  "id": 3184,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "949:31:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                                    "typeString": "tuple(address,bool)"
                                  }
                                },
                                "src": "933:47:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3186,
                              "nodeType": "ExpressionStatement",
                              "src": "933:47:18"
                            },
                            {
                              "condition": {
                                "id": 3187,
                                "name": "found",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "998:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3193,
                              "nodeType": "IfStatement",
                              "src": "994:63:18",
                              "trueBody": {
                                "id": 3192,
                                "nodeType": "Block",
                                "src": "1005:52:18",
                                "statements": [
                                  {
                                    "expression": {
                                      "components": [
                                        {
                                          "id": 3188,
                                          "name": "addr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3175,
                                          "src": "1031:4:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "hexValue": "74727565",
                                          "id": 3189,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1037:4:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        }
                                      ],
                                      "id": 3190,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1030:12:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                                        "typeString": "tuple(address,bool)"
                                      }
                                    },
                                    "functionReturnParameters": 3125,
                                    "id": 3191,
                                    "nodeType": "Return",
                                    "src": "1023:19:18"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "id": 3166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "821:12:18",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 3163,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3157,
                                "src": "822:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 3164,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "827:4:18",
                              "memberName": "done",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6366,
                              "src": "822:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                              }
                            },
                            "id": 3165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "822:11:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3195,
                        "initializationExpression": {
                          "assignments": [
                            3157
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3157,
                              "mutability": "mutable",
                              "name": "iter",
                              "nameLocation": "782:4:18",
                              "nodeType": "VariableDeclaration",
                              "scope": 3195,
                              "src": "756:30:18",
                              "stateVariable": false,
                              "storageLocation": "memory",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator"
                              },
                              "typeName": {
                                "id": 3156,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 3155,
                                  "name": "RRUtils.RRIterator",
                                  "nameLocations": [
                                    "756:7:18",
                                    "764:10:18"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 6321,
                                  "src": "756:18:18"
                                },
                                "referencedDeclaration": 6321,
                                "src": "756:18:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                                  "typeString": "struct RRUtils.RRIterator"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3162,
                          "initialValue": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 3160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "805:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 3158,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3119,
                                "src": "789:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "794:10:18",
                              "memberName": "iterateRRs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6349,
                              "src": "789:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$6321_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                              }
                            },
                            "id": 3161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "789:18:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "756:51:18"
                        },
                        "loopExpression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 3167,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3157,
                                "src": "847:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 3168,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "852:4:18",
                              "memberName": "next",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6470,
                              "src": "847:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure"
                              }
                            },
                            "id": 3169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "847:11:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 3170,
                          "nodeType": "ExpressionStatement",
                          "src": "847:11:18"
                        },
                        "nodeType": "ForStatement",
                        "src": "738:329:18"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 3198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1093:3:18",
                                  "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": 3197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1085:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3196,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1085:7:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1085:12:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 3200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1099:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "id": 3201,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1084:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                            "typeString": "tuple(address,bool)"
                          }
                        },
                        "functionReturnParameters": 3125,
                        "id": 3202,
                        "nodeType": "Return",
                        "src": "1077:28:18"
                      }
                    ]
                  },
                  "id": 3204,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getOwnerAddress",
                  "nameLocation": "431:15:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3120,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3117,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "460:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3204,
                        "src": "447:17:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3116,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3119,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "479:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3204,
                        "src": "466:17:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3118,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "466:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "446:38:18"
                  },
                  "returnParameters": {
                    "id": 3125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3122,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3204,
                        "src": "532:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "532:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3124,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3204,
                        "src": "541:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3123,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "541:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "531:15:18"
                  },
                  "scope": 3431,
                  "src": "422:690:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3265,
                    "nodeType": "Block",
                    "src": "1234:341:18",
                    "statements": [
                      {
                        "body": {
                          "id": 3256,
                          "nodeType": "Block",
                          "src": "1271:259:18",
                          "statements": [
                            {
                              "assignments": [
                                3220
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3220,
                                  "mutability": "mutable",
                                  "name": "len",
                                  "nameLocation": "1293:3:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3256,
                                  "src": "1285:11:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3219,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1285:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3225,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 3223,
                                    "name": "idx",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3208,
                                    "src": "1315:3:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3221,
                                    "name": "rdata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3206,
                                    "src": "1299:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3222,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1305:9:18",
                                  "memberName": "readUint8",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4552,
                                  "src": "1299:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                  }
                                },
                                "id": 3224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1299:20:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1285:34:18"
                            },
                            {
                              "expression": {
                                "id": 3228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3226,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3208,
                                  "src": "1333:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 3227,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1340:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1333:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3229,
                              "nodeType": "ExpressionStatement",
                              "src": "1333:8:18"
                            },
                            {
                              "assignments": [
                                3231
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3231,
                                  "mutability": "mutable",
                                  "name": "found",
                                  "nameLocation": "1361:5:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3256,
                                  "src": "1356:10:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 3230,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1356:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3232,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1356:10:18"
                            },
                            {
                              "assignments": [
                                3234
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3234,
                                  "mutability": "mutable",
                                  "name": "addr",
                                  "nameLocation": "1388:4:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3256,
                                  "src": "1380:12:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 3233,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1380:7:18",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3235,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1380:12:18"
                            },
                            {
                              "expression": {
                                "id": 3244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 3236,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3234,
                                      "src": "1407:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 3237,
                                      "name": "found",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3231,
                                      "src": "1413:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 3238,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "1406:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                                    "typeString": "tuple(address,bool)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 3240,
                                      "name": "rdata",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3206,
                                      "src": "1434:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 3241,
                                      "name": "idx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3208,
                                      "src": "1441:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 3242,
                                      "name": "len",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3220,
                                      "src": "1446:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 3239,
                                    "name": "parseString",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3312,
                                    "src": "1422:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$_t_bool_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (address,bool)"
                                    }
                                  },
                                  "id": 3243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1422:28:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                                    "typeString": "tuple(address,bool)"
                                  }
                                },
                                "src": "1406:44:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3245,
                              "nodeType": "ExpressionStatement",
                              "src": "1406:44:18"
                            },
                            {
                              "condition": {
                                "id": 3246,
                                "name": "found",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3231,
                                "src": "1469:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3251,
                              "nodeType": "IfStatement",
                              "src": "1465:30:18",
                              "trueBody": {
                                "expression": {
                                  "components": [
                                    {
                                      "id": 3247,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3234,
                                      "src": "1484:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 3248,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1490:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "id": 3249,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1483:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                                    "typeString": "tuple(address,bool)"
                                  }
                                },
                                "functionReturnParameters": 3214,
                                "id": 3250,
                                "nodeType": "Return",
                                "src": "1476:19:18"
                              }
                            },
                            {
                              "expression": {
                                "id": 3254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3252,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3208,
                                  "src": "1509:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3253,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3220,
                                  "src": "1516:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1509:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3255,
                              "nodeType": "ExpressionStatement",
                              "src": "1509:10:18"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3215,
                            "name": "idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3208,
                            "src": "1251:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 3216,
                              "name": "rdata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3206,
                              "src": "1257:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1263:6:18",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1257:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1251:18:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3257,
                        "nodeType": "WhileStatement",
                        "src": "1244:286:18"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 3260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1556:3:18",
                                  "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": 3259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1548:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3258,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1548:7:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1548:12:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 3262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1562:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "id": 3263,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1547:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                            "typeString": "tuple(address,bool)"
                          }
                        },
                        "functionReturnParameters": 3214,
                        "id": 3264,
                        "nodeType": "Return",
                        "src": "1540:28:18"
                      }
                    ]
                  },
                  "id": 3266,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseRR",
                  "nameLocation": "1127:7:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3206,
                        "mutability": "mutable",
                        "name": "rdata",
                        "nameLocation": "1148:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3266,
                        "src": "1135:18:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3205,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1135:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3208,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "1163:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3266,
                        "src": "1155:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1155:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1134:33:18"
                  },
                  "returnParameters": {
                    "id": 3214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3211,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3266,
                        "src": "1215:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1215:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3213,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3266,
                        "src": "1224:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3212,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1224:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1214:15:18"
                  },
                  "scope": 3431,
                  "src": "1118:457:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3311,
                    "nodeType": "Block",
                    "src": "1714:293:18",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 3284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 3281,
                                "name": "idx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "1833:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3279,
                                "name": "str",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3268,
                                "src": "1818:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1822:10:18",
                              "memberName": "readUint32",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4592,
                              "src": "1818:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                              }
                            },
                            "id": 3282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1818:19:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30783631336433303738",
                            "id": 3283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1841:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1631400056_by_1",
                              "typeString": "int_const 1631400056"
                            },
                            "value": "0x613d3078"
                          },
                          "src": "1818:33:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3292,
                        "nodeType": "IfStatement",
                        "src": "1814:67:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "307830",
                                    "id": 3287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1869:3:18",
                                    "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": 3286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1861:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3285,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1861:7:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1861:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 3289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1875:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "id": 3290,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1860:21:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                              "typeString": "tuple(address,bool)"
                            }
                          },
                          "functionReturnParameters": 3278,
                          "id": 3291,
                          "nodeType": "Return",
                          "src": "1853:28:18"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3293,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3272,
                            "src": "1919:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "3434",
                            "id": 3294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1925:2:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_44_by_1",
                              "typeString": "int_const 44"
                            },
                            "value": "44"
                          },
                          "src": "1919:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3303,
                        "nodeType": "IfStatement",
                        "src": "1915:42:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "307830",
                                    "id": 3298,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1945:3:18",
                                    "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": 3297,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1937:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3296,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1937:7:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1937:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 3300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1951:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "id": 3301,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1936:21:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                              "typeString": "tuple(address,bool)"
                            }
                          },
                          "functionReturnParameters": 3278,
                          "id": 3302,
                          "nodeType": "Return",
                          "src": "1929:28:18"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3305,
                              "name": "str",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3268,
                              "src": "1987:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3306,
                                "name": "idx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "1992:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "34",
                                "id": 3307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1998:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1992:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3304,
                            "name": "hexToAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "1974:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$_t_bool_$",
                              "typeString": "function (bytes memory,uint256) pure returns (address,bool)"
                            }
                          },
                          "id": 3309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1974:26:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                            "typeString": "tuple(address,bool)"
                          }
                        },
                        "functionReturnParameters": 3278,
                        "id": 3310,
                        "nodeType": "Return",
                        "src": "1967:33:18"
                      }
                    ]
                  },
                  "id": 3312,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseString",
                  "nameLocation": "1590:11:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3273,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3268,
                        "mutability": "mutable",
                        "name": "str",
                        "nameLocation": "1624:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3312,
                        "src": "1611:16:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3267,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1611:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3270,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "1645:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3312,
                        "src": "1637:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3269,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1637:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3272,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "1666:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3312,
                        "src": "1658:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3271,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1658:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1601:74:18"
                  },
                  "returnParameters": {
                    "id": 3278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3275,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3312,
                        "src": "1699:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1699:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3277,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3312,
                        "src": "1708:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3276,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1708:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1698:15:18"
                  },
                  "scope": 3431,
                  "src": "1581:426:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3429,
                    "nodeType": "Block",
                    "src": "2132:569:18",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 3323,
                                "name": "str",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3314,
                                "src": "2146:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2150:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2146:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 3325,
                              "name": "idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3316,
                              "src": "2159:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2146:16:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "3430",
                            "id": 3327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2165:2:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_40_by_1",
                              "typeString": "int_const 40"
                            },
                            "value": "40"
                          },
                          "src": "2146:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3336,
                        "nodeType": "IfStatement",
                        "src": "2142:55:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "307830",
                                    "id": 3331,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2185:3:18",
                                    "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": 3330,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2177:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3329,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2177:7:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2177:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 3333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2191:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "id": 3334,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2176:21:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                              "typeString": "tuple(address,bool)"
                            }
                          },
                          "functionReturnParameters": 3322,
                          "id": 3335,
                          "nodeType": "Return",
                          "src": "2169:28:18"
                        }
                      },
                      {
                        "assignments": [
                          3338
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3338,
                            "mutability": "mutable",
                            "name": "ret",
                            "nameLocation": "2215:3:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3429,
                            "src": "2207:11:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3337,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2207:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3340,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 3339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2221:1:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2207:15:18"
                      },
                      {
                        "body": {
                          "id": 3417,
                          "nodeType": "Block",
                          "src": "2273:376:18",
                          "statements": [
                            {
                              "expression": {
                                "id": 3355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3353,
                                  "name": "ret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3338,
                                  "src": "2287:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "<<=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 3354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2295:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "2287:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3356,
                              "nodeType": "ExpressionStatement",
                              "src": "2287:9:18"
                            },
                            {
                              "assignments": [
                                3358
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3358,
                                  "mutability": "mutable",
                                  "name": "x",
                                  "nameLocation": "2318:1:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3417,
                                  "src": "2310:9:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3357,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2310:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3363,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 3361,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3342,
                                    "src": "2336:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3359,
                                    "name": "str",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3314,
                                    "src": "2322:3:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2326:9:18",
                                  "memberName": "readUint8",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4552,
                                  "src": "2322:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                  }
                                },
                                "id": 3362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2322:16:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2310:28:18"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3364,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3358,
                                    "src": "2356:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "hexValue": "3438",
                                    "id": 3365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2361:2:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    "value": "48"
                                  },
                                  "src": "2356:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3367,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3358,
                                    "src": "2367:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "hexValue": "3538",
                                    "id": 3368,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2371:2:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_58_by_1",
                                      "typeString": "int_const 58"
                                    },
                                    "value": "58"
                                  },
                                  "src": "2367:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2356:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 3384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3380,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3378,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3358,
                                      "src": "2431:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "3635",
                                      "id": 3379,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2436:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_65_by_1",
                                        "typeString": "int_const 65"
                                      },
                                      "value": "65"
                                    },
                                    "src": "2431:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3383,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3381,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3358,
                                      "src": "2442:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "hexValue": "3731",
                                      "id": 3382,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2446:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_71_by_1",
                                        "typeString": "int_const 71"
                                      },
                                      "value": "71"
                                    },
                                    "src": "2442:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "2431:17:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3398,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3394,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 3392,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3358,
                                        "src": "2506:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "hexValue": "3937",
                                        "id": 3393,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2511:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_97_by_1",
                                          "typeString": "int_const 97"
                                        },
                                        "value": "97"
                                      },
                                      "src": "2506:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3397,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 3395,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3358,
                                        "src": "2517:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "hexValue": "313033",
                                        "id": 3396,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2521:3:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_103_by_1",
                                          "typeString": "int_const 103"
                                        },
                                        "value": "103"
                                      },
                                      "src": "2517:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2506:18:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 3413,
                                    "nodeType": "Block",
                                    "src": "2578:61:18",
                                    "statements": [
                                      {
                                        "expression": {
                                          "components": [
                                            {
                                              "arguments": [
                                                {
                                                  "hexValue": "307830",
                                                  "id": 3408,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "2612:3:18",
                                                  "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": 3407,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "2604:7:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_address_$",
                                                  "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                  "id": 3406,
                                                  "name": "address",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "2604:7:18",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 3409,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "2604:12:18",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "hexValue": "66616c7365",
                                              "id": 3410,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "2618:5:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "false"
                                            }
                                          ],
                                          "id": 3411,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "2603:21:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                                            "typeString": "tuple(address,bool)"
                                          }
                                        },
                                        "functionReturnParameters": 3322,
                                        "id": 3412,
                                        "nodeType": "Return",
                                        "src": "2596:28:18"
                                      }
                                    ]
                                  },
                                  "id": 3414,
                                  "nodeType": "IfStatement",
                                  "src": "2502:137:18",
                                  "trueBody": {
                                    "id": 3405,
                                    "nodeType": "Block",
                                    "src": "2526:46:18",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 3403,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 3399,
                                            "name": "ret",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3338,
                                            "src": "2544:3:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "|=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3402,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3400,
                                              "name": "x",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3358,
                                              "src": "2551:1:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "hexValue": "3837",
                                              "id": 3401,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "2555:2:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_87_by_1",
                                                "typeString": "int_const 87"
                                              },
                                              "value": "87"
                                            },
                                            "src": "2551:6:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2544:13:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3404,
                                        "nodeType": "ExpressionStatement",
                                        "src": "2544:13:18"
                                      }
                                    ]
                                  }
                                },
                                "id": 3415,
                                "nodeType": "IfStatement",
                                "src": "2427:212:18",
                                "trueBody": {
                                  "id": 3391,
                                  "nodeType": "Block",
                                  "src": "2450:46:18",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 3389,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 3385,
                                          "name": "ret",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3338,
                                          "src": "2468:3:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "|=",
                                        "rightHandSide": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3388,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3386,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3358,
                                            "src": "2475:1:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "hexValue": "3535",
                                            "id": 3387,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2479:2:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_55_by_1",
                                              "typeString": "int_const 55"
                                            },
                                            "value": "55"
                                          },
                                          "src": "2475:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2468:13:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3390,
                                      "nodeType": "ExpressionStatement",
                                      "src": "2468:13:18"
                                    }
                                  ]
                                }
                              },
                              "id": 3416,
                              "nodeType": "IfStatement",
                              "src": "2352:287:18",
                              "trueBody": {
                                "id": 3377,
                                "nodeType": "Block",
                                "src": "2375:46:18",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 3375,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3371,
                                        "name": "ret",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3338,
                                        "src": "2393:3:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "|=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3374,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3372,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3358,
                                          "src": "2400:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "3438",
                                          "id": 3373,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2404:2:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_48_by_1",
                                            "typeString": "int_const 48"
                                          },
                                          "value": "48"
                                        },
                                        "src": "2400:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2393:13:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3376,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2393:13:18"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3345,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3342,
                            "src": "2254:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3346,
                              "name": "idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3316,
                              "src": "2258:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "3430",
                              "id": 3347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2264:2:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_40_by_1",
                                "typeString": "int_const 40"
                              },
                              "value": "40"
                            },
                            "src": "2258:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2254:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3418,
                        "initializationExpression": {
                          "assignments": [
                            3342
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3342,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2245:1:18",
                              "nodeType": "VariableDeclaration",
                              "scope": 3418,
                              "src": "2237:9:18",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3341,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2237:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3344,
                          "initialValue": {
                            "id": 3343,
                            "name": "idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3316,
                            "src": "2249:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2237:15:18"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2268:3:18",
                            "subExpression": {
                              "id": 3350,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3342,
                              "src": "2268:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3352,
                          "nodeType": "ExpressionStatement",
                          "src": "2268:3:18"
                        },
                        "nodeType": "ForStatement",
                        "src": "2232:417:18"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 3423,
                                      "name": "ret",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3338,
                                      "src": "2682:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 3422,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2674:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 3421,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2674:7:18",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2674:12:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 3420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2666:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3419,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2666:7:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2666:21:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 3426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2689:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "id": 3427,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2665:29:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                            "typeString": "tuple(address,bool)"
                          }
                        },
                        "functionReturnParameters": 3322,
                        "id": 3428,
                        "nodeType": "Return",
                        "src": "2658:36:18"
                      }
                    ]
                  },
                  "id": 3430,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hexToAddress",
                  "nameLocation": "2022:12:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3314,
                        "mutability": "mutable",
                        "name": "str",
                        "nameLocation": "2048:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "2035:16:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3313,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2035:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3316,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "2061:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "2053:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3315,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2053:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2034:31:18"
                  },
                  "returnParameters": {
                    "id": 3322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3319,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "2113:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2113:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3321,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "2122:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3320,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2122:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2112:15:18"
                  },
                  "scope": 3431,
                  "src": "2013:688:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3432,
              "src": "226:2477:18",
              "usedErrors": []
            }
          ],
          "src": "31:2673:18"
        },
        "id": 18
      },
      "contracts/dnsregistrar/DNSRegistrar.sol": {
        "ast": {
          "absolutePath": "contracts/dnsregistrar/DNSRegistrar.sol",
          "exportedSymbols": {
            "AddrResolver": [
              14342
            ],
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "Context": [
              2855
            ],
            "Controllable": [
              15668
            ],
            "DNSClaimChecker": [
              3431
            ],
            "DNSRegistrar": [
              3998
            ],
            "DNSSEC": [
              5064
            ],
            "ENS": [
              12157
            ],
            "ENSRegistry": [
              12581
            ],
            "ERC165": [
              3082
            ],
            "IAddrResolver": [
              14940
            ],
            "IAddressResolver": [
              14961
            ],
            "IDNSRegistrar": [
              4024
            ],
            "IERC165": [
              3094
            ],
            "IVersionableResolver": [
              15142
            ],
            "Ownable": [
              642
            ],
            "PublicSuffixList": [
              4034
            ],
            "RRUtils": [
              7059
            ],
            "ResolverBase": [
              13995
            ],
            "Root": [
              15844
            ]
          },
          "id": 3999,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3433,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:19"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "id": 3434,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 3095,
              "src": "57:65:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ensdomains/buffer/contracts/Buffer.sol",
              "file": "@ensdomains/buffer/contracts/Buffer.sol",
              "id": 3435,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 522,
              "src": "123:49:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../dnssec-oracle/BytesUtils.sol",
              "id": 3436,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 5018,
              "src": "173:41:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/DNSSEC.sol",
              "file": "../dnssec-oracle/DNSSEC.sol",
              "id": 3437,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 5065,
              "src": "215:37:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/RRUtils.sol",
              "file": "../dnssec-oracle/RRUtils.sol",
              "id": 3438,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 7060,
              "src": "253:38:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/registry/ENSRegistry.sol",
              "file": "../registry/ENSRegistry.sol",
              "id": 3439,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 12582,
              "src": "292:37:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/root/Root.sol",
              "file": "../root/Root.sol",
              "id": 3440,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 15845,
              "src": "330:26:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/AddrResolver.sol",
              "file": "../resolvers/profiles/AddrResolver.sol",
              "id": 3441,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 14343,
              "src": "357:48:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnsregistrar/DNSClaimChecker.sol",
              "file": "./DNSClaimChecker.sol",
              "id": 3442,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 3432,
              "src": "406:31:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnsregistrar/PublicSuffixList.sol",
              "file": "./PublicSuffixList.sol",
              "id": 3443,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 4035,
              "src": "438:32:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnsregistrar/IDNSRegistrar.sol",
              "file": "./IDNSRegistrar.sol",
              "id": 3444,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3999,
              "sourceUnit": 4025,
              "src": "471:29:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3446,
                    "name": "IDNSRegistrar",
                    "nameLocations": [
                      "753:13:19"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4024,
                    "src": "753:13:19"
                  },
                  "id": 3447,
                  "nodeType": "InheritanceSpecifier",
                  "src": "753:13:19"
                },
                {
                  "baseName": {
                    "id": 3448,
                    "name": "IERC165",
                    "nameLocations": [
                      "768:7:19"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3094,
                    "src": "768:7:19"
                  },
                  "id": 3449,
                  "nodeType": "InheritanceSpecifier",
                  "src": "768:7:19"
                }
              ],
              "canonicalName": "DNSRegistrar",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3445,
                "nodeType": "StructuredDocumentation",
                "src": "502:116:19",
                "text": " @dev An ENS registrar that allows the owner of a DNS name to claim the\n      corresponding name in ENS."
              },
              "fullyImplemented": true,
              "id": 3998,
              "linearizedBaseContracts": [
                3998,
                3094,
                4024
              ],
              "name": "DNSRegistrar",
              "nameLocation": "737:12:19",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 3452,
                  "libraryName": {
                    "id": 3450,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "788:10:19"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "788:10:19"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "782:27:19",
                  "typeName": {
                    "id": 3451,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 3456,
                  "libraryName": {
                    "id": 3453,
                    "name": "Buffer",
                    "nameLocations": [
                      "820:6:19"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 521,
                    "src": "820:6:19"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "814:31:19",
                  "typeName": {
                    "id": 3455,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3454,
                      "name": "Buffer.buffer",
                      "nameLocations": [
                        "831:6:19",
                        "838:6:19"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 7,
                      "src": "831:13:19"
                    },
                    "referencedDeclaration": 7,
                    "src": "831:13:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                      "typeString": "struct Buffer.buffer"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 3458,
                  "libraryName": {
                    "id": 3457,
                    "name": "RRUtils",
                    "nameLocations": [
                      "856:7:19"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7059,
                    "src": "856:7:19"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "850:20:19"
                },
                {
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 3461,
                  "mutability": "immutable",
                  "name": "ens",
                  "nameLocation": "897:3:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3998,
                  "src": "876:24:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 3460,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3459,
                      "name": "ENS",
                      "nameLocations": [
                        "876:3:19"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "876:3:19"
                    },
                    "referencedDeclaration": 12157,
                    "src": "876:3:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7dc0d1d0",
                  "id": 3464,
                  "mutability": "immutable",
                  "name": "oracle",
                  "nameLocation": "930:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3998,
                  "src": "906:30:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DNSSEC_$5064",
                    "typeString": "contract DNSSEC"
                  },
                  "typeName": {
                    "id": 3463,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3462,
                      "name": "DNSSEC",
                      "nameLocations": [
                        "906:6:19"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5064,
                      "src": "906:6:19"
                    },
                    "referencedDeclaration": 5064,
                    "src": "906:6:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DNSSEC_$5064",
                      "typeString": "contract DNSSEC"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "30349ebe",
                  "id": 3467,
                  "mutability": "mutable",
                  "name": "suffixes",
                  "nameLocation": "966:8:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3998,
                  "src": "942:32:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                    "typeString": "contract PublicSuffixList"
                  },
                  "typeName": {
                    "id": 3466,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3465,
                      "name": "PublicSuffixList",
                      "nameLocations": [
                        "942:16:19"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4034,
                      "src": "942:16:19"
                    },
                    "referencedDeclaration": 4034,
                    "src": "942:16:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                      "typeString": "contract PublicSuffixList"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "25916d41",
                  "id": 3471,
                  "mutability": "mutable",
                  "name": "inceptions",
                  "nameLocation": "1091:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3998,
                  "src": "1057:44:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint32_$",
                    "typeString": "mapping(bytes32 => uint32)"
                  },
                  "typeName": {
                    "id": 3470,
                    "keyType": {
                      "id": 3468,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1065:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1057:26:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint32_$",
                      "typeString": "mapping(bytes32 => uint32)"
                    },
                    "valueType": {
                      "id": 3469,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1076:6:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "errorSelector": "6260f6f8",
                  "id": 3473,
                  "name": "NoOwnerRecordFound",
                  "nameLocation": "1114:18:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3472,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1132:2:19"
                  },
                  "src": "1108:27:19"
                },
                {
                  "errorSelector": "2dd6a7af",
                  "id": 3475,
                  "name": "StaleProof",
                  "nameLocation": "1146:10:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3474,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1156:2:19"
                  },
                  "src": "1140:19:19"
                },
                {
                  "canonicalName": "DNSRegistrar.OwnerRecord",
                  "id": 3484,
                  "members": [
                    {
                      "constant": false,
                      "id": 3477,
                      "mutability": "mutable",
                      "name": "name",
                      "nameLocation": "1200:4:19",
                      "nodeType": "VariableDeclaration",
                      "scope": 3484,
                      "src": "1194:10:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3476,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1194:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3479,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "1222:5:19",
                      "nodeType": "VariableDeclaration",
                      "scope": 3484,
                      "src": "1214:13:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3478,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1214:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3481,
                      "mutability": "mutable",
                      "name": "resolver",
                      "nameLocation": "1245:8:19",
                      "nodeType": "VariableDeclaration",
                      "scope": 3484,
                      "src": "1237:16:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3480,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1237:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3483,
                      "mutability": "mutable",
                      "name": "ttl",
                      "nameLocation": "1270:3:19",
                      "nodeType": "VariableDeclaration",
                      "scope": 3484,
                      "src": "1263:10:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3482,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1263:6:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "OwnerRecord",
                  "nameLocation": "1172:11:19",
                  "nodeType": "StructDefinition",
                  "scope": 3998,
                  "src": "1165:115:19",
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "87db02a0e483e2818060eddcbb3488ce44e35aff49a70d92c2aa6c8046cf01e2",
                  "id": 3494,
                  "name": "Claim",
                  "nameLocation": "1292:5:19",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3486,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1323:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3494,
                        "src": "1307:20:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3485,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1307:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3488,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1353:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3494,
                        "src": "1337:21:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3487,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1337:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3490,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "dnsname",
                        "nameLocation": "1374:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3494,
                        "src": "1368:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3489,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1368:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3492,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "inception",
                        "nameLocation": "1398:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3494,
                        "src": "1391:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 3491,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1391:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1297:116:19"
                  },
                  "src": "1286:128:19"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b3eacd0e351fafdfefdec84e1cd19679b38dbcd63ea7c2c24da17fd2bc3b3c0e",
                  "id": 3498,
                  "name": "NewOracle",
                  "nameLocation": "1425:9:19",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3496,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nameLocation": "1443:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3498,
                        "src": "1435:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3495,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1434:16:19"
                  },
                  "src": "1419:32:19"
                },
                {
                  "anonymous": false,
                  "eventSelector": "9176b7f47e4504df5e5516c99d90d82ac7cbd49cc77e7f22ba2ac2f2e3a3eba8",
                  "id": 3502,
                  "name": "NewPublicSuffixList",
                  "nameLocation": "1462:19:19",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3500,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "suffixes",
                        "nameLocation": "1490:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3502,
                        "src": "1482:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3499,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1482:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1481:18:19"
                  },
                  "src": "1456:44:19"
                },
                {
                  "body": {
                    "id": 3540,
                    "nodeType": "Block",
                    "src": "1602:177:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 3516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3514,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3464,
                            "src": "1612:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DNSSEC_$5064",
                              "typeString": "contract DNSSEC"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3515,
                            "name": "_dnssec",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3505,
                            "src": "1621:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DNSSEC_$5064",
                              "typeString": "contract DNSSEC"
                            }
                          },
                          "src": "1612:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DNSSEC_$5064",
                            "typeString": "contract DNSSEC"
                          }
                        },
                        "id": 3517,
                        "nodeType": "ExpressionStatement",
                        "src": "1612:16:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3521,
                                  "name": "oracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3464,
                                  "src": "1661:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DNSSEC_$5064",
                                    "typeString": "contract DNSSEC"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DNSSEC_$5064",
                                    "typeString": "contract DNSSEC"
                                  }
                                ],
                                "id": 3520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1653:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3519,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1653:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1653:15:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3518,
                            "name": "NewOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3498,
                            "src": "1643:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1643:26:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3524,
                        "nodeType": "EmitStatement",
                        "src": "1638:31:19"
                      },
                      {
                        "expression": {
                          "id": 3527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3525,
                            "name": "suffixes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3467,
                            "src": "1679:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                              "typeString": "contract PublicSuffixList"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3526,
                            "name": "_suffixes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3508,
                            "src": "1690:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                              "typeString": "contract PublicSuffixList"
                            }
                          },
                          "src": "1679:20:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                            "typeString": "contract PublicSuffixList"
                          }
                        },
                        "id": 3528,
                        "nodeType": "ExpressionStatement",
                        "src": "1679:20:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3532,
                                  "name": "suffixes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3467,
                                  "src": "1742:8:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                                    "typeString": "contract PublicSuffixList"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                                    "typeString": "contract PublicSuffixList"
                                  }
                                ],
                                "id": 3531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1734:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3530,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1734:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1734:17:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3529,
                            "name": "NewPublicSuffixList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3502,
                            "src": "1714:19:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1714:38:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3535,
                        "nodeType": "EmitStatement",
                        "src": "1709:43:19"
                      },
                      {
                        "expression": {
                          "id": 3538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3536,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3461,
                            "src": "1762:3:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3537,
                            "name": "_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3511,
                            "src": "1768:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "1762:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 3539,
                        "nodeType": "ExpressionStatement",
                        "src": "1762:10:19"
                      }
                    ]
                  },
                  "id": 3541,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3512,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3505,
                        "mutability": "mutable",
                        "name": "_dnssec",
                        "nameLocation": "1534:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3541,
                        "src": "1527:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DNSSEC_$5064",
                          "typeString": "contract DNSSEC"
                        },
                        "typeName": {
                          "id": 3504,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3503,
                            "name": "DNSSEC",
                            "nameLocations": [
                              "1527:6:19"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5064,
                            "src": "1527:6:19"
                          },
                          "referencedDeclaration": 5064,
                          "src": "1527:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DNSSEC_$5064",
                            "typeString": "contract DNSSEC"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3508,
                        "mutability": "mutable",
                        "name": "_suffixes",
                        "nameLocation": "1568:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3541,
                        "src": "1551:26:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                          "typeString": "contract PublicSuffixList"
                        },
                        "typeName": {
                          "id": 3507,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3506,
                            "name": "PublicSuffixList",
                            "nameLocations": [
                              "1551:16:19"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4034,
                            "src": "1551:16:19"
                          },
                          "referencedDeclaration": 4034,
                          "src": "1551:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                            "typeString": "contract PublicSuffixList"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3511,
                        "mutability": "mutable",
                        "name": "_ens",
                        "nameLocation": "1591:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3541,
                        "src": "1587:8:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 3510,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3509,
                            "name": "ENS",
                            "nameLocations": [
                              "1587:3:19"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "1587:3:19"
                          },
                          "referencedDeclaration": 12157,
                          "src": "1587:3:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1517:84:19"
                  },
                  "returnParameters": {
                    "id": 3513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1602:0:19"
                  },
                  "scope": 3998,
                  "src": "1506:273:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3571,
                    "nodeType": "Block",
                    "src": "1916:143:19",
                    "statements": [
                      {
                        "assignments": [
                          3546
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3546,
                            "mutability": "mutable",
                            "name": "root",
                            "nameLocation": "1931:4:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3571,
                            "src": "1926:9:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Root_$15844",
                              "typeString": "contract Root"
                            },
                            "typeName": {
                              "id": 3545,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 3544,
                                "name": "Root",
                                "nameLocations": [
                                  "1926:4:19"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 15844,
                                "src": "1926:4:19"
                              },
                              "referencedDeclaration": 15844,
                              "src": "1926:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Root_$15844",
                                "typeString": "contract Root"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3556,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 3552,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1961:1:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 3551,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1953:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 3550,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1953:7:19",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3553,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1953:10:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 3548,
                                  "name": "ens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3461,
                                  "src": "1943:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ENS_$12157",
                                    "typeString": "contract ENS"
                                  }
                                },
                                "id": 3549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1947:5:19",
                                "memberName": "owner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12126,
                                "src": "1943:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                  "typeString": "function (bytes32) view external returns (address)"
                                }
                              },
                              "id": 3554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1943:21:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3547,
                            "name": "Root",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15844,
                            "src": "1938:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Root_$15844_$",
                              "typeString": "type(contract Root)"
                            }
                          },
                          "id": 3555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1938:27:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Root_$15844",
                            "typeString": "contract Root"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1926:39:19"
                      },
                      {
                        "assignments": [
                          3558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3558,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "1983:5:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3571,
                            "src": "1975:13:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3557,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1975:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3562,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3559,
                              "name": "root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3546,
                              "src": "1991:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Root_$15844",
                                "typeString": "contract Root"
                              }
                            },
                            "id": 3560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1996:5:19",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 570,
                            "src": "1991:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 3561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1991:12:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1975:28:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3564,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2021:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2025:6:19",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2021:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 3566,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3558,
                                "src": "2035:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2021:19:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3563,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2013:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2013:28:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3569,
                        "nodeType": "ExpressionStatement",
                        "src": "2013:28:19"
                      },
                      {
                        "id": 3570,
                        "nodeType": "PlaceholderStatement",
                        "src": "2051:1:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3542,
                    "nodeType": "StructuredDocumentation",
                    "src": "1785:105:19",
                    "text": " @dev This contract's owner-only functions can be invoked by the owner of the ENS root."
                  },
                  "id": 3572,
                  "name": "onlyOwner",
                  "nameLocation": "1904:9:19",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 3543,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1913:2:19"
                  },
                  "src": "1895:164:19",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3591,
                    "nodeType": "Block",
                    "src": "2139:90:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 3582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3580,
                            "name": "suffixes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3467,
                            "src": "2149:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                              "typeString": "contract PublicSuffixList"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3581,
                            "name": "_suffixes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3575,
                            "src": "2160:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                              "typeString": "contract PublicSuffixList"
                            }
                          },
                          "src": "2149:20:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                            "typeString": "contract PublicSuffixList"
                          }
                        },
                        "id": 3583,
                        "nodeType": "ExpressionStatement",
                        "src": "2149:20:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3587,
                                  "name": "suffixes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3467,
                                  "src": "2212:8:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                                    "typeString": "contract PublicSuffixList"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                                    "typeString": "contract PublicSuffixList"
                                  }
                                ],
                                "id": 3586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2204:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3585,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2204:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2204:17:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3584,
                            "name": "NewPublicSuffixList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3502,
                            "src": "2184:19:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2184:38:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3590,
                        "nodeType": "EmitStatement",
                        "src": "2179:43:19"
                      }
                    ]
                  },
                  "functionSelector": "1ecfc411",
                  "id": 3592,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 3578,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3577,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "2129:9:19"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3572,
                        "src": "2129:9:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2129:9:19"
                    }
                  ],
                  "name": "setPublicSuffixList",
                  "nameLocation": "2074:19:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3576,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3575,
                        "mutability": "mutable",
                        "name": "_suffixes",
                        "nameLocation": "2111:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3592,
                        "src": "2094:26:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                          "typeString": "contract PublicSuffixList"
                        },
                        "typeName": {
                          "id": 3574,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3573,
                            "name": "PublicSuffixList",
                            "nameLocations": [
                              "2094:16:19"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4034,
                            "src": "2094:16:19"
                          },
                          "referencedDeclaration": 4034,
                          "src": "2094:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                            "typeString": "contract PublicSuffixList"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2093:28:19"
                  },
                  "returnParameters": {
                    "id": 3579,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2139:0:19"
                  },
                  "scope": 3998,
                  "src": "2065:164:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4010
                  ],
                  "body": {
                    "id": 3622,
                    "nodeType": "Block",
                    "src": "2595:180:19",
                    "statements": [
                      {
                        "assignments": [
                          3604,
                          3606,
                          3608
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3604,
                            "mutability": "mutable",
                            "name": "rootNode",
                            "nameLocation": "2614:8:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3622,
                            "src": "2606:16:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3603,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2606:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3606,
                            "mutability": "mutable",
                            "name": "labelHash",
                            "nameLocation": "2632:9:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3622,
                            "src": "2624:17:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3605,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2624:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3608,
                            "mutability": "mutable",
                            "name": "addr",
                            "nameLocation": "2651:4:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3622,
                            "src": "2643:12:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3607,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2643:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3613,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3610,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3595,
                              "src": "2679:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3611,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3599,
                              "src": "2697:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              }
                            ],
                            "id": 3609,
                            "name": "_claim",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3862,
                            "src": "2659:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes32_$_t_bytes32_$_t_address_$",
                              "typeString": "function (bytes memory,struct DNSSEC.RRSetWithSignature memory[] memory) returns (bytes32,bytes32,address)"
                            }
                          },
                          "id": 3612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2659:53:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_address_$",
                            "typeString": "tuple(bytes32,bytes32,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2605:107:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3617,
                              "name": "rootNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3604,
                              "src": "2742:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3618,
                              "name": "labelHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3606,
                              "src": "2752:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3619,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3608,
                              "src": "2763:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 3614,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3461,
                              "src": "2722:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 3616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2726:15:19",
                            "memberName": "setSubnodeOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12091,
                            "src": "2722:19:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                            }
                          },
                          "id": 3620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2722:46:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3621,
                        "nodeType": "ExpressionStatement",
                        "src": "2722:46:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3593,
                    "nodeType": "StructuredDocumentation",
                    "src": "2235:233:19",
                    "text": " @dev Submits proofs to the DNSSEC oracle, then claims a name using those proofs.\n @param name The name to claim, in DNS wire format.\n @param input A chain of signed DNS RRSETs ending with a text record."
                  },
                  "functionSelector": "29d56630",
                  "id": 3623,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proveAndClaim",
                  "nameLocation": "2482:13:19",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3601,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2586:8:19"
                  },
                  "parameters": {
                    "id": 3600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3595,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "2518:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3623,
                        "src": "2505:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3594,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2505:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3599,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "2567:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3623,
                        "src": "2532:40:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3597,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 3596,
                              "name": "DNSSEC.RRSetWithSignature",
                              "nameLocations": [
                                "2532:6:19",
                                "2539:18:19"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "2532:25:19"
                            },
                            "referencedDeclaration": 5027,
                            "src": "2532:25:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 3598,
                          "nodeType": "ArrayTypeName",
                          "src": "2532:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2495:83:19"
                  },
                  "returnParameters": {
                    "id": 3602,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2595:0:19"
                  },
                  "scope": 3998,
                  "src": "2473:302:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4023
                  ],
                  "body": {
                    "id": 3723,
                    "nodeType": "Block",
                    "src": "2963:1032:19",
                    "statements": [
                      {
                        "assignments": [
                          3638,
                          3640,
                          3642
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3638,
                            "mutability": "mutable",
                            "name": "rootNode",
                            "nameLocation": "2982:8:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3723,
                            "src": "2974:16:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3637,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2974:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3640,
                            "mutability": "mutable",
                            "name": "labelHash",
                            "nameLocation": "3000:9:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3723,
                            "src": "2992:17:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3639,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2992:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3642,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "3019:5:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3723,
                            "src": "3011:13:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3641,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3011:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3647,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3644,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3625,
                              "src": "3048:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3645,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3629,
                              "src": "3066:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              }
                            ],
                            "id": 3643,
                            "name": "_claim",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3862,
                            "src": "3028:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes32_$_t_bytes32_$_t_address_$",
                              "typeString": "function (bytes memory,struct DNSSEC.RRSetWithSignature memory[] memory) returns (bytes32,bytes32,address)"
                            }
                          },
                          "id": 3646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3028:53:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_address_$",
                            "typeString": "tuple(bytes32,bytes32,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2973:108:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3649,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3112:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3650,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3116:6:19",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3112:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 3651,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3642,
                                "src": "3126:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3112:19:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f6e6c79206f776e65722063616e2063616c6c2070726f7665416e64436c61696d576974685265736f6c766572",
                              "id": 3653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3145:47:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b003183625557b6442c6172435dc558d6e00259050f549715eafea85c3852041",
                                "typeString": "literal_string \"Only owner can call proveAndClaimWithResolver\""
                              },
                              "value": "Only owner can call proveAndClaimWithResolver"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b003183625557b6442c6172435dc558d6e00259050f549715eafea85c3852041",
                                "typeString": "literal_string \"Only owner can call proveAndClaimWithResolver\""
                              }
                            ],
                            "id": 3648,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3091:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3091:111:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3655,
                        "nodeType": "ExpressionStatement",
                        "src": "3091:111:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3656,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3633,
                            "src": "3216:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 3659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3232:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3224:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3657,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3224:7:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3224:10:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3216:18:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3721,
                          "nodeType": "Block",
                          "src": "3903:86:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3714,
                                    "name": "rootNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3638,
                                    "src": "3938:8:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3715,
                                    "name": "labelHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3640,
                                    "src": "3948:9:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3716,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3642,
                                    "src": "3959:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3717,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3631,
                                    "src": "3966:8:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 3718,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3976:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3711,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3461,
                                    "src": "3917:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 3713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3921:16:19",
                                  "memberName": "setSubnodeRecord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12080,
                                  "src": "3917:20:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_address_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes32,address,address,uint64) external"
                                  }
                                },
                                "id": 3719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3917:61:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3720,
                              "nodeType": "ExpressionStatement",
                              "src": "3917:61:19"
                            }
                          ]
                        },
                        "id": 3722,
                        "nodeType": "IfStatement",
                        "src": "3212:777:19",
                        "trueBody": {
                          "id": 3710,
                          "nodeType": "Block",
                          "src": "3236:661:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 3668,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3663,
                                      "name": "resolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3631,
                                      "src": "3275:8:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 3666,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3295:1:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 3665,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3287:7:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3664,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3287:7:19",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3667,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3287:10:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "3275:22:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "43616e6e6f74207365742061646472206966207265736f6c766572206973206e6f7420736574",
                                    "id": 3669,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3315:40:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_297b4c7c1b9fec22a1821926e7017e161faf6963a6ae7f899041d3c4552e210d",
                                      "typeString": "literal_string \"Cannot set addr if resolver is not set\""
                                    },
                                    "value": "Cannot set addr if resolver is not set"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_297b4c7c1b9fec22a1821926e7017e161faf6963a6ae7f899041d3c4552e210d",
                                      "typeString": "literal_string \"Cannot set addr if resolver is not set\""
                                    }
                                  ],
                                  "id": 3662,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "3250:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3250:119:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3671,
                              "nodeType": "ExpressionStatement",
                              "src": "3250:119:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3675,
                                    "name": "rootNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3638,
                                    "src": "3502:8:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3676,
                                    "name": "labelHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3640,
                                    "src": "3528:9:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 3679,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "3563:4:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                          "typeString": "contract DNSRegistrar"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                          "typeString": "contract DNSRegistrar"
                                        }
                                      ],
                                      "id": 3678,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3555:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3677,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3555:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3680,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3555:13:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3681,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3631,
                                    "src": "3586:8:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 3682,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3612:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3672,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3461,
                                    "src": "3464:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 3674,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3468:16:19",
                                  "memberName": "setSubnodeRecord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12080,
                                  "src": "3464:20:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_address_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes32,address,address,uint64) external"
                                  }
                                },
                                "id": 3683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3464:163:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3684,
                              "nodeType": "ExpressionStatement",
                              "src": "3464:163:19"
                            },
                            {
                              "assignments": [
                                3686
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3686,
                                  "mutability": "mutable",
                                  "name": "node",
                                  "nameLocation": "3649:4:19",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3710,
                                  "src": "3641:12:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 3685,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3641:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3694,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3690,
                                        "name": "rootNode",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3638,
                                        "src": "3683:8:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 3691,
                                        "name": "labelHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3640,
                                        "src": "3693:9:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3688,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "3666:3:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 3689,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "3670:12:19",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "3666:16:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 3692,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3666:37:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3687,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "3656:9:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 3693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3656:48:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3641:63:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3699,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3686,
                                    "src": "3788:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3700,
                                    "name": "addr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3633,
                                    "src": "3794:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 3696,
                                        "name": "resolver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3631,
                                        "src": "3770:8:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3695,
                                      "name": "AddrResolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14342,
                                      "src": "3757:12:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_AddrResolver_$14342_$",
                                        "typeString": "type(contract AddrResolver)"
                                      }
                                    },
                                    "id": 3697,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3757:22:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_AddrResolver_$14342",
                                      "typeString": "contract AddrResolver"
                                    }
                                  },
                                  "id": 3698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3780:7:19",
                                  "memberName": "setAddr",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14185,
                                  "src": "3757:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) external"
                                  }
                                },
                                "id": 3701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3757:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3702,
                              "nodeType": "ExpressionStatement",
                              "src": "3757:42:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3706,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3686,
                                    "src": "3874:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3707,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3642,
                                    "src": "3880:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3703,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3461,
                                    "src": "3861:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 3705,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3865:8:19",
                                  "memberName": "setOwner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12105,
                                  "src": "3861:12:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) external"
                                  }
                                },
                                "id": 3708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3861:25:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3709,
                              "nodeType": "ExpressionStatement",
                              "src": "3861:25:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "06963218",
                  "id": 3724,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proveAndClaimWithResolver",
                  "nameLocation": "2790:25:19",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3635,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2954:8:19"
                  },
                  "parameters": {
                    "id": 3634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3625,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "2838:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3724,
                        "src": "2825:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3624,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2825:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3629,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "2887:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3724,
                        "src": "2852:40:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3627,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 3626,
                              "name": "DNSSEC.RRSetWithSignature",
                              "nameLocations": [
                                "2852:6:19",
                                "2859:18:19"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "2852:25:19"
                            },
                            "referencedDeclaration": 5027,
                            "src": "2852:25:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 3628,
                          "nodeType": "ArrayTypeName",
                          "src": "2852:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3631,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "2910:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3724,
                        "src": "2902:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3630,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2902:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3633,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "2936:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3724,
                        "src": "2928:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2928:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2815:131:19"
                  },
                  "returnParameters": {
                    "id": 3636,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2963:0:19"
                  },
                  "scope": 3998,
                  "src": "2781:1214:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3093
                  ],
                  "body": {
                    "id": 3746,
                    "nodeType": "Block",
                    "src": "4122:138:19",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 3737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3732,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3726,
                              "src": "4151:11:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3734,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3094,
                                    "src": "4171:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 3733,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "4166:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4166:13:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3094",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 3736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4180:11:19",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "4166:25:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "4151:40:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 3743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3738,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3726,
                              "src": "4207:11:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3740,
                                    "name": "IDNSRegistrar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4024,
                                    "src": "4227:13:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IDNSRegistrar_$4024_$",
                                      "typeString": "type(contract IDNSRegistrar)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IDNSRegistrar_$4024_$",
                                      "typeString": "type(contract IDNSRegistrar)"
                                    }
                                  ],
                                  "id": 3739,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "4222:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4222:19:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IDNSRegistrar_$4024",
                                  "typeString": "type(contract IDNSRegistrar)"
                                }
                              },
                              "id": 3742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4242:11:19",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "4222:31:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "4207:46:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4151:102:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3731,
                        "id": 3745,
                        "nodeType": "Return",
                        "src": "4132:121:19"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3747,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "4010:17:19",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3728,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4086:8:19"
                  },
                  "parameters": {
                    "id": 3727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3726,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "4035:11:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3747,
                        "src": "4028:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3725,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4028:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4027:20:19"
                  },
                  "returnParameters": {
                    "id": 3731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3730,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3747,
                        "src": "4112:4:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3729,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4112:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4111:6:19"
                  },
                  "scope": 3998,
                  "src": "4001:259:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3861,
                    "nodeType": "Block",
                    "src": "4480:956:19",
                    "statements": [
                      {
                        "assignments": [
                          3763,
                          3765
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3763,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "4504:4:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3861,
                            "src": "4491:17:19",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3762,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4491:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3765,
                            "mutability": "mutable",
                            "name": "inception",
                            "nameLocation": "4517:9:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3861,
                            "src": "4510:16:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 3764,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4510:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3770,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3768,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3753,
                              "src": "4549:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              }
                            ],
                            "expression": {
                              "id": 3766,
                              "name": "oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3464,
                              "src": "4530:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DNSSEC_$5064",
                                "typeString": "contract DNSSEC"
                              }
                            },
                            "id": 3767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4537:11:19",
                            "memberName": "verifyRRSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5050,
                            "src": "4530:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_uint32_$",
                              "typeString": "function (struct DNSSEC.RRSetWithSignature memory[] memory) view external returns (bytes memory,uint32)"
                            }
                          },
                          "id": 3769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4530:25:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_uint32_$",
                            "typeString": "tuple(bytes memory,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4490:65:19"
                      },
                      {
                        "assignments": [
                          3772
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3772,
                            "mutability": "mutable",
                            "name": "labelLen",
                            "nameLocation": "4605:8:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3861,
                            "src": "4597:16:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3771,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4597:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3777,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 3775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4631:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 3773,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3749,
                              "src": "4616:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4621:9:19",
                            "memberName": "readUint8",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4552,
                            "src": "4616:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                            }
                          },
                          "id": 3776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4616:17:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4597:36:19"
                      },
                      {
                        "expression": {
                          "id": 3784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3778,
                            "name": "labelHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3758,
                            "src": "4643:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 3781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4667:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              {
                                "id": 3782,
                                "name": "labelLen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3772,
                                "src": "4670:8:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3779,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3749,
                                "src": "4655:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4660:6:19",
                              "memberName": "keccak",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4263,
                              "src": "4655:11:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 3783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4655:24:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4643:36:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3785,
                        "nodeType": "ExpressionStatement",
                        "src": "4643:36:19"
                      },
                      {
                        "assignments": [
                          3787
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3787,
                            "mutability": "mutable",
                            "name": "parentName",
                            "nameLocation": "4761:10:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3861,
                            "src": "4748:23:19",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3786,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4748:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3800,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3792,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3790,
                                "name": "labelLen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3772,
                                "src": "4802:8:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4813:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4802:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 3793,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3749,
                                    "src": "4828:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4833:6:19",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "4828:11:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 3795,
                                  "name": "labelLen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3772,
                                  "src": "4842:8:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4828:22:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4853:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4828:26:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 3788,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3749,
                              "src": "4774:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4779:9:19",
                            "memberName": "substring",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4745,
                            "src": "4774:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 3799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4774:90:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4748:116:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3804,
                                  "name": "parentName",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3787,
                                  "src": "4919:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 3802,
                                  "name": "suffixes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3467,
                                  "src": "4895:8:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PublicSuffixList_$4034",
                                    "typeString": "contract PublicSuffixList"
                                  }
                                },
                                "id": 3803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4904:14:19",
                                "memberName": "isPublicSuffix",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4033,
                                "src": "4895:23:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (bytes memory) view external returns (bool)"
                                }
                              },
                              "id": 3805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4895:35:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "506172656e74206e616d65206d7573742062652061207075626c696320737566666978",
                              "id": 3806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4944:37:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5df6cb05960cf5aa4f7482cb9ceb06b354899f3958a55d842cf18bd9cb0b227a",
                                "typeString": "literal_string \"Parent name must be a public suffix\""
                              },
                              "value": "Parent name must be a public suffix"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5df6cb05960cf5aa4f7482cb9ceb06b354899f3958a55d842cf18bd9cb0b227a",
                                "typeString": "literal_string \"Parent name must be a public suffix\""
                              }
                            ],
                            "id": 3801,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4874:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4874:117:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3808,
                        "nodeType": "ExpressionStatement",
                        "src": "4874:117:19"
                      },
                      {
                        "expression": {
                          "id": 3814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3809,
                            "name": "parentNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3756,
                            "src": "5050:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3811,
                                "name": "parentName",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3787,
                                "src": "5074:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 3812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5086:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3810,
                              "name": "enableNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3997,
                              "src": "5063:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory,uint256) returns (bytes32)"
                              }
                            },
                            "id": 3813,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5063:25:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5050:38:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3815,
                        "nodeType": "ExpressionStatement",
                        "src": "5050:38:19"
                      },
                      {
                        "assignments": [
                          3817
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3817,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "5107:4:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3861,
                            "src": "5099:12:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3816,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5099:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3825,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3821,
                                  "name": "parentNode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3756,
                                  "src": "5141:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 3822,
                                  "name": "labelHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3758,
                                  "src": "5153:9:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 3819,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5124:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "5128:12:19",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "5124:16:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5124:39:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3818,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "5114:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5114:50:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5099:65:19"
                      },
                      {
                        "condition": {
                          "id": 3833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5178:53:19",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 3828,
                                "name": "inception",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3765,
                                "src": "5203:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 3829,
                                  "name": "inceptions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3471,
                                  "src": "5214:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint32_$",
                                    "typeString": "mapping(bytes32 => uint32)"
                                  }
                                },
                                "id": 3831,
                                "indexExpression": {
                                  "id": 3830,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3817,
                                  "src": "5225:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5214:16:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "expression": {
                                "id": 3826,
                                "name": "RRUtils",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7059,
                                "src": "5179:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                  "typeString": "type(library RRUtils)"
                                }
                              },
                              "id": 3827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5187:15:19",
                              "memberName": "serialNumberGte",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6855,
                              "src": "5179:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                "typeString": "function (uint32,uint32) pure returns (bool)"
                              }
                            },
                            "id": 3832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5179:52:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3838,
                        "nodeType": "IfStatement",
                        "src": "5174:103:19",
                        "trueBody": {
                          "id": 3837,
                          "nodeType": "Block",
                          "src": "5233:44:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3834,
                                  "name": "StaleProof",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3475,
                                  "src": "5254:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3835,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5254:12:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3836,
                              "nodeType": "RevertStatement",
                              "src": "5247:19:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 3843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3839,
                              "name": "inceptions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3471,
                              "src": "5286:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint32_$",
                                "typeString": "mapping(bytes32 => uint32)"
                              }
                            },
                            "id": 3841,
                            "indexExpression": {
                              "id": 3840,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3817,
                              "src": "5297:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5286:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3842,
                            "name": "inception",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3765,
                            "src": "5305:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "5286:28:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 3844,
                        "nodeType": "ExpressionStatement",
                        "src": "5286:28:19"
                      },
                      {
                        "expression": {
                          "id": 3852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 3845,
                                "name": "addr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3760,
                                "src": "5326:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              null
                            ],
                            "id": 3846,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5325:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$__$",
                              "typeString": "tuple(address,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3849,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3749,
                                "src": "5368:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 3850,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3763,
                                "src": "5374:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 3847,
                                "name": "DNSClaimChecker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3431,
                                "src": "5336:15:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DNSClaimChecker_$3431_$",
                                  "typeString": "type(library DNSClaimChecker)"
                                }
                              },
                              "id": 3848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5352:15:19",
                              "memberName": "getOwnerAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3204,
                              "src": "5336:31:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$_t_bool_$",
                                "typeString": "function (bytes memory,bytes memory) pure returns (address,bool)"
                              }
                            },
                            "id": 3851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5336:43:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                              "typeString": "tuple(address,bool)"
                            }
                          },
                          "src": "5325:54:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3853,
                        "nodeType": "ExpressionStatement",
                        "src": "5325:54:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3855,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3817,
                              "src": "5401:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3856,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3760,
                              "src": "5407:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3857,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3749,
                              "src": "5413:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3858,
                              "name": "inception",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3765,
                              "src": "5419:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 3854,
                            "name": "Claim",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3494,
                            "src": "5395:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$",
                              "typeString": "function (bytes32,address,bytes memory,uint32)"
                            }
                          },
                          "id": 3859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5395:34:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3860,
                        "nodeType": "EmitStatement",
                        "src": "5390:39:19"
                      }
                    ]
                  },
                  "id": 3862,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_claim",
                  "nameLocation": "4275:6:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3749,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "4295:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3862,
                        "src": "4282:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3748,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4282:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3753,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "4336:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3862,
                        "src": "4301:40:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3751,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 3750,
                              "name": "DNSSEC.RRSetWithSignature",
                              "nameLocations": [
                                "4301:6:19",
                                "4308:18:19"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "4301:25:19"
                            },
                            "referencedDeclaration": 5027,
                            "src": "4301:25:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 3752,
                          "nodeType": "ArrayTypeName",
                          "src": "4301:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4281:61:19"
                  },
                  "returnParameters": {
                    "id": 3761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3756,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "4398:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3862,
                        "src": "4390:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3755,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4390:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3758,
                        "mutability": "mutable",
                        "name": "labelHash",
                        "nameLocation": "4430:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3862,
                        "src": "4422:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3757,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4422:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3760,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "4461:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3862,
                        "src": "4453:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3759,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4453:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4376:99:19"
                  },
                  "scope": 3998,
                  "src": "4266:1170:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3996,
                    "nodeType": "Block",
                    "src": "5551:828:19",
                    "statements": [
                      {
                        "assignments": [
                          3872
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3872,
                            "mutability": "mutable",
                            "name": "len",
                            "nameLocation": "5569:3:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3996,
                            "src": "5561:11:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3871,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5561:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3877,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3875,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3866,
                              "src": "5592:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 3873,
                              "name": "domain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3864,
                              "src": "5575:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5582:9:19",
                            "memberName": "readUint8",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4552,
                            "src": "5575:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                            }
                          },
                          "id": 3876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5575:24:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5561:38:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3878,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3872,
                            "src": "5613:3:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5620:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5613:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3887,
                        "nodeType": "IfStatement",
                        "src": "5609:56:19",
                        "trueBody": {
                          "id": 3886,
                          "nodeType": "Block",
                          "src": "5623:42:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3883,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5652:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5644:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 3881,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5644:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5644:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 3870,
                              "id": 3885,
                              "nodeType": "Return",
                              "src": "5637:17:19"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          3889
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3889,
                            "mutability": "mutable",
                            "name": "parentNode",
                            "nameLocation": "5683:10:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3996,
                            "src": "5675:18:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3888,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5675:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3898,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3891,
                              "name": "domain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3864,
                              "src": "5707:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3892,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3866,
                                  "src": "5715:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 3893,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3872,
                                  "src": "5724:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5715:12:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5730:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "5715:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3890,
                            "name": "enableNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3997,
                            "src": "5696:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory,uint256) returns (bytes32)"
                            }
                          },
                          "id": 3897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5696:36:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5675:57:19"
                      },
                      {
                        "assignments": [
                          3900
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3900,
                            "mutability": "mutable",
                            "name": "label",
                            "nameLocation": "5750:5:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3996,
                            "src": "5742:13:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3899,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5742:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3908,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3903,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3866,
                                "src": "5772:6:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5781:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "5772:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3906,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3872,
                              "src": "5784:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 3901,
                              "name": "domain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3864,
                              "src": "5758:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3902,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5765:6:19",
                            "memberName": "keccak",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4263,
                            "src": "5758:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 3907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5758:30:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5742:46:19"
                      },
                      {
                        "expression": {
                          "id": 3917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3909,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3869,
                            "src": "5798:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3913,
                                    "name": "parentNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3889,
                                    "src": "5832:10:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3914,
                                    "name": "label",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3900,
                                    "src": "5844:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3911,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "5815:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 3912,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "5819:12:19",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "5815:16:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 3915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5815:35:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3910,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "5805:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5805:46:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5798:53:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3918,
                        "nodeType": "ExpressionStatement",
                        "src": "5798:53:19"
                      },
                      {
                        "assignments": [
                          3920
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3920,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "5869:5:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3996,
                            "src": "5861:13:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3919,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5861:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3925,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3923,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3869,
                              "src": "5887:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 3921,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3461,
                              "src": "5877:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 3922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5881:5:19",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12126,
                            "src": "5877:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 3924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5877:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5861:31:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3927,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3920,
                                  "src": "5923:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 3930,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5940:1:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 3929,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5932:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3928,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5932:7:19",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3931,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5932:10:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5923:19:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3933,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3920,
                                  "src": "5946:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 3936,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "5963:4:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                        "typeString": "contract DNSRegistrar"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                        "typeString": "contract DNSRegistrar"
                                      }
                                    ],
                                    "id": 3935,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5955:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3934,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5955:7:19",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3937,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5955:13:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5946:22:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5923:45:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "43616e6e6f7420656e61626c652061206e616d65206f776e656420627920736f6d656f6e6520656c7365",
                              "id": 3940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5982:44:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_63425cf3a05c76cf1155c52bcdbd99eb1081a9ada1a588d0e70852574c220981",
                                "typeString": "literal_string \"Cannot enable a name owned by someone else\""
                              },
                              "value": "Cannot enable a name owned by someone else"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_63425cf3a05c76cf1155c52bcdbd99eb1081a9ada1a588d0e70852574c220981",
                                "typeString": "literal_string \"Cannot enable a name owned by someone else\""
                              }
                            ],
                            "id": 3926,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5902:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5902:134:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3942,
                        "nodeType": "ExpressionStatement",
                        "src": "5902:134:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3943,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3920,
                            "src": "6050:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 3946,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6067:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                  "typeString": "contract DNSRegistrar"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                  "typeString": "contract DNSRegistrar"
                                }
                              ],
                              "id": 3945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6059:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3944,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6059:7:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6059:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6050:22:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3993,
                        "nodeType": "IfStatement",
                        "src": "6046:306:19",
                        "trueBody": {
                          "id": 3992,
                          "nodeType": "Block",
                          "src": "6074:278:19",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 3954,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3949,
                                  "name": "parentNode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3889,
                                  "src": "6092:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 3952,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6114:1:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 3951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6106:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 3950,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6106:7:19",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6106:10:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "6092:24:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3990,
                                "nodeType": "Block",
                                "src": "6256:86:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3982,
                                          "name": "parentNode",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3889,
                                          "src": "6294:10:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "id": 3983,
                                          "name": "label",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3900,
                                          "src": "6306:5:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 3986,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "6321:4:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                                "typeString": "contract DNSRegistrar"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                                "typeString": "contract DNSRegistrar"
                                              }
                                            ],
                                            "id": 3985,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "6313:7:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 3984,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "6313:7:19",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 3987,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6313:13:19",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3979,
                                          "name": "ens",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3461,
                                          "src": "6274:3:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ENS_$12157",
                                            "typeString": "contract ENS"
                                          }
                                        },
                                        "id": 3981,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "6278:15:19",
                                        "memberName": "setSubnodeOwner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12091,
                                        "src": "6274:19:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                                        }
                                      },
                                      "id": 3988,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6274:53:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 3989,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6274:53:19"
                                  }
                                ]
                              },
                              "id": 3991,
                              "nodeType": "IfStatement",
                              "src": "6088:254:19",
                              "trueBody": {
                                "id": 3978,
                                "nodeType": "Block",
                                "src": "6118:132:19",
                                "statements": [
                                  {
                                    "assignments": [
                                      3957
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 3957,
                                        "mutability": "mutable",
                                        "name": "root",
                                        "nameLocation": "6141:4:19",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 3978,
                                        "src": "6136:9:19",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Root_$15844",
                                          "typeString": "contract Root"
                                        },
                                        "typeName": {
                                          "id": 3956,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 3955,
                                            "name": "Root",
                                            "nameLocations": [
                                              "6136:4:19"
                                            ],
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 15844,
                                            "src": "6136:4:19"
                                          },
                                          "referencedDeclaration": 15844,
                                          "src": "6136:4:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Root_$15844",
                                            "typeString": "contract Root"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 3967,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "hexValue": "30",
                                                  "id": 3963,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "6171:1:19",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  }
                                                ],
                                                "id": 3962,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "6163:7:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                                  "typeString": "type(bytes32)"
                                                },
                                                "typeName": {
                                                  "id": 3961,
                                                  "name": "bytes32",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "6163:7:19",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 3964,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6163:10:19",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            ],
                                            "expression": {
                                              "id": 3959,
                                              "name": "ens",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3461,
                                              "src": "6153:3:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ENS_$12157",
                                                "typeString": "contract ENS"
                                              }
                                            },
                                            "id": 3960,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6157:5:19",
                                            "memberName": "owner",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12126,
                                            "src": "6153:9:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                              "typeString": "function (bytes32) view external returns (address)"
                                            }
                                          },
                                          "id": 3965,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6153:21:19",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 3958,
                                        "name": "Root",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15844,
                                        "src": "6148:4:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Root_$15844_$",
                                          "typeString": "type(contract Root)"
                                        }
                                      },
                                      "id": 3966,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6148:27:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Root_$15844",
                                        "typeString": "contract Root"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6136:39:19"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3971,
                                          "name": "label",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3900,
                                          "src": "6214:5:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 3974,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "6229:4:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                                "typeString": "contract DNSRegistrar"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_DNSRegistrar_$3998",
                                                "typeString": "contract DNSRegistrar"
                                              }
                                            ],
                                            "id": 3973,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "6221:7:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 3972,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "6221:7:19",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 3975,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6221:13:19",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3968,
                                          "name": "root",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3957,
                                          "src": "6193:4:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Root_$15844",
                                            "typeString": "contract Root"
                                          }
                                        },
                                        "id": 3970,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "6198:15:19",
                                        "memberName": "setSubnodeOwner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15798,
                                        "src": "6193:20:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                          "typeString": "function (bytes32,address) external"
                                        }
                                      },
                                      "id": 3976,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6193:42:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3977,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6193:42:19"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 3994,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3869,
                          "src": "6368:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 3870,
                        "id": 3995,
                        "nodeType": "Return",
                        "src": "6361:11:19"
                      }
                    ]
                  },
                  "id": 3997,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "enableNode",
                  "nameLocation": "5451:10:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3867,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3864,
                        "mutability": "mutable",
                        "name": "domain",
                        "nameLocation": "5475:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3997,
                        "src": "5462:19:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3863,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5462:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3866,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "5491:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3997,
                        "src": "5483:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3865,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5483:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5461:37:19"
                  },
                  "returnParameters": {
                    "id": 3870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3869,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "5541:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3997,
                        "src": "5533:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3868,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5533:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5532:14:19"
                  },
                  "scope": 3998,
                  "src": "5442:937:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3999,
              "src": "728:5653:19",
              "usedErrors": [
                3473,
                3475
              ]
            }
          ],
          "src": "32:6350:19"
        },
        "id": 19
      },
      "contracts/dnsregistrar/IDNSRegistrar.sol": {
        "ast": {
          "absolutePath": "contracts/dnsregistrar/IDNSRegistrar.sol",
          "exportedSymbols": {
            "DNSSEC": [
              5064
            ],
            "IDNSRegistrar": [
              4024
            ]
          },
          "id": 4025,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4000,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:23:20"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/DNSSEC.sol",
              "file": "../dnssec-oracle/DNSSEC.sol",
              "id": 4001,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4025,
              "sourceUnit": 5065,
              "src": "56:37:20",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IDNSRegistrar",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 4024,
              "linearizedBaseContracts": [
                4024
              ],
              "name": "IDNSRegistrar",
              "nameLocation": "105:13:20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "29d56630",
                  "id": 4010,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proveAndClaim",
                  "nameLocation": "134:13:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4003,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "170:4:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 4010,
                        "src": "157:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4002,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "157:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4007,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "219:5:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 4010,
                        "src": "184:40:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4005,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4004,
                              "name": "DNSSEC.RRSetWithSignature",
                              "nameLocations": [
                                "184:6:20",
                                "191:18:20"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "184:25:20"
                            },
                            "referencedDeclaration": 5027,
                            "src": "184:25:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 4006,
                          "nodeType": "ArrayTypeName",
                          "src": "184:27:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "147:83:20"
                  },
                  "returnParameters": {
                    "id": 4009,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "239:0:20"
                  },
                  "scope": 4024,
                  "src": "125:115:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "06963218",
                  "id": 4023,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proveAndClaimWithResolver",
                  "nameLocation": "255:25:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4012,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "303:4:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 4023,
                        "src": "290:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4011,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "290:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4016,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "352:5:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 4023,
                        "src": "317:40:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4014,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4013,
                              "name": "DNSSEC.RRSetWithSignature",
                              "nameLocations": [
                                "317:6:20",
                                "324:18:20"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "317:25:20"
                            },
                            "referencedDeclaration": 5027,
                            "src": "317:25:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 4015,
                          "nodeType": "ArrayTypeName",
                          "src": "317:27:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4018,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "375:8:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 4023,
                        "src": "367:16:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4017,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "367:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4020,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "401:4:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 4023,
                        "src": "393:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4019,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "393:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "280:131:20"
                  },
                  "returnParameters": {
                    "id": 4022,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "420:0:20"
                  },
                  "scope": 4024,
                  "src": "246:175:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4025,
              "src": "95:328:20",
              "usedErrors": []
            }
          ],
          "src": "31:393:20"
        },
        "id": 20
      },
      "contracts/dnsregistrar/PublicSuffixList.sol": {
        "ast": {
          "absolutePath": "contracts/dnsregistrar/PublicSuffixList.sol",
          "exportedSymbols": {
            "PublicSuffixList": [
              4034
            ]
          },
          "id": 4035,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4026,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:21"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "PublicSuffixList",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 4034,
              "linearizedBaseContracts": [
                4034
              ],
              "name": "PublicSuffixList",
              "nameLocation": "35:16:21",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "4f89059e",
                  "id": 4033,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isPublicSuffix",
                  "nameLocation": "67:14:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4029,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4028,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "97:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 4033,
                        "src": "82:19:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4027,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "82:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "81:21:21"
                  },
                  "returnParameters": {
                    "id": 4032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4031,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4033,
                        "src": "126:4:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4030,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "126:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "125:6:21"
                  },
                  "scope": 4034,
                  "src": "58:74:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4035,
              "src": "25:109:21",
              "usedErrors": []
            }
          ],
          "src": "0:135:21"
        },
        "id": 21
      },
      "contracts/dnsregistrar/RecordParser.sol": {
        "ast": {
          "absolutePath": "contracts/dnsregistrar/RecordParser.sol",
          "exportedSymbols": {
            "BytesUtils": [
              5017
            ],
            "RecordParser": [
              4142
            ]
          },
          "id": 4143,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4036,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:22"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../dnssec-oracle/BytesUtils.sol",
              "id": 4037,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4143,
              "sourceUnit": 5018,
              "src": "58:41:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "RecordParser",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 4142,
              "linearizedBaseContracts": [
                4142
              ],
              "name": "RecordParser",
              "nameLocation": "109:12:22",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 4040,
                  "libraryName": {
                    "id": 4038,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "134:10:22"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "134:10:22"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "128:27:22",
                  "typeName": {
                    "id": 4039,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "149:5:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "body": {
                    "id": 4140,
                    "nodeType": "Block",
                    "src": "582:568:22",
                    "statements": [
                      {
                        "assignments": [
                          4057
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4057,
                            "mutability": "mutable",
                            "name": "separator",
                            "nameLocation": "600:9:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 4140,
                            "src": "592:17:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4056,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "592:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4064,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4060,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4045,
                              "src": "623:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4061,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4047,
                              "src": "631:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "3d",
                              "id": 4062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "636:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f16",
                                "typeString": "literal_string \"=\""
                              },
                              "value": "="
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f16",
                                "typeString": "literal_string \"=\""
                              }
                            ],
                            "expression": {
                              "id": 4058,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4043,
                              "src": "612:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "618:4:22",
                            "memberName": "find",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5016,
                            "src": "612:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes1_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256,bytes1) pure returns (uint256)"
                            }
                          },
                          "id": 4063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "612:28:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "592:48:22"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4065,
                            "name": "separator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4057,
                            "src": "654:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4068,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "672:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 4067,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "672:7:22",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 4066,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "667:4:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "667:13:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 4070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "681:3:22",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "667:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "654:30:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4082,
                        "nodeType": "IfStatement",
                        "src": "650:95:22",
                        "trueBody": {
                          "id": 4081,
                          "nodeType": "Block",
                          "src": "686:59:22",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "hexValue": "",
                                    "id": 4072,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "708:2:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 4073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "712:2:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 4076,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "721:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 4075,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "721:7:22",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          }
                                        ],
                                        "id": 4074,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "716:4:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 4077,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "716:13:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_uint256",
                                        "typeString": "type(uint256)"
                                      }
                                    },
                                    "id": 4078,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "730:3:22",
                                    "memberName": "max",
                                    "nodeType": "MemberAccess",
                                    "src": "716:17:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4079,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "707:27:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_$_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_$_t_uint256_$",
                                  "typeString": "tuple(literal_string \"\",literal_string \"\",uint256)"
                                }
                              },
                              "functionReturnParameters": 4055,
                              "id": 4080,
                              "nodeType": "Return",
                              "src": "700:34:22"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4084
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4084,
                            "mutability": "mutable",
                            "name": "terminator",
                            "nameLocation": "763:10:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 4140,
                            "src": "755:18:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4083,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "755:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4095,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4087,
                              "name": "separator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4057,
                              "src": "800:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4088,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4047,
                                  "src": "823:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 4089,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4045,
                                  "src": "829:6:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "823:12:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 4091,
                                "name": "separator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4057,
                                "src": "838:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "823:24:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "20",
                              "id": 4093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "861:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_681afa780d17da29203322b473d3f210a7d621259a4e6ce9e403f5a266ff719a",
                                "typeString": "literal_string \" \""
                              },
                              "value": " "
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_681afa780d17da29203322b473d3f210a7d621259a4e6ce9e403f5a266ff719a",
                                "typeString": "literal_string \" \""
                              }
                            ],
                            "expression": {
                              "id": 4085,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4043,
                              "src": "776:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "782:4:22",
                            "memberName": "find",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5016,
                            "src": "776:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes1_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256,bytes1) pure returns (uint256)"
                            }
                          },
                          "id": 4094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "776:98:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "755:119:22"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4096,
                            "name": "terminator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4084,
                            "src": "888:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4099,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "907:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 4098,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "907:7:22",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 4097,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "902:4:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "902:13:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 4101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "916:3:22",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "902:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "888:31:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4109,
                        "nodeType": "IfStatement",
                        "src": "884:87:22",
                        "trueBody": {
                          "id": 4108,
                          "nodeType": "Block",
                          "src": "921:50:22",
                          "statements": [
                            {
                              "expression": {
                                "id": 4106,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4103,
                                  "name": "terminator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4084,
                                  "src": "935:10:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 4104,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4043,
                                    "src": "948:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 4105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "954:6:22",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "948:12:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "935:25:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4107,
                              "nodeType": "ExpressionStatement",
                              "src": "935:25:22"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 4118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4110,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4050,
                            "src": "981:3:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 4113,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4045,
                                "src": "1003:6:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4114,
                                  "name": "separator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4057,
                                  "src": "1011:9:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 4115,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4045,
                                  "src": "1023:6:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1011:18:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 4111,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4043,
                                "src": "987:5:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "993:9:22",
                              "memberName": "substring",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4745,
                              "src": "987:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 4117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "987:43:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "981:49:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 4119,
                        "nodeType": "ExpressionStatement",
                        "src": "981:49:22"
                      },
                      {
                        "expression": {
                          "id": 4132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4120,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4052,
                            "src": "1040:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4123,
                                  "name": "separator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4057,
                                  "src": "1064:9:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1076:1:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1064:13:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4126,
                                    "name": "terminator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4084,
                                    "src": "1079:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 4127,
                                    "name": "separator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4057,
                                    "src": "1092:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1079:22:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1104:1:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1079:26:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 4121,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4043,
                                "src": "1048:5:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1054:9:22",
                              "memberName": "substring",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4745,
                              "src": "1048:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 4131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1048:58:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "1040:66:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 4133,
                        "nodeType": "ExpressionStatement",
                        "src": "1040:66:22"
                      },
                      {
                        "expression": {
                          "id": 4138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4134,
                            "name": "nextOffset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4054,
                            "src": "1116:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4135,
                              "name": "terminator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4084,
                              "src": "1129:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 4136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1142:1:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1129:14:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1116:27:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4139,
                        "nodeType": "ExpressionStatement",
                        "src": "1116:27:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4041,
                    "nodeType": "StructuredDocumentation",
                    "src": "161:160:22",
                    "text": " @dev Parses a key-value record into a key and value.\n @param input The input string\n @param offset The offset to start reading at"
                  },
                  "id": 4141,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readKeyValue",
                  "nameLocation": "335:12:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4048,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4043,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "370:5:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 4141,
                        "src": "357:18:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4042,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "357:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4045,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "393:6:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 4141,
                        "src": "385:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4044,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "385:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4047,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "417:3:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 4141,
                        "src": "409:11:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4046,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "409:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "347:79:22"
                  },
                  "returnParameters": {
                    "id": 4055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4050,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "500:3:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 4141,
                        "src": "487:16:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4049,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "487:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4052,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "530:5:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 4141,
                        "src": "517:18:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4051,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "517:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4054,
                        "mutability": "mutable",
                        "name": "nextOffset",
                        "nameLocation": "557:10:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 4141,
                        "src": "549:18:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4053,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "549:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "473:104:22"
                  },
                  "scope": 4142,
                  "src": "326:824:22",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4143,
              "src": "101:1051:22",
              "usedErrors": []
            }
          ],
          "src": "32:1121:22"
        },
        "id": 22
      },
      "contracts/dnsregistrar/SimplePublicSuffixList.sol": {
        "ast": {
          "absolutePath": "contracts/dnsregistrar/SimplePublicSuffixList.sol",
          "exportedSymbols": {
            "Ownable": [
              15728
            ],
            "PublicSuffixList": [
              4034
            ],
            "SimplePublicSuffixList": [
              4199
            ]
          },
          "id": 4200,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4144,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:23"
            },
            {
              "id": 4145,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "24:33:23"
            },
            {
              "absolutePath": "contracts/root/Ownable.sol",
              "file": "../root/Ownable.sol",
              "id": 4146,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4200,
              "sourceUnit": 15729,
              "src": "59:29:23",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnsregistrar/PublicSuffixList.sol",
              "file": "./PublicSuffixList.sol",
              "id": 4147,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4200,
              "sourceUnit": 4035,
              "src": "89:32:23",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4148,
                    "name": "PublicSuffixList",
                    "nameLocations": [
                      "158:16:23"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4034,
                    "src": "158:16:23"
                  },
                  "id": 4149,
                  "nodeType": "InheritanceSpecifier",
                  "src": "158:16:23"
                },
                {
                  "baseName": {
                    "id": 4150,
                    "name": "Ownable",
                    "nameLocations": [
                      "176:7:23"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15728,
                    "src": "176:7:23"
                  },
                  "id": 4151,
                  "nodeType": "InheritanceSpecifier",
                  "src": "176:7:23"
                }
              ],
              "canonicalName": "SimplePublicSuffixList",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 4199,
              "linearizedBaseContracts": [
                4199,
                15728,
                4034
              ],
              "name": "SimplePublicSuffixList",
              "nameLocation": "132:22:23",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 4155,
                  "mutability": "mutable",
                  "name": "suffixes",
                  "nameLocation": "213:8:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 4199,
                  "src": "190:31:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$",
                    "typeString": "mapping(bytes => bool)"
                  },
                  "typeName": {
                    "id": 4154,
                    "keyType": {
                      "id": 4152,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "198:5:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "190:22:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$",
                      "typeString": "mapping(bytes => bool)"
                    },
                    "valueType": {
                      "id": 4153,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "207:4:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4184,
                    "nodeType": "Block",
                    "src": "294:109:23",
                    "statements": [
                      {
                        "body": {
                          "id": 4182,
                          "nodeType": "Block",
                          "src": "347:50:23",
                          "statements": [
                            {
                              "expression": {
                                "id": 4180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4174,
                                    "name": "suffixes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4155,
                                    "src": "361:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$",
                                      "typeString": "mapping(bytes memory => bool)"
                                    }
                                  },
                                  "id": 4178,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 4175,
                                      "name": "names",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4158,
                                      "src": "370:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "bytes memory[] memory"
                                      }
                                    },
                                    "id": 4177,
                                    "indexExpression": {
                                      "id": 4176,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4164,
                                      "src": "376:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "370:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "361:18:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 4179,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "382:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "361:25:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4181,
                              "nodeType": "ExpressionStatement",
                              "src": "361:25:23"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4167,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4164,
                            "src": "324:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 4168,
                              "name": "names",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4158,
                              "src": "328:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            "id": 4169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "334:6:23",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "328:12:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "324:16:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4183,
                        "initializationExpression": {
                          "assignments": [
                            4164
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4164,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "317:1:23",
                              "nodeType": "VariableDeclaration",
                              "scope": 4183,
                              "src": "309:9:23",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4163,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "309:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4166,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 4165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "321:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "309:13:23"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "342:3:23",
                            "subExpression": {
                              "id": 4171,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4164,
                              "src": "342:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4173,
                          "nodeType": "ExpressionStatement",
                          "src": "342:3:23"
                        },
                        "nodeType": "ForStatement",
                        "src": "304:93:23"
                      }
                    ]
                  },
                  "functionSelector": "6329cdfc",
                  "id": 4185,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 4161,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4160,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "284:9:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15689,
                        "src": "284:9:23"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "284:9:23"
                    }
                  ],
                  "name": "addPublicSuffixes",
                  "nameLocation": "237:17:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4158,
                        "mutability": "mutable",
                        "name": "names",
                        "nameLocation": "270:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 4185,
                        "src": "255:20:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4156,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "255:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 4157,
                          "nodeType": "ArrayTypeName",
                          "src": "255:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "254:22:23"
                  },
                  "returnParameters": {
                    "id": 4162,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "294:0:23"
                  },
                  "scope": 4199,
                  "src": "228:175:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4033
                  ],
                  "body": {
                    "id": 4197,
                    "nodeType": "Block",
                    "src": "528:38:23",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 4193,
                            "name": "suffixes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4155,
                            "src": "545:8:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$",
                              "typeString": "mapping(bytes memory => bool)"
                            }
                          },
                          "id": 4195,
                          "indexExpression": {
                            "id": 4194,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4187,
                            "src": "554:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "545:14:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4192,
                        "id": 4196,
                        "nodeType": "Return",
                        "src": "538:21:23"
                      }
                    ]
                  },
                  "functionSelector": "4f89059e",
                  "id": 4198,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isPublicSuffix",
                  "nameLocation": "418:14:23",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4189,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "492:8:23"
                  },
                  "parameters": {
                    "id": 4188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4187,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "448:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 4198,
                        "src": "433:19:23",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4186,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "433:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "432:21:23"
                  },
                  "returnParameters": {
                    "id": 4192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4191,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4198,
                        "src": "518:4:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4190,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "518:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "517:6:23"
                  },
                  "scope": 4199,
                  "src": "409:157:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4200,
              "src": "123:445:23",
              "usedErrors": []
            }
          ],
          "src": "0:569:23"
        },
        "id": 23
      },
      "contracts/dnsregistrar/TLDPublicSuffixList.sol": {
        "ast": {
          "absolutePath": "contracts/dnsregistrar/TLDPublicSuffixList.sol",
          "exportedSymbols": {
            "BytesUtils": [
              5017
            ],
            "PublicSuffixList": [
              4034
            ],
            "TLDPublicSuffixList": [
              4239
            ]
          },
          "id": 4240,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4201,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:24"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../dnssec-oracle/BytesUtils.sol",
              "id": 4202,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4240,
              "sourceUnit": 5018,
              "src": "25:41:24",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnsregistrar/PublicSuffixList.sol",
              "file": "./PublicSuffixList.sol",
              "id": 4203,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4240,
              "sourceUnit": 4035,
              "src": "67:32:24",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4205,
                    "name": "PublicSuffixList",
                    "nameLocations": [
                      "211:16:24"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4034,
                    "src": "211:16:24"
                  },
                  "id": 4206,
                  "nodeType": "InheritanceSpecifier",
                  "src": "211:16:24"
                }
              ],
              "canonicalName": "TLDPublicSuffixList",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 4204,
                "nodeType": "StructuredDocumentation",
                "src": "101:77:24",
                "text": " @dev A public suffix list that treats all TLDs as public suffixes."
              },
              "fullyImplemented": true,
              "id": 4239,
              "linearizedBaseContracts": [
                4239,
                4034
              ],
              "name": "TLDPublicSuffixList",
              "nameLocation": "188:19:24",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 4209,
                  "libraryName": {
                    "id": 4207,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "240:10:24"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "240:10:24"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "234:27:24",
                  "typeName": {
                    "id": 4208,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "255:5:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "baseFunctions": [
                    4033
                  ],
                  "body": {
                    "id": 4237,
                    "nodeType": "Block",
                    "src": "386:119:24",
                    "statements": [
                      {
                        "assignments": [
                          4218
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4218,
                            "mutability": "mutable",
                            "name": "labellen",
                            "nameLocation": "404:8:24",
                            "nodeType": "VariableDeclaration",
                            "scope": 4237,
                            "src": "396:16:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4217,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "396:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4223,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "430:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 4219,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4211,
                              "src": "415:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 4220,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "420:9:24",
                            "memberName": "readUint8",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4552,
                            "src": "415:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                            }
                          },
                          "id": 4222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "415:17:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "396:36:24"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4224,
                              "name": "labellen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4218,
                              "src": "449:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 4225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "460:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "449:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 4234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4229,
                                    "name": "labellen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4218,
                                    "src": "480:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "491:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "480:12:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 4227,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4211,
                                  "src": "465:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 4228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "470:9:24",
                                "memberName": "readUint8",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4552,
                                "src": "465:14:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                }
                              },
                              "id": 4232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "465:28:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 4233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "497:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "465:33:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "449:49:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4216,
                        "id": 4236,
                        "nodeType": "Return",
                        "src": "442:56:24"
                      }
                    ]
                  },
                  "functionSelector": "4f89059e",
                  "id": 4238,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isPublicSuffix",
                  "nameLocation": "276:14:24",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4213,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "350:8:24"
                  },
                  "parameters": {
                    "id": 4212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4211,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "306:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 4238,
                        "src": "291:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4210,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "291:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "290:21:24"
                  },
                  "returnParameters": {
                    "id": 4216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4215,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4238,
                        "src": "376:4:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4214,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:6:24"
                  },
                  "scope": 4239,
                  "src": "267:238:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4240,
              "src": "179:328:24",
              "usedErrors": []
            }
          ],
          "src": "0:508:24"
        },
        "id": 24
      },
      "contracts/dnssec-oracle/BytesUtils.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
          "exportedSymbols": {
            "BytesUtils": [
              5017
            ]
          },
          "id": 5018,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4241,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:25"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "BytesUtils",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 5017,
              "linearizedBaseContracts": [
                5017
              ],
              "name": "BytesUtils",
              "nameLocation": "33:10:25",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4262,
                    "nodeType": "Block",
                    "src": "441:144:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4253,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4245,
                                  "src": "459:6:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 4254,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4247,
                                  "src": "468:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "459:12:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4256,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4243,
                                  "src": "475:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "480:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "475:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "459:27:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4252,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "451:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "451:36:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4260,
                        "nodeType": "ExpressionStatement",
                        "src": "451:36:25"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "506:73:25",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "520:49:25",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "self",
                                            "nodeType": "YulIdentifier",
                                            "src": "545:4:25"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "551:2:25",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "541:3:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "541:13:25"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "556:6:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "537:3:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "537:26:25"
                                  },
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "565:3:25"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "527:9:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "527:42:25"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "520:3:25"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4247,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "565:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4245,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "556:6:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4250,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "520:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4243,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "545:4:25",
                            "valueSize": 1
                          }
                        ],
                        "id": 4261,
                        "nodeType": "InlineAssembly",
                        "src": "497:82:25"
                      }
                    ]
                  },
                  "id": 4263,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "keccak",
                  "nameLocation": "320:6:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4243,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "349:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4263,
                        "src": "336:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4242,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "336:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4245,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "371:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4263,
                        "src": "363:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4244,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "363:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4247,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "395:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4263,
                        "src": "387:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4246,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "387:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "326:78:25"
                  },
                  "returnParameters": {
                    "id": 4251,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4250,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "436:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4263,
                        "src": "428:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4249,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "428:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "427:13:25"
                  },
                  "scope": 5017,
                  "src": "311:274:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4283,
                    "nodeType": "Block",
                    "src": "1063:77:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4273,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4265,
                              "src": "1088:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1094:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "id": 4275,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4265,
                                "src": "1097:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1102:6:25",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1097:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4277,
                              "name": "other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4267,
                              "src": "1110:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1117:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "id": 4279,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4267,
                                "src": "1120:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1126:6:25",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1120:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4272,
                            "name": "compare",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4284,
                              4421
                            ],
                            "referencedDeclaration": 4421,
                            "src": "1080:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"
                            }
                          },
                          "id": 4281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1080:53:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4271,
                        "id": 4282,
                        "nodeType": "Return",
                        "src": "1073:60:25"
                      }
                    ]
                  },
                  "id": 4284,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "compare",
                  "nameLocation": "957:7:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4265,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "978:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4284,
                        "src": "965:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4264,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "965:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4267,
                        "mutability": "mutable",
                        "name": "other",
                        "nameLocation": "997:5:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4284,
                        "src": "984:18:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4266,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "984:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "964:39:25"
                  },
                  "returnParameters": {
                    "id": 4271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4270,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4284,
                        "src": "1051:6:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4269,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1051:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1050:8:25"
                  },
                  "scope": 5017,
                  "src": "948:192:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4420,
                    "nodeType": "Block",
                    "src": "1974:1039:25",
                    "statements": [
                      {
                        "assignments": [
                          4302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4302,
                            "mutability": "mutable",
                            "name": "shortest",
                            "nameLocation": "1992:8:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4420,
                            "src": "1984:16:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4301,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1984:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4304,
                        "initialValue": {
                          "id": 4303,
                          "name": "len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "2003:3:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1984:22:25"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4305,
                            "name": "otherlen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4296,
                            "src": "2020:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 4306,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4290,
                            "src": "2031:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2020:14:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4312,
                        "nodeType": "IfStatement",
                        "src": "2016:39:25",
                        "trueBody": {
                          "expression": {
                            "id": 4310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 4308,
                              "name": "shortest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4302,
                              "src": "2036:8:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 4309,
                              "name": "otherlen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4296,
                              "src": "2047:8:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2036:19:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4311,
                          "nodeType": "ExpressionStatement",
                          "src": "2036:19:25"
                        }
                      },
                      {
                        "assignments": [
                          4314
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4314,
                            "mutability": "mutable",
                            "name": "selfptr",
                            "nameLocation": "2074:7:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4420,
                            "src": "2066:15:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4313,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2066:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4315,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2066:15:25"
                      },
                      {
                        "assignments": [
                          4317
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4317,
                            "mutability": "mutable",
                            "name": "otherptr",
                            "nameLocation": "2099:8:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4420,
                            "src": "2091:16:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4316,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2091:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4318,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2091:16:25"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2127:118:25",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2141:37:25",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "self",
                                    "nodeType": "YulIdentifier",
                                    "src": "2156:4:25"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2166:6:25"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2174:2:25",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2162:3:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2162:15:25"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2152:26:25"
                              },
                              "variableNames": [
                                {
                                  "name": "selfptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2141:7:25"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2191:44:25",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "other",
                                    "nodeType": "YulIdentifier",
                                    "src": "2207:5:25"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "otheroffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2218:11:25"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2231:2:25",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2214:3:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2214:20:25"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2203:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2203:32:25"
                              },
                              "variableNames": [
                                {
                                  "name": "otherptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2191:8:25"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4288,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2166:6:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4292,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2207:5:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4294,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2218:11:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4317,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2191:8:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4286,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2156:4:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4314,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2141:7:25",
                            "valueSize": 1
                          }
                        ],
                        "id": 4319,
                        "nodeType": "InlineAssembly",
                        "src": "2118:127:25"
                      },
                      {
                        "body": {
                          "id": 4408,
                          "nodeType": "Block",
                          "src": "2303:656:25",
                          "statements": [
                            {
                              "assignments": [
                                4332
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4332,
                                  "mutability": "mutable",
                                  "name": "a",
                                  "nameLocation": "2325:1:25",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4408,
                                  "src": "2317:9:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4331,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2317:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4333,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2317:9:25"
                            },
                            {
                              "assignments": [
                                4335
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4335,
                                  "mutability": "mutable",
                                  "name": "b",
                                  "nameLocation": "2348:1:25",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4408,
                                  "src": "2340:9:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4334,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2340:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4336,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2340:9:25"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "2372:88:25",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2390:19:25",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "selfptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2401:7:25"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2395:5:25"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2395:14:25"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "a",
                                        "nodeType": "YulIdentifier",
                                        "src": "2390:1:25"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2426:20:25",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "otherptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2437:8:25"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2431:5:25"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2431:15:25"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "2426:1:25"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 4332,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2390:1:25",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4335,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2426:1:25",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4317,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2437:8:25",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4314,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2401:7:25",
                                  "valueSize": 1
                                }
                              ],
                              "id": 4337,
                              "nodeType": "InlineAssembly",
                              "src": "2363:97:25"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4338,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4332,
                                  "src": "2477:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 4339,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4335,
                                  "src": "2482:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2477:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4399,
                              "nodeType": "IfStatement",
                              "src": "2473:421:25",
                              "trueBody": {
                                "id": 4398,
                                "nodeType": "Block",
                                "src": "2485:409:25",
                                "statements": [
                                  {
                                    "assignments": [
                                      4342
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4342,
                                        "mutability": "mutable",
                                        "name": "mask",
                                        "nameLocation": "2572:4:25",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 4398,
                                        "src": "2564:12:25",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4341,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2564:7:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4343,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2564:12:25"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4346,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4344,
                                        "name": "shortest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4302,
                                        "src": "2598:8:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "hexValue": "3332",
                                        "id": 4345,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2609:2:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      },
                                      "src": "2598:13:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 4374,
                                      "nodeType": "Block",
                                      "src": "2684:85:25",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 4372,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 4356,
                                              "name": "mask",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4342,
                                              "src": "2706:4:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 4371,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "~",
                                              "prefix": true,
                                              "src": "2713:37:25",
                                              "subExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 4369,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 4367,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 4357,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2715:1:25",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_2_by_1",
                                                          "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "**",
                                                      "rightExpression": {
                                                        "components": [
                                                          {
                                                            "commonType": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            "id": 4365,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "hexValue": "38",
                                                              "id": 4358,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "2719:1:25",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_8_by_1",
                                                                "typeString": "int_const 8"
                                                              },
                                                              "value": "8"
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                              "components": [
                                                                {
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  },
                                                                  "id": 4363,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "leftExpression": {
                                                                    "commonType": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    },
                                                                    "id": 4361,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                      "hexValue": "3332",
                                                                      "id": 4359,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": true,
                                                                      "kind": "number",
                                                                      "lValueRequested": false,
                                                                      "nodeType": "Literal",
                                                                      "src": "2724:2:25",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_32_by_1",
                                                                        "typeString": "int_const 32"
                                                                      },
                                                                      "value": "32"
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                      "id": 4360,
                                                                      "name": "shortest",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 4302,
                                                                      "src": "2729:8:25",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                      }
                                                                    },
                                                                    "src": "2724:13:25",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  },
                                                                  "nodeType": "BinaryOperation",
                                                                  "operator": "+",
                                                                  "rightExpression": {
                                                                    "id": 4362,
                                                                    "name": "idx",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4321,
                                                                    "src": "2740:3:25",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  },
                                                                  "src": "2724:19:25",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                }
                                                              ],
                                                              "id": 4364,
                                                              "isConstant": false,
                                                              "isInlineArray": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "nodeType": "TupleExpression",
                                                              "src": "2723:21:25",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "src": "2719:25:25",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "id": 4366,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "2718:27:25",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "2715:30:25",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                      "hexValue": "31",
                                                      "id": 4368,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "2748:1:25",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "2715:34:25",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 4370,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "2714:36:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2706:44:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4373,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2706:44:25"
                                        }
                                      ]
                                    },
                                    "id": 4375,
                                    "nodeType": "IfStatement",
                                    "src": "2594:175:25",
                                    "trueBody": {
                                      "id": 4355,
                                      "nodeType": "Block",
                                      "src": "2613:65:25",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 4353,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 4347,
                                              "name": "mask",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4342,
                                              "src": "2635:4:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 4350,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "2647:7:25",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_uint256_$",
                                                      "typeString": "type(uint256)"
                                                    },
                                                    "typeName": {
                                                      "id": 4349,
                                                      "name": "uint256",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "2647:7:25",
                                                      "typeDescriptions": {}
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_type$_t_uint256_$",
                                                      "typeString": "type(uint256)"
                                                    }
                                                  ],
                                                  "id": 4348,
                                                  "name": "type",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": -27,
                                                  "src": "2642:4:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                    "typeString": "function () pure"
                                                  }
                                                },
                                                "id": 4351,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2642:13:25",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                                  "typeString": "type(uint256)"
                                                }
                                              },
                                              "id": 4352,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "2656:3:25",
                                              "memberName": "max",
                                              "nodeType": "MemberAccess",
                                              "src": "2642:17:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2635:24:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4354,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2635:24:25"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "assignments": [
                                      4377
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4377,
                                        "mutability": "mutable",
                                        "name": "diff",
                                        "nameLocation": "2793:4:25",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 4398,
                                        "src": "2786:11:25",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "typeName": {
                                          "id": 4376,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2786:6:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4391,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4390,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4382,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4380,
                                              "name": "a",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4332,
                                              "src": "2807:1:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 4381,
                                              "name": "mask",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4342,
                                              "src": "2811:4:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2807:8:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4379,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2800:6:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int256_$",
                                            "typeString": "type(int256)"
                                          },
                                          "typeName": {
                                            "id": 4378,
                                            "name": "int256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2800:6:25",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4383,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2800:16:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4388,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4386,
                                              "name": "b",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4335,
                                              "src": "2826:1:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 4387,
                                              "name": "mask",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4342,
                                              "src": "2830:4:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2826:8:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4385,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2819:6:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int256_$",
                                            "typeString": "type(int256)"
                                          },
                                          "typeName": {
                                            "id": 4384,
                                            "name": "int256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2819:6:25",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4389,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2819:16:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2800:35:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2786:49:25"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4394,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4392,
                                        "name": "diff",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4377,
                                        "src": "2857:4:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 4393,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2865:1:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2857:9:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 4397,
                                    "nodeType": "IfStatement",
                                    "src": "2853:26:25",
                                    "trueBody": {
                                      "expression": {
                                        "id": 4395,
                                        "name": "diff",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4377,
                                        "src": "2875:4:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "functionReturnParameters": 4300,
                                      "id": 4396,
                                      "nodeType": "Return",
                                      "src": "2868:11:25"
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 4402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4400,
                                  "name": "selfptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4314,
                                  "src": "2907:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 4401,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2918:2:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "2907:13:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4403,
                              "nodeType": "ExpressionStatement",
                              "src": "2907:13:25"
                            },
                            {
                              "expression": {
                                "id": 4406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4404,
                                  "name": "otherptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4317,
                                  "src": "2934:8:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 4405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2946:2:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "2934:14:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4407,
                              "nodeType": "ExpressionStatement",
                              "src": "2934:14:25"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4324,
                            "name": "idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4321,
                            "src": "2276:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 4325,
                            "name": "shortest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4302,
                            "src": "2282:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2276:14:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4409,
                        "initializationExpression": {
                          "assignments": [
                            4321
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4321,
                              "mutability": "mutable",
                              "name": "idx",
                              "nameLocation": "2267:3:25",
                              "nodeType": "VariableDeclaration",
                              "scope": 4409,
                              "src": "2259:11:25",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4320,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2259:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4323,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 4322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2273:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2259:15:25"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 4327,
                              "name": "idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4321,
                              "src": "2292:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "hexValue": "3332",
                              "id": 4328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2299:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            "src": "2292:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4330,
                          "nodeType": "ExpressionStatement",
                          "src": "2292:9:25"
                        },
                        "nodeType": "ForStatement",
                        "src": "2254:705:25"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 4418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 4412,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4290,
                                "src": "2983:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2976:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 4410,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2976:6:25",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2976:11:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4416,
                                "name": "otherlen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4296,
                                "src": "2997:8:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2990:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 4414,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2990:6:25",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2990:16:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2976:30:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4300,
                        "id": 4419,
                        "nodeType": "Return",
                        "src": "2969:37:25"
                      }
                    ]
                  },
                  "id": 4421,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "compare",
                  "nameLocation": "1774:7:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4286,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "1804:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4421,
                        "src": "1791:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4285,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1791:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4288,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "1826:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4421,
                        "src": "1818:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1818:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4290,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "1850:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4421,
                        "src": "1842:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1842:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4292,
                        "mutability": "mutable",
                        "name": "other",
                        "nameLocation": "1876:5:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4421,
                        "src": "1863:18:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4291,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1863:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4294,
                        "mutability": "mutable",
                        "name": "otheroffset",
                        "nameLocation": "1899:11:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4421,
                        "src": "1891:19:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4293,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1891:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4296,
                        "mutability": "mutable",
                        "name": "otherlen",
                        "nameLocation": "1928:8:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4421,
                        "src": "1920:16:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4295,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1920:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1781:161:25"
                  },
                  "returnParameters": {
                    "id": 4300,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4299,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4421,
                        "src": "1966:6:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4298,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1966:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1965:8:25"
                  },
                  "scope": 5017,
                  "src": "1765:1248:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4448,
                    "nodeType": "Block",
                    "src": "3619:84:25",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 4437,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4423,
                                "src": "3643:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 4438,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4425,
                                "src": "3649:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 4439,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4431,
                                "src": "3657:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4436,
                              "name": "keccak",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4263,
                              "src": "3636:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 4440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3636:25:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4442,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4427,
                                "src": "3672:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 4443,
                                "name": "otherOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4429,
                                "src": "3679:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 4444,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4431,
                                "src": "3692:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4441,
                              "name": "keccak",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4263,
                              "src": "3665:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 4445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3665:31:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3636:60:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4435,
                        "id": 4447,
                        "nodeType": "Return",
                        "src": "3629:67:25"
                      }
                    ]
                  },
                  "id": 4449,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "equals",
                  "nameLocation": "3448:6:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4423,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "3477:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "3464:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4422,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3464:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4425,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "3499:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "3491:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4424,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3491:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4427,
                        "mutability": "mutable",
                        "name": "other",
                        "nameLocation": "3528:5:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "3515:18:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4426,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3515:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4429,
                        "mutability": "mutable",
                        "name": "otherOffset",
                        "nameLocation": "3551:11:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "3543:19:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4428,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3543:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4431,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "3580:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "3572:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3572:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3454:135:25"
                  },
                  "returnParameters": {
                    "id": 4435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4434,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "3613:4:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4433,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3613:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3612:6:25"
                  },
                  "scope": 5017,
                  "src": "3439:264:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4480,
                    "nodeType": "Block",
                    "src": "4252:148:25",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 4463,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4451,
                                "src": "4288:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 4464,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4453,
                                "src": "4294:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 4465,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4451,
                                    "src": "4302:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 4466,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4307:6:25",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "4302:11:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 4467,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4453,
                                  "src": "4316:6:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4302:20:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4462,
                              "name": "keccak",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4263,
                              "src": "4281:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 4469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4281:42:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4471,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4455,
                                "src": "4346:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 4472,
                                "name": "otherOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4457,
                                "src": "4353:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 4473,
                                    "name": "other",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4455,
                                    "src": "4366:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 4474,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4372:6:25",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "4366:12:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 4475,
                                  "name": "otherOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4457,
                                  "src": "4381:11:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4366:26:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4470,
                              "name": "keccak",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4263,
                              "src": "4339:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 4477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4339:54:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4281:112:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4461,
                        "id": 4479,
                        "nodeType": "Return",
                        "src": "4262:131:25"
                      }
                    ]
                  },
                  "id": 4481,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "equals",
                  "nameLocation": "4102:6:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4451,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "4131:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4481,
                        "src": "4118:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4450,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4118:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4453,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "4153:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4481,
                        "src": "4145:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4452,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4145:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4455,
                        "mutability": "mutable",
                        "name": "other",
                        "nameLocation": "4182:5:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4481,
                        "src": "4169:18:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4454,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4169:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4457,
                        "mutability": "mutable",
                        "name": "otherOffset",
                        "nameLocation": "4205:11:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4481,
                        "src": "4197:19:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4197:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4108:114:25"
                  },
                  "returnParameters": {
                    "id": 4461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4460,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4481,
                        "src": "4246:4:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4459,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4246:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4245:6:25"
                  },
                  "scope": 5017,
                  "src": "4093:307:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4509,
                    "nodeType": "Block",
                    "src": "4889:132:25",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 4492,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4483,
                                "src": "4918:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4923:6:25",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4918:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4494,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4485,
                                "src": "4933:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "expression": {
                                  "id": 4495,
                                  "name": "other",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4487,
                                  "src": "4942:5:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4948:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "4942:12:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4933:21:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4918:36:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4500,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4483,
                                "src": "4977:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 4501,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4485,
                                "src": "4983:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 4502,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4487,
                                "src": "4991:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 4503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4998:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "expression": {
                                  "id": 4504,
                                  "name": "other",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4487,
                                  "src": "5001:5:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5007:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5001:12:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4499,
                              "name": "equals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4449,
                                4481,
                                4510,
                                4535
                              ],
                              "referencedDeclaration": 4449,
                              "src": "4970:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 4506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4970:44:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4918:96:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4491,
                        "id": 4508,
                        "nodeType": "Return",
                        "src": "4899:115:25"
                      }
                    ]
                  },
                  "id": 4510,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "equals",
                  "nameLocation": "4768:6:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4483,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "4797:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4510,
                        "src": "4784:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4482,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4784:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4485,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "4819:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4510,
                        "src": "4811:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4811:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4487,
                        "mutability": "mutable",
                        "name": "other",
                        "nameLocation": "4848:5:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4510,
                        "src": "4835:18:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4486,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4835:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4774:85:25"
                  },
                  "returnParameters": {
                    "id": 4491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4490,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4510,
                        "src": "4883:4:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4489,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4883:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4882:6:25"
                  },
                  "scope": 5017,
                  "src": "4759:262:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4534,
                    "nodeType": "Block",
                    "src": "5386:117:25",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 4519,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4512,
                                "src": "5415:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5420:6:25",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "5415:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 4521,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4514,
                                "src": "5430:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5436:6:25",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "5430:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5415:27:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4525,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4512,
                                "src": "5465:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 4526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5471:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "id": 4527,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4514,
                                "src": "5474:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 4528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5481:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "expression": {
                                  "id": 4529,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4512,
                                  "src": "5484:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5489:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5484:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4524,
                              "name": "equals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4449,
                                4481,
                                4510,
                                4535
                              ],
                              "referencedDeclaration": 4449,
                              "src": "5458:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 4531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5458:38:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5415:81:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4518,
                        "id": 4533,
                        "nodeType": "Return",
                        "src": "5396:100:25"
                      }
                    ]
                  },
                  "id": 4535,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "equals",
                  "nameLocation": "5283:6:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4515,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4512,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "5303:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4535,
                        "src": "5290:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4511,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5290:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4514,
                        "mutability": "mutable",
                        "name": "other",
                        "nameLocation": "5322:5:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4535,
                        "src": "5309:18:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4513,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5309:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5289:39:25"
                  },
                  "returnParameters": {
                    "id": 4518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4517,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4535,
                        "src": "5376:4:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4516,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5376:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5375:6:25"
                  },
                  "scope": 5017,
                  "src": "5274:229:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4551,
                    "nodeType": "Block",
                    "src": "5863:40:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 4546,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4537,
                                "src": "5886:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4548,
                              "indexExpression": {
                                "id": 4547,
                                "name": "idx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4539,
                                "src": "5891:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5886:9:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            ],
                            "id": 4545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5880:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 4544,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "5880:5:25",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5880:16:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 4543,
                        "id": 4550,
                        "nodeType": "Return",
                        "src": "5873:23:25"
                      }
                    ]
                  },
                  "id": 4552,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readUint8",
                  "nameLocation": "5759:9:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4537,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "5782:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4552,
                        "src": "5769:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4536,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5769:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4539,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "5796:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4552,
                        "src": "5788:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5788:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5768:32:25"
                  },
                  "returnParameters": {
                    "id": 4543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4542,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "5854:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4552,
                        "src": "5848:9:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4541,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5848:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5847:11:25"
                  },
                  "scope": 5017,
                  "src": "5750:153:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4571,
                    "nodeType": "Block",
                    "src": "6267:139:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4562,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4556,
                                  "src": "6285:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 4563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6291:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "6285:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4565,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4554,
                                  "src": "6296:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6301:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "6296:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6285:22:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4561,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6277:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6277:31:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4569,
                        "nodeType": "ExpressionStatement",
                        "src": "6277:31:25"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "6327:73:25",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6341:49:25",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "self",
                                                "nodeType": "YulIdentifier",
                                                "src": "6366:4:25"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6372:1:25",
                                                "type": "",
                                                "value": "2"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6362:3:25"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6362:12:25"
                                          },
                                          {
                                            "name": "idx",
                                            "nodeType": "YulIdentifier",
                                            "src": "6376:3:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6358:3:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6358:22:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:5:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:29:25"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6383:6:25",
                                    "type": "",
                                    "value": "0xFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6348:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6348:42:25"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "6341:3:25"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4556,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6376:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4559,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6341:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4554,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6366:4:25",
                            "valueSize": 1
                          }
                        ],
                        "id": 4570,
                        "nodeType": "InlineAssembly",
                        "src": "6318:82:25"
                      }
                    ]
                  },
                  "id": 4572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readUint16",
                  "nameLocation": "6161:10:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4554,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "6185:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4572,
                        "src": "6172:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4553,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6172:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4556,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "6199:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4572,
                        "src": "6191:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4555,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6191:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6171:32:25"
                  },
                  "returnParameters": {
                    "id": 4560,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4559,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "6258:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4572,
                        "src": "6251:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 4558,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "6251:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6250:12:25"
                  },
                  "scope": 5017,
                  "src": "6152:254:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4591,
                    "nodeType": "Block",
                    "src": "6770:143:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4582,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4576,
                                  "src": "6788:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "34",
                                  "id": 4583,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6794:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "6788:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4585,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4574,
                                  "src": "6799:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6804:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "6799:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6788:22:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4581,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6780:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6780:31:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4589,
                        "nodeType": "ExpressionStatement",
                        "src": "6780:31:25"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "6830:77:25",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6844:53:25",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "self",
                                                "nodeType": "YulIdentifier",
                                                "src": "6869:4:25"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6875:1:25",
                                                "type": "",
                                                "value": "4"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6865:3:25"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6865:12:25"
                                          },
                                          {
                                            "name": "idx",
                                            "nodeType": "YulIdentifier",
                                            "src": "6879:3:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6861:3:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6861:22:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6855:5:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6855:29:25"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6886:10:25",
                                    "type": "",
                                    "value": "0xFFFFFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6851:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6851:46:25"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "6844:3:25"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4576,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6879:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4579,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6844:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4574,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6869:4:25",
                            "valueSize": 1
                          }
                        ],
                        "id": 4590,
                        "nodeType": "InlineAssembly",
                        "src": "6821:86:25"
                      }
                    ]
                  },
                  "id": 4592,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readUint32",
                  "nameLocation": "6664:10:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4577,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4574,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "6688:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "6675:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4573,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6675:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4576,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "6702:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "6694:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4575,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6694:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6674:32:25"
                  },
                  "returnParameters": {
                    "id": 4580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4579,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "6761:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "6754:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4578,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6754:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6753:12:25"
                  },
                  "scope": 5017,
                  "src": "6655:258:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4611,
                    "nodeType": "Block",
                    "src": "7253:128:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4602,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4596,
                                  "src": "7271:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 4603,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7277:2:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "7271:8:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4605,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4594,
                                  "src": "7283:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7288:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "7283:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7271:23:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4601,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7263:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7263:32:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4609,
                        "nodeType": "ExpressionStatement",
                        "src": "7263:32:25"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "7314:61:25",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7328:37:25",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "self",
                                            "nodeType": "YulIdentifier",
                                            "src": "7349:4:25"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7355:2:25",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7345:3:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7345:13:25"
                                      },
                                      {
                                        "name": "idx",
                                        "nodeType": "YulIdentifier",
                                        "src": "7360:3:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7341:3:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7341:23:25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7335:5:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7335:30:25"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "7328:3:25"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4596,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7360:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4599,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7328:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4594,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7349:4:25",
                            "valueSize": 1
                          }
                        ],
                        "id": 4610,
                        "nodeType": "InlineAssembly",
                        "src": "7305:70:25"
                      }
                    ]
                  },
                  "id": 4612,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readBytes32",
                  "nameLocation": "7145:11:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4594,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "7170:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4612,
                        "src": "7157:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4593,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7157:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4596,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "7184:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4612,
                        "src": "7176:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7176:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7156:32:25"
                  },
                  "returnParameters": {
                    "id": 4600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4599,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "7244:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4612,
                        "src": "7236:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4598,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7236:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7235:13:25"
                  },
                  "scope": 5017,
                  "src": "7136:245:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4631,
                    "nodeType": "Block",
                    "src": "7721:247:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4622,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4616,
                                  "src": "7739:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "3230",
                                  "id": 4623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7745:2:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "7739:8:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4625,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4614,
                                  "src": "7751:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7756:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "7751:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7739:23:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4621,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7731:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7731:32:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4629,
                        "nodeType": "ExpressionStatement",
                        "src": "7731:32:25"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "7782:180:25",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7796:156:25",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "self",
                                                "nodeType": "YulIdentifier",
                                                "src": "7838:4:25"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7844:2:25",
                                                "type": "",
                                                "value": "32"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7834:3:25"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7834:13:25"
                                          },
                                          {
                                            "name": "idx",
                                            "nodeType": "YulIdentifier",
                                            "src": "7849:3:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7830:3:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7830:23:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7824:5:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7824:30:25"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7872:66:25",
                                    "type": "",
                                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7803:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7803:149:25"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "7796:3:25"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4616,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7849:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4619,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7796:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4614,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7838:4:25",
                            "valueSize": 1
                          }
                        ],
                        "id": 4630,
                        "nodeType": "InlineAssembly",
                        "src": "7773:189:25"
                      }
                    ]
                  },
                  "id": 4632,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readBytes20",
                  "nameLocation": "7613:11:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4614,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "7638:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4632,
                        "src": "7625:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4613,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7625:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4616,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "7652:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4632,
                        "src": "7644:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4615,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7644:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7624:32:25"
                  },
                  "returnParameters": {
                    "id": 4620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4619,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "7712:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4632,
                        "src": "7704:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        },
                        "typeName": {
                          "id": 4618,
                          "name": "bytes20",
                          "nodeType": "ElementaryTypeName",
                          "src": "7704:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes20",
                            "typeString": "bytes20"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7703:13:25"
                  },
                  "scope": 5017,
                  "src": "7604:364:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4659,
                    "nodeType": "Block",
                    "src": "8361:228:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4644,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4638,
                                "src": "8379:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "hexValue": "3332",
                                "id": 4645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8386:2:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "8379:9:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4643,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8371:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8371:18:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4648,
                        "nodeType": "ExpressionStatement",
                        "src": "8371:18:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4650,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4636,
                                  "src": "8407:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 4651,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4638,
                                  "src": "8413:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8407:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4653,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4634,
                                  "src": "8420:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "8425:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "8420:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8407:24:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4649,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8399:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8399:33:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4657,
                        "nodeType": "ExpressionStatement",
                        "src": "8399:33:25"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "8451:132:25",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8465:47:25",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8489:3:25",
                                            "type": "",
                                            "value": "256"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8498:2:25",
                                                "type": "",
                                                "value": "32"
                                              },
                                              {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "8502:3:25"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "8494:3:25"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8494:12:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "exp",
                                          "nodeType": "YulIdentifier",
                                          "src": "8485:3:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8485:22:25"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8509:1:25",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8481:3:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8481:30:25"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "8477:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8477:35:25"
                              },
                              "variables": [
                                {
                                  "name": "mask",
                                  "nodeType": "YulTypedName",
                                  "src": "8469:4:25",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8525:48:25",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "self",
                                                "nodeType": "YulIdentifier",
                                                "src": "8550:4:25"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8556:2:25",
                                                "type": "",
                                                "value": "32"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "8546:3:25"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8546:13:25"
                                          },
                                          {
                                            "name": "idx",
                                            "nodeType": "YulIdentifier",
                                            "src": "8561:3:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8542:3:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8542:23:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "8536:5:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8536:30:25"
                                  },
                                  {
                                    "name": "mask",
                                    "nodeType": "YulIdentifier",
                                    "src": "8568:4:25"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "8532:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8532:41:25"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "8525:3:25"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8561:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4638,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8502:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4641,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8525:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4634,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8550:4:25",
                            "valueSize": 1
                          }
                        ],
                        "id": 4658,
                        "nodeType": "InlineAssembly",
                        "src": "8442:141:25"
                      }
                    ]
                  },
                  "id": 4660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readBytesN",
                  "nameLocation": "8239:10:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4634,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "8272:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4660,
                        "src": "8259:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4633,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8259:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4636,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "8294:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4660,
                        "src": "8286:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4635,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8286:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4638,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "8315:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4660,
                        "src": "8307:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4637,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8307:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8249:75:25"
                  },
                  "returnParameters": {
                    "id": 4642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4641,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "8356:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4660,
                        "src": "8348:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4640,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8348:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8347:13:25"
                  },
                  "scope": 5017,
                  "src": "8230:359:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4701,
                    "nodeType": "Block",
                    "src": "8694:546:25",
                    "statements": [
                      {
                        "body": {
                          "id": 4685,
                          "nodeType": "Block",
                          "src": "8783:136:25",
                          "statements": [
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "8806:56:25",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dest",
                                          "nodeType": "YulIdentifier",
                                          "src": "8831:4:25"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "8843:3:25"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8837:5:25"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8837:10:25"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8824:6:25"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8824:24:25"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8824:24:25"
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 4662,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "8831:4:25",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4664,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "8843:3:25",
                                  "valueSize": 1
                                }
                              ],
                              "id": 4676,
                              "nodeType": "InlineAssembly",
                              "src": "8797:65:25"
                            },
                            {
                              "expression": {
                                "id": 4679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4677,
                                  "name": "dest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4662,
                                  "src": "8875:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 4678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8883:2:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "8875:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4680,
                              "nodeType": "ExpressionStatement",
                              "src": "8875:10:25"
                            },
                            {
                              "expression": {
                                "id": 4683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4681,
                                  "name": "src",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4664,
                                  "src": "8899:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 4682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8906:2:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "8899:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4684,
                              "nodeType": "ExpressionStatement",
                              "src": "8899:9:25"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4669,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4666,
                            "src": "8761:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "3332",
                            "id": 4670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8768:2:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "8761:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4686,
                        "loopExpression": {
                          "expression": {
                            "id": 4674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 4672,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4666,
                              "src": "8772:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "-=",
                            "rightHandSide": {
                              "hexValue": "3332",
                              "id": 4673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8779:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            "src": "8772:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4675,
                          "nodeType": "ExpressionStatement",
                          "src": "8772:9:25"
                        },
                        "nodeType": "ForStatement",
                        "src": "8754:165:25"
                      },
                      {
                        "id": 4700,
                        "nodeType": "UncheckedBlock",
                        "src": "8961:273:25",
                        "statements": [
                          {
                            "assignments": [
                              4688
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4688,
                                "mutability": "mutable",
                                "name": "mask",
                                "nameLocation": "8993:4:25",
                                "nodeType": "VariableDeclaration",
                                "scope": 4700,
                                "src": "8985:12:25",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4687,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8985:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4698,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4694,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "323536",
                                      "id": 4689,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9001:3:25",
                                      "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": 4692,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3332",
                                            "id": 4690,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9007:2:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 4691,
                                            "name": "len",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4666,
                                            "src": "9012:3:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "9007:8:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4693,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9006:10:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9001:15:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4695,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9000:17:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9020:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "9000:21:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8985:36:25"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "9044:180:25",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "9062:41:25",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "9087:3:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "9081:5:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9081:10:25"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "mask",
                                            "nodeType": "YulIdentifier",
                                            "src": "9097:4:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "9093:3:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9093:9:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9077:3:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9077:26:25"
                                  },
                                  "variables": [
                                    {
                                      "name": "srcpart",
                                      "nodeType": "YulTypedName",
                                      "src": "9066:7:25",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "9120:38:25",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "dest",
                                            "nodeType": "YulIdentifier",
                                            "src": "9146:4:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "9140:5:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9140:11:25"
                                      },
                                      {
                                        "name": "mask",
                                        "nodeType": "YulIdentifier",
                                        "src": "9153:4:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9136:3:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9136:22:25"
                                  },
                                  "variables": [
                                    {
                                      "name": "destpart",
                                      "nodeType": "YulTypedName",
                                      "src": "9124:8:25",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dest",
                                        "nodeType": "YulIdentifier",
                                        "src": "9182:4:25"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "destpart",
                                            "nodeType": "YulIdentifier",
                                            "src": "9191:8:25"
                                          },
                                          {
                                            "name": "srcpart",
                                            "nodeType": "YulIdentifier",
                                            "src": "9201:7:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "or",
                                          "nodeType": "YulIdentifier",
                                          "src": "9188:2:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9188:21:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "9175:6:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9175:35:25"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "9175:35:25"
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4662,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9146:4:25",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4662,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9182:4:25",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4688,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9097:4:25",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4688,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9153:4:25",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4664,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9087:3:25",
                                "valueSize": 1
                              }
                            ],
                            "id": 4699,
                            "nodeType": "InlineAssembly",
                            "src": "9035:189:25"
                          }
                        ]
                      }
                    ]
                  },
                  "id": 4702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "memcpy",
                  "nameLocation": "8604:6:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4662,
                        "mutability": "mutable",
                        "name": "dest",
                        "nameLocation": "8628:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4702,
                        "src": "8620:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4661,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8620:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4664,
                        "mutability": "mutable",
                        "name": "src",
                        "nameLocation": "8650:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4702,
                        "src": "8642:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4663,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8642:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4666,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "8671:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4702,
                        "src": "8663:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8663:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8610:70:25"
                  },
                  "returnParameters": {
                    "id": 4668,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8694:0:25"
                  },
                  "scope": 5017,
                  "src": "8595:645:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4744,
                    "nodeType": "Block",
                    "src": "9599:302:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4714,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4706,
                                  "src": "9617:6:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 4715,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4708,
                                  "src": "9626:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9617:12:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4717,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4704,
                                  "src": "9633:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9638:6:25",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "9633:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9617:27:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4713,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9609:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9609:36:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4721,
                        "nodeType": "ExpressionStatement",
                        "src": "9609:36:25"
                      },
                      {
                        "assignments": [
                          4723
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4723,
                            "mutability": "mutable",
                            "name": "ret",
                            "nameLocation": "9669:3:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4744,
                            "src": "9656:16:25",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4722,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9656:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4728,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4726,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4708,
                              "src": "9685:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "9675:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 4724,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9679:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 4727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9675:14:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9656:33:25"
                      },
                      {
                        "assignments": [
                          4730
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4730,
                            "mutability": "mutable",
                            "name": "dest",
                            "nameLocation": "9707:4:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4744,
                            "src": "9699:12:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4729,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9699:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4731,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9699:12:25"
                      },
                      {
                        "assignments": [
                          4733
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4733,
                            "mutability": "mutable",
                            "name": "src",
                            "nameLocation": "9729:3:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4744,
                            "src": "9721:11:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4732,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9721:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4734,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9721:11:25"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "9752:90:25",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9766:20:25",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ret",
                                    "nodeType": "YulIdentifier",
                                    "src": "9778:3:25"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9783:2:25",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9774:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9774:12:25"
                              },
                              "variableNames": [
                                {
                                  "name": "dest",
                                  "nodeType": "YulIdentifier",
                                  "src": "9766:4:25"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9799:33:25",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "self",
                                        "nodeType": "YulIdentifier",
                                        "src": "9814:4:25"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9820:2:25",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9810:3:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9810:13:25"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9825:6:25"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9806:3:25"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9806:26:25"
                              },
                              "variableNames": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "9799:3:25"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4730,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9766:4:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4706,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9825:6:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4723,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9778:3:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4704,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9814:4:25",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4733,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9799:3:25",
                            "valueSize": 1
                          }
                        ],
                        "id": 4735,
                        "nodeType": "InlineAssembly",
                        "src": "9743:99:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4737,
                              "name": "dest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4730,
                              "src": "9858:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4738,
                              "name": "src",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4733,
                              "src": "9864:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4739,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4708,
                              "src": "9869:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4736,
                            "name": "memcpy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4702,
                            "src": "9851:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256) pure"
                            }
                          },
                          "id": 4740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9851:22:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4741,
                        "nodeType": "ExpressionStatement",
                        "src": "9851:22:25"
                      },
                      {
                        "expression": {
                          "id": 4742,
                          "name": "ret",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4723,
                          "src": "9891:3:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 4712,
                        "id": 4743,
                        "nodeType": "Return",
                        "src": "9884:10:25"
                      }
                    ]
                  },
                  "id": 4745,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "substring",
                  "nameLocation": "9474:9:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4704,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "9506:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4745,
                        "src": "9493:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4703,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9493:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4706,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "9528:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4745,
                        "src": "9520:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4705,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9520:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4708,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "9552:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4745,
                        "src": "9544:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4707,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9544:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9483:78:25"
                  },
                  "returnParameters": {
                    "id": 4712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4711,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4745,
                        "src": "9585:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4710,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9585:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9584:14:25"
                  },
                  "scope": 5017,
                  "src": "9465:436:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 4748,
                  "mutability": "constant",
                  "name": "base32HexTable",
                  "nameLocation": "10044:14:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 5017,
                  "src": "10029:187:25",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4746,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10029:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "hexValue": "00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
                    "id": 4747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "hexString",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10069:147:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_9e82410dbf01e63aa72c1e18aee3deb28d15751fdce22e55714ad62f7fde606a",
                      "typeString": "literal_string hex\"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\""
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4971,
                    "nodeType": "Block",
                    "src": "10635:1318:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4761,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4755,
                                "src": "10653:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "hexValue": "3532",
                                "id": 4762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10660:2:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_52_by_1",
                                  "typeString": "int_const 52"
                                },
                                "value": "52"
                              },
                              "src": "10653:9:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4760,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10645:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10645:18:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4765,
                        "nodeType": "ExpressionStatement",
                        "src": "10645:18:25"
                      },
                      {
                        "assignments": [
                          4767
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4767,
                            "mutability": "mutable",
                            "name": "ret",
                            "nameLocation": "10682:3:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4971,
                            "src": "10674:11:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4766,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10674:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4769,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 4768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10688:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10674:15:25"
                      },
                      {
                        "assignments": [
                          4771
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4771,
                            "mutability": "mutable",
                            "name": "decoded",
                            "nameLocation": "10705:7:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4971,
                            "src": "10699:13:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 4770,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "10699:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4772,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10699:13:25"
                      },
                      {
                        "body": {
                          "id": 4841,
                          "nodeType": "Block",
                          "src": "10756:324:25",
                          "statements": [
                            {
                              "assignments": [
                                4784
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4784,
                                  "mutability": "mutable",
                                  "name": "char",
                                  "nameLocation": "10777:4:25",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4841,
                                  "src": "10770:11:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "typeName": {
                                    "id": 4783,
                                    "name": "bytes1",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10770:6:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4790,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4785,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4751,
                                  "src": "10784:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 4789,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4786,
                                    "name": "off",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4753,
                                    "src": "10789:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 4787,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4774,
                                    "src": "10795:1:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10789:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10784:13:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10770:27:25"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4798,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      },
                                      "id": 4794,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4792,
                                        "name": "char",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4784,
                                        "src": "10819:4:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "hexValue": "30783330",
                                        "id": 4793,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10827:4:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_48_by_1",
                                          "typeString": "int_const 48"
                                        },
                                        "value": "0x30"
                                      },
                                      "src": "10819:12:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      },
                                      "id": 4797,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4795,
                                        "name": "char",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4784,
                                        "src": "10835:4:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "hexValue": "30783741",
                                        "id": 4796,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10843:4:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_122_by_1",
                                          "typeString": "int_const 122"
                                        },
                                        "value": "0x7A"
                                      },
                                      "src": "10835:12:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "10819:28:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 4791,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10811:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 4799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10811:37:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4800,
                              "nodeType": "ExpressionStatement",
                              "src": "10811:37:25"
                            },
                            {
                              "expression": {
                                "id": 4816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4801,
                                  "name": "decoded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4771,
                                  "src": "10862:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 4804,
                                        "name": "base32HexTable",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4748,
                                        "src": "10878:14:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 4814,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4813,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "id": 4809,
                                                  "name": "char",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4784,
                                                  "src": "10907:4:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  }
                                                ],
                                                "id": 4808,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "10901:5:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint8_$",
                                                  "typeString": "type(uint8)"
                                                },
                                                "typeName": {
                                                  "id": 4807,
                                                  "name": "uint8",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "10901:5:25",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 4810,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "10901:11:25",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            ],
                                            "id": 4806,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "10893:7:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 4805,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "10893:7:25",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 4811,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10893:20:25",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "30783330",
                                          "id": 4812,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10916:4:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_48_by_1",
                                            "typeString": "int_const 48"
                                          },
                                          "value": "0x30"
                                        },
                                        "src": "10893:27:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10878:43:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    ],
                                    "id": 4803,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10872:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 4802,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10872:5:25",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4815,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10872:50:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "10862:60:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 4817,
                              "nodeType": "ExpressionStatement",
                              "src": "10862:60:25"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 4821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4819,
                                      "name": "decoded",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4771,
                                      "src": "10944:7:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "hexValue": "30783230",
                                      "id": 4820,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10955:4:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "0x20"
                                    },
                                    "src": "10944:15:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 4818,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10936:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 4822,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10936:24:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4823,
                              "nodeType": "ExpressionStatement",
                              "src": "10936:24:25"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4824,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4774,
                                  "src": "10978:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4825,
                                    "name": "len",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4755,
                                    "src": "10983:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4826,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10989:1:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "10983:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10978:12:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4831,
                              "nodeType": "IfStatement",
                              "src": "10974:56:25",
                              "trueBody": {
                                "id": 4830,
                                "nodeType": "Block",
                                "src": "10992:38:25",
                                "statements": [
                                  {
                                    "id": 4829,
                                    "nodeType": "Break",
                                    "src": "11010:5:25"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 4839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4832,
                                  "name": "ret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4767,
                                  "src": "11043:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4835,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4833,
                                          "name": "ret",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4767,
                                          "src": "11050:3:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "hexValue": "35",
                                          "id": 4834,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11057:1:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_5_by_1",
                                            "typeString": "int_const 5"
                                          },
                                          "value": "5"
                                        },
                                        "src": "11050:8:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4836,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "11049:10:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "id": 4837,
                                    "name": "decoded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4771,
                                    "src": "11062:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "11049:20:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11043:26:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4840,
                              "nodeType": "ExpressionStatement",
                              "src": "11043:26:25"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4777,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4774,
                            "src": "10742:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 4778,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4755,
                            "src": "10746:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10742:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4842,
                        "initializationExpression": {
                          "assignments": [
                            4774
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4774,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "10735:1:25",
                              "nodeType": "VariableDeclaration",
                              "scope": 4842,
                              "src": "10727:9:25",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4773,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10727:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4776,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 4775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10739:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10727:13:25"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10751:3:25",
                            "subExpression": {
                              "id": 4780,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4774,
                              "src": "10751:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4782,
                          "nodeType": "ExpressionStatement",
                          "src": "10751:3:25"
                        },
                        "nodeType": "ForStatement",
                        "src": "10722:358:25"
                      },
                      {
                        "assignments": [
                          4844
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4844,
                            "mutability": "mutable",
                            "name": "bitlen",
                            "nameLocation": "11098:6:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 4971,
                            "src": "11090:14:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4843,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11090:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4848,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4845,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4755,
                            "src": "11107:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "hexValue": "35",
                            "id": 4846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11113:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "src": "11107:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11090:24:25"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4849,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4755,
                              "src": "11128:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "38",
                              "id": 4850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11134:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              },
                              "value": "8"
                            },
                            "src": "11128:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11139:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11128:12:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4864,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4755,
                                "src": "11255:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "hexValue": "38",
                                "id": 4865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11261:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "11255:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 4867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11266:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "11255:12:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4886,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4755,
                                  "src": "11407:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "hexValue": "38",
                                  "id": 4887,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11413:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "11407:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "34",
                                "id": 4889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11418:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "11407:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4910,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4908,
                                    "name": "len",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4755,
                                    "src": "11561:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "hexValue": "38",
                                    "id": 4909,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11567:1:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  "src": "11561:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "35",
                                  "id": 4911,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11572:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_5_by_1",
                                    "typeString": "int_const 5"
                                  },
                                  "value": "5"
                                },
                                "src": "11561:12:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4932,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4930,
                                      "name": "len",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4755,
                                      "src": "11715:3:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "%",
                                    "rightExpression": {
                                      "hexValue": "38",
                                      "id": 4931,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11721:1:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "11715:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "37",
                                    "id": 4933,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11726:1:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "value": "7"
                                  },
                                  "src": "11715:12:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 4955,
                                  "nodeType": "Block",
                                  "src": "11866:33:25",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 4952,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "11880:6:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 4953,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11880:8:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 4954,
                                      "nodeType": "ExpressionStatement",
                                      "src": "11880:8:25"
                                    }
                                  ]
                                },
                                "id": 4956,
                                "nodeType": "IfStatement",
                                "src": "11711:188:25",
                                "trueBody": {
                                  "id": 4951,
                                  "nodeType": "Block",
                                  "src": "11729:131:25",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 4945,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 4935,
                                          "name": "ret",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4767,
                                          "src": "11791:3:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4944,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 4938,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 4936,
                                                  "name": "ret",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4767,
                                                  "src": "11798:3:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<<",
                                                "rightExpression": {
                                                  "hexValue": "32",
                                                  "id": 4937,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "11805:1:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                  },
                                                  "value": "2"
                                                },
                                                "src": "11798:8:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 4939,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "11797:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "|",
                                          "rightExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                },
                                                "id": 4942,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 4940,
                                                  "name": "decoded",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4771,
                                                  "src": "11811:7:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">>",
                                                "rightExpression": {
                                                  "hexValue": "33",
                                                  "id": 4941,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "11822:1:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_3_by_1",
                                                    "typeString": "int_const 3"
                                                  },
                                                  "value": "3"
                                                },
                                                "src": "11811:12:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "id": 4943,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "11810:14:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "11797:27:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11791:33:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4946,
                                      "nodeType": "ExpressionStatement",
                                      "src": "11791:33:25"
                                    },
                                    {
                                      "expression": {
                                        "id": 4949,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 4947,
                                          "name": "bitlen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4844,
                                          "src": "11838:6:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "-=",
                                        "rightHandSide": {
                                          "hexValue": "33",
                                          "id": 4948,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11848:1:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_3_by_1",
                                            "typeString": "int_const 3"
                                          },
                                          "value": "3"
                                        },
                                        "src": "11838:11:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4950,
                                      "nodeType": "ExpressionStatement",
                                      "src": "11838:11:25"
                                    }
                                  ]
                                }
                              },
                              "id": 4957,
                              "nodeType": "IfStatement",
                              "src": "11557:342:25",
                              "trueBody": {
                                "id": 4929,
                                "nodeType": "Block",
                                "src": "11575:130:25",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4923,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4913,
                                        "name": "ret",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4767,
                                        "src": "11636:3:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4922,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 4916,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 4914,
                                                "name": "ret",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4767,
                                                "src": "11643:3:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "<<",
                                              "rightExpression": {
                                                "hexValue": "34",
                                                "id": 4915,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "11650:1:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_4_by_1",
                                                  "typeString": "int_const 4"
                                                },
                                                "value": "4"
                                              },
                                              "src": "11643:8:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 4917,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "11642:10:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "|",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "id": 4920,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 4918,
                                                "name": "decoded",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4771,
                                                "src": "11656:7:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": ">>",
                                              "rightExpression": {
                                                "hexValue": "31",
                                                "id": 4919,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "11667:1:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "11656:12:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            }
                                          ],
                                          "id": 4921,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "11655:14:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "11642:27:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11636:33:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4924,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11636:33:25"
                                  },
                                  {
                                    "expression": {
                                      "id": 4927,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4925,
                                        "name": "bitlen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4844,
                                        "src": "11683:6:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "-=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 4926,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11693:1:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "11683:11:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4928,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11683:11:25"
                                  }
                                ]
                              }
                            },
                            "id": 4958,
                            "nodeType": "IfStatement",
                            "src": "11403:496:25",
                            "trueBody": {
                              "id": 4907,
                              "nodeType": "Block",
                              "src": "11421:130:25",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4891,
                                      "name": "ret",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4767,
                                      "src": "11482:3:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4900,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4894,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4892,
                                              "name": "ret",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4767,
                                              "src": "11489:3:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<<",
                                            "rightExpression": {
                                              "hexValue": "31",
                                              "id": 4893,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "11496:1:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "11489:8:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 4895,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "11488:10:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "|",
                                      "rightExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            },
                                            "id": 4898,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4896,
                                              "name": "decoded",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4771,
                                              "src": "11502:7:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                              "hexValue": "34",
                                              "id": 4897,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "11513:1:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_4_by_1",
                                                "typeString": "int_const 4"
                                              },
                                              "value": "4"
                                            },
                                            "src": "11502:12:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          }
                                        ],
                                        "id": 4899,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "11501:14:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "src": "11488:27:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11482:33:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4902,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11482:33:25"
                                },
                                {
                                  "expression": {
                                    "id": 4905,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4903,
                                      "name": "bitlen",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4844,
                                      "src": "11529:6:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "hexValue": "34",
                                      "id": 4904,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11539:1:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "11529:11:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4906,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11529:11:25"
                                }
                              ]
                            }
                          },
                          "id": 4959,
                          "nodeType": "IfStatement",
                          "src": "11251:648:25",
                          "trueBody": {
                            "id": 4885,
                            "nodeType": "Block",
                            "src": "11269:128:25",
                            "statements": [
                              {
                                "expression": {
                                  "id": 4879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 4869,
                                    "name": "ret",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4767,
                                    "src": "11328:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4872,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 4870,
                                            "name": "ret",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4767,
                                            "src": "11335:3:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "33",
                                            "id": 4871,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11342:1:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "src": "11335:8:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4873,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "11334:10:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "|",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          "id": 4876,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 4874,
                                            "name": "decoded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4771,
                                            "src": "11348:7:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">>",
                                          "rightExpression": {
                                            "hexValue": "32",
                                            "id": 4875,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11359:1:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_2_by_1",
                                              "typeString": "int_const 2"
                                            },
                                            "value": "2"
                                          },
                                          "src": "11348:12:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        }
                                      ],
                                      "id": 4877,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "11347:14:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "11334:27:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11328:33:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4880,
                                "nodeType": "ExpressionStatement",
                                "src": "11328:33:25"
                              },
                              {
                                "expression": {
                                  "id": 4883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 4881,
                                    "name": "bitlen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4844,
                                    "src": "11375:6:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "-=",
                                  "rightHandSide": {
                                    "hexValue": "32",
                                    "id": 4882,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11385:1:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "11375:11:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4884,
                                "nodeType": "ExpressionStatement",
                                "src": "11375:11:25"
                              }
                            ]
                          }
                        },
                        "id": 4960,
                        "nodeType": "IfStatement",
                        "src": "11124:775:25",
                        "trueBody": {
                          "id": 4863,
                          "nodeType": "Block",
                          "src": "11142:103:25",
                          "statements": [
                            {
                              "expression": {
                                "id": 4861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4854,
                                  "name": "ret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4767,
                                  "src": "11208:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4860,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4857,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4855,
                                          "name": "ret",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4767,
                                          "src": "11215:3:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "hexValue": "35",
                                          "id": 4856,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11222:1:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_5_by_1",
                                            "typeString": "int_const 5"
                                          },
                                          "value": "5"
                                        },
                                        "src": "11215:8:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4858,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "11214:10:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "id": 4859,
                                    "name": "decoded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4771,
                                    "src": "11227:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "11214:20:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11208:26:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4862,
                              "nodeType": "ExpressionStatement",
                              "src": "11208:26:25"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4963,
                                "name": "ret",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4767,
                                "src": "11924:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<<",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "323536",
                                      "id": 4964,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11932:3:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_256_by_1",
                                        "typeString": "int_const 256"
                                      },
                                      "value": "256"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 4965,
                                      "name": "bitlen",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4844,
                                      "src": "11938:6:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11932:12:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4967,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11931:14:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11924:21:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11916:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 4961,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11916:7:25",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11916:30:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 4759,
                        "id": 4970,
                        "nodeType": "Return",
                        "src": "11909:37:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4749,
                    "nodeType": "StructuredDocumentation",
                    "src": "10223:271:25",
                    "text": " @dev Decodes unpadded base32 data of up to one word in length.\n @param self The data to decode.\n @param off Offset into the string to start at.\n @param len Number of characters to decode.\n @return The decoded data, left aligned."
                  },
                  "id": 4972,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "base32HexDecodeWord",
                  "nameLocation": "10508:19:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4751,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "10550:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4972,
                        "src": "10537:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4750,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10537:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4753,
                        "mutability": "mutable",
                        "name": "off",
                        "nameLocation": "10572:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4972,
                        "src": "10564:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4752,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10564:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4755,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "10593:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 4972,
                        "src": "10585:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4754,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10585:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10527:75:25"
                  },
                  "returnParameters": {
                    "id": 4759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4758,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4972,
                        "src": "10626:7:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4757,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10626:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10625:9:25"
                  },
                  "scope": 5017,
                  "src": "10499:1454:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5015,
                    "nodeType": "Block",
                    "src": "12455:190:25",
                    "statements": [
                      {
                        "body": {
                          "id": 5007,
                          "nodeType": "Block",
                          "src": "12513:92:25",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 5002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 4998,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4975,
                                    "src": "12531:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 5000,
                                  "indexExpression": {
                                    "id": 4999,
                                    "name": "idx",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4987,
                                    "src": "12536:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12531:9:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 5001,
                                  "name": "needle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4981,
                                  "src": "12544:6:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "12531:19:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5006,
                              "nodeType": "IfStatement",
                              "src": "12527:68:25",
                              "trueBody": {
                                "id": 5005,
                                "nodeType": "Block",
                                "src": "12552:43:25",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 5003,
                                      "name": "idx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4987,
                                      "src": "12577:3:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "functionReturnParameters": 4985,
                                    "id": 5004,
                                    "nodeType": "Return",
                                    "src": "12570:10:25"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4990,
                            "name": "idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4987,
                            "src": "12489:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4991,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4977,
                              "src": "12495:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 4992,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4979,
                              "src": "12501:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12495:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12489:15:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5008,
                        "initializationExpression": {
                          "assignments": [
                            4987
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4987,
                              "mutability": "mutable",
                              "name": "idx",
                              "nameLocation": "12478:3:25",
                              "nodeType": "VariableDeclaration",
                              "scope": 5008,
                              "src": "12470:11:25",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4986,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12470:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4989,
                          "initialValue": {
                            "id": 4988,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4977,
                            "src": "12484:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12470:17:25"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "12506:5:25",
                            "subExpression": {
                              "id": 4995,
                              "name": "idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4987,
                              "src": "12506:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4997,
                          "nodeType": "ExpressionStatement",
                          "src": "12506:5:25"
                        },
                        "nodeType": "ForStatement",
                        "src": "12465:140:25"
                      },
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 5011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12626:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 5010,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12626:7:25",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "id": 5009,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "12621:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 5012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12621:13:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint256",
                              "typeString": "type(uint256)"
                            }
                          },
                          "id": 5013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12635:3:25",
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "12621:17:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4985,
                        "id": 5014,
                        "nodeType": "Return",
                        "src": "12614:24:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4973,
                    "nodeType": "StructuredDocumentation",
                    "src": "11959:347:25",
                    "text": " @dev Finds the first occurrence of the byte `needle` in `self`.\n @param self The string to search\n @param off The offset to start searching at\n @param len The number of bytes to search\n @param needle The byte to search for\n @return The offset of `needle` in `self`, or 2**256-1 if it was not found."
                  },
                  "id": 5016,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "find",
                  "nameLocation": "12320:4:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4982,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4975,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "12347:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 5016,
                        "src": "12334:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4974,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12334:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4977,
                        "mutability": "mutable",
                        "name": "off",
                        "nameLocation": "12369:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 5016,
                        "src": "12361:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4976,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12361:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4979,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "12390:3:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 5016,
                        "src": "12382:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12382:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4981,
                        "mutability": "mutable",
                        "name": "needle",
                        "nameLocation": "12410:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 5016,
                        "src": "12403:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 4980,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "12403:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12324:98:25"
                  },
                  "returnParameters": {
                    "id": 4985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4984,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5016,
                        "src": "12446:7:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12446:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12445:9:25"
                  },
                  "scope": 5017,
                  "src": "12311:334:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5018,
              "src": "25:12622:25",
              "usedErrors": []
            }
          ],
          "src": "0:12648:25"
        },
        "id": 25
      },
      "contracts/dnssec-oracle/DNSSEC.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/DNSSEC.sol",
          "exportedSymbols": {
            "DNSSEC": [
              5064
            ]
          },
          "id": 5065,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5019,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:26"
            },
            {
              "id": 5020,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "56:33:26"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "DNSSEC",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 5064,
              "linearizedBaseContracts": [
                5064
              ],
              "name": "DNSSEC",
              "nameLocation": "109:6:26",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "98d35f20",
                  "id": 5022,
                  "mutability": "mutable",
                  "name": "anchors",
                  "nameLocation": "135:7:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 5064,
                  "src": "122:20:26",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5021,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "122:5:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "DNSSEC.RRSetWithSignature",
                  "id": 5027,
                  "members": [
                    {
                      "constant": false,
                      "id": 5024,
                      "mutability": "mutable",
                      "name": "rrset",
                      "nameLocation": "191:5:26",
                      "nodeType": "VariableDeclaration",
                      "scope": 5027,
                      "src": "185:11:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5023,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "185:5:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5026,
                      "mutability": "mutable",
                      "name": "sig",
                      "nameLocation": "212:3:26",
                      "nodeType": "VariableDeclaration",
                      "scope": 5027,
                      "src": "206:9:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5025,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "206:5:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "RRSetWithSignature",
                  "nameLocation": "156:18:26",
                  "nodeType": "StructDefinition",
                  "scope": 5064,
                  "src": "149:73:26",
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "f73c3c226af96b7f1ba666a21b3ceaf2be3ee6a365e3178fd9cd1eaae0075aa8",
                  "id": 5033,
                  "name": "AlgorithmUpdated",
                  "nameLocation": "234:16:26",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5029,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "257:2:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5033,
                        "src": "251:8:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5028,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "251:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5031,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "269:4:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5033,
                        "src": "261:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5030,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "261:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "250:24:26"
                  },
                  "src": "228:47:26"
                },
                {
                  "anonymous": false,
                  "eventSelector": "2fcc274c3b72dd483ab201bfa87295e3817e8b9b10693219873b722ca1af00c7",
                  "id": 5039,
                  "name": "DigestUpdated",
                  "nameLocation": "286:13:26",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5035,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "306:2:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5039,
                        "src": "300:8:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5034,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5037,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "318:4:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5039,
                        "src": "310:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5036,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "310:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "299:24:26"
                  },
                  "src": "280:44:26"
                },
                {
                  "functionSelector": "bdf95fef",
                  "id": 5050,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyRRSet",
                  "nameLocation": "339:11:26",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5043,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "379:5:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5050,
                        "src": "351:33:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5041,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5040,
                              "name": "RRSetWithSignature",
                              "nameLocations": [
                                "351:18:26"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "351:18:26"
                            },
                            "referencedDeclaration": 5027,
                            "src": "351:18:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 5042,
                          "nodeType": "ArrayTypeName",
                          "src": "351:20:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "350:35:26"
                  },
                  "returnParameters": {
                    "id": 5049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5046,
                        "mutability": "mutable",
                        "name": "rrs",
                        "nameLocation": "462:3:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5050,
                        "src": "449:16:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5045,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "449:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5048,
                        "mutability": "mutable",
                        "name": "inception",
                        "nameLocation": "474:9:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5050,
                        "src": "467:16:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5047,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "467:6:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "448:36:26"
                  },
                  "scope": 5064,
                  "src": "330:155:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "functionSelector": "440f3d42",
                  "id": 5063,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyRRSet",
                  "nameLocation": "500:11:26",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5057,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5054,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "540:5:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5063,
                        "src": "512:33:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5052,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5051,
                              "name": "RRSetWithSignature",
                              "nameLocations": [
                                "512:18:26"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "512:18:26"
                            },
                            "referencedDeclaration": 5027,
                            "src": "512:18:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 5053,
                          "nodeType": "ArrayTypeName",
                          "src": "512:20:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5056,
                        "mutability": "mutable",
                        "name": "now",
                        "nameLocation": "555:3:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5063,
                        "src": "547:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5055,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "547:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "511:48:26"
                  },
                  "returnParameters": {
                    "id": 5062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5059,
                        "mutability": "mutable",
                        "name": "rrs",
                        "nameLocation": "634:3:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5063,
                        "src": "621:16:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5058,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "621:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5061,
                        "mutability": "mutable",
                        "name": "inception",
                        "nameLocation": "646:9:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 5063,
                        "src": "639:16:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5060,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "639:6:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "620:36:26"
                  },
                  "scope": 5064,
                  "src": "491:166:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 5065,
              "src": "91:568:26",
              "usedErrors": []
            }
          ],
          "src": "32:628:26"
        },
        "id": 26
      },
      "contracts/dnssec-oracle/DNSSECImpl.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/DNSSECImpl.sol",
          "exportedSymbols": {
            "Algorithm": [
              7075
            ],
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "DNSSEC": [
              5064
            ],
            "DNSSECImpl": [
              5974
            ],
            "Digest": [
              8916
            ],
            "Owned": [
              6012
            ],
            "RRUtils": [
              7059
            ]
          },
          "id": 5975,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5066,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:27"
            },
            {
              "id": 5067,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "56:33:27"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/Owned.sol",
              "file": "./Owned.sol",
              "id": 5068,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5975,
              "sourceUnit": 6013,
              "src": "91:21:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "./BytesUtils.sol",
              "id": 5069,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5975,
              "sourceUnit": 5018,
              "src": "113:26:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/RRUtils.sol",
              "file": "./RRUtils.sol",
              "id": 5070,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5975,
              "sourceUnit": 7060,
              "src": "140:23:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/DNSSEC.sol",
              "file": "./DNSSEC.sol",
              "id": 5071,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5975,
              "sourceUnit": 5065,
              "src": "164:22:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/Algorithm.sol",
              "file": "./algorithms/Algorithm.sol",
              "id": 5072,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5975,
              "sourceUnit": 7076,
              "src": "187:36:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/digests/Digest.sol",
              "file": "./digests/Digest.sol",
              "id": 5073,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5975,
              "sourceUnit": 8917,
              "src": "224:30:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ensdomains/buffer/contracts/Buffer.sol",
              "file": "@ensdomains/buffer/contracts/Buffer.sol",
              "id": 5074,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5975,
              "sourceUnit": 522,
              "src": "255:49:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5075,
                    "name": "DNSSEC",
                    "nameLocations": [
                      "418:6:27"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5064,
                    "src": "418:6:27"
                  },
                  "id": 5076,
                  "nodeType": "InheritanceSpecifier",
                  "src": "418:6:27"
                },
                {
                  "baseName": {
                    "id": 5077,
                    "name": "Owned",
                    "nameLocations": [
                      "426:5:27"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 6012,
                    "src": "426:5:27"
                  },
                  "id": 5078,
                  "nodeType": "InheritanceSpecifier",
                  "src": "426:5:27"
                }
              ],
              "canonicalName": "DNSSECImpl",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5974,
              "linearizedBaseContracts": [
                5974,
                6012,
                5064
              ],
              "name": "DNSSECImpl",
              "nameLocation": "404:10:27",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 5082,
                  "libraryName": {
                    "id": 5079,
                    "name": "Buffer",
                    "nameLocations": [
                      "444:6:27"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 521,
                    "src": "444:6:27"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "438:31:27",
                  "typeName": {
                    "id": 5081,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5080,
                      "name": "Buffer.buffer",
                      "nameLocations": [
                        "455:6:27",
                        "462:6:27"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 7,
                      "src": "455:13:27"
                    },
                    "referencedDeclaration": 7,
                    "src": "455:13:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                      "typeString": "struct Buffer.buffer"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 5085,
                  "libraryName": {
                    "id": 5083,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "480:10:27"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "480:10:27"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "474:27:27",
                  "typeName": {
                    "id": 5084,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "495:5:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 5087,
                  "libraryName": {
                    "id": 5086,
                    "name": "RRUtils",
                    "nameLocations": [
                      "512:7:27"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7059,
                    "src": "512:7:27"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "506:20:27"
                },
                {
                  "constant": true,
                  "id": 5090,
                  "mutability": "constant",
                  "name": "DNSCLASS_IN",
                  "nameLocation": "548:11:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 5974,
                  "src": "532:31:27",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 5088,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "532:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 5089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "562:1:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 5093,
                  "mutability": "constant",
                  "name": "DNSTYPE_DS",
                  "nameLocation": "586:10:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 5974,
                  "src": "570:31:27",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 5091,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "570:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "3433",
                    "id": 5092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "599:2:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_43_by_1",
                      "typeString": "int_const 43"
                    },
                    "value": "43"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 5096,
                  "mutability": "constant",
                  "name": "DNSTYPE_DNSKEY",
                  "nameLocation": "623:14:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 5974,
                  "src": "607:35:27",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 5094,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "607:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "3438",
                    "id": 5095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "640:2:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_48_by_1",
                      "typeString": "int_const 48"
                    },
                    "value": "48"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 5099,
                  "mutability": "constant",
                  "name": "DNSKEY_FLAG_ZONEKEY",
                  "nameLocation": "666:19:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 5974,
                  "src": "649:44:27",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5097,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "649:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3078313030",
                    "id": 5098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "688:5:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_256_by_1",
                      "typeString": "int_const 256"
                    },
                    "value": "0x100"
                  },
                  "visibility": "internal"
                },
                {
                  "errorSelector": "e861b2bd",
                  "id": 5105,
                  "name": "InvalidLabelCount",
                  "nameLocation": "706:17:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5104,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5101,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "730:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5105,
                        "src": "724:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5100,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "724:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5103,
                        "mutability": "mutable",
                        "name": "labelsExpected",
                        "nameLocation": "744:14:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5105,
                        "src": "736:22:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5102,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "736:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "723:36:27"
                  },
                  "src": "700:60:27"
                },
                {
                  "errorSelector": "bd41036a",
                  "id": 5111,
                  "name": "SignatureNotValidYet",
                  "nameLocation": "771:20:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5110,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5107,
                        "mutability": "mutable",
                        "name": "inception",
                        "nameLocation": "799:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5111,
                        "src": "792:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5106,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "792:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5109,
                        "mutability": "mutable",
                        "name": "now",
                        "nameLocation": "817:3:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5111,
                        "src": "810:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5108,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "810:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "791:30:27"
                  },
                  "src": "765:57:27"
                },
                {
                  "errorSelector": "a784f87e",
                  "id": 5117,
                  "name": "SignatureExpired",
                  "nameLocation": "833:16:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5113,
                        "mutability": "mutable",
                        "name": "expiration",
                        "nameLocation": "857:10:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5117,
                        "src": "850:17:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5112,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "850:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5115,
                        "mutability": "mutable",
                        "name": "now",
                        "nameLocation": "876:3:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5117,
                        "src": "869:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5114,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "869:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "849:31:27"
                  },
                  "src": "827:54:27"
                },
                {
                  "errorSelector": "98a5f31a",
                  "id": 5121,
                  "name": "InvalidClass",
                  "nameLocation": "892:12:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5120,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5119,
                        "mutability": "mutable",
                        "name": "class",
                        "nameLocation": "912:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5121,
                        "src": "905:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5118,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "905:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "904:14:27"
                  },
                  "src": "886:33:27"
                },
                {
                  "errorSelector": "cbceee6f",
                  "id": 5123,
                  "name": "InvalidRRSet",
                  "nameLocation": "930:12:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5122,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "942:2:27"
                  },
                  "src": "924:21:27"
                },
                {
                  "errorSelector": "a6ff8a8a",
                  "id": 5129,
                  "name": "SignatureTypeMismatch",
                  "nameLocation": "956:21:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5128,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5125,
                        "mutability": "mutable",
                        "name": "rrsetType",
                        "nameLocation": "985:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5129,
                        "src": "978:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5124,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "978:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5127,
                        "mutability": "mutable",
                        "name": "sigType",
                        "nameLocation": "1003:7:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5129,
                        "src": "996:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5126,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "996:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "977:34:27"
                  },
                  "src": "950:62:27"
                },
                {
                  "errorSelector": "eaafc59b",
                  "id": 5135,
                  "name": "InvalidSignerName",
                  "nameLocation": "1023:17:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5131,
                        "mutability": "mutable",
                        "name": "rrsetName",
                        "nameLocation": "1047:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5135,
                        "src": "1041:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5130,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1041:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5133,
                        "mutability": "mutable",
                        "name": "signerName",
                        "nameLocation": "1064:10:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5135,
                        "src": "1058:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5132,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1058:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1040:35:27"
                  },
                  "src": "1017:59:27"
                },
                {
                  "errorSelector": "61529e87",
                  "id": 5139,
                  "name": "InvalidProofType",
                  "nameLocation": "1087:16:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5137,
                        "mutability": "mutable",
                        "name": "proofType",
                        "nameLocation": "1111:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5139,
                        "src": "1104:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5136,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1104:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1103:18:27"
                  },
                  "src": "1081:41:27"
                },
                {
                  "errorSelector": "d700ae7e",
                  "id": 5145,
                  "name": "ProofNameMismatch",
                  "nameLocation": "1133:17:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5141,
                        "mutability": "mutable",
                        "name": "signerName",
                        "nameLocation": "1157:10:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5145,
                        "src": "1151:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5140,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1151:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5143,
                        "mutability": "mutable",
                        "name": "proofName",
                        "nameLocation": "1175:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5145,
                        "src": "1169:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5142,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1169:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1150:35:27"
                  },
                  "src": "1127:59:27"
                },
                {
                  "errorSelector": "06cde0f3",
                  "id": 5149,
                  "name": "NoMatchingProof",
                  "nameLocation": "1197:15:27",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5148,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5147,
                        "mutability": "mutable",
                        "name": "signerName",
                        "nameLocation": "1219:10:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5149,
                        "src": "1213:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5146,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1213:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1212:18:27"
                  },
                  "src": "1191:40:27"
                },
                {
                  "constant": false,
                  "functionSelector": "c327deef",
                  "id": 5154,
                  "mutability": "mutable",
                  "name": "algorithms",
                  "nameLocation": "1272:10:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 5974,
                  "src": "1237:45:27",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Algorithm_$7075_$",
                    "typeString": "mapping(uint8 => contract Algorithm)"
                  },
                  "typeName": {
                    "id": 5153,
                    "keyType": {
                      "id": 5150,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "1245:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1237:27:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Algorithm_$7075_$",
                      "typeString": "mapping(uint8 => contract Algorithm)"
                    },
                    "valueType": {
                      "id": 5152,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 5151,
                        "name": "Algorithm",
                        "nameLocations": [
                          "1254:9:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7075,
                        "src": "1254:9:27"
                      },
                      "referencedDeclaration": 7075,
                      "src": "1254:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Algorithm_$7075",
                        "typeString": "contract Algorithm"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "73cc48a6",
                  "id": 5159,
                  "mutability": "mutable",
                  "name": "digests",
                  "nameLocation": "1320:7:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 5974,
                  "src": "1288:39:27",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Digest_$8916_$",
                    "typeString": "mapping(uint8 => contract Digest)"
                  },
                  "typeName": {
                    "id": 5158,
                    "keyType": {
                      "id": 5155,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "1296:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1288:24:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Digest_$8916_$",
                      "typeString": "mapping(uint8 => contract Digest)"
                    },
                    "valueType": {
                      "id": 5157,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 5156,
                        "name": "Digest",
                        "nameLocations": [
                          "1305:6:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8916,
                        "src": "1305:6:27"
                      },
                      "referencedDeclaration": 8916,
                      "src": "1305:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Digest_$8916",
                        "typeString": "contract Digest"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5169,
                    "nodeType": "Block",
                    "src": "1487:154:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 5167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5165,
                            "name": "anchors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5022,
                            "src": "1616:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5166,
                            "name": "_anchors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5162,
                            "src": "1626:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "1616:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 5168,
                        "nodeType": "ExpressionStatement",
                        "src": "1616:18:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5160,
                    "nodeType": "StructuredDocumentation",
                    "src": "1334:113:27",
                    "text": " @dev Constructor.\n @param _anchors The binary format RR entries for the root DS records."
                  },
                  "id": 5170,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5162,
                        "mutability": "mutable",
                        "name": "_anchors",
                        "nameLocation": "1477:8:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5170,
                        "src": "1464:21:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5161,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1464:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1463:23:27"
                  },
                  "returnParameters": {
                    "id": 5164,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1487:0:27"
                  },
                  "scope": 5974,
                  "src": "1452:189:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5195,
                    "nodeType": "Block",
                    "src": "1939:88:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 5185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 5181,
                              "name": "algorithms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5154,
                              "src": "1949:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Algorithm_$7075_$",
                                "typeString": "mapping(uint8 => contract Algorithm)"
                              }
                            },
                            "id": 5183,
                            "indexExpression": {
                              "id": 5182,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5173,
                              "src": "1960:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1949:14:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Algorithm_$7075",
                              "typeString": "contract Algorithm"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5184,
                            "name": "algo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5176,
                            "src": "1966:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Algorithm_$7075",
                              "typeString": "contract Algorithm"
                            }
                          },
                          "src": "1949:21:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Algorithm_$7075",
                            "typeString": "contract Algorithm"
                          }
                        },
                        "id": 5186,
                        "nodeType": "ExpressionStatement",
                        "src": "1949:21:27"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5188,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5173,
                              "src": "2002:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5191,
                                  "name": "algo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5176,
                                  "src": "2014:4:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Algorithm_$7075",
                                    "typeString": "contract Algorithm"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Algorithm_$7075",
                                    "typeString": "contract Algorithm"
                                  }
                                ],
                                "id": 5190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2006:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5189,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2006:7:27",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2006:13:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5187,
                            "name": "AlgorithmUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5033,
                            "src": "1985:16:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_address_$returns$__$",
                              "typeString": "function (uint8,address)"
                            }
                          },
                          "id": 5193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1985:35:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5194,
                        "nodeType": "EmitStatement",
                        "src": "1980:40:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5171,
                    "nodeType": "StructuredDocumentation",
                    "src": "1647:221:27",
                    "text": " @dev Sets the contract address for a signature verification algorithm.\n      Callable only by the owner.\n @param id The algorithm ID\n @param algo The address of the algorithm contract."
                  },
                  "functionSelector": "020ed8d3",
                  "id": 5196,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 5179,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5178,
                        "name": "owner_only",
                        "nameLocations": [
                          "1928:10:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5990,
                        "src": "1928:10:27"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1928:10:27"
                    }
                  ],
                  "name": "setAlgorithm",
                  "nameLocation": "1882:12:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5173,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1901:2:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5196,
                        "src": "1895:8:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5172,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1895:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5176,
                        "mutability": "mutable",
                        "name": "algo",
                        "nameLocation": "1915:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5196,
                        "src": "1905:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Algorithm_$7075",
                          "typeString": "contract Algorithm"
                        },
                        "typeName": {
                          "id": 5175,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5174,
                            "name": "Algorithm",
                            "nameLocations": [
                              "1905:9:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7075,
                            "src": "1905:9:27"
                          },
                          "referencedDeclaration": 7075,
                          "src": "1905:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Algorithm_$7075",
                            "typeString": "contract Algorithm"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1894:26:27"
                  },
                  "returnParameters": {
                    "id": 5180,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1939:0:27"
                  },
                  "scope": 5974,
                  "src": "1873:154:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5221,
                    "nodeType": "Block",
                    "src": "2314:86:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 5211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 5207,
                              "name": "digests",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5159,
                              "src": "2324:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Digest_$8916_$",
                                "typeString": "mapping(uint8 => contract Digest)"
                              }
                            },
                            "id": 5209,
                            "indexExpression": {
                              "id": 5208,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5199,
                              "src": "2332:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2324:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Digest_$8916",
                              "typeString": "contract Digest"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5210,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5202,
                            "src": "2338:6:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Digest_$8916",
                              "typeString": "contract Digest"
                            }
                          },
                          "src": "2324:20:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Digest_$8916",
                            "typeString": "contract Digest"
                          }
                        },
                        "id": 5212,
                        "nodeType": "ExpressionStatement",
                        "src": "2324:20:27"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5214,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5199,
                              "src": "2373:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5217,
                                  "name": "digest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5202,
                                  "src": "2385:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Digest_$8916",
                                    "typeString": "contract Digest"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Digest_$8916",
                                    "typeString": "contract Digest"
                                  }
                                ],
                                "id": 5216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2377:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5215,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2377:7:27",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2377:15:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5213,
                            "name": "DigestUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5039,
                            "src": "2359:13:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_address_$returns$__$",
                              "typeString": "function (uint8,address)"
                            }
                          },
                          "id": 5219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2359:34:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5220,
                        "nodeType": "EmitStatement",
                        "src": "2354:39:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5197,
                    "nodeType": "StructuredDocumentation",
                    "src": "2033:214:27",
                    "text": " @dev Sets the contract address for a digest verification algorithm.\n      Callable only by the owner.\n @param id The digest ID\n @param digest The address of the digest contract."
                  },
                  "functionSelector": "28e7677d",
                  "id": 5222,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 5205,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5204,
                        "name": "owner_only",
                        "nameLocations": [
                          "2303:10:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5990,
                        "src": "2303:10:27"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2303:10:27"
                    }
                  ],
                  "name": "setDigest",
                  "nameLocation": "2261:9:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5199,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2277:2:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5222,
                        "src": "2271:8:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5198,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2271:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5202,
                        "mutability": "mutable",
                        "name": "digest",
                        "nameLocation": "2288:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5222,
                        "src": "2281:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Digest_$8916",
                          "typeString": "contract Digest"
                        },
                        "typeName": {
                          "id": 5201,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5200,
                            "name": "Digest",
                            "nameLocations": [
                              "2281:6:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 8916,
                            "src": "2281:6:27"
                          },
                          "referencedDeclaration": 8916,
                          "src": "2281:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Digest_$8916",
                            "typeString": "contract Digest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2270:25:27"
                  },
                  "returnParameters": {
                    "id": 5206,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2314:0:27"
                  },
                  "scope": 5974,
                  "src": "2252:148:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5050
                  ],
                  "body": {
                    "id": 5241,
                    "nodeType": "Block",
                    "src": "3005:59:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5236,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5227,
                              "src": "3034:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 5237,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "3041:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3047:9:27",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "3041:15:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5235,
                            "name": "verifyRRSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5302
                            ],
                            "referencedDeclaration": 5302,
                            "src": "3022:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$_t_uint32_$",
                              "typeString": "function (struct DNSSEC.RRSetWithSignature memory[] memory,uint256) view returns (bytes memory,uint32)"
                            }
                          },
                          "id": 5239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3022:35:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_uint32_$",
                            "typeString": "tuple(bytes memory,uint32)"
                          }
                        },
                        "functionReturnParameters": 5234,
                        "id": 5240,
                        "nodeType": "Return",
                        "src": "3015:42:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5223,
                    "nodeType": "StructuredDocumentation",
                    "src": "2406:418:27",
                    "text": " @dev Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.\n      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.\n @param input A list of signed RRSets.\n @return rrs The RRData from the last RRSet in the chain.\n @return inception The inception time of the signed record set."
                  },
                  "functionSelector": "bdf95fef",
                  "id": 5242,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyRRSet",
                  "nameLocation": "2838:11:27",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5229,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2939:8:27"
                  },
                  "parameters": {
                    "id": 5228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5227,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "2878:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5242,
                        "src": "2850:33:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5225,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5224,
                              "name": "RRSetWithSignature",
                              "nameLocations": [
                                "2850:18:27"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "2850:18:27"
                            },
                            "referencedDeclaration": 5027,
                            "src": "2850:18:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 5226,
                          "nodeType": "ArrayTypeName",
                          "src": "2850:20:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2849:35:27"
                  },
                  "returnParameters": {
                    "id": 5234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5231,
                        "mutability": "mutable",
                        "name": "rrs",
                        "nameLocation": "2978:3:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5242,
                        "src": "2965:16:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5230,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2965:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5233,
                        "mutability": "mutable",
                        "name": "inception",
                        "nameLocation": "2990:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5242,
                        "src": "2983:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5232,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2983:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2964:36:27"
                  },
                  "scope": 5974,
                  "src": "2829:235:27",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5063
                  ],
                  "body": {
                    "id": 5301,
                    "nodeType": "Block",
                    "src": "3745:364:27",
                    "statements": [
                      {
                        "assignments": [
                          5258
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5258,
                            "mutability": "mutable",
                            "name": "proof",
                            "nameLocation": "3768:5:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 5301,
                            "src": "3755:18:27",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5257,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3755:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5260,
                        "initialValue": {
                          "id": 5259,
                          "name": "anchors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5022,
                          "src": "3776:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3755:28:27"
                      },
                      {
                        "body": {
                          "id": 5295,
                          "nodeType": "Block",
                          "src": "3836:232:27",
                          "statements": [
                            {
                              "assignments": [
                                5276
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5276,
                                  "mutability": "mutable",
                                  "name": "rrset",
                                  "nameLocation": "3875:5:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5295,
                                  "src": "3850:30:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                    "typeString": "struct RRUtils.SignedSet"
                                  },
                                  "typeName": {
                                    "id": 5275,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 5274,
                                      "name": "RRUtils.SignedSet",
                                      "nameLocations": [
                                        "3850:7:27",
                                        "3858:9:27"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 6188,
                                      "src": "3850:17:27"
                                    },
                                    "referencedDeclaration": 6188,
                                    "src": "3850:17:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                                      "typeString": "struct RRUtils.SignedSet"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5284,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 5278,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5247,
                                      "src": "3918:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                                      }
                                    },
                                    "id": 5280,
                                    "indexExpression": {
                                      "id": 5279,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5262,
                                      "src": "3924:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3918:8:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                      "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                    }
                                  },
                                  {
                                    "id": 5281,
                                    "name": "proof",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5258,
                                    "src": "3944:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 5282,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5249,
                                    "src": "3967:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                      "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5277,
                                  "name": "validateSignedSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5404,
                                  "src": "3883:17:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_SignedSet_$6188_memory_ptr_$",
                                    "typeString": "function (struct DNSSEC.RRSetWithSignature memory,bytes memory,uint256) view returns (struct RRUtils.SignedSet memory)"
                                  }
                                },
                                "id": 5283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3883:101:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3850:134:27"
                            },
                            {
                              "expression": {
                                "id": 5288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5285,
                                  "name": "proof",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5258,
                                  "src": "3998:5:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 5286,
                                    "name": "rrset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5276,
                                    "src": "4006:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    }
                                  },
                                  "id": 5287,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4012:4:27",
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6185,
                                  "src": "4006:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "3998:18:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 5289,
                              "nodeType": "ExpressionStatement",
                              "src": "3998:18:27"
                            },
                            {
                              "expression": {
                                "id": 5293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5290,
                                  "name": "inception",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5255,
                                  "src": "4030:9:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 5291,
                                    "name": "rrset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5276,
                                    "src": "4042:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    }
                                  },
                                  "id": 5292,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4048:9:27",
                                  "memberName": "inception",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6179,
                                  "src": "4042:15:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "4030:27:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 5294,
                              "nodeType": "ExpressionStatement",
                              "src": "4030:27:27"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5265,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5262,
                            "src": "3813:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 5266,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5247,
                              "src": "3817:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory[] memory"
                              }
                            },
                            "id": 5267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3823:6:27",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3817:12:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3813:16:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5296,
                        "initializationExpression": {
                          "assignments": [
                            5262
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5262,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "3806:1:27",
                              "nodeType": "VariableDeclaration",
                              "scope": 5296,
                              "src": "3798:9:27",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5261,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3798:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5264,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 5263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3810:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3798:13:27"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3831:3:27",
                            "subExpression": {
                              "id": 5269,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5262,
                              "src": "3831:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5271,
                          "nodeType": "ExpressionStatement",
                          "src": "3831:3:27"
                        },
                        "nodeType": "ForStatement",
                        "src": "3793:275:27"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 5297,
                              "name": "proof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5258,
                              "src": "4085:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 5298,
                              "name": "inception",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5255,
                              "src": "4092:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "id": 5299,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4084:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_uint32_$",
                            "typeString": "tuple(bytes memory,uint32)"
                          }
                        },
                        "functionReturnParameters": 5256,
                        "id": 5300,
                        "nodeType": "Return",
                        "src": "4077:25:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5243,
                    "nodeType": "StructuredDocumentation",
                    "src": "3070:483:27",
                    "text": " @dev Takes a chain of signed DNS records, verifies them, and returns the data from the last record set in the chain.\n      Reverts if the records do not form an unbroken chain of trust to the DNSSEC anchor records.\n @param input A list of signed RRSets.\n @param now The Unix timestamp to validate the records at.\n @return rrs The RRData from the last RRSet in the chain.\n @return inception The inception time of the signed record set."
                  },
                  "functionSelector": "440f3d42",
                  "id": 5302,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyRRSet",
                  "nameLocation": "3567:11:27",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5251,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3679:8:27"
                  },
                  "parameters": {
                    "id": 5250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5247,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "3607:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5302,
                        "src": "3579:33:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5245,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5244,
                              "name": "RRSetWithSignature",
                              "nameLocations": [
                                "3579:18:27"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5027,
                              "src": "3579:18:27"
                            },
                            "referencedDeclaration": 5027,
                            "src": "3579:18:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                              "typeString": "struct DNSSEC.RRSetWithSignature"
                            }
                          },
                          "id": 5246,
                          "nodeType": "ArrayTypeName",
                          "src": "3579:20:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RRSetWithSignature_$5027_storage_$dyn_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5249,
                        "mutability": "mutable",
                        "name": "now",
                        "nameLocation": "3622:3:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5302,
                        "src": "3614:11:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3614:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3578:48:27"
                  },
                  "returnParameters": {
                    "id": 5256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5253,
                        "mutability": "mutable",
                        "name": "rrs",
                        "nameLocation": "3718:3:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5302,
                        "src": "3705:16:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5252,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3705:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5255,
                        "mutability": "mutable",
                        "name": "inception",
                        "nameLocation": "3730:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5302,
                        "src": "3723:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5254,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3723:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3704:36:27"
                  },
                  "scope": 5974,
                  "src": "3558:551:27",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5403,
                    "nodeType": "Block",
                    "src": "4796:1215:27",
                    "statements": [
                      {
                        "expression": {
                          "id": 5321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5316,
                            "name": "rrset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5314,
                            "src": "4806:5:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                              "typeString": "struct RRUtils.SignedSet memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "expression": {
                                  "id": 5317,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5306,
                                  "src": "4814:5:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                    "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                  }
                                },
                                "id": 5318,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4820:5:27",
                                "memberName": "rrset",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5024,
                                "src": "4814:11:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 5319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4826:13:27",
                              "memberName": "readSignedSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6290,
                              "src": "4814:25:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_SignedSet_$6188_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) pure returns (struct RRUtils.SignedSet memory)"
                              }
                            },
                            "id": 5320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4814:27:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                              "typeString": "struct RRUtils.SignedSet memory"
                            }
                          },
                          "src": "4806:35:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                            "typeString": "struct RRUtils.SignedSet memory"
                          }
                        },
                        "id": 5322,
                        "nodeType": "ExpressionStatement",
                        "src": "4806:35:27"
                      },
                      {
                        "assignments": [
                          5324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5324,
                            "mutability": "mutable",
                            "name": "name",
                            "nameLocation": "4929:4:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 5403,
                            "src": "4916:17:27",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5323,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4916:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5330,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5326,
                              "name": "rrset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5314,
                              "src": "4948:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 5327,
                                "name": "rrset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5314,
                                "src": "4955:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "id": 5328,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4961:11:27",
                              "memberName": "typeCovered",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6169,
                              "src": "4955:17:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 5325,
                            "name": "validateRRs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5497,
                            "src": "4936:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_SignedSet_$6188_memory_ptr_$_t_uint16_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (struct RRUtils.SignedSet memory,uint16) pure returns (bytes memory)"
                            }
                          },
                          "id": 5329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4936:37:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4916:57:27"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 5333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5003:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 5331,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5324,
                                "src": "4987:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 5332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4992:10:27",
                              "memberName": "labelCount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6143,
                              "src": "4987:15:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4987:18:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 5335,
                              "name": "rrset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5314,
                              "src": "5009:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 5336,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5015:6:27",
                            "memberName": "labels",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6173,
                            "src": "5009:12:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "4987:34:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5345,
                        "nodeType": "IfStatement",
                        "src": "4983:109:27",
                        "trueBody": {
                          "id": 5344,
                          "nodeType": "Block",
                          "src": "5023:69:27",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 5339,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5324,
                                    "src": "5062:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5340,
                                      "name": "rrset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5314,
                                      "src": "5068:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                        "typeString": "struct RRUtils.SignedSet memory"
                                      }
                                    },
                                    "id": 5341,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5074:6:27",
                                    "memberName": "labels",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6173,
                                    "src": "5068:12:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 5338,
                                  "name": "InvalidLabelCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5105,
                                  "src": "5044:17:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes memory,uint256) pure"
                                  }
                                },
                                "id": 5342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5044:37:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5343,
                              "nodeType": "RevertStatement",
                              "src": "5037:44:27"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 5350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 5346,
                              "name": "rrset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5314,
                              "src": "5101:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 5348,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "5107:4:27",
                            "memberName": "name",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6187,
                            "src": "5101:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5349,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5324,
                            "src": "5114:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "5101:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 5351,
                        "nodeType": "ExpressionStatement",
                        "src": "5101:17:27"
                      },
                      {
                        "condition": {
                          "id": 5361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5452:55:27",
                          "subExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 5354,
                                  "name": "rrset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5314,
                                  "src": "5477:5:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                    "typeString": "struct RRUtils.SignedSet memory"
                                  }
                                },
                                "id": 5355,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5483:10:27",
                                "memberName": "expiration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6177,
                                "src": "5477:16:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 5358,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5310,
                                    "src": "5502:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5357,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5495:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 5356,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5495:6:27",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5495:11:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "expression": {
                                "id": 5352,
                                "name": "RRUtils",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7059,
                                "src": "5453:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                  "typeString": "type(library RRUtils)"
                                }
                              },
                              "id": 5353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5461:15:27",
                              "memberName": "serialNumberGte",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6855,
                              "src": "5453:23:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                "typeString": "function (uint32,uint32) pure returns (bool)"
                              }
                            },
                            "id": 5360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5453:54:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5372,
                        "nodeType": "IfStatement",
                        "src": "5448:140:27",
                        "trueBody": {
                          "id": 5371,
                          "nodeType": "Block",
                          "src": "5509:79:27",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 5363,
                                      "name": "rrset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5314,
                                      "src": "5547:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                        "typeString": "struct RRUtils.SignedSet memory"
                                      }
                                    },
                                    "id": 5364,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5553:10:27",
                                    "memberName": "expiration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6177,
                                    "src": "5547:16:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 5367,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5310,
                                        "src": "5572:3:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5565:6:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint32_$",
                                        "typeString": "type(uint32)"
                                      },
                                      "typeName": {
                                        "id": 5365,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5565:6:27",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5368,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5565:11:27",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  ],
                                  "id": 5362,
                                  "name": "SignatureExpired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5117,
                                  "src": "5530:16:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint32_$_t_uint32_$returns$__$",
                                    "typeString": "function (uint32,uint32) pure"
                                  }
                                },
                                "id": 5369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5530:47:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5370,
                              "nodeType": "RevertStatement",
                              "src": "5523:54:27"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 5382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5757:54:27",
                          "subExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 5377,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5310,
                                    "src": "5789:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5782:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 5375,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5782:6:27",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5782:11:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "expression": {
                                  "id": 5379,
                                  "name": "rrset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5314,
                                  "src": "5795:5:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                    "typeString": "struct RRUtils.SignedSet memory"
                                  }
                                },
                                "id": 5380,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5801:9:27",
                                "memberName": "inception",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6179,
                                "src": "5795:15:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "expression": {
                                "id": 5373,
                                "name": "RRUtils",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7059,
                                "src": "5758:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                  "typeString": "type(library RRUtils)"
                                }
                              },
                              "id": 5374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5766:15:27",
                              "memberName": "serialNumberGte",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6855,
                              "src": "5758:23:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                "typeString": "function (uint32,uint32) pure returns (bool)"
                              }
                            },
                            "id": 5381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5758:53:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5393,
                        "nodeType": "IfStatement",
                        "src": "5753:142:27",
                        "trueBody": {
                          "id": 5392,
                          "nodeType": "Block",
                          "src": "5813:82:27",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 5384,
                                      "name": "rrset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5314,
                                      "src": "5855:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                        "typeString": "struct RRUtils.SignedSet memory"
                                      }
                                    },
                                    "id": 5385,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5861:9:27",
                                    "memberName": "inception",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6179,
                                    "src": "5855:15:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 5388,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5310,
                                        "src": "5879:3:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5387,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5872:6:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint32_$",
                                        "typeString": "type(uint32)"
                                      },
                                      "typeName": {
                                        "id": 5386,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5872:6:27",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5389,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5872:11:27",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  ],
                                  "id": 5383,
                                  "name": "SignatureNotValidYet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5111,
                                  "src": "5834:20:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint32_$_t_uint32_$returns$__$",
                                    "typeString": "function (uint32,uint32) pure"
                                  }
                                },
                                "id": 5390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5834:50:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5391,
                              "nodeType": "RevertStatement",
                              "src": "5827:57:27"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5395,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5324,
                              "src": "5955:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 5396,
                              "name": "rrset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5314,
                              "src": "5961:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            {
                              "id": 5397,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5306,
                              "src": "5968:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory"
                              }
                            },
                            {
                              "id": 5398,
                              "name": "proof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5308,
                              "src": "5975:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                "typeString": "struct DNSSEC.RRSetWithSignature memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5394,
                            "name": "verifySignature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5580,
                            "src": "5939:15:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_struct$_SignedSet_$6188_memory_ptr_$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory,bytes memory) view"
                            }
                          },
                          "id": 5399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5939:42:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5400,
                        "nodeType": "ExpressionStatement",
                        "src": "5939:42:27"
                      },
                      {
                        "expression": {
                          "id": 5401,
                          "name": "rrset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5314,
                          "src": "5999:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                            "typeString": "struct RRUtils.SignedSet memory"
                          }
                        },
                        "functionReturnParameters": 5315,
                        "id": 5402,
                        "nodeType": "Return",
                        "src": "5992:12:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5303,
                    "nodeType": "StructuredDocumentation",
                    "src": "4115:498:27",
                    "text": " @dev Validates an RRSet against the already trusted RR provided in `proof`.\n @param input The signed RR set. This is in the format described in section\n        5.3.2 of RFC4035: The RRDATA section from the RRSIG without the signature\n        data, followed by a series of canonicalised RR records that the signature\n        applies to.\n @param proof The DNSKEY or DS to validate the signature against.\n @param now The current timestamp."
                  },
                  "id": 5404,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateSignedSet",
                  "nameLocation": "4627:17:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5306,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "4680:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5404,
                        "src": "4654:31:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature"
                        },
                        "typeName": {
                          "id": 5305,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5304,
                            "name": "RRSetWithSignature",
                            "nameLocations": [
                              "4654:18:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5027,
                            "src": "4654:18:27"
                          },
                          "referencedDeclaration": 5027,
                          "src": "4654:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5308,
                        "mutability": "mutable",
                        "name": "proof",
                        "nameLocation": "4708:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5404,
                        "src": "4695:18:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5307,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4695:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5310,
                        "mutability": "mutable",
                        "name": "now",
                        "nameLocation": "4731:3:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5404,
                        "src": "4723:11:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4723:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4644:96:27"
                  },
                  "returnParameters": {
                    "id": 5315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5314,
                        "mutability": "mutable",
                        "name": "rrset",
                        "nameLocation": "4789:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5404,
                        "src": "4764:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet"
                        },
                        "typeName": {
                          "id": 5313,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5312,
                            "name": "RRUtils.SignedSet",
                            "nameLocations": [
                              "4764:7:27",
                              "4772:9:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6188,
                            "src": "4764:17:27"
                          },
                          "referencedDeclaration": 6188,
                          "src": "4764:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                            "typeString": "struct RRUtils.SignedSet"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4763:32:27"
                  },
                  "scope": 5974,
                  "src": "4618:1393:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5496,
                    "nodeType": "Block",
                    "src": "6308:1049:27",
                    "statements": [
                      {
                        "body": {
                          "id": 5494,
                          "nodeType": "Block",
                          "src": "6478:873:27",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 5435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 5432,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5419,
                                    "src": "6547:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 5433,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6552:5:27",
                                  "memberName": "class",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6314,
                                  "src": "6547:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 5434,
                                  "name": "DNSCLASS_IN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5090,
                                  "src": "6561:11:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "6547:25:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5442,
                              "nodeType": "IfStatement",
                              "src": "6543:95:27",
                              "trueBody": {
                                "id": 5441,
                                "nodeType": "Block",
                                "src": "6574:64:27",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 5437,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5419,
                                            "src": "6612:4:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 5438,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "6617:5:27",
                                          "memberName": "class",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6314,
                                          "src": "6612:10:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        ],
                                        "id": 5436,
                                        "name": "InvalidClass",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5121,
                                        "src": "6599:12:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_uint16_$returns$__$",
                                          "typeString": "function (uint16) pure"
                                        }
                                      },
                                      "id": 5439,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6599:24:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5440,
                                    "nodeType": "RevertStatement",
                                    "src": "6592:31:27"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5446,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 5443,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5413,
                                    "src": "6656:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 5444,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6661:6:27",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "6656:11:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 5445,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6671:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6656:16:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 5480,
                                "nodeType": "Block",
                                "src": "6731:394:27",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 5474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 5462,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 5454,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5413,
                                            "src": "6906:4:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 5455,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "6911:6:27",
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "src": "6906:11:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 5459,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5419,
                                                "src": "6942:4:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 5460,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "6947:6:27",
                                              "memberName": "offset",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6310,
                                              "src": "6942:11:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "expression": {
                                                "id": 5456,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5419,
                                                "src": "6921:4:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 5457,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "6926:4:27",
                                              "memberName": "data",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6308,
                                              "src": "6921:9:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 5458,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6931:10:27",
                                            "memberName": "nameLength",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6069,
                                            "src": "6921:20:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                              "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 5461,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6921:33:27",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "6906:48:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "id": 5473,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "!",
                                        "prefix": true,
                                        "src": "6978:52:27",
                                        "subExpression": {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 5465,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6991:1:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            {
                                              "expression": {
                                                "id": 5466,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5419,
                                                "src": "6994:4:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 5467,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "6999:4:27",
                                              "memberName": "data",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6308,
                                              "src": "6994:9:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 5468,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5419,
                                                "src": "7005:4:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 5469,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "7010:6:27",
                                              "memberName": "offset",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6310,
                                              "src": "7005:11:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 5470,
                                                "name": "name",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5413,
                                                "src": "7018:4:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 5471,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "7023:6:27",
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "src": "7018:11:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 5463,
                                              "name": "name",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5413,
                                              "src": "6979:4:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 5464,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6984:6:27",
                                            "memberName": "equals",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4449,
                                            "src": "6979:11:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                              "typeString": "function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)"
                                            }
                                          },
                                          "id": 5472,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6979:51:27",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "6906:124:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 5479,
                                    "nodeType": "IfStatement",
                                    "src": "6881:230:27",
                                    "trueBody": {
                                      "id": 5478,
                                      "nodeType": "Block",
                                      "src": "7049:62:27",
                                      "statements": [
                                        {
                                          "errorCall": {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 5475,
                                              "name": "InvalidRRSet",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5123,
                                              "src": "7078:12:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                "typeString": "function () pure"
                                              }
                                            },
                                            "id": 5476,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7078:14:27",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 5477,
                                          "nodeType": "RevertStatement",
                                          "src": "7071:21:27"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 5481,
                              "nodeType": "IfStatement",
                              "src": "6652:473:27",
                              "trueBody": {
                                "id": 5453,
                                "nodeType": "Block",
                                "src": "6674:51:27",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 5451,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 5447,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5413,
                                        "src": "6692:4:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "id": 5448,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5419,
                                            "src": "6699:4:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 5449,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "6704:4:27",
                                          "memberName": "name",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6493,
                                          "src": "6699:9:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                            "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 5450,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6699:11:27",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "6692:18:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 5452,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6692:18:27"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 5485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 5482,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5419,
                                    "src": "7224:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 5483,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7229:7:27",
                                  "memberName": "dnstype",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6312,
                                  "src": "7224:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 5484,
                                  "name": "typecovered",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5410,
                                  "src": "7240:11:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "7224:27:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5493,
                              "nodeType": "IfStatement",
                              "src": "7220:121:27",
                              "trueBody": {
                                "id": 5492,
                                "nodeType": "Block",
                                "src": "7253:88:27",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 5487,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5419,
                                            "src": "7300:4:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 5488,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "7305:7:27",
                                          "memberName": "dnstype",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6312,
                                          "src": "7300:12:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        {
                                          "id": 5489,
                                          "name": "typecovered",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5410,
                                          "src": "7314:11:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        ],
                                        "id": 5486,
                                        "name": "SignatureTypeMismatch",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5129,
                                        "src": "7278:21:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_uint16_$_t_uint16_$returns$__$",
                                          "typeString": "function (uint16,uint16) pure"
                                        }
                                      },
                                      "id": 5490,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7278:48:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5491,
                                    "nodeType": "RevertStatement",
                                    "src": "7271:55:27"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "id": 5427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6430:12:27",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5424,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5419,
                                "src": "6431:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5425,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6436:4:27",
                              "memberName": "done",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6366,
                              "src": "6431:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                              }
                            },
                            "id": 5426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6431:11:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5495,
                        "initializationExpression": {
                          "assignments": [
                            5419
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5419,
                              "mutability": "mutable",
                              "name": "iter",
                              "nameLocation": "6398:4:27",
                              "nodeType": "VariableDeclaration",
                              "scope": 5495,
                              "src": "6372:30:27",
                              "stateVariable": false,
                              "storageLocation": "memory",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator"
                              },
                              "typeName": {
                                "id": 5418,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 5417,
                                  "name": "RRUtils.RRIterator",
                                  "nameLocations": [
                                    "6372:7:27",
                                    "6380:10:27"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 6321,
                                  "src": "6372:18:27"
                                },
                                "referencedDeclaration": 6321,
                                "src": "6372:18:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                                  "typeString": "struct RRUtils.RRIterator"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5423,
                          "initialValue": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5420,
                                "name": "rrset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5408,
                                "src": "6405:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "id": 5421,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6411:3:27",
                              "memberName": "rrs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6306,
                              "src": "6405:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_SignedSet_$6188_memory_ptr_$returns$_t_struct$_RRIterator_$6321_memory_ptr_$bound_to$_t_struct$_SignedSet_$6188_memory_ptr_$",
                                "typeString": "function (struct RRUtils.SignedSet memory) pure returns (struct RRUtils.RRIterator memory)"
                              }
                            },
                            "id": 5422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6405:11:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6372:44:27"
                        },
                        "loopExpression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5428,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5419,
                                "src": "6456:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5429,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6461:4:27",
                              "memberName": "next",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6470,
                              "src": "6456:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure"
                              }
                            },
                            "id": 5430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6456:11:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5431,
                          "nodeType": "ExpressionStatement",
                          "src": "6456:11:27"
                        },
                        "nodeType": "ForStatement",
                        "src": "6354:997:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5405,
                    "nodeType": "StructuredDocumentation",
                    "src": "6017:143:27",
                    "text": " @dev Validates a set of RRs.\n @param rrset The RR set.\n @param typecovered The type covered by the RRSIG record."
                  },
                  "id": 5497,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateRRs",
                  "nameLocation": "6174:11:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5408,
                        "mutability": "mutable",
                        "name": "rrset",
                        "nameLocation": "6211:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5497,
                        "src": "6186:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet"
                        },
                        "typeName": {
                          "id": 5407,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5406,
                            "name": "RRUtils.SignedSet",
                            "nameLocations": [
                              "6186:7:27",
                              "6194:9:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6188,
                            "src": "6186:17:27"
                          },
                          "referencedDeclaration": 6188,
                          "src": "6186:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                            "typeString": "struct RRUtils.SignedSet"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5410,
                        "mutability": "mutable",
                        "name": "typecovered",
                        "nameLocation": "6225:11:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5497,
                        "src": "6218:18:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5409,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "6218:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6185:52:27"
                  },
                  "returnParameters": {
                    "id": 5414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5413,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "6298:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5497,
                        "src": "6285:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5412,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6285:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6284:19:27"
                  },
                  "scope": 5974,
                  "src": "6165:1192:27",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5579,
                    "nodeType": "Block",
                    "src": "7883:798:27",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "expression": {
                                  "id": 5511,
                                  "name": "rrset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5503,
                                  "src": "8027:5:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                    "typeString": "struct RRUtils.SignedSet memory"
                                  }
                                },
                                "id": 5512,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "8033:10:27",
                                "memberName": "signerName",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6183,
                                "src": "8027:16:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 5513,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8044:6:27",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "8027:23:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "id": 5514,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5500,
                                "src": "8053:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 5515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8058:6:27",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "8053:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8027:37:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "id": 5529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "8080:134:27",
                            "subExpression": {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 5520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8122:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                {
                                  "id": 5521,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5500,
                                  "src": "8141:4:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5527,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 5522,
                                      "name": "name",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5500,
                                      "src": "8163:4:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 5523,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8168:6:27",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "8163:11:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 5524,
                                        "name": "rrset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5503,
                                        "src": "8177:5:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                          "typeString": "struct RRUtils.SignedSet memory"
                                        }
                                      },
                                      "id": 5525,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "8183:10:27",
                                      "memberName": "signerName",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6183,
                                      "src": "8177:16:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 5526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8194:6:27",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "8177:23:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8163:37:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "expression": {
                                    "id": 5517,
                                    "name": "rrset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5503,
                                    "src": "8081:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    }
                                  },
                                  "id": 5518,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "8087:10:27",
                                  "memberName": "signerName",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6183,
                                  "src": "8081:16:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 5519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "8098:6:27",
                                "memberName": "equals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4481,
                                "src": "8081:23:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"
                                }
                              },
                              "id": 5528,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8081:133:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8027:187:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5538,
                        "nodeType": "IfStatement",
                        "src": "8010:288:27",
                        "trueBody": {
                          "id": 5537,
                          "nodeType": "Block",
                          "src": "8225:73:27",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 5532,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5500,
                                    "src": "8264:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5533,
                                      "name": "rrset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5503,
                                      "src": "8270:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                        "typeString": "struct RRUtils.SignedSet memory"
                                      }
                                    },
                                    "id": 5534,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8276:10:27",
                                    "memberName": "signerName",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6183,
                                    "src": "8270:16:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 5531,
                                  "name": "InvalidSignerName",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5135,
                                  "src": "8246:17:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory,bytes memory) pure"
                                  }
                                },
                                "id": 5535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8246:41:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5536,
                              "nodeType": "RevertStatement",
                              "src": "8239:48:27"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5543
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5543,
                            "mutability": "mutable",
                            "name": "proofRR",
                            "nameLocation": "8334:7:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 5579,
                            "src": "8308:33:27",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator"
                            },
                            "typeName": {
                              "id": 5542,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5541,
                                "name": "RRUtils.RRIterator",
                                "nameLocations": [
                                  "8308:7:27",
                                  "8316:10:27"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 6321,
                                "src": "8308:18:27"
                              },
                              "referencedDeclaration": 6321,
                              "src": "8308:18:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                                "typeString": "struct RRUtils.RRIterator"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5548,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 5546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8361:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 5544,
                              "name": "proof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5508,
                              "src": "8344:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 5545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8350:10:27",
                            "memberName": "iterateRRs",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6349,
                            "src": "8344:16:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$6321_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                            }
                          },
                          "id": 5547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8344:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8308:55:27"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 5552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5549,
                              "name": "proofRR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5543,
                              "src": "8404:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 5550,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8412:7:27",
                            "memberName": "dnstype",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6312,
                            "src": "8404:15:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 5551,
                            "name": "DNSTYPE_DS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5093,
                            "src": "8423:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "8404:29:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "id": 5563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 5560,
                                "name": "proofRR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5543,
                                "src": "8504:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5561,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8512:7:27",
                              "memberName": "dnstype",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6312,
                              "src": "8504:15:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5562,
                              "name": "DNSTYPE_DNSKEY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5096,
                              "src": "8523:14:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "8504:33:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 5576,
                            "nodeType": "Block",
                            "src": "8610:65:27",
                            "statements": [
                              {
                                "errorCall": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 5572,
                                        "name": "proofRR",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5543,
                                        "src": "8648:7:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                          "typeString": "struct RRUtils.RRIterator memory"
                                        }
                                      },
                                      "id": 5573,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "8656:7:27",
                                      "memberName": "dnstype",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6312,
                                      "src": "8648:15:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    ],
                                    "id": 5571,
                                    "name": "InvalidProofType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5139,
                                    "src": "8631:16:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$_t_uint16_$returns$__$",
                                      "typeString": "function (uint16) pure"
                                    }
                                  },
                                  "id": 5574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8631:33:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 5575,
                                "nodeType": "RevertStatement",
                                "src": "8624:40:27"
                              }
                            ]
                          },
                          "id": 5577,
                          "nodeType": "IfStatement",
                          "src": "8500:175:27",
                          "trueBody": {
                            "id": 5570,
                            "nodeType": "Block",
                            "src": "8539:65:27",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 5565,
                                      "name": "rrset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5503,
                                      "src": "8572:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                        "typeString": "struct RRUtils.SignedSet memory"
                                      }
                                    },
                                    {
                                      "id": 5566,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5506,
                                      "src": "8579:4:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                        "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                      }
                                    },
                                    {
                                      "id": 5567,
                                      "name": "proofRR",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5543,
                                      "src": "8585:7:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                        "typeString": "struct RRUtils.SignedSet memory"
                                      },
                                      {
                                        "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                        "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                      },
                                      {
                                        "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    ],
                                    "id": 5564,
                                    "name": "verifyWithKnownKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5656,
                                    "src": "8553:18:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_struct$_SignedSet_$6188_memory_ptr_$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$",
                                      "typeString": "function (struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory,struct RRUtils.RRIterator memory) view"
                                    }
                                  },
                                  "id": 5568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8553:40:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 5569,
                                "nodeType": "ExpressionStatement",
                                "src": "8553:40:27"
                              }
                            ]
                          }
                        },
                        "id": 5578,
                        "nodeType": "IfStatement",
                        "src": "8400:275:27",
                        "trueBody": {
                          "id": 5559,
                          "nodeType": "Block",
                          "src": "8435:59:27",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5554,
                                    "name": "rrset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5503,
                                    "src": "8462:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    }
                                  },
                                  {
                                    "id": 5555,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5506,
                                    "src": "8469:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                      "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                    }
                                  },
                                  {
                                    "id": 5556,
                                    "name": "proofRR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5543,
                                    "src": "8475:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                      "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  ],
                                  "id": 5553,
                                  "name": "verifyWithDS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5812,
                                  "src": "8449:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_SignedSet_$6188_memory_ptr_$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$",
                                    "typeString": "function (struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory,struct RRUtils.RRIterator memory) view"
                                  }
                                },
                                "id": 5557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8449:34:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5558,
                              "nodeType": "ExpressionStatement",
                              "src": "8449:34:27"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5498,
                    "nodeType": "StructuredDocumentation",
                    "src": "7363:335:27",
                    "text": " @dev Performs signature verification.\n Throws or reverts if unable to verify the record.\n @param name The name of the RRSIG record, in DNS label-sequence format.\n @param data The original data to verify.\n @param proof A DS or DNSKEY record that's already verified by the oracle."
                  },
                  "id": 5580,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifySignature",
                  "nameLocation": "7712:15:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5500,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "7750:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5580,
                        "src": "7737:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5499,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7737:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5503,
                        "mutability": "mutable",
                        "name": "rrset",
                        "nameLocation": "7789:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5580,
                        "src": "7764:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet"
                        },
                        "typeName": {
                          "id": 5502,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5501,
                            "name": "RRUtils.SignedSet",
                            "nameLocations": [
                              "7764:7:27",
                              "7772:9:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6188,
                            "src": "7764:17:27"
                          },
                          "referencedDeclaration": 6188,
                          "src": "7764:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                            "typeString": "struct RRUtils.SignedSet"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5506,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7830:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5580,
                        "src": "7804:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature"
                        },
                        "typeName": {
                          "id": 5505,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5504,
                            "name": "RRSetWithSignature",
                            "nameLocations": [
                              "7804:18:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5027,
                            "src": "7804:18:27"
                          },
                          "referencedDeclaration": 5027,
                          "src": "7804:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5508,
                        "mutability": "mutable",
                        "name": "proof",
                        "nameLocation": "7857:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5580,
                        "src": "7844:18:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5507,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7844:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7727:141:27"
                  },
                  "returnParameters": {
                    "id": 5510,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7883:0:27"
                  },
                  "scope": 5974,
                  "src": "7703:978:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5655,
                    "nodeType": "Block",
                    "src": "9140:675:27",
                    "statements": [
                      {
                        "body": {
                          "id": 5648,
                          "nodeType": "Block",
                          "src": "9264:495:27",
                          "statements": [
                            {
                              "assignments": [
                                5602
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5602,
                                  "mutability": "mutable",
                                  "name": "proofName",
                                  "nameLocation": "9291:9:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5648,
                                  "src": "9278:22:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 5601,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9278:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5606,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 5603,
                                    "name": "proof",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5590,
                                    "src": "9303:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 5604,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "9309:4:27",
                                  "memberName": "name",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6493,
                                  "src": "9303:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                    "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 5605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9303:12:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9278:37:27"
                            },
                            {
                              "condition": {
                                "id": 5612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "9333:35:27",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 5609,
                                        "name": "rrset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5584,
                                        "src": "9351:5:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                          "typeString": "struct RRUtils.SignedSet memory"
                                        }
                                      },
                                      "id": 5610,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "9357:10:27",
                                      "memberName": "signerName",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6183,
                                      "src": "9351:16:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5607,
                                      "name": "proofName",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5602,
                                      "src": "9334:9:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 5608,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "9344:6:27",
                                    "memberName": "equals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4535,
                                    "src": "9334:16:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                    }
                                  },
                                  "id": 5611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9334:34:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5620,
                              "nodeType": "IfStatement",
                              "src": "9329:127:27",
                              "trueBody": {
                                "id": 5619,
                                "nodeType": "Block",
                                "src": "9370:86:27",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 5614,
                                            "name": "rrset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5584,
                                            "src": "9413:5:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                              "typeString": "struct RRUtils.SignedSet memory"
                                            }
                                          },
                                          "id": 5615,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "9419:10:27",
                                          "memberName": "signerName",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6183,
                                          "src": "9413:16:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "id": 5616,
                                          "name": "proofName",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5602,
                                          "src": "9431:9:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 5613,
                                        "name": "ProofNameMismatch",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5145,
                                        "src": "9395:17:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (bytes memory,bytes memory) pure"
                                        }
                                      },
                                      "id": 5617,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9395:46:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5618,
                                    "nodeType": "RevertStatement",
                                    "src": "9388:53:27"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                5622
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5622,
                                  "mutability": "mutable",
                                  "name": "keyrdata",
                                  "nameLocation": "9483:8:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5648,
                                  "src": "9470:21:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 5621,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9470:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5626,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 5623,
                                    "name": "proof",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5590,
                                    "src": "9494:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 5624,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "9500:5:27",
                                  "memberName": "rdata",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6515,
                                  "src": "9494:11:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                    "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 5625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9494:13:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9470:37:27"
                            },
                            {
                              "assignments": [
                                5631
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5631,
                                  "mutability": "mutable",
                                  "name": "dnskey",
                                  "nameLocation": "9543:6:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5648,
                                  "src": "9521:28:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                    "typeString": "struct RRUtils.DNSKEY"
                                  },
                                  "typeName": {
                                    "id": 5630,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 5629,
                                      "name": "RRUtils.DNSKEY",
                                      "nameLocations": [
                                        "9521:7:27",
                                        "9529:6:27"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 6536,
                                      "src": "9521:14:27"
                                    },
                                    "referencedDeclaration": 6536,
                                    "src": "9521:14:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DNSKEY_$6536_storage_ptr",
                                      "typeString": "struct RRUtils.DNSKEY"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5638,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5634,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9589:1:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "expression": {
                                      "id": 5635,
                                      "name": "keyrdata",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5622,
                                      "src": "9608:8:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 5636,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "9617:6:27",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "9608:15:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5632,
                                    "name": "keyrdata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5622,
                                    "src": "9552:8:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 5633,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "9561:10:27",
                                  "memberName": "readDNSKEY",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6596,
                                  "src": "9552:19:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_DNSKEY_$6536_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (struct RRUtils.DNSKEY memory)"
                                  }
                                },
                                "id": 5637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9552:85:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                  "typeString": "struct RRUtils.DNSKEY memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9521:116:27"
                            },
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 5640,
                                    "name": "dnskey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5631,
                                    "src": "9678:6:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                      "typeString": "struct RRUtils.DNSKEY memory"
                                    }
                                  },
                                  {
                                    "id": 5641,
                                    "name": "keyrdata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5622,
                                    "src": "9686:8:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 5642,
                                    "name": "rrset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5584,
                                    "src": "9696:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    }
                                  },
                                  {
                                    "id": 5643,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5587,
                                    "src": "9703:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                      "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                      "typeString": "struct RRUtils.DNSKEY memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                      "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                    }
                                  ],
                                  "id": 5639,
                                  "name": "verifySignatureWithKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5727,
                                  "src": "9655:22:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_DNSKEY_$6536_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_SignedSet_$6188_memory_ptr_$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (struct RRUtils.DNSKEY memory,bytes memory,struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory) view returns (bool)"
                                  }
                                },
                                "id": 5644,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9655:53:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5647,
                              "nodeType": "IfStatement",
                              "src": "9651:98:27",
                              "trueBody": {
                                "id": 5646,
                                "nodeType": "Block",
                                "src": "9710:39:27",
                                "statements": [
                                  {
                                    "functionReturnParameters": 5592,
                                    "id": 5645,
                                    "nodeType": "Return",
                                    "src": "9728:7:27"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "id": 5596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "9235:13:27",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5593,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5590,
                                "src": "9236:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5594,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9242:4:27",
                              "memberName": "done",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6366,
                              "src": "9236:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                              }
                            },
                            "id": 5595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9236:12:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5649,
                        "loopExpression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5597,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5590,
                                "src": "9250:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5598,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9256:4:27",
                              "memberName": "next",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6470,
                              "src": "9250:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure"
                              }
                            },
                            "id": 5599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9250:12:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5600,
                          "nodeType": "ExpressionStatement",
                          "src": "9250:12:27"
                        },
                        "nodeType": "ForStatement",
                        "src": "9228:531:27"
                      },
                      {
                        "errorCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5651,
                                "name": "rrset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5584,
                                "src": "9791:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "id": 5652,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9797:10:27",
                              "memberName": "signerName",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6183,
                              "src": "9791:16:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5650,
                            "name": "NoMatchingProof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5149,
                            "src": "9775:15:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) pure"
                            }
                          },
                          "id": 5653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9775:33:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5654,
                        "nodeType": "RevertStatement",
                        "src": "9768:40:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5581,
                    "nodeType": "StructuredDocumentation",
                    "src": "8687:279:27",
                    "text": " @dev Attempts to verify a signed RRSET against an already known public key.\n @param rrset The signed set to verify.\n @param data The original data the signed set was read from.\n @param proof The serialized DS or DNSKEY record to use as proof."
                  },
                  "id": 5656,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyWithKnownKey",
                  "nameLocation": "8980:18:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5584,
                        "mutability": "mutable",
                        "name": "rrset",
                        "nameLocation": "9033:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5656,
                        "src": "9008:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet"
                        },
                        "typeName": {
                          "id": 5583,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5582,
                            "name": "RRUtils.SignedSet",
                            "nameLocations": [
                              "9008:7:27",
                              "9016:9:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6188,
                            "src": "9008:17:27"
                          },
                          "referencedDeclaration": 6188,
                          "src": "9008:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                            "typeString": "struct RRUtils.SignedSet"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5587,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9074:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5656,
                        "src": "9048:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature"
                        },
                        "typeName": {
                          "id": 5586,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5585,
                            "name": "RRSetWithSignature",
                            "nameLocations": [
                              "9048:18:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5027,
                            "src": "9048:18:27"
                          },
                          "referencedDeclaration": 5027,
                          "src": "9048:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5590,
                        "mutability": "mutable",
                        "name": "proof",
                        "nameLocation": "9114:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5656,
                        "src": "9088:31:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 5589,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5588,
                            "name": "RRUtils.RRIterator",
                            "nameLocations": [
                              "9088:7:27",
                              "9096:10:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "9088:18:27"
                          },
                          "referencedDeclaration": 6321,
                          "src": "9088:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8998:127:27"
                  },
                  "returnParameters": {
                    "id": 5592,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9140:0:27"
                  },
                  "scope": 5974,
                  "src": "8971:844:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5726,
                    "nodeType": "Block",
                    "src": "10374:1005:27",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 5676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5673,
                              "name": "dnskey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5660,
                              "src": "10522:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                "typeString": "struct RRUtils.DNSKEY memory"
                              }
                            },
                            "id": 5674,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10529:8:27",
                            "memberName": "protocol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6531,
                            "src": "10522:15:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 5675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10541:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "10522:20:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5680,
                        "nodeType": "IfStatement",
                        "src": "10518:63:27",
                        "trueBody": {
                          "id": 5679,
                          "nodeType": "Block",
                          "src": "10544:37:27",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 5677,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10565:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 5672,
                              "id": 5678,
                              "nodeType": "Return",
                              "src": "10558:12:27"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 5685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5681,
                              "name": "dnskey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5660,
                              "src": "10796:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                "typeString": "struct RRUtils.DNSKEY memory"
                              }
                            },
                            "id": 5682,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10803:9:27",
                            "memberName": "algorithm",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6533,
                            "src": "10796:16:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 5683,
                              "name": "rrset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5665,
                              "src": "10816:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 5684,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10822:9:27",
                            "memberName": "algorithm",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6171,
                            "src": "10816:15:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "10796:35:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5689,
                        "nodeType": "IfStatement",
                        "src": "10792:78:27",
                        "trueBody": {
                          "id": 5688,
                          "nodeType": "Block",
                          "src": "10833:37:27",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 5686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10854:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 5672,
                              "id": 5687,
                              "nodeType": "Return",
                              "src": "10847:12:27"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5691
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5691,
                            "mutability": "mutable",
                            "name": "computedkeytag",
                            "nameLocation": "10886:14:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 5726,
                            "src": "10879:21:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 5690,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "10879:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5695,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5692,
                              "name": "keyrdata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5662,
                              "src": "10903:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 5693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10912:13:27",
                            "memberName": "computeKeytag",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7058,
                            "src": "10903:22:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) pure returns (uint16)"
                            }
                          },
                          "id": 5694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10903:24:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10879:48:27"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 5699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5696,
                            "name": "computedkeytag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5691,
                            "src": "10941:14:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 5697,
                              "name": "rrset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5665,
                              "src": "10959:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 5698,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10965:6:27",
                            "memberName": "keytag",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6181,
                            "src": "10959:12:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "10941:30:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5703,
                        "nodeType": "IfStatement",
                        "src": "10937:73:27",
                        "trueBody": {
                          "id": 5702,
                          "nodeType": "Block",
                          "src": "10973:37:27",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 5700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10994:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 5672,
                              "id": 5701,
                              "nodeType": "Return",
                              "src": "10987:12:27"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 5704,
                                "name": "dnskey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5660,
                                "src": "11198:6:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                  "typeString": "struct RRUtils.DNSKEY memory"
                                }
                              },
                              "id": 5705,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11205:5:27",
                              "memberName": "flags",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6529,
                              "src": "11198:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 5706,
                              "name": "DNSKEY_FLAG_ZONEKEY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5099,
                              "src": "11213:19:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11198:34:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5708,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11236:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11198:39:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5713,
                        "nodeType": "IfStatement",
                        "src": "11194:82:27",
                        "trueBody": {
                          "id": 5712,
                          "nodeType": "Block",
                          "src": "11239:37:27",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 5710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11260:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 5672,
                              "id": 5711,
                              "nodeType": "Return",
                              "src": "11253:12:27"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5719,
                              "name": "keyrdata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5662,
                              "src": "11341:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 5720,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5668,
                                "src": "11351:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                  "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                }
                              },
                              "id": 5721,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11356:5:27",
                              "memberName": "rrset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5024,
                              "src": "11351:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 5722,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5668,
                                "src": "11363:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                  "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                }
                              },
                              "id": 5723,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11368:3:27",
                              "memberName": "sig",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5026,
                              "src": "11363:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "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"
                              }
                            ],
                            "expression": {
                              "baseExpression": {
                                "id": 5714,
                                "name": "algorithms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5154,
                                "src": "11305:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Algorithm_$7075_$",
                                  "typeString": "mapping(uint8 => contract Algorithm)"
                                }
                              },
                              "id": 5717,
                              "indexExpression": {
                                "expression": {
                                  "id": 5715,
                                  "name": "dnskey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5660,
                                  "src": "11316:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                    "typeString": "struct RRUtils.DNSKEY memory"
                                  }
                                },
                                "id": 5716,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "11323:9:27",
                                "memberName": "algorithm",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6533,
                                "src": "11316:16:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11305:28:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Algorithm_$7075",
                                "typeString": "contract Algorithm"
                              }
                            },
                            "id": 5718,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11334:6:27",
                            "memberName": "verify",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7074,
                            "src": "11305:35:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (bytes memory,bytes memory,bytes memory) view external returns (bool)"
                            }
                          },
                          "id": 5724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11305:67:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5672,
                        "id": 5725,
                        "nodeType": "Return",
                        "src": "11286:86:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5657,
                    "nodeType": "StructuredDocumentation",
                    "src": "9821:332:27",
                    "text": " @dev Attempts to verify some data using a provided key and a signature.\n @param dnskey The dns key record to verify the signature with.\n @param rrset The signed RRSET being verified.\n @param data The original data `rrset` was decoded from.\n @return True iff the key verifies the signature."
                  },
                  "id": 5727,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifySignatureWithKey",
                  "nameLocation": "10167:22:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5660,
                        "mutability": "mutable",
                        "name": "dnskey",
                        "nameLocation": "10221:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5727,
                        "src": "10199:28:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                          "typeString": "struct RRUtils.DNSKEY"
                        },
                        "typeName": {
                          "id": 5659,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5658,
                            "name": "RRUtils.DNSKEY",
                            "nameLocations": [
                              "10199:7:27",
                              "10207:6:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6536,
                            "src": "10199:14:27"
                          },
                          "referencedDeclaration": 6536,
                          "src": "10199:14:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DNSKEY_$6536_storage_ptr",
                            "typeString": "struct RRUtils.DNSKEY"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5662,
                        "mutability": "mutable",
                        "name": "keyrdata",
                        "nameLocation": "10250:8:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5727,
                        "src": "10237:21:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5661,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10237:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5665,
                        "mutability": "mutable",
                        "name": "rrset",
                        "nameLocation": "10293:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5727,
                        "src": "10268:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet"
                        },
                        "typeName": {
                          "id": 5664,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5663,
                            "name": "RRUtils.SignedSet",
                            "nameLocations": [
                              "10268:7:27",
                              "10276:9:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6188,
                            "src": "10268:17:27"
                          },
                          "referencedDeclaration": 6188,
                          "src": "10268:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                            "typeString": "struct RRUtils.SignedSet"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5668,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "10334:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5727,
                        "src": "10308:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature"
                        },
                        "typeName": {
                          "id": 5667,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5666,
                            "name": "RRSetWithSignature",
                            "nameLocations": [
                              "10308:18:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5027,
                            "src": "10308:18:27"
                          },
                          "referencedDeclaration": 5027,
                          "src": "10308:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10189:155:27"
                  },
                  "returnParameters": {
                    "id": 5672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5671,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5727,
                        "src": "10368:4:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5670,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10368:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10367:6:27"
                  },
                  "scope": 5974,
                  "src": "10158:1221:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5811,
                    "nodeType": "Block",
                    "src": "11876:827:27",
                    "statements": [
                      {
                        "body": {
                          "id": 5804,
                          "nodeType": "Block",
                          "src": "12010:637:27",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 5760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 5757,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5744,
                                    "src": "12028:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 5758,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12033:7:27",
                                  "memberName": "dnstype",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6312,
                                  "src": "12028:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 5759,
                                  "name": "DNSTYPE_DNSKEY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5096,
                                  "src": "12044:14:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "12028:30:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5767,
                              "nodeType": "IfStatement",
                              "src": "12024:106:27",
                              "trueBody": {
                                "id": 5766,
                                "nodeType": "Block",
                                "src": "12060:70:27",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 5762,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5744,
                                            "src": "12102:4:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 5763,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "12107:7:27",
                                          "memberName": "dnstype",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6312,
                                          "src": "12102:12:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        ],
                                        "id": 5761,
                                        "name": "InvalidProofType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5139,
                                        "src": "12085:16:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_uint16_$returns$__$",
                                          "typeString": "function (uint16) pure"
                                        }
                                      },
                                      "id": 5764,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12085:30:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5765,
                                    "nodeType": "RevertStatement",
                                    "src": "12078:37:27"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                5769
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5769,
                                  "mutability": "mutable",
                                  "name": "keyrdata",
                                  "nameLocation": "12157:8:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5804,
                                  "src": "12144:21:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 5768,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12144:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5773,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 5770,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5744,
                                    "src": "12168:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 5771,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12173:5:27",
                                  "memberName": "rdata",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6515,
                                  "src": "12168:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                    "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 5772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12168:12:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12144:36:27"
                            },
                            {
                              "assignments": [
                                5778
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5778,
                                  "mutability": "mutable",
                                  "name": "dnskey",
                                  "nameLocation": "12216:6:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5804,
                                  "src": "12194:28:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                    "typeString": "struct RRUtils.DNSKEY"
                                  },
                                  "typeName": {
                                    "id": 5777,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 5776,
                                      "name": "RRUtils.DNSKEY",
                                      "nameLocations": [
                                        "12194:7:27",
                                        "12202:6:27"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 6536,
                                      "src": "12194:14:27"
                                    },
                                    "referencedDeclaration": 6536,
                                    "src": "12194:14:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DNSKEY_$6536_storage_ptr",
                                      "typeString": "struct RRUtils.DNSKEY"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5785,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5781,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12262:1:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "expression": {
                                      "id": 5782,
                                      "name": "keyrdata",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5769,
                                      "src": "12281:8:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 5783,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "12290:6:27",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "12281:15:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5779,
                                    "name": "keyrdata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5769,
                                    "src": "12225:8:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 5780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12234:10:27",
                                  "memberName": "readDNSKEY",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6596,
                                  "src": "12225:19:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_DNSKEY_$6536_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (struct RRUtils.DNSKEY memory)"
                                  }
                                },
                                "id": 5784,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12225:85:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                  "typeString": "struct RRUtils.DNSKEY memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12194:116:27"
                            },
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 5787,
                                    "name": "dnskey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5778,
                                    "src": "12351:6:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                      "typeString": "struct RRUtils.DNSKEY memory"
                                    }
                                  },
                                  {
                                    "id": 5788,
                                    "name": "keyrdata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5769,
                                    "src": "12359:8:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 5789,
                                    "name": "rrset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5731,
                                    "src": "12369:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    }
                                  },
                                  {
                                    "id": 5790,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5734,
                                    "src": "12376:4:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                      "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                      "typeString": "struct RRUtils.DNSKEY memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                      "typeString": "struct RRUtils.SignedSet memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                                      "typeString": "struct DNSSEC.RRSetWithSignature memory"
                                    }
                                  ],
                                  "id": 5786,
                                  "name": "verifySignatureWithKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5727,
                                  "src": "12328:22:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_DNSKEY_$6536_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_SignedSet_$6188_memory_ptr_$_t_struct$_RRSetWithSignature_$5027_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (struct RRUtils.DNSKEY memory,bytes memory,struct RRUtils.SignedSet memory,struct DNSSEC.RRSetWithSignature memory) view returns (bool)"
                                  }
                                },
                                "id": 5791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12328:53:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5803,
                              "nodeType": "IfStatement",
                              "src": "12324:313:27",
                              "trueBody": {
                                "id": 5802,
                                "nodeType": "Block",
                                "src": "12383:254:27",
                                "statements": [
                                  {
                                    "condition": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 5793,
                                            "name": "rrset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5731,
                                            "src": "12515:5:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                              "typeString": "struct RRUtils.SignedSet memory"
                                            }
                                          },
                                          "id": 5794,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "12521:10:27",
                                          "memberName": "signerName",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6183,
                                          "src": "12515:16:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "id": 5795,
                                          "name": "proof",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5737,
                                          "src": "12533:5:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        {
                                          "id": 5796,
                                          "name": "dnskey",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5778,
                                          "src": "12540:6:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                            "typeString": "struct RRUtils.DNSKEY memory"
                                          }
                                        },
                                        {
                                          "id": 5797,
                                          "name": "keyrdata",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5769,
                                          "src": "12548:8:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          },
                                          {
                                            "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                            "typeString": "struct RRUtils.DNSKEY memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 5792,
                                        "name": "verifyKeyWithDS",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5937,
                                        "src": "12499:15:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_struct$_RRIterator_$6321_memory_ptr_$_t_struct$_DNSKEY_$6536_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                          "typeString": "function (bytes memory,struct RRUtils.RRIterator memory,struct RRUtils.DNSKEY memory,bytes memory) view returns (bool)"
                                        }
                                      },
                                      "id": 5798,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12499:58:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 5801,
                                    "nodeType": "IfStatement",
                                    "src": "12474:149:27",
                                    "trueBody": {
                                      "id": 5800,
                                      "nodeType": "Block",
                                      "src": "12576:47:27",
                                      "statements": [
                                        {
                                          "functionReturnParameters": 5739,
                                          "id": 5799,
                                          "nodeType": "Return",
                                          "src": "12598:7:27"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "id": 5752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "11962:12:27",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5749,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5744,
                                "src": "11963:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5750,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11968:4:27",
                              "memberName": "done",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6366,
                              "src": "11963:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                              }
                            },
                            "id": 5751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11963:11:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5805,
                        "initializationExpression": {
                          "assignments": [
                            5744
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5744,
                              "mutability": "mutable",
                              "name": "iter",
                              "nameLocation": "11930:4:27",
                              "nodeType": "VariableDeclaration",
                              "scope": 5805,
                              "src": "11904:30:27",
                              "stateVariable": false,
                              "storageLocation": "memory",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator"
                              },
                              "typeName": {
                                "id": 5743,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 5742,
                                  "name": "RRUtils.RRIterator",
                                  "nameLocations": [
                                    "11904:7:27",
                                    "11912:10:27"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 6321,
                                  "src": "11904:18:27"
                                },
                                "referencedDeclaration": 6321,
                                "src": "11904:18:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                                  "typeString": "struct RRUtils.RRIterator"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5748,
                          "initialValue": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5745,
                                "name": "rrset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5731,
                                "src": "11937:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "id": 5746,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11943:3:27",
                              "memberName": "rrs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6306,
                              "src": "11937:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_SignedSet_$6188_memory_ptr_$returns$_t_struct$_RRIterator_$6321_memory_ptr_$bound_to$_t_struct$_SignedSet_$6188_memory_ptr_$",
                                "typeString": "function (struct RRUtils.SignedSet memory) pure returns (struct RRUtils.RRIterator memory)"
                              }
                            },
                            "id": 5747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11937:11:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11904:44:27"
                        },
                        "loopExpression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5753,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5744,
                                "src": "11988:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5754,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11993:4:27",
                              "memberName": "next",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6470,
                              "src": "11988:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure"
                              }
                            },
                            "id": 5755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11988:11:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5756,
                          "nodeType": "ExpressionStatement",
                          "src": "11988:11:27"
                        },
                        "nodeType": "ForStatement",
                        "src": "11886:761:27"
                      },
                      {
                        "errorCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5807,
                                "name": "rrset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5731,
                                "src": "12679:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "id": 5808,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12685:10:27",
                              "memberName": "signerName",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6183,
                              "src": "12679:16:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5806,
                            "name": "NoMatchingProof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5149,
                            "src": "12663:15:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) pure"
                            }
                          },
                          "id": 5809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12663:33:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5810,
                        "nodeType": "RevertStatement",
                        "src": "12656:40:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5728,
                    "nodeType": "StructuredDocumentation",
                    "src": "11385:323:27",
                    "text": " @dev Attempts to verify a signed RRSET against an already known hash. This function assumes\n      that the record\n @param rrset The signed set to verify.\n @param data The original data the signed set was read from.\n @param proof The serialized DS or DNSKEY record to use as proof."
                  },
                  "id": 5812,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyWithDS",
                  "nameLocation": "11722:12:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5731,
                        "mutability": "mutable",
                        "name": "rrset",
                        "nameLocation": "11769:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5812,
                        "src": "11744:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet"
                        },
                        "typeName": {
                          "id": 5730,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5729,
                            "name": "RRUtils.SignedSet",
                            "nameLocations": [
                              "11744:7:27",
                              "11752:9:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6188,
                            "src": "11744:17:27"
                          },
                          "referencedDeclaration": 6188,
                          "src": "11744:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                            "typeString": "struct RRUtils.SignedSet"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5734,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "11810:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5812,
                        "src": "11784:30:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_memory_ptr",
                          "typeString": "struct DNSSEC.RRSetWithSignature"
                        },
                        "typeName": {
                          "id": 5733,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5732,
                            "name": "RRSetWithSignature",
                            "nameLocations": [
                              "11784:18:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5027,
                            "src": "11784:18:27"
                          },
                          "referencedDeclaration": 5027,
                          "src": "11784:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRSetWithSignature_$5027_storage_ptr",
                            "typeString": "struct DNSSEC.RRSetWithSignature"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5737,
                        "mutability": "mutable",
                        "name": "proof",
                        "nameLocation": "11850:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5812,
                        "src": "11824:31:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 5736,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5735,
                            "name": "RRUtils.RRIterator",
                            "nameLocations": [
                              "11824:7:27",
                              "11832:10:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "11824:18:27"
                          },
                          "referencedDeclaration": 6321,
                          "src": "11824:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11734:127:27"
                  },
                  "returnParameters": {
                    "id": 5739,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11876:0:27"
                  },
                  "scope": 5974,
                  "src": "11713:990:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5936,
                    "nodeType": "Block",
                    "src": "13266:909:27",
                    "statements": [
                      {
                        "assignments": [
                          5829
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5829,
                            "mutability": "mutable",
                            "name": "keytag",
                            "nameLocation": "13283:6:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 5936,
                            "src": "13276:13:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 5828,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "13276:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5833,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5830,
                              "name": "keyrdata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5823,
                              "src": "13292:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 5831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "13301:13:27",
                            "memberName": "computeKeytag",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7058,
                            "src": "13292:22:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) pure returns (uint16)"
                            }
                          },
                          "id": 5832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13292:24:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13276:40:27"
                      },
                      {
                        "body": {
                          "id": 5932,
                          "nodeType": "Block",
                          "src": "13362:785:27",
                          "statements": [
                            {
                              "assignments": [
                                5843
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5843,
                                  "mutability": "mutable",
                                  "name": "proofName",
                                  "nameLocation": "13389:9:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5932,
                                  "src": "13376:22:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 5842,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13376:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5847,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 5844,
                                    "name": "dsrrs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5818,
                                    "src": "13401:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 5845,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13407:4:27",
                                  "memberName": "name",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6493,
                                  "src": "13401:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                    "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 5846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13401:12:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13376:37:27"
                            },
                            {
                              "condition": {
                                "id": 5852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "13431:26:27",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "id": 5850,
                                      "name": "keyname",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5815,
                                      "src": "13449:7:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5848,
                                      "name": "proofName",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5843,
                                      "src": "13432:9:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 5849,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "13442:6:27",
                                    "memberName": "equals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4535,
                                    "src": "13432:16:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                    }
                                  },
                                  "id": 5851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13432:25:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5859,
                              "nodeType": "IfStatement",
                              "src": "13427:109:27",
                              "trueBody": {
                                "id": 5858,
                                "nodeType": "Block",
                                "src": "13459:77:27",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 5854,
                                          "name": "keyname",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5815,
                                          "src": "13502:7:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "id": 5855,
                                          "name": "proofName",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5843,
                                          "src": "13511:9:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 5853,
                                        "name": "ProofNameMismatch",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5145,
                                        "src": "13484:17:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (bytes memory,bytes memory) pure"
                                        }
                                      },
                                      "id": 5856,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13484:37:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5857,
                                    "nodeType": "RevertStatement",
                                    "src": "13477:44:27"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                5864
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5864,
                                  "mutability": "mutable",
                                  "name": "ds",
                                  "nameLocation": "13568:2:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5932,
                                  "src": "13550:20:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                    "typeString": "struct RRUtils.DS"
                                  },
                                  "typeName": {
                                    "id": 5863,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 5862,
                                      "name": "RRUtils.DS",
                                      "nameLocations": [
                                        "13550:7:27",
                                        "13558:2:27"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 6617,
                                      "src": "13550:10:27"
                                    },
                                    "referencedDeclaration": 6617,
                                    "src": "13550:10:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DS_$6617_storage_ptr",
                                      "typeString": "struct RRUtils.DS"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5876,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 5868,
                                      "name": "dsrrs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5818,
                                      "src": "13608:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 5869,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "13614:11:27",
                                    "memberName": "rdataOffset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6318,
                                    "src": "13608:17:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5874,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 5870,
                                        "name": "dsrrs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5818,
                                        "src": "13643:5:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                          "typeString": "struct RRUtils.RRIterator memory"
                                        }
                                      },
                                      "id": 5871,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "13649:10:27",
                                      "memberName": "nextOffset",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6320,
                                      "src": "13643:16:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 5872,
                                        "name": "dsrrs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5818,
                                        "src": "13662:5:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                          "typeString": "struct RRUtils.RRIterator memory"
                                        }
                                      },
                                      "id": 5873,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "13668:11:27",
                                      "memberName": "rdataOffset",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6318,
                                      "src": "13662:17:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13643:36:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 5865,
                                      "name": "dsrrs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5818,
                                      "src": "13573:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 5866,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "13579:4:27",
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6308,
                                    "src": "13573:10:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 5867,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13584:6:27",
                                  "memberName": "readDS",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6677,
                                  "src": "13573:17:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_DS_$6617_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (struct RRUtils.DS memory)"
                                  }
                                },
                                "id": 5875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13573:120:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                  "typeString": "struct RRUtils.DS memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13550:143:27"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 5880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 5877,
                                    "name": "ds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5864,
                                    "src": "13711:2:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                      "typeString": "struct RRUtils.DS memory"
                                    }
                                  },
                                  "id": 5878,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13714:6:27",
                                  "memberName": "keytag",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6610,
                                  "src": "13711:9:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 5879,
                                  "name": "keytag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5829,
                                  "src": "13724:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "13711:19:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5883,
                              "nodeType": "IfStatement",
                              "src": "13707:66:27",
                              "trueBody": {
                                "id": 5882,
                                "nodeType": "Block",
                                "src": "13732:41:27",
                                "statements": [
                                  {
                                    "id": 5881,
                                    "nodeType": "Continue",
                                    "src": "13750:8:27"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 5888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 5884,
                                    "name": "ds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5864,
                                    "src": "13790:2:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                      "typeString": "struct RRUtils.DS memory"
                                    }
                                  },
                                  "id": 5885,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13793:9:27",
                                  "memberName": "algorithm",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6612,
                                  "src": "13790:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "expression": {
                                    "id": 5886,
                                    "name": "dnskey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5821,
                                    "src": "13806:6:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                      "typeString": "struct RRUtils.DNSKEY memory"
                                    }
                                  },
                                  "id": 5887,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13813:9:27",
                                  "memberName": "algorithm",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6533,
                                  "src": "13806:16:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "13790:32:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5891,
                              "nodeType": "IfStatement",
                              "src": "13786:79:27",
                              "trueBody": {
                                "id": 5890,
                                "nodeType": "Block",
                                "src": "13824:41:27",
                                "statements": [
                                  {
                                    "id": 5889,
                                    "nodeType": "Continue",
                                    "src": "13842:8:27"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                5896
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5896,
                                  "mutability": "mutable",
                                  "name": "buf",
                                  "nameLocation": "13900:3:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5932,
                                  "src": "13879:24:27",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                    "typeString": "struct Buffer.buffer"
                                  },
                                  "typeName": {
                                    "id": 5895,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 5894,
                                      "name": "Buffer.buffer",
                                      "nameLocations": [
                                        "13879:6:27",
                                        "13886:6:27"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 7,
                                      "src": "13879:13:27"
                                    },
                                    "referencedDeclaration": 7,
                                    "src": "13879:13:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_buffer_$7_storage_ptr",
                                      "typeString": "struct Buffer.buffer"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5897,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13879:24:27"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5905,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 5901,
                                        "name": "keyname",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5815,
                                        "src": "13926:7:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 5902,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "13934:6:27",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "13926:14:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 5903,
                                        "name": "keyrdata",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5823,
                                        "src": "13943:8:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 5904,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "13952:6:27",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "13943:15:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13926:32:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5898,
                                    "name": "buf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5896,
                                    "src": "13917:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    }
                                  },
                                  "id": 5900,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13921:4:27",
                                  "memberName": "init",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 45,
                                  "src": "13917:8:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_uint256_$returns$_t_struct$_buffer_$7_memory_ptr_$bound_to$_t_struct$_buffer_$7_memory_ptr_$",
                                    "typeString": "function (struct Buffer.buffer memory,uint256) pure returns (struct Buffer.buffer memory)"
                                  }
                                },
                                "id": 5906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13917:42:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                  "typeString": "struct Buffer.buffer memory"
                                }
                              },
                              "id": 5907,
                              "nodeType": "ExpressionStatement",
                              "src": "13917:42:27"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5911,
                                    "name": "keyname",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5815,
                                    "src": "13984:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5908,
                                    "name": "buf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5896,
                                    "src": "13973:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    }
                                  },
                                  "id": 5910,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "13977:6:27",
                                  "memberName": "append",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 264,
                                  "src": "13973:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_struct$_buffer_$7_memory_ptr_$bound_to$_t_struct$_buffer_$7_memory_ptr_$",
                                    "typeString": "function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"
                                  }
                                },
                                "id": 5912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13973:19:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                  "typeString": "struct Buffer.buffer memory"
                                }
                              },
                              "id": 5913,
                              "nodeType": "ExpressionStatement",
                              "src": "13973:19:27"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5917,
                                    "name": "keyrdata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5823,
                                    "src": "14017:8:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5914,
                                    "name": "buf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5896,
                                    "src": "14006:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                      "typeString": "struct Buffer.buffer memory"
                                    }
                                  },
                                  "id": 5916,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "14010:6:27",
                                  "memberName": "append",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 264,
                                  "src": "14006:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$7_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_struct$_buffer_$7_memory_ptr_$bound_to$_t_struct$_buffer_$7_memory_ptr_$",
                                    "typeString": "function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"
                                  }
                                },
                                "id": 5918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14006:20:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                  "typeString": "struct Buffer.buffer memory"
                                }
                              },
                              "id": 5919,
                              "nodeType": "ExpressionStatement",
                              "src": "14006:20:27"
                            },
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 5921,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5864,
                                      "src": "14057:2:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                        "typeString": "struct RRUtils.DS memory"
                                      }
                                    },
                                    "id": 5922,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "14060:10:27",
                                    "memberName": "digestType",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6614,
                                    "src": "14057:13:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5923,
                                      "name": "buf",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5896,
                                      "src": "14072:3:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_buffer_$7_memory_ptr",
                                        "typeString": "struct Buffer.buffer memory"
                                      }
                                    },
                                    "id": 5924,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "14076:3:27",
                                    "memberName": "buf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4,
                                    "src": "14072:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5925,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5864,
                                      "src": "14081:2:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                        "typeString": "struct RRUtils.DS memory"
                                      }
                                    },
                                    "id": 5926,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "14084:6:27",
                                    "memberName": "digest",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6616,
                                    "src": "14081:9:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 5920,
                                  "name": "verifyDSHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5973,
                                  "src": "14044:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint8_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (uint8,bytes memory,bytes memory) view returns (bool)"
                                  }
                                },
                                "id": 5927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14044:47:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5931,
                              "nodeType": "IfStatement",
                              "src": "14040:97:27",
                              "trueBody": {
                                "id": 5930,
                                "nodeType": "Block",
                                "src": "14093:44:27",
                                "statements": [
                                  {
                                    "expression": {
                                      "hexValue": "74727565",
                                      "id": 5928,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14118:4:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "functionReturnParameters": 5827,
                                    "id": 5929,
                                    "nodeType": "Return",
                                    "src": "14111:11:27"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "id": 5837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "13333:13:27",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5834,
                                "name": "dsrrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5818,
                                "src": "13334:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5835,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "13340:4:27",
                              "memberName": "done",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6366,
                              "src": "13334:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                              }
                            },
                            "id": 5836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13334:12:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5933,
                        "loopExpression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5838,
                                "name": "dsrrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5818,
                                "src": "13348:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 5839,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "13354:4:27",
                              "memberName": "next",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6470,
                              "src": "13348:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure"
                              }
                            },
                            "id": 5840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13348:12:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5841,
                          "nodeType": "ExpressionStatement",
                          "src": "13348:12:27"
                        },
                        "nodeType": "ForStatement",
                        "src": "13326:821:27"
                      },
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 5934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14163:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5827,
                        "id": 5935,
                        "nodeType": "Return",
                        "src": "14156:12:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5813,
                    "nodeType": "StructuredDocumentation",
                    "src": "12709:352:27",
                    "text": " @dev Attempts to verify a key using DS records.\n @param keyname The DNS name of the key, in DNS label-sequence format.\n @param dsrrs The DS records to use in verification.\n @param dnskey The dnskey to verify.\n @param keyrdata The RDATA section of the key.\n @return True if a DS record verifies this key."
                  },
                  "id": 5937,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyKeyWithDS",
                  "nameLocation": "13075:15:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5824,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5815,
                        "mutability": "mutable",
                        "name": "keyname",
                        "nameLocation": "13113:7:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5937,
                        "src": "13100:20:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5814,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "13100:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5818,
                        "mutability": "mutable",
                        "name": "dsrrs",
                        "nameLocation": "13156:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5937,
                        "src": "13130:31:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 5817,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5816,
                            "name": "RRUtils.RRIterator",
                            "nameLocations": [
                              "13130:7:27",
                              "13138:10:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "13130:18:27"
                          },
                          "referencedDeclaration": 6321,
                          "src": "13130:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5821,
                        "mutability": "mutable",
                        "name": "dnskey",
                        "nameLocation": "13193:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5937,
                        "src": "13171:28:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                          "typeString": "struct RRUtils.DNSKEY"
                        },
                        "typeName": {
                          "id": 5820,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5819,
                            "name": "RRUtils.DNSKEY",
                            "nameLocations": [
                              "13171:7:27",
                              "13179:6:27"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6536,
                            "src": "13171:14:27"
                          },
                          "referencedDeclaration": 6536,
                          "src": "13171:14:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DNSKEY_$6536_storage_ptr",
                            "typeString": "struct RRUtils.DNSKEY"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5823,
                        "mutability": "mutable",
                        "name": "keyrdata",
                        "nameLocation": "13222:8:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5937,
                        "src": "13209:21:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5822,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "13209:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13090:146:27"
                  },
                  "returnParameters": {
                    "id": 5827,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5826,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5937,
                        "src": "13260:4:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5825,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13260:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13259:6:27"
                  },
                  "scope": 5974,
                  "src": "13066:1109:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5972,
                    "nodeType": "Block",
                    "src": "14608:158:27",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 5951,
                                  "name": "digests",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5159,
                                  "src": "14630:7:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Digest_$8916_$",
                                    "typeString": "mapping(uint8 => contract Digest)"
                                  }
                                },
                                "id": 5953,
                                "indexExpression": {
                                  "id": 5952,
                                  "name": "digesttype",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5940,
                                  "src": "14638:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14630:19:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Digest_$8916",
                                  "typeString": "contract Digest"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Digest_$8916",
                                  "typeString": "contract Digest"
                                }
                              ],
                              "id": 5950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14622:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5949,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14622:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14622:28:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 5957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14662:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 5956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14654:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5955,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14654:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14654:10:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14622:42:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5963,
                        "nodeType": "IfStatement",
                        "src": "14618:85:27",
                        "trueBody": {
                          "id": 5962,
                          "nodeType": "Block",
                          "src": "14666:37:27",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 5960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14687:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 5948,
                              "id": 5961,
                              "nodeType": "Return",
                              "src": "14680:12:27"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5968,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5942,
                              "src": "14746:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 5969,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5944,
                              "src": "14752:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "baseExpression": {
                                "id": 5964,
                                "name": "digests",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5159,
                                "src": "14719:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint8_$_t_contract$_Digest_$8916_$",
                                  "typeString": "mapping(uint8 => contract Digest)"
                                }
                              },
                              "id": 5966,
                              "indexExpression": {
                                "id": 5965,
                                "name": "digesttype",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5940,
                                "src": "14727:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14719:19:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Digest_$8916",
                                "typeString": "contract Digest"
                              }
                            },
                            "id": 5967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "14739:6:27",
                            "memberName": "verify",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8915,
                            "src": "14719:26:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (bytes memory,bytes memory) pure external returns (bool)"
                            }
                          },
                          "id": 5970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14719:40:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5948,
                        "id": 5971,
                        "nodeType": "Return",
                        "src": "14712:47:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5938,
                    "nodeType": "StructuredDocumentation",
                    "src": "14181:283:27",
                    "text": " @dev Attempts to verify a DS record's hash value against some data.\n @param digesttype The digest ID from the DS record.\n @param data The data to digest.\n @param digest The digest data to check against.\n @return True iff the digest matches."
                  },
                  "id": 5973,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyDSHash",
                  "nameLocation": "14478:12:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5940,
                        "mutability": "mutable",
                        "name": "digesttype",
                        "nameLocation": "14506:10:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5973,
                        "src": "14500:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5939,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "14500:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5942,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "14539:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5973,
                        "src": "14526:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5941,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14526:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5944,
                        "mutability": "mutable",
                        "name": "digest",
                        "nameLocation": "14566:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 5973,
                        "src": "14553:19:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5943,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14553:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14490:88:27"
                  },
                  "returnParameters": {
                    "id": 5948,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5947,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5973,
                        "src": "14602:4:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5946,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14602:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14601:6:27"
                  },
                  "scope": 5974,
                  "src": "14469:297:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5975,
              "src": "395:14373:27",
              "usedErrors": [
                5105,
                5111,
                5117,
                5121,
                5123,
                5129,
                5135,
                5139,
                5145,
                5149
              ]
            }
          ],
          "src": "32:14737:27"
        },
        "id": 27
      },
      "contracts/dnssec-oracle/Owned.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/Owned.sol",
          "exportedSymbols": {
            "Owned": [
              6012
            ]
          },
          "id": 6013,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5976,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:28"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Owned",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5977,
                "nodeType": "StructuredDocumentation",
                "src": "25:53:28",
                "text": " @dev Contract mixin for 'owned' contracts."
              },
              "fullyImplemented": true,
              "id": 6012,
              "linearizedBaseContracts": [
                6012
              ],
              "name": "Owned",
              "nameLocation": "88:5:28",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "8da5cb5b",
                  "id": 5979,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "115:5:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 6012,
                  "src": "100:20:28",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5978,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "100:7:28",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5989,
                    "nodeType": "Block",
                    "src": "149:56:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5982,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "167:3:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 5983,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "171:6:28",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "167:10:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 5984,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5979,
                                "src": "181:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "167:19:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5981,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "159:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 5986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "159:28:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5987,
                        "nodeType": "ExpressionStatement",
                        "src": "159:28:28"
                      },
                      {
                        "id": 5988,
                        "nodeType": "PlaceholderStatement",
                        "src": "197:1:28"
                      }
                    ]
                  },
                  "id": 5990,
                  "name": "owner_only",
                  "nameLocation": "136:10:28",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 5980,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "146:2:28"
                  },
                  "src": "127:78:28",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5998,
                    "nodeType": "Block",
                    "src": "232:35:28",
                    "statements": [
                      {
                        "expression": {
                          "id": 5996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5993,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5979,
                            "src": "242:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 5994,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "250:3:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "254:6:28",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "250:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "242:18:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5997,
                        "nodeType": "ExpressionStatement",
                        "src": "242:18:28"
                      }
                    ]
                  },
                  "id": 5999,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5991,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "222:2:28"
                  },
                  "returnParameters": {
                    "id": 5992,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "232:0:28"
                  },
                  "scope": 6012,
                  "src": "211:56:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6010,
                    "nodeType": "Block",
                    "src": "327:33:28",
                    "statements": [
                      {
                        "expression": {
                          "id": 6008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6006,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5979,
                            "src": "337:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6007,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6001,
                            "src": "345:8:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "337:16:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6009,
                        "nodeType": "ExpressionStatement",
                        "src": "337:16:28"
                      }
                    ]
                  },
                  "functionSelector": "13af4035",
                  "id": 6011,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6004,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6003,
                        "name": "owner_only",
                        "nameLocations": [
                          "316:10:28"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5990,
                        "src": "316:10:28"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "316:10:28"
                    }
                  ],
                  "name": "setOwner",
                  "nameLocation": "282:8:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6001,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "299:8:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 6011,
                        "src": "291:16:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6000,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "291:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "290:18:28"
                  },
                  "returnParameters": {
                    "id": 6005,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "327:0:28"
                  },
                  "scope": 6012,
                  "src": "273:87:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 6013,
              "src": "79:283:28",
              "usedErrors": []
            }
          ],
          "src": "0:363:28"
        },
        "id": 28
      },
      "contracts/dnssec-oracle/RRUtils.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/RRUtils.sol",
          "exportedSymbols": {
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "RRUtils": [
              7059
            ]
          },
          "id": 7060,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6014,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:29"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "./BytesUtils.sol",
              "id": 6015,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7060,
              "sourceUnit": 5018,
              "src": "25:26:29",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ensdomains/buffer/contracts/Buffer.sol",
              "file": "@ensdomains/buffer/contracts/Buffer.sol",
              "id": 6016,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7060,
              "sourceUnit": 522,
              "src": "52:49:29",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "RRUtils",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 6017,
                "nodeType": "StructuredDocumentation",
                "src": "103:94:29",
                "text": " @dev RRUtils is a library that provides utilities for parsing DNS resource records."
              },
              "fullyImplemented": true,
              "id": 7059,
              "linearizedBaseContracts": [
                7059
              ],
              "name": "RRUtils",
              "nameLocation": "206:7:29",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 6019,
                  "libraryName": {
                    "id": 6018,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "226:10:29"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "226:10:29"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "220:23:29"
                },
                {
                  "global": false,
                  "id": 6021,
                  "libraryName": {
                    "id": 6020,
                    "name": "Buffer",
                    "nameLocations": [
                      "254:6:29"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 521,
                    "src": "254:6:29"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "248:19:29"
                },
                {
                  "body": {
                    "id": 6068,
                    "nodeType": "Block",
                    "src": "656:293:29",
                    "statements": [
                      {
                        "assignments": [
                          6032
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6032,
                            "mutability": "mutable",
                            "name": "idx",
                            "nameLocation": "674:3:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6068,
                            "src": "666:11:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6031,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "666:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6034,
                        "initialValue": {
                          "id": 6033,
                          "name": "offset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6026,
                          "src": "680:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "666:20:29"
                      },
                      {
                        "body": {
                          "id": 6062,
                          "nodeType": "Block",
                          "src": "709:205:29",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6040,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6037,
                                      "name": "idx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6032,
                                      "src": "730:3:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6038,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6024,
                                        "src": "736:4:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 6039,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "741:6:29",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "736:11:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "730:17:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 6036,
                                  "name": "assert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -3,
                                  "src": "723:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 6041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "723:25:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6042,
                              "nodeType": "ExpressionStatement",
                              "src": "723:25:29"
                            },
                            {
                              "assignments": [
                                6044
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6044,
                                  "mutability": "mutable",
                                  "name": "labelLen",
                                  "nameLocation": "770:8:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6062,
                                  "src": "762:16:29",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6043,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "762:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6049,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 6047,
                                    "name": "idx",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6032,
                                    "src": "796:3:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6045,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6024,
                                    "src": "781:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 6046,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "786:9:29",
                                  "memberName": "readUint8",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4552,
                                  "src": "781:14:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                  }
                                },
                                "id": 6048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "781:19:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "762:38:29"
                            },
                            {
                              "expression": {
                                "id": 6054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6050,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6032,
                                  "src": "814:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6051,
                                    "name": "labelLen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6044,
                                    "src": "821:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 6052,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "832:1:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "821:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "814:19:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6055,
                              "nodeType": "ExpressionStatement",
                              "src": "814:19:29"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6056,
                                  "name": "labelLen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6044,
                                  "src": "851:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "863:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "851:13:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6061,
                              "nodeType": "IfStatement",
                              "src": "847:57:29",
                              "trueBody": {
                                "id": 6060,
                                "nodeType": "Block",
                                "src": "866:38:29",
                                "statements": [
                                  {
                                    "id": 6059,
                                    "nodeType": "Break",
                                    "src": "884:5:29"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "hexValue": "74727565",
                          "id": 6035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "703:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "id": 6063,
                        "nodeType": "WhileStatement",
                        "src": "696:218:29"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6064,
                            "name": "idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6032,
                            "src": "930:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 6065,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6026,
                            "src": "936:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "930:12:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6030,
                        "id": 6067,
                        "nodeType": "Return",
                        "src": "923:19:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6022,
                    "nodeType": "StructuredDocumentation",
                    "src": "273:263:29",
                    "text": " @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return The length of the DNS name at 'offset', in bytes."
                  },
                  "id": 6069,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "nameLength",
                  "nameLocation": "550:10:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6027,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6024,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "574:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6069,
                        "src": "561:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6023,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "561:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6026,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "588:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6069,
                        "src": "580:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6025,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "580:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "560:35:29"
                  },
                  "returnParameters": {
                    "id": 6030,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6029,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6069,
                        "src": "643:7:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6028,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "643:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "642:9:29"
                  },
                  "scope": 7059,
                  "src": "541:408:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6092,
                    "nodeType": "Block",
                    "src": "1301:99:29",
                    "statements": [
                      {
                        "assignments": [
                          6080
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6080,
                            "mutability": "mutable",
                            "name": "len",
                            "nameLocation": "1319:3:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6092,
                            "src": "1311:11:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6079,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1311:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6085,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6082,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6072,
                              "src": "1336:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 6083,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6074,
                              "src": "1342:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6081,
                            "name": "nameLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6069,
                            "src": "1325:10:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1325:24:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1311:38:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6088,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6074,
                              "src": "1381:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6089,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6080,
                              "src": "1389:3:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 6086,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6072,
                              "src": "1366:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1371:9:29",
                            "memberName": "substring",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4745,
                            "src": "1366:14:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 6090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1366:27:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 6078,
                        "id": 6091,
                        "nodeType": "Return",
                        "src": "1359:34:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6070,
                    "nodeType": "StructuredDocumentation",
                    "src": "955:219:29",
                    "text": " @dev Returns a DNS format name at the specified offset of self.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return ret The name."
                  },
                  "id": 6093,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readName",
                  "nameLocation": "1188:8:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6072,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "1210:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6093,
                        "src": "1197:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6071,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1197:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6074,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "1224:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6093,
                        "src": "1216:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6073,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1216:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1196:35:29"
                  },
                  "returnParameters": {
                    "id": 6078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6077,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "1292:3:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6093,
                        "src": "1279:16:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6076,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1279:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1278:18:29"
                  },
                  "scope": 7059,
                  "src": "1179:221:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6142,
                    "nodeType": "Block",
                    "src": "1800:316:29",
                    "statements": [
                      {
                        "assignments": [
                          6104
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6104,
                            "mutability": "mutable",
                            "name": "count",
                            "nameLocation": "1818:5:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6142,
                            "src": "1810:13:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6103,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1810:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6106,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 6105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1826:1:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1810:17:29"
                      },
                      {
                        "body": {
                          "id": 6138,
                          "nodeType": "Block",
                          "src": "1850:238:29",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6112,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6109,
                                      "name": "offset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6098,
                                      "src": "1871:6:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6110,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6096,
                                        "src": "1880:4:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 6111,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "1885:6:29",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "1880:11:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1871:20:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 6108,
                                  "name": "assert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -3,
                                  "src": "1864:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 6113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1864:28:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6114,
                              "nodeType": "ExpressionStatement",
                              "src": "1864:28:29"
                            },
                            {
                              "assignments": [
                                6116
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6116,
                                  "mutability": "mutable",
                                  "name": "labelLen",
                                  "nameLocation": "1914:8:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6138,
                                  "src": "1906:16:29",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6115,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1906:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6121,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 6119,
                                    "name": "offset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6098,
                                    "src": "1940:6:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6117,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6096,
                                    "src": "1925:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 6118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1930:9:29",
                                  "memberName": "readUint8",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4552,
                                  "src": "1925:14:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                  }
                                },
                                "id": 6120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1925:22:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1906:41:29"
                            },
                            {
                              "expression": {
                                "id": 6126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6122,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6098,
                                  "src": "1961:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6123,
                                    "name": "labelLen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6116,
                                    "src": "1971:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 6124,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1982:1:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "1971:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1961:22:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6127,
                              "nodeType": "ExpressionStatement",
                              "src": "1961:22:29"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6128,
                                  "name": "labelLen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6116,
                                  "src": "2001:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2013:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2001:13:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6133,
                              "nodeType": "IfStatement",
                              "src": "1997:57:29",
                              "trueBody": {
                                "id": 6132,
                                "nodeType": "Block",
                                "src": "2016:38:29",
                                "statements": [
                                  {
                                    "id": 6131,
                                    "nodeType": "Break",
                                    "src": "2034:5:29"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 6136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6134,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6104,
                                  "src": "2067:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 6135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2076:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2067:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6137,
                              "nodeType": "ExpressionStatement",
                              "src": "2067:10:29"
                            }
                          ]
                        },
                        "condition": {
                          "hexValue": "74727565",
                          "id": 6107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1844:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "id": 6139,
                        "nodeType": "WhileStatement",
                        "src": "1837:251:29"
                      },
                      {
                        "expression": {
                          "id": 6140,
                          "name": "count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6104,
                          "src": "2104:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6102,
                        "id": 6141,
                        "nodeType": "Return",
                        "src": "2097:12:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6094,
                    "nodeType": "StructuredDocumentation",
                    "src": "1406:274:29",
                    "text": " @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return The number of labels in the DNS name at 'offset', in bytes."
                  },
                  "id": 6143,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "labelCount",
                  "nameLocation": "1694:10:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6096,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "1718:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6143,
                        "src": "1705:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6095,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1705:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6098,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "1732:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6143,
                        "src": "1724:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1724:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1704:35:29"
                  },
                  "returnParameters": {
                    "id": 6102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6101,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6143,
                        "src": "1787:7:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1787:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1786:9:29"
                  },
                  "scope": 7059,
                  "src": "1685:431:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6146,
                  "mutability": "constant",
                  "name": "RRSIG_TYPE",
                  "nameLocation": "2139:10:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "2122:31:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6144,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2122:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30",
                    "id": 6145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2152:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6149,
                  "mutability": "constant",
                  "name": "RRSIG_ALGORITHM",
                  "nameLocation": "2176:15:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "2159:36:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6147,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2159:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "32",
                    "id": 6148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2194:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6152,
                  "mutability": "constant",
                  "name": "RRSIG_LABELS",
                  "nameLocation": "2218:12:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "2201:33:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6150,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2201:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "33",
                    "id": 6151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2233:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6155,
                  "mutability": "constant",
                  "name": "RRSIG_TTL",
                  "nameLocation": "2257:9:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "2240:30:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2240:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "34",
                    "id": 6154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2269:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4_by_1",
                      "typeString": "int_const 4"
                    },
                    "value": "4"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6158,
                  "mutability": "constant",
                  "name": "RRSIG_EXPIRATION",
                  "nameLocation": "2293:16:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "2276:37:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6156,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2276:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "38",
                    "id": 6157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2312:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_8_by_1",
                      "typeString": "int_const 8"
                    },
                    "value": "8"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6161,
                  "mutability": "constant",
                  "name": "RRSIG_INCEPTION",
                  "nameLocation": "2336:15:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "2319:37:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6159,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2319:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3132",
                    "id": 6160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2354:2:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_12_by_1",
                      "typeString": "int_const 12"
                    },
                    "value": "12"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6164,
                  "mutability": "constant",
                  "name": "RRSIG_KEY_TAG",
                  "nameLocation": "2379:13:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "2362:35:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6162,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2362:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3136",
                    "id": 6163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2395:2:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_16_by_1",
                      "typeString": "int_const 16"
                    },
                    "value": "16"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6167,
                  "mutability": "constant",
                  "name": "RRSIG_SIGNER_NAME",
                  "nameLocation": "2420:17:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "2403:39:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6165,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2403:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3138",
                    "id": 6166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2440:2:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "18"
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "RRUtils.SignedSet",
                  "id": 6188,
                  "members": [
                    {
                      "constant": false,
                      "id": 6169,
                      "mutability": "mutable",
                      "name": "typeCovered",
                      "nameLocation": "2483:11:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2476:18:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 6168,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "2476:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6171,
                      "mutability": "mutable",
                      "name": "algorithm",
                      "nameLocation": "2510:9:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2504:15:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6170,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2504:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6173,
                      "mutability": "mutable",
                      "name": "labels",
                      "nameLocation": "2535:6:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2529:12:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6172,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2529:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6175,
                      "mutability": "mutable",
                      "name": "ttl",
                      "nameLocation": "2558:3:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2551:10:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6174,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2551:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6177,
                      "mutability": "mutable",
                      "name": "expiration",
                      "nameLocation": "2578:10:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2571:17:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6176,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2571:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6179,
                      "mutability": "mutable",
                      "name": "inception",
                      "nameLocation": "2605:9:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2598:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6178,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2598:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6181,
                      "mutability": "mutable",
                      "name": "keytag",
                      "nameLocation": "2631:6:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2624:13:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 6180,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "2624:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6183,
                      "mutability": "mutable",
                      "name": "signerName",
                      "nameLocation": "2653:10:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2647:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6182,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2647:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6185,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "2679:4:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2673:10:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6184,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2673:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6187,
                      "mutability": "mutable",
                      "name": "name",
                      "nameLocation": "2699:4:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6188,
                      "src": "2693:10:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6186,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2693:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "SignedSet",
                  "nameLocation": "2456:9:29",
                  "nodeType": "StructDefinition",
                  "scope": 7059,
                  "src": "2449:261:29",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6289,
                    "nodeType": "Block",
                    "src": "2832:627:29",
                    "statements": [
                      {
                        "expression": {
                          "id": 6203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6196,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "2842:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6198,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "2847:11:29",
                            "memberName": "typeCovered",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6169,
                            "src": "2842:16:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6201,
                                "name": "RRSIG_TYPE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6146,
                                "src": "2877:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6199,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "2861:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2866:10:29",
                              "memberName": "readUint16",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4572,
                              "src": "2861:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                              }
                            },
                            "id": 6202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2861:27:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "2842:46:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 6204,
                        "nodeType": "ExpressionStatement",
                        "src": "2842:46:29"
                      },
                      {
                        "expression": {
                          "id": 6212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6205,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "2898:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6207,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "2903:9:29",
                            "memberName": "algorithm",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6171,
                            "src": "2898:14:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6210,
                                "name": "RRSIG_ALGORITHM",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6149,
                                "src": "2930:15:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6208,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "2915:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2920:9:29",
                              "memberName": "readUint8",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4552,
                              "src": "2915:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                              }
                            },
                            "id": 6211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2915:31:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2898:48:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 6213,
                        "nodeType": "ExpressionStatement",
                        "src": "2898:48:29"
                      },
                      {
                        "expression": {
                          "id": 6221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6214,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "2956:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6216,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "2961:6:29",
                            "memberName": "labels",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6173,
                            "src": "2956:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6219,
                                "name": "RRSIG_LABELS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6152,
                                "src": "2985:12:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6217,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "2970:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2975:9:29",
                              "memberName": "readUint8",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4552,
                              "src": "2970:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                              }
                            },
                            "id": 6220,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2970:28:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2956:42:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 6222,
                        "nodeType": "ExpressionStatement",
                        "src": "2956:42:29"
                      },
                      {
                        "expression": {
                          "id": 6230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6223,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "3008:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6225,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "3013:3:29",
                            "memberName": "ttl",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6175,
                            "src": "3008:8:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6228,
                                "name": "RRSIG_TTL",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6155,
                                "src": "3035:9:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6226,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "3019:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3024:10:29",
                              "memberName": "readUint32",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4592,
                              "src": "3019:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                              }
                            },
                            "id": 6229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3019:26:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "3008:37:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 6231,
                        "nodeType": "ExpressionStatement",
                        "src": "3008:37:29"
                      },
                      {
                        "expression": {
                          "id": 6239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6232,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "3055:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6234,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "3060:10:29",
                            "memberName": "expiration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6177,
                            "src": "3055:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6237,
                                "name": "RRSIG_EXPIRATION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6158,
                                "src": "3089:16:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6235,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "3073:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3078:10:29",
                              "memberName": "readUint32",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4592,
                              "src": "3073:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                              }
                            },
                            "id": 6238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3073:33:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "3055:51:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 6240,
                        "nodeType": "ExpressionStatement",
                        "src": "3055:51:29"
                      },
                      {
                        "expression": {
                          "id": 6248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6241,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "3116:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6243,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "3121:9:29",
                            "memberName": "inception",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6179,
                            "src": "3116:14:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6246,
                                "name": "RRSIG_INCEPTION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6161,
                                "src": "3149:15:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6244,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "3133:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3138:10:29",
                              "memberName": "readUint32",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4592,
                              "src": "3133:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                              }
                            },
                            "id": 6247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3133:32:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "3116:49:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 6249,
                        "nodeType": "ExpressionStatement",
                        "src": "3116:49:29"
                      },
                      {
                        "expression": {
                          "id": 6257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6250,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "3175:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6252,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "3180:6:29",
                            "memberName": "keytag",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6181,
                            "src": "3175:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6255,
                                "name": "RRSIG_KEY_TAG",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6164,
                                "src": "3205:13:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6253,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "3189:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3194:10:29",
                              "memberName": "readUint16",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4572,
                              "src": "3189:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                              }
                            },
                            "id": 6256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3189:30:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "3175:44:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 6258,
                        "nodeType": "ExpressionStatement",
                        "src": "3175:44:29"
                      },
                      {
                        "expression": {
                          "id": 6266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6259,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "3229:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6261,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "3234:10:29",
                            "memberName": "signerName",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6183,
                            "src": "3229:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6263,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "3256:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 6264,
                                "name": "RRSIG_SIGNER_NAME",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6167,
                                "src": "3262:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6262,
                              "name": "readName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6093,
                              "src": "3247:8:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 6265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3247:33:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "3229:51:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 6267,
                        "nodeType": "ExpressionStatement",
                        "src": "3229:51:29"
                      },
                      {
                        "expression": {
                          "id": 6287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6268,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6194,
                              "src": "3290:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                "typeString": "struct RRUtils.SignedSet memory"
                              }
                            },
                            "id": 6270,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "3295:4:29",
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6185,
                            "src": "3290:9:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6273,
                                  "name": "RRSIG_SIGNER_NAME",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6167,
                                  "src": "3330:17:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 6274,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6194,
                                      "src": "3350:4:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                        "typeString": "struct RRUtils.SignedSet memory"
                                      }
                                    },
                                    "id": 6275,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3355:10:29",
                                    "memberName": "signerName",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6183,
                                    "src": "3350:15:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 6276,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3366:6:29",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "3350:22:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3330:42:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6281,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 6278,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6190,
                                      "src": "3386:4:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 6279,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3391:6:29",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "3386:11:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 6280,
                                    "name": "RRSIG_SIGNER_NAME",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6167,
                                    "src": "3400:17:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3386:31:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 6282,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6194,
                                      "src": "3420:4:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                        "typeString": "struct RRUtils.SignedSet memory"
                                      }
                                    },
                                    "id": 6283,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3425:10:29",
                                    "memberName": "signerName",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6183,
                                    "src": "3420:15:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 6284,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3436:6:29",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "3420:22:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3386:56:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6271,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6190,
                                "src": "3302:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3307:9:29",
                              "memberName": "substring",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4745,
                              "src": "3302:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 6286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3302:150:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "3290:162:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 6288,
                        "nodeType": "ExpressionStatement",
                        "src": "3290:162:29"
                      }
                    ]
                  },
                  "id": 6290,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readSignedSet",
                  "nameLocation": "2725:13:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6190,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2752:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6290,
                        "src": "2739:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6189,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2739:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2738:19:29"
                  },
                  "returnParameters": {
                    "id": 6195,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6194,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "2822:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6290,
                        "src": "2805:21:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet"
                        },
                        "typeName": {
                          "id": 6193,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6192,
                            "name": "SignedSet",
                            "nameLocations": [
                              "2805:9:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6188,
                            "src": "2805:9:29"
                          },
                          "referencedDeclaration": 6188,
                          "src": "2805:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                            "typeString": "struct RRUtils.SignedSet"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2804:23:29"
                  },
                  "scope": 7059,
                  "src": "2716:743:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6305,
                    "nodeType": "Block",
                    "src": "3572:49:29",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6300,
                                "name": "rrset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6293,
                                "src": "3600:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "id": 6301,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3606:4:29",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6185,
                              "src": "3600:10:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 6302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3612:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 6299,
                            "name": "iterateRRs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6349,
                            "src": "3589:10:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$6321_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                            }
                          },
                          "id": 6303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3589:25:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "functionReturnParameters": 6298,
                        "id": 6304,
                        "nodeType": "Return",
                        "src": "3582:32:29"
                      }
                    ]
                  },
                  "id": 6306,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rrs",
                  "nameLocation": "3474:3:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6293,
                        "mutability": "mutable",
                        "name": "rrset",
                        "nameLocation": "3495:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6306,
                        "src": "3478:22:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$6188_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet"
                        },
                        "typeName": {
                          "id": 6292,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6291,
                            "name": "SignedSet",
                            "nameLocations": [
                              "3478:9:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6188,
                            "src": "3478:9:29"
                          },
                          "referencedDeclaration": 6188,
                          "src": "3478:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$6188_storage_ptr",
                            "typeString": "struct RRUtils.SignedSet"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3477:24:29"
                  },
                  "returnParameters": {
                    "id": 6298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6297,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6306,
                        "src": "3549:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 6296,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6295,
                            "name": "RRIterator",
                            "nameLocations": [
                              "3549:10:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "3549:10:29"
                          },
                          "referencedDeclaration": 6321,
                          "src": "3549:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3548:19:29"
                  },
                  "scope": 7059,
                  "src": "3465:156:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "canonicalName": "RRUtils.RRIterator",
                  "id": 6321,
                  "members": [
                    {
                      "constant": false,
                      "id": 6308,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "3724:4:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6321,
                      "src": "3718:10:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6307,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3718:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6310,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "3746:6:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6321,
                      "src": "3738:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6309,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3738:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6312,
                      "mutability": "mutable",
                      "name": "dnstype",
                      "nameLocation": "3769:7:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6321,
                      "src": "3762:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 6311,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "3762:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6314,
                      "mutability": "mutable",
                      "name": "class",
                      "nameLocation": "3793:5:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6321,
                      "src": "3786:12:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 6313,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "3786:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6316,
                      "mutability": "mutable",
                      "name": "ttl",
                      "nameLocation": "3815:3:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6321,
                      "src": "3808:10:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6315,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3808:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6318,
                      "mutability": "mutable",
                      "name": "rdataOffset",
                      "nameLocation": "3836:11:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6321,
                      "src": "3828:19:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6317,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3828:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6320,
                      "mutability": "mutable",
                      "name": "nextOffset",
                      "nameLocation": "3865:10:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6321,
                      "src": "3857:18:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6319,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3857:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "RRIterator",
                  "nameLocation": "3697:10:29",
                  "nodeType": "StructDefinition",
                  "scope": 7059,
                  "src": "3690:192:29",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6348,
                    "nodeType": "Block",
                    "src": "4226:84:29",
                    "statements": [
                      {
                        "expression": {
                          "id": 6336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6332,
                              "name": "ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6330,
                              "src": "4236:3:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6334,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "4240:4:29",
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6308,
                            "src": "4236:8:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6335,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6324,
                            "src": "4247:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "4236:15:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 6337,
                        "nodeType": "ExpressionStatement",
                        "src": "4236:15:29"
                      },
                      {
                        "expression": {
                          "id": 6342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6338,
                              "name": "ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6330,
                              "src": "4261:3:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6340,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "4265:10:29",
                            "memberName": "nextOffset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6320,
                            "src": "4261:14:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6341,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6326,
                            "src": "4278:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4261:23:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6343,
                        "nodeType": "ExpressionStatement",
                        "src": "4261:23:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6345,
                              "name": "ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6330,
                              "src": "4299:3:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            ],
                            "id": 6344,
                            "name": "next",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6470,
                            "src": "4294:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$",
                              "typeString": "function (struct RRUtils.RRIterator memory) pure"
                            }
                          },
                          "id": 6346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4294:9:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6347,
                        "nodeType": "ExpressionStatement",
                        "src": "4294:9:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6322,
                    "nodeType": "StructuredDocumentation",
                    "src": "3888:204:29",
                    "text": " @dev Begins iterating over resource records.\n @param self The byte string to read from.\n @param offset The offset to start reading at.\n @return ret An iterator object."
                  },
                  "id": 6349,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "iterateRRs",
                  "nameLocation": "4106:10:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6324,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "4130:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6349,
                        "src": "4117:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6323,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4117:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6326,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "4144:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6349,
                        "src": "4136:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6325,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4136:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4116:35:29"
                  },
                  "returnParameters": {
                    "id": 6331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6330,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "4217:3:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6349,
                        "src": "4199:21:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 6329,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6328,
                            "name": "RRIterator",
                            "nameLocations": [
                              "4199:10:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "4199:10:29"
                          },
                          "referencedDeclaration": 6321,
                          "src": "4199:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4198:23:29"
                  },
                  "scope": 7059,
                  "src": "4097:213:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6365,
                    "nodeType": "Block",
                    "src": "4552:55:29",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6358,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6353,
                              "src": "4569:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6359,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4574:6:29",
                            "memberName": "offset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6310,
                            "src": "4569:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 6360,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6353,
                                "src": "4584:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 6361,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4589:4:29",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6308,
                              "src": "4584:9:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4594:6:29",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4584:16:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4569:31:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 6357,
                        "id": 6364,
                        "nodeType": "Return",
                        "src": "4562:38:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6350,
                    "nodeType": "StructuredDocumentation",
                    "src": "4316:164:29",
                    "text": " @dev Returns true iff there are more RRs to iterate.\n @param iter The iterator to check.\n @return True iff the iterator has finished."
                  },
                  "id": 6366,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "done",
                  "nameLocation": "4494:4:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6353,
                        "mutability": "mutable",
                        "name": "iter",
                        "nameLocation": "4517:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6366,
                        "src": "4499:22:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 6352,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6351,
                            "name": "RRIterator",
                            "nameLocations": [
                              "4499:10:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "4499:10:29"
                          },
                          "referencedDeclaration": 6321,
                          "src": "4499:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4498:24:29"
                  },
                  "returnParameters": {
                    "id": 6357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6356,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6366,
                        "src": "4546:4:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6355,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4546:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4545:6:29"
                  },
                  "scope": 7059,
                  "src": "4485:122:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6469,
                    "nodeType": "Block",
                    "src": "4785:636:29",
                    "statements": [
                      {
                        "expression": {
                          "id": 6378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6373,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "4795:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6375,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "4800:6:29",
                            "memberName": "offset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6310,
                            "src": "4795:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 6376,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "4809:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6377,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4814:10:29",
                            "memberName": "nextOffset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6320,
                            "src": "4809:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4795:29:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6379,
                        "nodeType": "ExpressionStatement",
                        "src": "4795:29:29"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6380,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "4838:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6381,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4843:6:29",
                            "memberName": "offset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6310,
                            "src": "4838:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 6382,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6370,
                                "src": "4853:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 6383,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4858:4:29",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6308,
                              "src": "4853:9:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4863:6:29",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4853:16:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4838:31:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6388,
                        "nodeType": "IfStatement",
                        "src": "4834:68:29",
                        "trueBody": {
                          "id": 6387,
                          "nodeType": "Block",
                          "src": "4871:31:29",
                          "statements": [
                            {
                              "functionReturnParameters": 6372,
                              "id": 6386,
                              "nodeType": "Return",
                              "src": "4885:7:29"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          6390
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6390,
                            "mutability": "mutable",
                            "name": "off",
                            "nameLocation": "4945:3:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6469,
                            "src": "4937:11:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6389,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4937:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6400,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6391,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "4951:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6392,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4956:6:29",
                            "memberName": "offset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6310,
                            "src": "4951:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 6394,
                                  "name": "iter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6370,
                                  "src": "4976:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                    "typeString": "struct RRUtils.RRIterator memory"
                                  }
                                },
                                "id": 6395,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4981:4:29",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6308,
                                "src": "4976:9:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "expression": {
                                  "id": 6396,
                                  "name": "iter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6370,
                                  "src": "4987:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                    "typeString": "struct RRUtils.RRIterator memory"
                                  }
                                },
                                "id": 6397,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4992:6:29",
                                "memberName": "offset",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6310,
                                "src": "4987:11:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6393,
                              "name": "nameLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6069,
                              "src": "4965:10:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4965:34:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4951:48:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4937:62:29"
                      },
                      {
                        "expression": {
                          "id": 6409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6401,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "5047:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6403,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "5052:7:29",
                            "memberName": "dnstype",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6312,
                            "src": "5047:12:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6407,
                                "name": "off",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6390,
                                "src": "5083:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "expression": {
                                  "id": 6404,
                                  "name": "iter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6370,
                                  "src": "5062:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                    "typeString": "struct RRUtils.RRIterator memory"
                                  }
                                },
                                "id": 6405,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5067:4:29",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6308,
                                "src": "5062:9:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5072:10:29",
                              "memberName": "readUint16",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4572,
                              "src": "5062:20:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                              }
                            },
                            "id": 6408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5062:25:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "5047:40:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 6410,
                        "nodeType": "ExpressionStatement",
                        "src": "5047:40:29"
                      },
                      {
                        "expression": {
                          "id": 6413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6411,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6390,
                            "src": "5097:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 6412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5104:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "5097:8:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6414,
                        "nodeType": "ExpressionStatement",
                        "src": "5097:8:29"
                      },
                      {
                        "expression": {
                          "id": 6423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6415,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "5115:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6417,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "5120:5:29",
                            "memberName": "class",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6314,
                            "src": "5115:10:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6421,
                                "name": "off",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6390,
                                "src": "5149:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "expression": {
                                  "id": 6418,
                                  "name": "iter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6370,
                                  "src": "5128:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                    "typeString": "struct RRUtils.RRIterator memory"
                                  }
                                },
                                "id": 6419,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5133:4:29",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6308,
                                "src": "5128:9:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5138:10:29",
                              "memberName": "readUint16",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4572,
                              "src": "5128:20:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                              }
                            },
                            "id": 6422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5128:25:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "5115:38:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 6424,
                        "nodeType": "ExpressionStatement",
                        "src": "5115:38:29"
                      },
                      {
                        "expression": {
                          "id": 6427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6425,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6390,
                            "src": "5163:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 6426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5170:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "5163:8:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6428,
                        "nodeType": "ExpressionStatement",
                        "src": "5163:8:29"
                      },
                      {
                        "expression": {
                          "id": 6437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6429,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "5181:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6431,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "5186:3:29",
                            "memberName": "ttl",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6316,
                            "src": "5181:8:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6435,
                                "name": "off",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6390,
                                "src": "5213:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "expression": {
                                  "id": 6432,
                                  "name": "iter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6370,
                                  "src": "5192:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                    "typeString": "struct RRUtils.RRIterator memory"
                                  }
                                },
                                "id": 6433,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5197:4:29",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6308,
                                "src": "5192:9:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5202:10:29",
                              "memberName": "readUint32",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4592,
                              "src": "5192:20:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                              }
                            },
                            "id": 6436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5192:25:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "5181:36:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 6438,
                        "nodeType": "ExpressionStatement",
                        "src": "5181:36:29"
                      },
                      {
                        "expression": {
                          "id": 6441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6439,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6390,
                            "src": "5227:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "34",
                            "id": 6440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5234:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "5227:8:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6442,
                        "nodeType": "ExpressionStatement",
                        "src": "5227:8:29"
                      },
                      {
                        "assignments": [
                          6444
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6444,
                            "mutability": "mutable",
                            "name": "rdataLength",
                            "nameLocation": "5280:11:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6469,
                            "src": "5272:19:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6443,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5272:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6450,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6448,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6390,
                              "src": "5315:3:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 6445,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6370,
                                "src": "5294:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 6446,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5299:4:29",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6308,
                              "src": "5294:9:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5304:10:29",
                            "memberName": "readUint16",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4572,
                            "src": "5294:20:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                            }
                          },
                          "id": 6449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5294:25:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5272:47:29"
                      },
                      {
                        "expression": {
                          "id": 6453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6451,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6390,
                            "src": "5329:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 6452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5336:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "5329:8:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6454,
                        "nodeType": "ExpressionStatement",
                        "src": "5329:8:29"
                      },
                      {
                        "expression": {
                          "id": 6459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6455,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "5347:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6457,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "5352:11:29",
                            "memberName": "rdataOffset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6318,
                            "src": "5347:16:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6458,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6390,
                            "src": "5366:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5347:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6460,
                        "nodeType": "ExpressionStatement",
                        "src": "5347:22:29"
                      },
                      {
                        "expression": {
                          "id": 6467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6461,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6370,
                              "src": "5379:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 6463,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "5384:10:29",
                            "memberName": "nextOffset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6320,
                            "src": "5379:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6464,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6390,
                              "src": "5397:3:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 6465,
                              "name": "rdataLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6444,
                              "src": "5403:11:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5397:17:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5379:35:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6468,
                        "nodeType": "ExpressionStatement",
                        "src": "5379:35:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6367,
                    "nodeType": "StructuredDocumentation",
                    "src": "4613:115:29",
                    "text": " @dev Moves the iterator to the next resource record.\n @param iter The iterator to advance."
                  },
                  "id": 6470,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "next",
                  "nameLocation": "4742:4:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6371,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6370,
                        "mutability": "mutable",
                        "name": "iter",
                        "nameLocation": "4765:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6470,
                        "src": "4747:22:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 6369,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6368,
                            "name": "RRIterator",
                            "nameLocations": [
                              "4747:10:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "4747:10:29"
                          },
                          "referencedDeclaration": 6321,
                          "src": "4747:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4746:24:29"
                  },
                  "returnParameters": {
                    "id": 6372,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4785:0:29"
                  },
                  "scope": 7059,
                  "src": "4733:688:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6492,
                    "nodeType": "Block",
                    "src": "5676:150:29",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6482,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6474,
                                "src": "5742:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 6483,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5747:6:29",
                              "memberName": "offset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6310,
                              "src": "5742:11:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 6485,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6474,
                                    "src": "5782:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 6486,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5787:4:29",
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6308,
                                  "src": "5782:9:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 6487,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6474,
                                    "src": "5793:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 6488,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5798:6:29",
                                  "memberName": "offset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6310,
                                  "src": "5793:11:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6484,
                                "name": "nameLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6069,
                                "src": "5771:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 6489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5771:34:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 6479,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6474,
                                "src": "5705:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 6480,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5710:4:29",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6308,
                              "src": "5705:9:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5715:9:29",
                            "memberName": "substring",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4745,
                            "src": "5705:19:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 6490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5705:114:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 6478,
                        "id": 6491,
                        "nodeType": "Return",
                        "src": "5686:133:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6471,
                    "nodeType": "StructuredDocumentation",
                    "src": "5427:169:29",
                    "text": " @dev Returns the name of the current record.\n @param iter The iterator.\n @return A new bytes object containing the owner name from the RR."
                  },
                  "id": 6493,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "5610:4:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6474,
                        "mutability": "mutable",
                        "name": "iter",
                        "nameLocation": "5633:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6493,
                        "src": "5615:22:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 6473,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6472,
                            "name": "RRIterator",
                            "nameLocations": [
                              "5615:10:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "5615:10:29"
                          },
                          "referencedDeclaration": 6321,
                          "src": "5615:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5614:24:29"
                  },
                  "returnParameters": {
                    "id": 6478,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6477,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6493,
                        "src": "5662:12:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6476,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5662:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5661:14:29"
                  },
                  "scope": 7059,
                  "src": "5601:225:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6514,
                    "nodeType": "Block",
                    "src": "6107:155:29",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6505,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6497,
                                "src": "6173:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 6506,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6178:11:29",
                              "memberName": "rdataOffset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6318,
                              "src": "6173:16:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 6507,
                                  "name": "iter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6497,
                                  "src": "6207:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                    "typeString": "struct RRUtils.RRIterator memory"
                                  }
                                },
                                "id": 6508,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6212:10:29",
                                "memberName": "nextOffset",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6320,
                                "src": "6207:15:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "expression": {
                                  "id": 6509,
                                  "name": "iter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6497,
                                  "src": "6225:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                    "typeString": "struct RRUtils.RRIterator memory"
                                  }
                                },
                                "id": 6510,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6230:11:29",
                                "memberName": "rdataOffset",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6318,
                                "src": "6225:16:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6207:34:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 6502,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6497,
                                "src": "6136:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 6503,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6141:4:29",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6308,
                              "src": "6136:9:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6146:9:29",
                            "memberName": "substring",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4745,
                            "src": "6136:19:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 6512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6136:119:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 6501,
                        "id": 6513,
                        "nodeType": "Return",
                        "src": "6117:138:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6494,
                    "nodeType": "StructuredDocumentation",
                    "src": "5832:166:29",
                    "text": " @dev Returns the rdata portion of the current record.\n @param iter The iterator.\n @return A new bytes object containing the RR's RDATA."
                  },
                  "id": 6515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rdata",
                  "nameLocation": "6012:5:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6498,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6497,
                        "mutability": "mutable",
                        "name": "iter",
                        "nameLocation": "6036:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6515,
                        "src": "6018:22:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "id": 6496,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6495,
                            "name": "RRIterator",
                            "nameLocations": [
                              "6018:10:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6321,
                            "src": "6018:10:29"
                          },
                          "referencedDeclaration": 6321,
                          "src": "6018:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6017:24:29"
                  },
                  "returnParameters": {
                    "id": 6501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6500,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6515,
                        "src": "6089:12:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6499,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6089:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6088:14:29"
                  },
                  "scope": 7059,
                  "src": "6003:259:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6518,
                  "mutability": "constant",
                  "name": "DNSKEY_FLAGS",
                  "nameLocation": "6285:12:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "6268:33:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6516,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6268:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30",
                    "id": 6517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6300:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6521,
                  "mutability": "constant",
                  "name": "DNSKEY_PROTOCOL",
                  "nameLocation": "6324:15:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "6307:36:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6307:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "32",
                    "id": 6520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6342:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6524,
                  "mutability": "constant",
                  "name": "DNSKEY_ALGORITHM",
                  "nameLocation": "6366:16:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "6349:37:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6522,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6349:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "33",
                    "id": 6523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6385:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6527,
                  "mutability": "constant",
                  "name": "DNSKEY_PUBKEY",
                  "nameLocation": "6409:13:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "6392:34:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6525,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6392:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "34",
                    "id": 6526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6425:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4_by_1",
                      "typeString": "int_const 4"
                    },
                    "value": "4"
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "RRUtils.DNSKEY",
                  "id": 6536,
                  "members": [
                    {
                      "constant": false,
                      "id": 6529,
                      "mutability": "mutable",
                      "name": "flags",
                      "nameLocation": "6464:5:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6536,
                      "src": "6457:12:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 6528,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "6457:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6531,
                      "mutability": "mutable",
                      "name": "protocol",
                      "nameLocation": "6485:8:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6536,
                      "src": "6479:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6530,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6479:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6533,
                      "mutability": "mutable",
                      "name": "algorithm",
                      "nameLocation": "6509:9:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6536,
                      "src": "6503:15:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6532,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6503:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6535,
                      "mutability": "mutable",
                      "name": "publicKey",
                      "nameLocation": "6534:9:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6536,
                      "src": "6528:15:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6534,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6528:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "DNSKEY",
                  "nameLocation": "6440:6:29",
                  "nodeType": "StructDefinition",
                  "scope": 7059,
                  "src": "6433:117:29",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6595,
                    "nodeType": "Block",
                    "src": "6700:325:29",
                    "statements": [
                      {
                        "expression": {
                          "id": 6557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6548,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6546,
                              "src": "6710:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                "typeString": "struct RRUtils.DNSKEY memory"
                              }
                            },
                            "id": 6550,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "6715:5:29",
                            "memberName": "flags",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6529,
                            "src": "6710:10:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6553,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6540,
                                  "src": "6739:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6554,
                                  "name": "DNSKEY_FLAGS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6518,
                                  "src": "6748:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6739:21:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6551,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6538,
                                "src": "6723:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6728:10:29",
                              "memberName": "readUint16",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4572,
                              "src": "6723:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                              }
                            },
                            "id": 6556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6723:38:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "6710:51:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 6558,
                        "nodeType": "ExpressionStatement",
                        "src": "6710:51:29"
                      },
                      {
                        "expression": {
                          "id": 6568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6559,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6546,
                              "src": "6771:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                "typeString": "struct RRUtils.DNSKEY memory"
                              }
                            },
                            "id": 6561,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "6776:8:29",
                            "memberName": "protocol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6531,
                            "src": "6771:13:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6564,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6540,
                                  "src": "6802:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6565,
                                  "name": "DNSKEY_PROTOCOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6521,
                                  "src": "6811:15:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6802:24:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6562,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6538,
                                "src": "6787:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6792:9:29",
                              "memberName": "readUint8",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4552,
                              "src": "6787:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                              }
                            },
                            "id": 6567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6787:40:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "6771:56:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 6569,
                        "nodeType": "ExpressionStatement",
                        "src": "6771:56:29"
                      },
                      {
                        "expression": {
                          "id": 6579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6570,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6546,
                              "src": "6837:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                "typeString": "struct RRUtils.DNSKEY memory"
                              }
                            },
                            "id": 6572,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "6842:9:29",
                            "memberName": "algorithm",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6533,
                            "src": "6837:14:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6575,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6540,
                                  "src": "6869:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6576,
                                  "name": "DNSKEY_ALGORITHM",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6524,
                                  "src": "6878:16:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6869:25:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6573,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6538,
                                "src": "6854:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6859:9:29",
                              "memberName": "readUint8",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4552,
                              "src": "6854:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                              }
                            },
                            "id": 6578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6854:41:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "6837:58:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 6580,
                        "nodeType": "ExpressionStatement",
                        "src": "6837:58:29"
                      },
                      {
                        "expression": {
                          "id": 6593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6581,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6546,
                              "src": "6905:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                                "typeString": "struct RRUtils.DNSKEY memory"
                              }
                            },
                            "id": 6583,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "6910:9:29",
                            "memberName": "publicKey",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6535,
                            "src": "6905:14:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6586,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6540,
                                  "src": "6950:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6587,
                                  "name": "DNSKEY_PUBKEY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6527,
                                  "src": "6959:13:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6950:22:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6589,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6542,
                                  "src": "6986:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 6590,
                                  "name": "DNSKEY_PUBKEY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6527,
                                  "src": "6995:13:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6986:22:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6584,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6538,
                                "src": "6922:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6927:9:29",
                              "memberName": "substring",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4745,
                              "src": "6922:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 6592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6922:96:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "6905:113:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 6594,
                        "nodeType": "ExpressionStatement",
                        "src": "6905:113:29"
                      }
                    ]
                  },
                  "id": 6596,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readDNSKEY",
                  "nameLocation": "6565:10:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6538,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6598:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6596,
                        "src": "6585:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6537,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6585:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6540,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "6620:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6596,
                        "src": "6612:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6539,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6612:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6542,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "6644:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6596,
                        "src": "6636:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6636:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6575:81:29"
                  },
                  "returnParameters": {
                    "id": 6547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6546,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "6694:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6596,
                        "src": "6680:18:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DNSKEY_$6536_memory_ptr",
                          "typeString": "struct RRUtils.DNSKEY"
                        },
                        "typeName": {
                          "id": 6545,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6544,
                            "name": "DNSKEY",
                            "nameLocations": [
                              "6680:6:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6536,
                            "src": "6680:6:29"
                          },
                          "referencedDeclaration": 6536,
                          "src": "6680:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DNSKEY_$6536_storage_ptr",
                            "typeString": "struct RRUtils.DNSKEY"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6679:20:29"
                  },
                  "scope": 7059,
                  "src": "6556:469:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6599,
                  "mutability": "constant",
                  "name": "DS_KEY_TAG",
                  "nameLocation": "7048:10:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "7031:31:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6597,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7031:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30",
                    "id": 6598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7061:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6602,
                  "mutability": "constant",
                  "name": "DS_ALGORITHM",
                  "nameLocation": "7085:12:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "7068:33:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6600,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7068:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "32",
                    "id": 6601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7100:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6605,
                  "mutability": "constant",
                  "name": "DS_DIGEST_TYPE",
                  "nameLocation": "7124:14:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "7107:35:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7107:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "33",
                    "id": 6604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7141:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6608,
                  "mutability": "constant",
                  "name": "DS_DIGEST",
                  "nameLocation": "7165:9:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "7148:30:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6606,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7148:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "34",
                    "id": 6607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7177:1:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4_by_1",
                      "typeString": "int_const 4"
                    },
                    "value": "4"
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "RRUtils.DS",
                  "id": 6617,
                  "members": [
                    {
                      "constant": false,
                      "id": 6610,
                      "mutability": "mutable",
                      "name": "keytag",
                      "nameLocation": "7212:6:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6617,
                      "src": "7205:13:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 6609,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "7205:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6612,
                      "mutability": "mutable",
                      "name": "algorithm",
                      "nameLocation": "7234:9:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6617,
                      "src": "7228:15:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6611,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "7228:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6614,
                      "mutability": "mutable",
                      "name": "digestType",
                      "nameLocation": "7259:10:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6617,
                      "src": "7253:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6613,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "7253:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6616,
                      "mutability": "mutable",
                      "name": "digest",
                      "nameLocation": "7285:6:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 6617,
                      "src": "7279:12:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6615,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7279:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "DS",
                  "nameLocation": "7192:2:29",
                  "nodeType": "StructDefinition",
                  "scope": 7059,
                  "src": "7185:113:29",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6676,
                    "nodeType": "Block",
                    "src": "7440:276:29",
                    "statements": [
                      {
                        "expression": {
                          "id": 6638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6629,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6627,
                              "src": "7450:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                "typeString": "struct RRUtils.DS memory"
                              }
                            },
                            "id": 6631,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "7455:6:29",
                            "memberName": "keytag",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6610,
                            "src": "7450:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6636,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6634,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6621,
                                  "src": "7480:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6635,
                                  "name": "DS_KEY_TAG",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6599,
                                  "src": "7489:10:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7480:19:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6632,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6619,
                                "src": "7464:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7469:10:29",
                              "memberName": "readUint16",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4572,
                              "src": "7464:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                              }
                            },
                            "id": 6637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7464:36:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "7450:50:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 6639,
                        "nodeType": "ExpressionStatement",
                        "src": "7450:50:29"
                      },
                      {
                        "expression": {
                          "id": 6649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6640,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6627,
                              "src": "7510:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                "typeString": "struct RRUtils.DS memory"
                              }
                            },
                            "id": 6642,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "7515:9:29",
                            "memberName": "algorithm",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6612,
                            "src": "7510:14:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6645,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6621,
                                  "src": "7542:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6646,
                                  "name": "DS_ALGORITHM",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6602,
                                  "src": "7551:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7542:21:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6643,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6619,
                                "src": "7527:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7532:9:29",
                              "memberName": "readUint8",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4552,
                              "src": "7527:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                              }
                            },
                            "id": 6648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7527:37:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "7510:54:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 6650,
                        "nodeType": "ExpressionStatement",
                        "src": "7510:54:29"
                      },
                      {
                        "expression": {
                          "id": 6660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6651,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6627,
                              "src": "7574:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                "typeString": "struct RRUtils.DS memory"
                              }
                            },
                            "id": 6653,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "7579:10:29",
                            "memberName": "digestType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6614,
                            "src": "7574:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6656,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6621,
                                  "src": "7607:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6657,
                                  "name": "DS_DIGEST_TYPE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6605,
                                  "src": "7616:14:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7607:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6654,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6619,
                                "src": "7592:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7597:9:29",
                              "memberName": "readUint8",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4552,
                              "src": "7592:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                              }
                            },
                            "id": 6659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7592:39:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "7574:57:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 6661,
                        "nodeType": "ExpressionStatement",
                        "src": "7574:57:29"
                      },
                      {
                        "expression": {
                          "id": 6674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6662,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6627,
                              "src": "7641:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                                "typeString": "struct RRUtils.DS memory"
                              }
                            },
                            "id": 6664,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "7646:6:29",
                            "memberName": "digest",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6616,
                            "src": "7641:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6667,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6621,
                                  "src": "7670:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6668,
                                  "name": "DS_DIGEST",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6608,
                                  "src": "7679:9:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7670:18:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6670,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6623,
                                  "src": "7690:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 6671,
                                  "name": "DS_DIGEST",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6608,
                                  "src": "7699:9:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7690:18:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6665,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6619,
                                "src": "7655:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6666,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7660:9:29",
                              "memberName": "substring",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4745,
                              "src": "7655:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                              }
                            },
                            "id": 6673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7655:54:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "7641:68:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 6675,
                        "nodeType": "ExpressionStatement",
                        "src": "7641:68:29"
                      }
                    ]
                  },
                  "id": 6677,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readDS",
                  "nameLocation": "7313:6:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6619,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7342:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6677,
                        "src": "7329:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6618,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7329:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6621,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "7364:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6677,
                        "src": "7356:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7356:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6623,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "7388:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6677,
                        "src": "7380:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7380:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7319:81:29"
                  },
                  "returnParameters": {
                    "id": 6628,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6627,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "7434:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6677,
                        "src": "7424:14:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DS_$6617_memory_ptr",
                          "typeString": "struct RRUtils.DS"
                        },
                        "typeName": {
                          "id": 6626,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6625,
                            "name": "DS",
                            "nameLocations": [
                              "7424:2:29"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6617,
                            "src": "7424:2:29"
                          },
                          "referencedDeclaration": 6617,
                          "src": "7424:2:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DS_$6617_storage_ptr",
                            "typeString": "struct RRUtils.DS"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7423:16:29"
                  },
                  "scope": 7059,
                  "src": "7304:412:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6831,
                    "nodeType": "Block",
                    "src": "7842:1332:29",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 6688,
                              "name": "other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6681,
                              "src": "7868:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 6686,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6679,
                              "src": "7856:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7861:6:29",
                            "memberName": "equals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4535,
                            "src": "7856:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                            }
                          },
                          "id": 6689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7856:18:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6693,
                        "nodeType": "IfStatement",
                        "src": "7852:57:29",
                        "trueBody": {
                          "id": 6692,
                          "nodeType": "Block",
                          "src": "7876:33:29",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 6690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7897:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 6685,
                              "id": 6691,
                              "nodeType": "Return",
                              "src": "7890:8:29"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          6695
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6695,
                            "mutability": "mutable",
                            "name": "off",
                            "nameLocation": "7927:3:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6831,
                            "src": "7919:11:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6694,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7919:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6696,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7919:11:29"
                      },
                      {
                        "assignments": [
                          6698
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6698,
                            "mutability": "mutable",
                            "name": "otheroff",
                            "nameLocation": "7948:8:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6831,
                            "src": "7940:16:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6697,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7940:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6699,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7940:16:29"
                      },
                      {
                        "assignments": [
                          6701
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6701,
                            "mutability": "mutable",
                            "name": "prevoff",
                            "nameLocation": "7974:7:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6831,
                            "src": "7966:15:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6700,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7966:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6702,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7966:15:29"
                      },
                      {
                        "assignments": [
                          6704
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6704,
                            "mutability": "mutable",
                            "name": "otherprevoff",
                            "nameLocation": "7999:12:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6831,
                            "src": "7991:20:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6703,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7991:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6705,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7991:20:29"
                      },
                      {
                        "assignments": [
                          6707
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6707,
                            "mutability": "mutable",
                            "name": "counts",
                            "nameLocation": "8029:6:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6831,
                            "src": "8021:14:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6706,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8021:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6712,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6709,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6679,
                              "src": "8049:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 6710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8055:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 6708,
                            "name": "labelCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6143,
                            "src": "8038:10:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8038:19:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8021:36:29"
                      },
                      {
                        "assignments": [
                          6714
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6714,
                            "mutability": "mutable",
                            "name": "othercounts",
                            "nameLocation": "8075:11:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 6831,
                            "src": "8067:19:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6713,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8067:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6719,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6716,
                              "name": "other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6681,
                              "src": "8100:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 6717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8107:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 6715,
                            "name": "labelCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6143,
                            "src": "8089:10:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8089:20:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8067:42:29"
                      },
                      {
                        "body": {
                          "id": 6737,
                          "nodeType": "Block",
                          "src": "8242:99:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 6725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6723,
                                  "name": "prevoff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6701,
                                  "src": "8256:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6724,
                                  "name": "off",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6695,
                                  "src": "8266:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8256:13:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6726,
                              "nodeType": "ExpressionStatement",
                              "src": "8256:13:29"
                            },
                            {
                              "expression": {
                                "id": 6732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6727,
                                  "name": "off",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6695,
                                  "src": "8283:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 6729,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6679,
                                      "src": "8298:4:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 6730,
                                      "name": "off",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6695,
                                      "src": "8304:3:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6728,
                                    "name": "progress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6874,
                                    "src": "8289:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6731,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8289:19:29",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8283:25:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6733,
                              "nodeType": "ExpressionStatement",
                              "src": "8283:25:29"
                            },
                            {
                              "expression": {
                                "id": 6735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "8322:8:29",
                                "subExpression": {
                                  "id": 6734,
                                  "name": "counts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6707,
                                  "src": "8322:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6736,
                              "nodeType": "ExpressionStatement",
                              "src": "8322:8:29"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6720,
                            "name": "counts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6707,
                            "src": "8220:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 6721,
                            "name": "othercounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6714,
                            "src": "8229:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8220:20:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6738,
                        "nodeType": "WhileStatement",
                        "src": "8213:128:29"
                      },
                      {
                        "body": {
                          "id": 6756,
                          "nodeType": "Block",
                          "src": "8380:125:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 6744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6742,
                                  "name": "otherprevoff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6704,
                                  "src": "8394:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6743,
                                  "name": "otheroff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6698,
                                  "src": "8409:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8394:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6745,
                              "nodeType": "ExpressionStatement",
                              "src": "8394:23:29"
                            },
                            {
                              "expression": {
                                "id": 6751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6746,
                                  "name": "otheroff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6698,
                                  "src": "8431:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 6748,
                                      "name": "other",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6681,
                                      "src": "8451:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 6749,
                                      "name": "otheroff",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6698,
                                      "src": "8458:8:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6747,
                                    "name": "progress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6874,
                                    "src": "8442:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8442:25:29",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8431:36:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6752,
                              "nodeType": "ExpressionStatement",
                              "src": "8431:36:29"
                            },
                            {
                              "expression": {
                                "id": 6754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "8481:13:29",
                                "subExpression": {
                                  "id": 6753,
                                  "name": "othercounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6714,
                                  "src": "8481:11:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6755,
                              "nodeType": "ExpressionStatement",
                              "src": "8481:13:29"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6739,
                            "name": "othercounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6714,
                            "src": "8358:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 6740,
                            "name": "counts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6707,
                            "src": "8372:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8358:20:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6757,
                        "nodeType": "WhileStatement",
                        "src": "8351:154:29"
                      },
                      {
                        "body": {
                          "id": 6795,
                          "nodeType": "Block",
                          "src": "8630:189:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 6771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6769,
                                  "name": "prevoff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6701,
                                  "src": "8644:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6770,
                                  "name": "off",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6695,
                                  "src": "8654:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8644:13:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6772,
                              "nodeType": "ExpressionStatement",
                              "src": "8644:13:29"
                            },
                            {
                              "expression": {
                                "id": 6778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6773,
                                  "name": "off",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6695,
                                  "src": "8671:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 6775,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6679,
                                      "src": "8686:4:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 6776,
                                      "name": "off",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6695,
                                      "src": "8692:3:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6774,
                                    "name": "progress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6874,
                                    "src": "8677:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6777,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8677:19:29",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8671:25:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6779,
                              "nodeType": "ExpressionStatement",
                              "src": "8671:25:29"
                            },
                            {
                              "expression": {
                                "id": 6782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6780,
                                  "name": "otherprevoff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6704,
                                  "src": "8710:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6781,
                                  "name": "otheroff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6698,
                                  "src": "8725:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8710:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6783,
                              "nodeType": "ExpressionStatement",
                              "src": "8710:23:29"
                            },
                            {
                              "expression": {
                                "id": 6789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6784,
                                  "name": "otheroff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6698,
                                  "src": "8747:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 6786,
                                      "name": "other",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6681,
                                      "src": "8767:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 6787,
                                      "name": "otheroff",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6698,
                                      "src": "8774:8:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6785,
                                    "name": "progress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6874,
                                    "src": "8758:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8758:25:29",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8747:36:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6790,
                              "nodeType": "ExpressionStatement",
                              "src": "8747:36:29"
                            },
                            {
                              "expression": {
                                "id": 6793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6791,
                                  "name": "counts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6707,
                                  "src": "8797:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 6792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8807:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8797:11:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6794,
                              "nodeType": "ExpressionStatement",
                              "src": "8797:11:29"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6758,
                              "name": "counts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6707,
                              "src": "8580:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 6759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8589:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8580:10:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "id": 6767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "8594:34:29",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 6763,
                                  "name": "off",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6695,
                                  "src": "8607:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 6764,
                                  "name": "other",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6681,
                                  "src": "8612:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "id": 6765,
                                  "name": "otheroff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6698,
                                  "src": "8619:8:29",
                                  "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": 6761,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6679,
                                  "src": "8595:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 6762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "8600:6:29",
                                "memberName": "equals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4481,
                                "src": "8595:11:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"
                                }
                              },
                              "id": 6766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8595:33:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8580:48:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6796,
                        "nodeType": "WhileStatement",
                        "src": "8573:246:29"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6797,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6695,
                            "src": "8833:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8840:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8833:8:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6804,
                        "nodeType": "IfStatement",
                        "src": "8829:48:29",
                        "trueBody": {
                          "id": 6803,
                          "nodeType": "Block",
                          "src": "8843:34:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 6801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "8864:2:29",
                                "subExpression": {
                                  "hexValue": "31",
                                  "id": 6800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8865:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              },
                              "functionReturnParameters": 6685,
                              "id": 6802,
                              "nodeType": "Return",
                              "src": "8857:9:29"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6805,
                            "name": "otheroff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6698,
                            "src": "8890:8:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8902:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8890:13:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6811,
                        "nodeType": "IfStatement",
                        "src": "8886:52:29",
                        "trueBody": {
                          "id": 6810,
                          "nodeType": "Block",
                          "src": "8905:33:29",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "31",
                                "id": 6808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8926:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "functionReturnParameters": 6685,
                              "id": 6809,
                              "nodeType": "Return",
                              "src": "8919:8:29"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6814,
                                "name": "prevoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6701,
                                "src": "8997:7:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 6815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9007:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "8997:11:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 6819,
                                  "name": "prevoff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6701,
                                  "src": "9041:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 6817,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6679,
                                  "src": "9026:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 6818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9031:9:29",
                                "memberName": "readUint8",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4552,
                                "src": "9026:14:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                }
                              },
                              "id": 6820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9026:23:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 6821,
                              "name": "other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6681,
                              "src": "9067:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6822,
                                "name": "otherprevoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6704,
                                "src": "9090:12:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 6823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9105:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "9090:16:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 6827,
                                  "name": "otherprevoff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6704,
                                  "src": "9140:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 6825,
                                  "name": "other",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6681,
                                  "src": "9124:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 6826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9130:9:29",
                                "memberName": "readUint8",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4552,
                                "src": "9124:15:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                }
                              },
                              "id": 6828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9124:29:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "expression": {
                              "id": 6812,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6679,
                              "src": "8967:4:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6813,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8972:7:29",
                            "memberName": "compare",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4421,
                            "src": "8967:12:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"
                            }
                          },
                          "id": 6829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8967:200:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 6685,
                        "id": 6830,
                        "nodeType": "Return",
                        "src": "8948:219:29"
                      }
                    ]
                  },
                  "id": 6832,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "compareNames",
                  "nameLocation": "7731:12:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6679,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "7757:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6832,
                        "src": "7744:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6678,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7744:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6681,
                        "mutability": "mutable",
                        "name": "other",
                        "nameLocation": "7776:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6832,
                        "src": "7763:18:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6680,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7763:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7743:39:29"
                  },
                  "returnParameters": {
                    "id": 6685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6684,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6832,
                        "src": "7830:6:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6683,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7830:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7829:8:29"
                  },
                  "scope": 7059,
                  "src": "7722:1452:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6854,
                    "nodeType": "Block",
                    "src": "9374:50:29",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          },
                          "id": 6852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            },
                            "id": 6850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 6844,
                                  "name": "i1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6835,
                                  "src": "9397:2:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                ],
                                "id": 6843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9391:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int32_$",
                                  "typeString": "type(int32)"
                                },
                                "typeName": {
                                  "id": 6842,
                                  "name": "int32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9391:5:29",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9391:9:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int32",
                                "typeString": "int32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 6848,
                                  "name": "i2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6837,
                                  "src": "9409:2:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                ],
                                "id": 6847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9403:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int32_$",
                                  "typeString": "type(int32)"
                                },
                                "typeName": {
                                  "id": 6846,
                                  "name": "int32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9403:5:29",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9403:9:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int32",
                                "typeString": "int32"
                              }
                            },
                            "src": "9391:21:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9416:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9391:26:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 6841,
                        "id": 6853,
                        "nodeType": "Return",
                        "src": "9384:33:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6833,
                    "nodeType": "StructuredDocumentation",
                    "src": "9180:85:29",
                    "text": " @dev Compares two serial numbers using RFC1982 serial number math."
                  },
                  "id": 6855,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "serialNumberGte",
                  "nameLocation": "9279:15:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6838,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6835,
                        "mutability": "mutable",
                        "name": "i1",
                        "nameLocation": "9302:2:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6855,
                        "src": "9295:9:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6834,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9295:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6837,
                        "mutability": "mutable",
                        "name": "i2",
                        "nameLocation": "9313:2:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6855,
                        "src": "9306:9:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6836,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9306:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9294:22:29"
                  },
                  "returnParameters": {
                    "id": 6841,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6840,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6855,
                        "src": "9364:4:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6839,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9364:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9363:6:29"
                  },
                  "scope": 7059,
                  "src": "9270:154:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6873,
                    "nodeType": "Block",
                    "src": "9540:53:29",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6864,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6859,
                              "src": "9557:3:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 6865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9563:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "9557:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 6869,
                                "name": "off",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6859,
                                "src": "9582:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6867,
                                "name": "body",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6857,
                                "src": "9567:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9572:9:29",
                              "memberName": "readUint8",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4552,
                              "src": "9567:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                              }
                            },
                            "id": 6870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9567:19:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "9557:29:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6863,
                        "id": 6872,
                        "nodeType": "Return",
                        "src": "9550:36:29"
                      }
                    ]
                  },
                  "id": 6874,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "progress",
                  "nameLocation": "9439:8:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6857,
                        "mutability": "mutable",
                        "name": "body",
                        "nameLocation": "9461:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6874,
                        "src": "9448:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6856,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9448:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6859,
                        "mutability": "mutable",
                        "name": "off",
                        "nameLocation": "9475:3:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 6874,
                        "src": "9467:11:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6858,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9467:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9447:32:29"
                  },
                  "returnParameters": {
                    "id": 6863,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6862,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6874,
                        "src": "9527:7:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6861,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9527:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9526:9:29"
                  },
                  "scope": 7059,
                  "src": "9430:163:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7057,
                    "nodeType": "Block",
                    "src": "9831:3919:29",
                    "statements": [
                      {
                        "id": 7056,
                        "nodeType": "UncheckedBlock",
                        "src": "11567:2177:29",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 6883,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6877,
                                      "src": "11599:4:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 6884,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "11604:6:29",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "11599:11:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "hexValue": "38313932",
                                    "id": 6885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11614:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8192_by_1",
                                      "typeString": "int_const 8192"
                                    },
                                    "value": "8192"
                                  },
                                  "src": "11599:19:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "4c6f6e67206b657973206e6f74207065726d6974746564",
                                  "id": 6887,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11620:25:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7e23270aecf7702fd4b1bd212912c277507361dc8248ebed5ad0286c9b051069",
                                    "typeString": "literal_string \"Long keys not permitted\""
                                  },
                                  "value": "Long keys not permitted"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_7e23270aecf7702fd4b1bd212912c277507361dc8248ebed5ad0286c9b051069",
                                    "typeString": "literal_string \"Long keys not permitted\""
                                  }
                                ],
                                "id": 6882,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "11591:7:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 6888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11591:55:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 6889,
                            "nodeType": "ExpressionStatement",
                            "src": "11591:55:29"
                          },
                          {
                            "assignments": [
                              6891
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6891,
                                "mutability": "mutable",
                                "name": "ac1",
                                "nameLocation": "11668:3:29",
                                "nodeType": "VariableDeclaration",
                                "scope": 7056,
                                "src": "11660:11:29",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6890,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11660:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6892,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11660:11:29"
                          },
                          {
                            "assignments": [
                              6894
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6894,
                                "mutability": "mutable",
                                "name": "ac2",
                                "nameLocation": "11693:3:29",
                                "nodeType": "VariableDeclaration",
                                "scope": 7056,
                                "src": "11685:11:29",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6893,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11685:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6895,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11685:11:29"
                          },
                          {
                            "body": {
                              "id": 6959,
                              "nodeType": "Block",
                              "src": "11761:619:29",
                              "statements": [
                                {
                                  "assignments": [
                                    6911
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6911,
                                      "mutability": "mutable",
                                      "name": "word",
                                      "nameLocation": "11787:4:29",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6959,
                                      "src": "11779:12:29",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 6910,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11779:7:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6912,
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11779:12:29"
                                },
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "11818:76:29",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "11840:36:29",
                                        "value": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "data",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "11862:4:29"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "11868:2:29",
                                                      "type": "",
                                                      "value": "32"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11858:3:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "11858:13:29"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11873:1:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "11854:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11854:21:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "11848:5:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11848:28:29"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "word",
                                            "nodeType": "YulIdentifier",
                                            "src": "11840:4:29"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "evmVersion": "london",
                                  "externalReferences": [
                                    {
                                      "declaration": 6877,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "11862:4:29",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6897,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "11873:1:29",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6911,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "11840:4:29",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 6913,
                                  "nodeType": "InlineAssembly",
                                  "src": "11809:85:29"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6919,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6916,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6914,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6897,
                                        "src": "11915:1:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "3332",
                                        "id": 6915,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11919:2:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      },
                                      "src": "11915:6:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6917,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6877,
                                        "src": "11924:4:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 6918,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "11929:6:29",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "11924:11:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11915:20:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 6942,
                                  "nodeType": "IfStatement",
                                  "src": "11911:166:29",
                                  "trueBody": {
                                    "id": 6941,
                                    "nodeType": "Block",
                                    "src": "11937:140:29",
                                    "statements": [
                                      {
                                        "assignments": [
                                          6921
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 6921,
                                            "mutability": "mutable",
                                            "name": "unused",
                                            "nameLocation": "11967:6:29",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6941,
                                            "src": "11959:14:29",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 6920,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "11959:7:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 6931,
                                        "initialValue": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6930,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "323536",
                                            "id": 6922,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11976:3:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_256_by_1",
                                              "typeString": "int_const 256"
                                            },
                                            "value": "256"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6929,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 6926,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "expression": {
                                                      "id": 6923,
                                                      "name": "data",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 6877,
                                                      "src": "11983:4:29",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                      }
                                                    },
                                                    "id": 6924,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "11988:6:29",
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "src": "11983:11:29",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "-",
                                                  "rightExpression": {
                                                    "id": 6925,
                                                    "name": "i",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6897,
                                                    "src": "11997:1:29",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "11983:15:29",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 6927,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "11982:17:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "hexValue": "38",
                                              "id": 6928,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12002:1:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_8_by_1",
                                                "typeString": "int_const 8"
                                              },
                                              "value": "8"
                                            },
                                            "src": "11982:21:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "11976:27:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "11959:44:29"
                                      },
                                      {
                                        "expression": {
                                          "id": 6939,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 6932,
                                            "name": "word",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6911,
                                            "src": "12025:4:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6938,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 6935,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 6933,
                                                    "name": "word",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6911,
                                                    "src": "12033:4:29",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": ">>",
                                                  "rightExpression": {
                                                    "id": 6934,
                                                    "name": "unused",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6921,
                                                    "src": "12041:6:29",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "12033:14:29",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 6936,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "12032:16:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<<",
                                            "rightExpression": {
                                              "id": 6937,
                                              "name": "unused",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6921,
                                              "src": "12052:6:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "12032:26:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "12025:33:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6940,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12025:33:29"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 6950,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6943,
                                      "name": "ac1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6891,
                                      "src": "12094:3:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6949,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6946,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 6944,
                                              "name": "word",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6911,
                                              "src": "12122:4:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "hexValue": "307846463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030",
                                              "id": 6945,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12153:66:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_115341536360906404779899502576747487978354537254490211650198994186870666100480_by_1",
                                                "typeString": "int_const 1153...(70 digits omitted)...0480"
                                              },
                                              "value": "0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00"
                                            },
                                            "src": "12122:97:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 6947,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "12121:99:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "38",
                                        "id": 6948,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12244:1:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        "value": "8"
                                      },
                                      "src": "12121:124:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12094:151:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6951,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12094:151:29"
                                },
                                {
                                  "expression": {
                                    "id": 6957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6952,
                                      "name": "ac2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6894,
                                      "src": "12263:3:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6955,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6953,
                                            "name": "word",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6911,
                                            "src": "12271:4:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&",
                                          "rightExpression": {
                                            "hexValue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646",
                                            "id": 6954,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12298:66:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1",
                                              "typeString": "int_const 4505...(67 digits omitted)...9455"
                                            },
                                            "value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"
                                          },
                                          "src": "12271:93:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 6956,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "12270:95:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12263:102:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6958,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12263:102:29"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6900,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6897,
                                "src": "11730:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 6901,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6877,
                                    "src": "11734:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 6902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "11739:6:29",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "11734:11:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "3331",
                                  "id": 6903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11748:2:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_31_by_1",
                                    "typeString": "int_const 31"
                                  },
                                  "value": "31"
                                },
                                "src": "11734:16:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11730:20:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6960,
                            "initializationExpression": {
                              "assignments": [
                                6897
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6897,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "11723:1:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6960,
                                  "src": "11715:9:29",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6896,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11715:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6899,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 6898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11727:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11715:13:29"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 6908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6906,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6897,
                                  "src": "11752:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "3332",
                                  "id": 6907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11757:2:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "11752:7:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6909,
                              "nodeType": "ExpressionStatement",
                              "src": "11752:7:29"
                            },
                            "nodeType": "ForStatement",
                            "src": "11710:670:29"
                          },
                          {
                            "expression": {
                              "id": 6974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6961,
                                "name": "ac1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6891,
                                "src": "12393:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6964,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6962,
                                        "name": "ac1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6891,
                                        "src": "12416:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&",
                                      "rightExpression": {
                                        "hexValue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646",
                                        "id": 6963,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12442:66:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1",
                                          "typeString": "int_const 1766...(65 digits omitted)...4255"
                                        },
                                        "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"
                                      },
                                      "src": "12416:92:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6965,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "12415:94:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6971,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6968,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 6966,
                                              "name": "ac1",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6891,
                                              "src": "12530:3:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "hexValue": "307846464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030",
                                              "id": 6967,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12556:66:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_115790322417210952336529717160220497262186272106556906860092653394915770695680_by_1",
                                                "typeString": "int_const 1157...(70 digits omitted)...5680"
                                              },
                                              "value": "0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000"
                                            },
                                            "src": "12530:92:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 6969,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "12529:94:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "3136",
                                        "id": 6970,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12647:2:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_16_by_1",
                                          "typeString": "int_const 16"
                                        },
                                        "value": "16"
                                      },
                                      "src": "12529:120:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6972,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "12528:122:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12415:235:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12393:257:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6975,
                            "nodeType": "ExpressionStatement",
                            "src": "12393:257:29"
                          },
                          {
                            "expression": {
                              "id": 6989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6976,
                                "name": "ac2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6894,
                                "src": "12664:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6979,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6977,
                                        "name": "ac2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6894,
                                        "src": "12687:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&",
                                      "rightExpression": {
                                        "hexValue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646",
                                        "id": 6978,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12713:66:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1",
                                          "typeString": "int_const 1766...(65 digits omitted)...4255"
                                        },
                                        "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"
                                      },
                                      "src": "12687:92:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6980,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "12686:94:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6986,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6983,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 6981,
                                              "name": "ac2",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6894,
                                              "src": "12801:3:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "hexValue": "307846464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030",
                                              "id": 6982,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12827:66:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_115790322417210952336529717160220497262186272106556906860092653394915770695680_by_1",
                                                "typeString": "int_const 1157...(70 digits omitted)...5680"
                                              },
                                              "value": "0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000"
                                            },
                                            "src": "12801:92:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 6984,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "12800:94:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "3136",
                                        "id": 6985,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12918:2:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_16_by_1",
                                          "typeString": "int_const 16"
                                        },
                                        "value": "16"
                                      },
                                      "src": "12800:120:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6987,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "12799:122:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12686:235:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12664:257:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6990,
                            "nodeType": "ExpressionStatement",
                            "src": "12664:257:29"
                          },
                          {
                            "expression": {
                              "id": 6998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6991,
                                "name": "ac1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6891,
                                "src": "12935:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6994,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6992,
                                        "name": "ac1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6891,
                                        "src": "12942:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "38",
                                        "id": 6993,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12949:1:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        "value": "8"
                                      },
                                      "src": "12942:8:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6995,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "12941:10:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6996,
                                  "name": "ac2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6894,
                                  "src": "12954:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12941:16:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12935:22:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6999,
                            "nodeType": "ExpressionStatement",
                            "src": "12935:22:29"
                          },
                          {
                            "expression": {
                              "id": 7013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7000,
                                "name": "ac1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6891,
                                "src": "12971:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7012,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7003,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7001,
                                        "name": "ac1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6891,
                                        "src": "12994:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&",
                                      "rightExpression": {
                                        "hexValue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646",
                                        "id": 7002,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13020:66:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1",
                                          "typeString": "int_const 2695...(60 digits omitted)...3855"
                                        },
                                        "value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"
                                      },
                                      "src": "12994:92:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7004,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "12993:94:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7010,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7007,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7005,
                                              "name": "ac1",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6891,
                                              "src": "13108:3:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "hexValue": "307846464646464646463030303030303030464646464646464630303030303030304646464646464646303030303030303046464646464646463030303030303030",
                                              "id": 7006,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13134:66:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_115792089210356248762697446947946071893095522863849111501270640965525260206080_by_1",
                                                "typeString": "int_const 1157...(70 digits omitted)...6080"
                                              },
                                              "value": "0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000"
                                            },
                                            "src": "13108:92:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 7008,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "13107:94:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "3332",
                                        "id": 7009,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13225:2:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      },
                                      "src": "13107:120:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7011,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13106:122:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12993:235:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12971:257:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7014,
                            "nodeType": "ExpressionStatement",
                            "src": "12971:257:29"
                          },
                          {
                            "expression": {
                              "id": 7028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7015,
                                "name": "ac1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6891,
                                "src": "13242:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7018,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7016,
                                        "name": "ac1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6891,
                                        "src": "13265:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&",
                                      "rightExpression": {
                                        "hexValue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646",
                                        "id": 7017,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13291:66:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1",
                                          "typeString": "int_const 6277...(50 digits omitted)...3055"
                                        },
                                        "value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"
                                      },
                                      "src": "13265:92:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7019,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13264:94:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7025,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7022,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7020,
                                              "name": "ac1",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6891,
                                              "src": "13379:3:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "hexValue": "307846464646464646464646464646464646303030303030303030303030303030304646464646464646464646464646464630303030303030303030303030303030",
                                              "id": 7021,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13405:66:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_115792089237316195417293883273301227089774477609353836086800156426807153786880_by_1",
                                                "typeString": "int_const 1157...(70 digits omitted)...6880"
                                              },
                                              "value": "0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000"
                                            },
                                            "src": "13379:92:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 7023,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "13378:94:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "3634",
                                        "id": 7024,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13496:2:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_64_by_1",
                                          "typeString": "int_const 64"
                                        },
                                        "value": "64"
                                      },
                                      "src": "13378:120:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7026,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13377:122:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13264:235:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13242:257:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7029,
                            "nodeType": "ExpressionStatement",
                            "src": "13242:257:29"
                          },
                          {
                            "expression": {
                              "id": 7040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7030,
                                "name": "ac1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6891,
                                "src": "13513:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7033,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7031,
                                        "name": "ac1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6891,
                                        "src": "13536:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&",
                                      "rightExpression": {
                                        "hexValue": "307830303030303030303030303030303030303030303030303030303030303030304646464646464646464646464646464646464646464646464646464646464646",
                                        "id": 7032,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13562:66:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1",
                                          "typeString": "int_const 3402...(31 digits omitted)...1455"
                                        },
                                        "value": "0x00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                                      },
                                      "src": "13536:92:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7034,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13535:94:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7035,
                                        "name": "ac1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6891,
                                        "src": "13649:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "313238",
                                        "id": 7036,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13656:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_128_by_1",
                                          "typeString": "int_const 128"
                                        },
                                        "value": "128"
                                      },
                                      "src": "13649:10:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7038,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13648:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13535:125:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13513:147:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7041,
                            "nodeType": "ExpressionStatement",
                            "src": "13513:147:29"
                          },
                          {
                            "expression": {
                              "id": 7049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7042,
                                "name": "ac1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6891,
                                "src": "13674:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7045,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7043,
                                        "name": "ac1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6891,
                                        "src": "13682:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "3136",
                                        "id": 7044,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13689:2:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_16_by_1",
                                          "typeString": "int_const 16"
                                        },
                                        "value": "16"
                                      },
                                      "src": "13682:9:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7046,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13681:11:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307846464646",
                                  "id": 7047,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13695:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_65535_by_1",
                                    "typeString": "int_const 65535"
                                  },
                                  "value": "0xFFFF"
                                },
                                "src": "13681:20:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13674:27:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7050,
                            "nodeType": "ExpressionStatement",
                            "src": "13674:27:29"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7053,
                                  "name": "ac1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6891,
                                  "src": "13729:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13722:6:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint16_$",
                                  "typeString": "type(uint16)"
                                },
                                "typeName": {
                                  "id": 7051,
                                  "name": "uint16",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13722:6:29",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13722:11:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "functionReturnParameters": 6881,
                            "id": 7055,
                            "nodeType": "Return",
                            "src": "13715:18:29"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6875,
                    "nodeType": "StructuredDocumentation",
                    "src": "9599:154:29",
                    "text": " @dev Computes the keytag for a chunk of data.\n @param data The data to compute a keytag for.\n @return The computed key tag."
                  },
                  "id": 7058,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "computeKeytag",
                  "nameLocation": "9767:13:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6878,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6877,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9794:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 7058,
                        "src": "9781:17:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6876,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9781:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9780:19:29"
                  },
                  "returnParameters": {
                    "id": 6881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6880,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7058,
                        "src": "9823:6:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 6879,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "9823:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9822:8:29"
                  },
                  "scope": 7059,
                  "src": "9758:3992:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7060,
              "src": "198:13554:29",
              "usedErrors": []
            }
          ],
          "src": "0:13753:29"
        },
        "id": 29
      },
      "contracts/dnssec-oracle/algorithms/Algorithm.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/algorithms/Algorithm.sol",
          "exportedSymbols": {
            "Algorithm": [
              7075
            ]
          },
          "id": 7076,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7061,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:30"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Algorithm",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 7062,
                "nodeType": "StructuredDocumentation",
                "src": "25:85:30",
                "text": " @dev An interface for contracts implementing a DNSSEC (signing) algorithm."
              },
              "fullyImplemented": false,
              "id": 7075,
              "linearizedBaseContracts": [
                7075
              ],
              "name": "Algorithm",
              "nameLocation": "121:9:30",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 7063,
                    "nodeType": "StructuredDocumentation",
                    "src": "137:237:30",
                    "text": " @dev Verifies a signature.\n @param key The public key to verify with.\n @param data The signed data to verify.\n @param signature The signature to verify.\n @return True iff the signature is valid."
                  },
                  "functionSelector": "de8f50a1",
                  "id": 7074,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "388:6:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7070,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7065,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "419:3:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 7074,
                        "src": "404:18:30",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7064,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "404:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7067,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "447:4:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 7074,
                        "src": "432:19:30",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7066,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "432:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7069,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "476:9:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 7074,
                        "src": "461:24:30",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7068,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "461:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "394:97:30"
                  },
                  "returnParameters": {
                    "id": 7073,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7072,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7074,
                        "src": "523:4:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7071,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "523:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "522:6:30"
                  },
                  "scope": 7075,
                  "src": "379:150:30",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                }
              ],
              "scope": 7076,
              "src": "111:420:30",
              "usedErrors": []
            }
          ],
          "src": "0:532:30"
        },
        "id": 30
      },
      "contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/algorithms/DummyAlgorithm.sol",
          "exportedSymbols": {
            "Algorithm": [
              7075
            ],
            "DummyAlgorithm": [
              7097
            ]
          },
          "id": 7098,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7077,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:31"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/Algorithm.sol",
              "file": "./Algorithm.sol",
              "id": 7078,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7098,
              "sourceUnit": 7076,
              "src": "25:25:31",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7080,
                    "name": "Algorithm",
                    "nameLocations": [
                      "192:9:31"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7075,
                    "src": "192:9:31"
                  },
                  "id": 7081,
                  "nodeType": "InheritanceSpecifier",
                  "src": "192:9:31"
                }
              ],
              "canonicalName": "DummyAlgorithm",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 7079,
                "nodeType": "StructuredDocumentation",
                "src": "52:112:31",
                "text": " @dev Implements a dummy DNSSEC (signing) algorithm that approves all\n      signatures, for testing."
              },
              "fullyImplemented": true,
              "id": 7097,
              "linearizedBaseContracts": [
                7097,
                7075
              ],
              "name": "DummyAlgorithm",
              "nameLocation": "174:14:31",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    7074
                  ],
                  "body": {
                    "id": 7095,
                    "nodeType": "Block",
                    "src": "340:28:31",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 7093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "357:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 7092,
                        "id": 7094,
                        "nodeType": "Return",
                        "src": "350:11:31"
                      }
                    ]
                  },
                  "functionSelector": "de8f50a1",
                  "id": 7096,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "217:6:31",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7089,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "316:8:31"
                  },
                  "parameters": {
                    "id": 7088,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7083,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7096,
                        "src": "233:14:31",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7082,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "233:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7085,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7096,
                        "src": "257:14:31",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7084,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "257:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7087,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7096,
                        "src": "281:14:31",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7086,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "281:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "223:78:31"
                  },
                  "returnParameters": {
                    "id": 7092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7091,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7096,
                        "src": "334:4:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7090,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "334:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "333:6:31"
                  },
                  "scope": 7097,
                  "src": "208:160:31",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7098,
              "src": "165:205:31",
              "usedErrors": []
            }
          ],
          "src": "0:371:31"
        },
        "id": 31
      },
      "contracts/dnssec-oracle/algorithms/EllipticCurve.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/algorithms/EllipticCurve.sol",
          "exportedSymbols": {
            "EllipticCurve": [
              8456
            ]
          },
          "id": 8457,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7099,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:32"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "EllipticCurve",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 7100,
                "nodeType": "StructuredDocumentation",
                "src": "25:585:32",
                "text": " @title   EllipticCurve\n @author  Tilman Drerup;\n @notice  Implements elliptic curve math; Parametrized for SECP256R1.\n          Includes components of code by Andreas Olofsson, Alexander Vlasov\n          (https://github.com/BANKEX/CurveArithmetics), and Avi Asayag\n          (https://github.com/orbs-network/elliptic-curve-solidity)\n          Source: https://github.com/tdrerup/elliptic-curve-solidity\n @dev     NOTE: To disambiguate public keys when verifying signatures, activate\n          condition 'rs[1] > lowSmax' in validateSignature()."
              },
              "fullyImplemented": true,
              "id": 8456,
              "linearizedBaseContracts": [
                8456
              ],
              "name": "EllipticCurve",
              "nameLocation": "620:13:32",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 7103,
                  "mutability": "constant",
                  "name": "a",
                  "nameLocation": "690:1:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 8456,
                  "src": "673:95:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7101,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "673:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307846464646464646463030303030303031303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464643",
                    "id": 7102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "702:66:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089210356248762697446949407573530086143415290314195533631308867097853948_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...3948"
                    },
                    "value": "0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7106,
                  "mutability": "constant",
                  "name": "b",
                  "nameLocation": "791:1:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 8456,
                  "src": "774:95:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7104,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "774:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307835414336333544384141334139334537423345424244353537363938383642433635314430364230434335334230463633424345334333453237443236303442",
                    "id": 7105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "803:66:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_41058363725152142129326129780047268409114441015993725554835256314039467401291_by_1",
                      "typeString": "int_const 4105...(69 digits omitted)...1291"
                    },
                    "value": "0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7109,
                  "mutability": "constant",
                  "name": "gx",
                  "nameLocation": "892:2:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 8456,
                  "src": "875:96:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7107,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "875:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307836423137443146324531324334323437463842434536453536334134343046323737303337443831324445423333413046344131333934354438393843323936",
                    "id": 7108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "905:66:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_48439561293906451759052585252797914202762949526041747995844080717082404635286_by_1",
                      "typeString": "int_const 4843...(69 digits omitted)...5286"
                    },
                    "value": "0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7112,
                  "mutability": "constant",
                  "name": "gy",
                  "nameLocation": "994:2:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 8456,
                  "src": "977:96:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7110,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "977:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307834464533343245324645314137463942384545374542344137433046394531363242434533333537364233313545434543424236343036383337424635314635",
                    "id": 7111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1007:66:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_36134250956749795798585127919587881956611106672985015071877198253568414405109_by_1",
                      "typeString": "int_const 3613...(69 digits omitted)...5109"
                    },
                    "value": "0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7115,
                  "mutability": "constant",
                  "name": "p",
                  "nameLocation": "1096:1:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 8456,
                  "src": "1079:95:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1079:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307846464646464646463030303030303031303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464646",
                    "id": 7114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1108:66:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089210356248762697446949407573530086143415290314195533631308867097853951_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...3951"
                    },
                    "value": "0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7118,
                  "mutability": "constant",
                  "name": "n",
                  "nameLocation": "1197:1:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 8456,
                  "src": "1180:95:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7116,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1180:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307846464646464646463030303030303030464646464646464646464646464646464243453646414144413731373945383446334239434143324643363332353531",
                    "id": 7117,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1209:66:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089210356248762697446949407573529996955224135760342422259061068512044369_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...4369"
                    },
                    "value": "0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7121,
                  "mutability": "constant",
                  "name": "lowSmax",
                  "nameLocation": "1299:7:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 8456,
                  "src": "1282:101:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7119,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1282:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130",
                    "id": 7120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1317:66:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...7168"
                    },
                    "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7226,
                    "nodeType": "Block",
                    "src": "1531:493:32",
                    "statements": [
                      {
                        "id": 7225,
                        "nodeType": "UncheckedBlock",
                        "src": "1541:477:32",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 7141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 7137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7131,
                                    "name": "u",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7124,
                                    "src": "1569:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 7132,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1574:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "1569:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7136,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7134,
                                    "name": "u",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7124,
                                    "src": "1579:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 7135,
                                    "name": "m",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7126,
                                    "src": "1584:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1579:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1569:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7138,
                                  "name": "m",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7126,
                                  "src": "1589:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1594:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1589:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1569:26:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7144,
                            "nodeType": "IfStatement",
                            "src": "1565:40:32",
                            "trueBody": {
                              "expression": {
                                "hexValue": "30",
                                "id": 7142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1604:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 7130,
                              "id": 7143,
                              "nodeType": "Return",
                              "src": "1597:8:32"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7145,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7124,
                                "src": "1623:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 7146,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7126,
                                "src": "1627:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1623:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7154,
                            "nodeType": "IfStatement",
                            "src": "1619:20:32",
                            "trueBody": {
                              "expression": {
                                "id": 7152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7148,
                                  "name": "u",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7124,
                                  "src": "1630:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7149,
                                    "name": "u",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7124,
                                    "src": "1634:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "id": 7150,
                                    "name": "m",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7126,
                                    "src": "1638:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1634:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1630:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7153,
                              "nodeType": "ExpressionStatement",
                              "src": "1630:9:32"
                            }
                          },
                          {
                            "assignments": [
                              7156
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7156,
                                "mutability": "mutable",
                                "name": "t1",
                                "nameLocation": "1661:2:32",
                                "nodeType": "VariableDeclaration",
                                "scope": 7225,
                                "src": "1654:9:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 7155,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1654:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7157,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1654:9:32"
                          },
                          {
                            "assignments": [
                              7159
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7159,
                                "mutability": "mutable",
                                "name": "t2",
                                "nameLocation": "1684:2:32",
                                "nodeType": "VariableDeclaration",
                                "scope": 7225,
                                "src": "1677:9:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 7158,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1677:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7161,
                            "initialValue": {
                              "hexValue": "31",
                              "id": 7160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1689:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1677:13:32"
                          },
                          {
                            "assignments": [
                              7163
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7163,
                                "mutability": "mutable",
                                "name": "r1",
                                "nameLocation": "1712:2:32",
                                "nodeType": "VariableDeclaration",
                                "scope": 7225,
                                "src": "1704:10:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7162,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1704:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7165,
                            "initialValue": {
                              "id": 7164,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7126,
                              "src": "1717:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1704:14:32"
                          },
                          {
                            "assignments": [
                              7167
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7167,
                                "mutability": "mutable",
                                "name": "r2",
                                "nameLocation": "1740:2:32",
                                "nodeType": "VariableDeclaration",
                                "scope": 7225,
                                "src": "1732:10:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7166,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1732:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7169,
                            "initialValue": {
                              "id": 7168,
                              "name": "u",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7124,
                              "src": "1745:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1732:14:32"
                          },
                          {
                            "assignments": [
                              7171
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7171,
                                "mutability": "mutable",
                                "name": "q",
                                "nameLocation": "1768:1:32",
                                "nodeType": "VariableDeclaration",
                                "scope": 7225,
                                "src": "1760:9:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7170,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1760:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7172,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1760:9:32"
                          },
                          {
                            "body": {
                              "id": 7205,
                              "nodeType": "Block",
                              "src": "1800:123:32",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7180,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7176,
                                      "name": "q",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7171,
                                      "src": "1818:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7179,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7177,
                                        "name": "r1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7163,
                                        "src": "1822:2:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 7178,
                                        "name": "r2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7167,
                                        "src": "1827:2:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1822:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1818:11:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7181,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1818:11:32"
                                },
                                {
                                  "expression": {
                                    "id": 7203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 7182,
                                          "name": "t1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7156,
                                          "src": "1848:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        {
                                          "id": 7183,
                                          "name": "t2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7159,
                                          "src": "1852:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        {
                                          "id": 7184,
                                          "name": "r1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7163,
                                          "src": "1856:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 7185,
                                          "name": "r2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7167,
                                          "src": "1860:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 7186,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "1847:16:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(int256,int256,uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "id": 7187,
                                          "name": "t2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7159,
                                          "src": "1867:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          },
                                          "id": 7195,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7188,
                                            "name": "t1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7156,
                                            "src": "1871:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            },
                                            "id": 7194,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "arguments": [
                                                {
                                                  "id": 7191,
                                                  "name": "q",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7171,
                                                  "src": "1883:1:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 7190,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "1876:6:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_int256_$",
                                                  "typeString": "type(int256)"
                                                },
                                                "typeName": {
                                                  "id": 7189,
                                                  "name": "int256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "1876:6:32",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 7192,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "1876:9:32",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 7193,
                                              "name": "t2",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7159,
                                              "src": "1888:2:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            },
                                            "src": "1876:14:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "src": "1871:19:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        {
                                          "id": 7196,
                                          "name": "r2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7167,
                                          "src": "1892:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7201,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7197,
                                            "name": "r1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7163,
                                            "src": "1896:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7200,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7198,
                                              "name": "q",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7171,
                                              "src": "1901:1:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 7199,
                                              "name": "r2",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7167,
                                              "src": "1905:2:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1901:6:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1896:11:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 7202,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1866:42:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(int256,int256,uint256,uint256)"
                                      }
                                    },
                                    "src": "1847:61:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 7204,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1847:61:32"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7173,
                                "name": "r2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7167,
                                "src": "1791:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7174,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1797:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1791:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7206,
                            "nodeType": "WhileStatement",
                            "src": "1784:139:32"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 7209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7207,
                                "name": "t1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7156,
                                "src": "1941:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1946:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1941:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7219,
                            "nodeType": "IfStatement",
                            "src": "1937:37:32",
                            "trueBody": {
                              "expression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7210,
                                      "name": "m",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7126,
                                      "src": "1957:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "id": 7214,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "-",
                                          "prefix": true,
                                          "src": "1969:3:32",
                                          "subExpression": {
                                            "id": 7213,
                                            "name": "t1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7156,
                                            "src": "1970:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        ],
                                        "id": 7212,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1961:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 7211,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1961:7:32",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 7215,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1961:12:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1957:16:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7217,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1956:18:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 7130,
                              "id": 7218,
                              "nodeType": "Return",
                              "src": "1949:25:32"
                            }
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7222,
                                  "name": "t1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7156,
                                  "src": "2004:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 7221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1996:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 7220,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1996:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1996:11:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7130,
                            "id": 7224,
                            "nodeType": "Return",
                            "src": "1989:18:32"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7122,
                    "nodeType": "StructuredDocumentation",
                    "src": "1390:62:32",
                    "text": " @dev Inverse of u in the field of modulo m."
                  },
                  "id": 7227,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "inverseMod",
                  "nameLocation": "1466:10:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7127,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7124,
                        "mutability": "mutable",
                        "name": "u",
                        "nameLocation": "1485:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7227,
                        "src": "1477:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1477:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7126,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "1496:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7227,
                        "src": "1488:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7125,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1488:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1476:22:32"
                  },
                  "returnParameters": {
                    "id": 7130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7129,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7227,
                        "src": "1522:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1522:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1521:9:32"
                  },
                  "scope": 8456,
                  "src": "1457:567:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7273,
                    "nodeType": "Block",
                    "src": "2239:111:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 7247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7239,
                              "name": "P",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7237,
                              "src": "2249:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 7241,
                            "indexExpression": {
                              "hexValue": "32",
                              "id": 7240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2251:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2249:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 7243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2263:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "31",
                                "id": 7244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2266:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              {
                                "id": 7245,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "2269:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7242,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "2256:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2256:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2249:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7248,
                        "nodeType": "ExpressionStatement",
                        "src": "2249:22:32"
                      },
                      {
                        "expression": {
                          "id": 7259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7249,
                              "name": "P",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7237,
                              "src": "2281:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 7251,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 7250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2283:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2281:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7253,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7230,
                                "src": "2295:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 7254,
                                  "name": "P",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7237,
                                  "src": "2299:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 7256,
                                "indexExpression": {
                                  "hexValue": "32",
                                  "id": 7255,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2301:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2299:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7257,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "2305:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7252,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "2288:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2288:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2281:26:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7260,
                        "nodeType": "ExpressionStatement",
                        "src": "2281:26:32"
                      },
                      {
                        "expression": {
                          "id": 7271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7261,
                              "name": "P",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7237,
                              "src": "2317:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 7263,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 7262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2319:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2317:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7265,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7232,
                                "src": "2331:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 7266,
                                  "name": "P",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7237,
                                  "src": "2335:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 7268,
                                "indexExpression": {
                                  "hexValue": "32",
                                  "id": 7267,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2337:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2335:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7269,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "2341:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7264,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "2324:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2324:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2317:26:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7272,
                        "nodeType": "ExpressionStatement",
                        "src": "2317:26:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7228,
                    "nodeType": "StructuredDocumentation",
                    "src": "2030:81:32",
                    "text": " @dev Transform affine coordinates into projective coordinates."
                  },
                  "id": 7274,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toProjectivePoint",
                  "nameLocation": "2125:17:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7230,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "2151:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7274,
                        "src": "2143:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2143:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7232,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "2163:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7274,
                        "src": "2155:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7231,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2155:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2142:24:32"
                  },
                  "returnParameters": {
                    "id": 7238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7237,
                        "mutability": "mutable",
                        "name": "P",
                        "nameLocation": "2232:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7274,
                        "src": "2214:19:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7234,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2214:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7236,
                          "length": {
                            "hexValue": "33",
                            "id": 7235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2222:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "2214:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                            "typeString": "uint256[3]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2213:21:32"
                  },
                  "scope": 8456,
                  "src": "2116:234:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7314,
                    "nodeType": "Block",
                    "src": "2617:120:32",
                    "statements": [
                      {
                        "assignments": [
                          7291
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7291,
                            "mutability": "mutable",
                            "name": "x",
                            "nameLocation": "2635:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7314,
                            "src": "2627:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7290,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2627:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7292,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2627:9:32"
                      },
                      {
                        "assignments": [
                          7294
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7294,
                            "mutability": "mutable",
                            "name": "y",
                            "nameLocation": "2654:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7314,
                            "src": "2646:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7293,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2646:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7295,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2646:9:32"
                      },
                      {
                        "expression": {
                          "id": 7305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 7296,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7291,
                                "src": "2666:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7297,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7294,
                                "src": "2669:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7298,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "2665:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7300,
                                "name": "x1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7277,
                                "src": "2678:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7301,
                                "name": "y1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7279,
                                "src": "2682:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7302,
                                "name": "x2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7281,
                                "src": "2686:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7303,
                                "name": "y2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7283,
                                "src": "2690:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7299,
                              "name": "add",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8053,
                              "src": "2674:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                              }
                            },
                            "id": 7304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2674:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "2665:28:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7306,
                        "nodeType": "ExpressionStatement",
                        "src": "2665:28:32"
                      },
                      {
                        "expression": {
                          "id": 7312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7307,
                            "name": "P",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7288,
                            "src": "2703:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7309,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7291,
                                "src": "2725:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7310,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7294,
                                "src": "2728:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7308,
                              "name": "toProjectivePoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7274,
                              "src": "2707:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$3_memory_ptr_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256[3] memory)"
                              }
                            },
                            "id": 7311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2707:23:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "src": "2703:27:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                            "typeString": "uint256[3] memory"
                          }
                        },
                        "id": 7313,
                        "nodeType": "ExpressionStatement",
                        "src": "2703:27:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7275,
                    "nodeType": "StructuredDocumentation",
                    "src": "2356:89:32",
                    "text": " @dev Add two points in affine coordinates and return projective point."
                  },
                  "id": 7315,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addAndReturnProjectivePoint",
                  "nameLocation": "2459:27:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7277,
                        "mutability": "mutable",
                        "name": "x1",
                        "nameLocation": "2504:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7315,
                        "src": "2496:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2496:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7279,
                        "mutability": "mutable",
                        "name": "y1",
                        "nameLocation": "2524:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7315,
                        "src": "2516:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2516:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7281,
                        "mutability": "mutable",
                        "name": "x2",
                        "nameLocation": "2544:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7315,
                        "src": "2536:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2536:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7283,
                        "mutability": "mutable",
                        "name": "y2",
                        "nameLocation": "2564:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7315,
                        "src": "2556:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2556:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2486:86:32"
                  },
                  "returnParameters": {
                    "id": 7289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7288,
                        "mutability": "mutable",
                        "name": "P",
                        "nameLocation": "2614:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7315,
                        "src": "2596:19:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7285,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2596:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7287,
                          "length": {
                            "hexValue": "33",
                            "id": 7286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2604:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "2596:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                            "typeString": "uint256[3]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2595:21:32"
                  },
                  "scope": 8456,
                  "src": "2450:287:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7355,
                    "nodeType": "Block",
                    "src": "2956:135:32",
                    "statements": [
                      {
                        "assignments": [
                          7330
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7330,
                            "mutability": "mutable",
                            "name": "z0Inv",
                            "nameLocation": "2974:5:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7355,
                            "src": "2966:13:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7329,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2966:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7331,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2966:13:32"
                      },
                      {
                        "expression": {
                          "id": 7337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7332,
                            "name": "z0Inv",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7330,
                            "src": "2989:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7334,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7322,
                                "src": "3008:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7335,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "3012:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7333,
                              "name": "inverseMod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "2997:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2997:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2989:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7338,
                        "nodeType": "ExpressionStatement",
                        "src": "2989:25:32"
                      },
                      {
                        "expression": {
                          "id": 7345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7339,
                            "name": "x1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7325,
                            "src": "3024:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7341,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7318,
                                "src": "3036:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7342,
                                "name": "z0Inv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7330,
                                "src": "3040:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7343,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "3047:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7340,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "3029:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3029:20:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3024:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7346,
                        "nodeType": "ExpressionStatement",
                        "src": "3024:25:32"
                      },
                      {
                        "expression": {
                          "id": 7353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7347,
                            "name": "y1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7327,
                            "src": "3059:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7349,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7320,
                                "src": "3071:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7350,
                                "name": "z0Inv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7330,
                                "src": "3075:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7351,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "3082:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7348,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "3064:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3064:20:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3059:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7354,
                        "nodeType": "ExpressionStatement",
                        "src": "3059:25:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7316,
                    "nodeType": "StructuredDocumentation",
                    "src": "2743:72:32",
                    "text": " @dev Transform from projective to affine coordinates."
                  },
                  "id": 7356,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toAffinePoint",
                  "nameLocation": "2829:13:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7318,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "2860:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7356,
                        "src": "2852:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2852:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7320,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "2880:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7356,
                        "src": "2872:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7319,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2872:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7322,
                        "mutability": "mutable",
                        "name": "z0",
                        "nameLocation": "2900:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7356,
                        "src": "2892:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2892:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2842:66:32"
                  },
                  "returnParameters": {
                    "id": 7328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7325,
                        "mutability": "mutable",
                        "name": "x1",
                        "nameLocation": "2940:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7356,
                        "src": "2932:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2932:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7327,
                        "mutability": "mutable",
                        "name": "y1",
                        "nameLocation": "2952:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7356,
                        "src": "2944:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2944:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2931:24:32"
                  },
                  "scope": 8456,
                  "src": "2820:271:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7371,
                    "nodeType": "Block",
                    "src": "3324:33:32",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "30",
                              "id": 7366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3342:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "31",
                              "id": 7367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3345:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "hexValue": "30",
                              "id": 7368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3348:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 7369,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3341:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_1_by_1_$_t_rational_0_by_1_$",
                            "typeString": "tuple(int_const 0,int_const 1,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 7365,
                        "id": 7370,
                        "nodeType": "Return",
                        "src": "3334:16:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7357,
                    "nodeType": "StructuredDocumentation",
                    "src": "3097:72:32",
                    "text": " @dev Return the zero curve in projective coordinates."
                  },
                  "id": 7372,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "zeroProj",
                  "nameLocation": "3183:8:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7358,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3191:2:32"
                  },
                  "returnParameters": {
                    "id": 7365,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7360,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "3262:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7372,
                        "src": "3254:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7359,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3254:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7362,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "3285:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7372,
                        "src": "3277:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7361,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3277:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7364,
                        "mutability": "mutable",
                        "name": "z",
                        "nameLocation": "3308:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7372,
                        "src": "3300:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7363,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3300:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3240:79:32"
                  },
                  "scope": 8456,
                  "src": "3174:183:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7384,
                    "nodeType": "Block",
                    "src": "3503:30:32",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "30",
                              "id": 7380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3521:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "30",
                              "id": 7381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3524:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 7382,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3520:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                            "typeString": "tuple(int_const 0,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 7379,
                        "id": 7383,
                        "nodeType": "Return",
                        "src": "3513:13:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7373,
                    "nodeType": "StructuredDocumentation",
                    "src": "3363:68:32",
                    "text": " @dev Return the zero curve in affine coordinates."
                  },
                  "id": 7385,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "zeroAffine",
                  "nameLocation": "3445:10:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7374,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3455:2:32"
                  },
                  "returnParameters": {
                    "id": 7379,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7376,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "3489:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7385,
                        "src": "3481:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7375,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3481:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7378,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "3500:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7385,
                        "src": "3492:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7377,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3492:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3480:22:32"
                  },
                  "scope": 8456,
                  "src": "3436:97:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7408,
                    "nodeType": "Block",
                    "src": "3714:98:32",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7395,
                              "name": "x0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7388,
                              "src": "3728:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 7396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3734:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3728:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7398,
                              "name": "y0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7390,
                              "src": "3739:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 7399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3745:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3739:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3728:18:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7405,
                        "nodeType": "IfStatement",
                        "src": "3724:60:32",
                        "trueBody": {
                          "id": 7404,
                          "nodeType": "Block",
                          "src": "3748:36:32",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "74727565",
                                "id": 7402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3769:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 7394,
                              "id": 7403,
                              "nodeType": "Return",
                              "src": "3762:11:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 7406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3800:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 7394,
                        "id": 7407,
                        "nodeType": "Return",
                        "src": "3793:12:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7386,
                    "nodeType": "StructuredDocumentation",
                    "src": "3539:61:32",
                    "text": " @dev Check if the curve is the zero curve."
                  },
                  "id": 7409,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isZeroCurve",
                  "nameLocation": "3614:11:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7388,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "3634:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7409,
                        "src": "3626:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3626:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7390,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "3646:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7409,
                        "src": "3638:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3638:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3625:24:32"
                  },
                  "returnParameters": {
                    "id": 7394,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7393,
                        "mutability": "mutable",
                        "name": "isZero",
                        "nameLocation": "3702:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7409,
                        "src": "3697:11:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7392,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3697:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3696:13:32"
                  },
                  "scope": 8456,
                  "src": "3605:207:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7492,
                    "nodeType": "Block",
                    "src": "3972:413:32",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 7429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 7425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "30",
                                  "id": 7419,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3986:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 7420,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7412,
                                  "src": "3991:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3986:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7422,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7412,
                                  "src": "3996:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 7423,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "4001:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3996:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3986:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "30",
                                "id": 7426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4006:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 7427,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7414,
                                "src": "4011:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4006:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3986:26:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7430,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7414,
                              "src": "4016:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 7431,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7115,
                              "src": "4021:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4016:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3986:36:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7437,
                        "nodeType": "IfStatement",
                        "src": "3982:79:32",
                        "trueBody": {
                          "id": 7436,
                          "nodeType": "Block",
                          "src": "4024:37:32",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 7434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4045:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 7418,
                              "id": 7435,
                              "nodeType": "Return",
                              "src": "4038:12:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          7439
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7439,
                            "mutability": "mutable",
                            "name": "LHS",
                            "nameLocation": "4079:3:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7492,
                            "src": "4071:11:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7438,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4071:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7445,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7441,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7414,
                              "src": "4092:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7442,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7414,
                              "src": "4095:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7443,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7115,
                              "src": "4098:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7440,
                            "name": "mulmod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -16,
                            "src": "4085:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4085:15:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4071:29:32"
                      },
                      {
                        "assignments": [
                          7447
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7447,
                            "mutability": "mutable",
                            "name": "RHS",
                            "nameLocation": "4125:3:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7492,
                            "src": "4117:11:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7446,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4117:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7457,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 7450,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7412,
                                  "src": "4145:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 7451,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7412,
                                  "src": "4148:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 7452,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "4151:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7449,
                                "name": "mulmod",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -16,
                                "src": "4138:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4138:15:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7454,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7412,
                              "src": "4155:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7455,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7115,
                              "src": "4158:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7448,
                            "name": "mulmod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -16,
                            "src": "4131:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4131:29:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4117:43:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7458,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7103,
                            "src": "4182:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4187:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4182:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7474,
                        "nodeType": "IfStatement",
                        "src": "4178:87:32",
                        "trueBody": {
                          "id": 7473,
                          "nodeType": "Block",
                          "src": "4190:75:32",
                          "statements": [
                            {
                              "expression": {
                                "id": 7471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7461,
                                  "name": "RHS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7447,
                                  "src": "4204:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7463,
                                      "name": "RHS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7447,
                                      "src": "4217:3:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 7465,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7412,
                                          "src": "4229:1:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 7466,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7103,
                                          "src": "4232:1:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 7467,
                                          "name": "p",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7115,
                                          "src": "4235:1:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 7464,
                                        "name": "mulmod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -16,
                                        "src": "4222:6:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 7468,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4222:15:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7469,
                                      "name": "p",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7115,
                                      "src": "4239:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7462,
                                    "name": "addmod",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -2,
                                    "src": "4210:6:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7470,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4210:31:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4204:37:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7472,
                              "nodeType": "ExpressionStatement",
                              "src": "4204:37:32"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7475,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7106,
                            "src": "4278:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4283:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4278:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7487,
                        "nodeType": "IfStatement",
                        "src": "4274:77:32",
                        "trueBody": {
                          "id": 7486,
                          "nodeType": "Block",
                          "src": "4286:65:32",
                          "statements": [
                            {
                              "expression": {
                                "id": 7484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7478,
                                  "name": "RHS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7447,
                                  "src": "4300:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7480,
                                      "name": "RHS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7447,
                                      "src": "4313:3:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7481,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7106,
                                      "src": "4318:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7482,
                                      "name": "p",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7115,
                                      "src": "4321:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7479,
                                    "name": "addmod",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -2,
                                    "src": "4306:6:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7483,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4306:17:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4300:23:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7485,
                              "nodeType": "ExpressionStatement",
                              "src": "4300:23:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7488,
                            "name": "LHS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7439,
                            "src": "4368:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 7489,
                            "name": "RHS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7447,
                            "src": "4375:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4368:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 7418,
                        "id": 7491,
                        "nodeType": "Return",
                        "src": "4361:17:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7410,
                    "nodeType": "StructuredDocumentation",
                    "src": "3818:79:32",
                    "text": " @dev Check if a point in affine coordinates is on the curve."
                  },
                  "id": 7493,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isOnCurve",
                  "nameLocation": "3911:9:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7415,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7412,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "3929:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7493,
                        "src": "3921:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7411,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3921:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7414,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "3940:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7493,
                        "src": "3932:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7413,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3932:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3920:22:32"
                  },
                  "returnParameters": {
                    "id": 7418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7417,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7493,
                        "src": "3966:4:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7416,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3966:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3965:6:32"
                  },
                  "scope": 8456,
                  "src": "3902:483:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7712,
                    "nodeType": "Block",
                    "src": "4789:851:32",
                    "statements": [
                      {
                        "assignments": [
                          7510
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7510,
                            "mutability": "mutable",
                            "name": "t",
                            "nameLocation": "4807:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7712,
                            "src": "4799:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7509,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4799:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7511,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4799:9:32"
                      },
                      {
                        "assignments": [
                          7513
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7513,
                            "mutability": "mutable",
                            "name": "u",
                            "nameLocation": "4826:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7712,
                            "src": "4818:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7512,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4818:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7514,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4818:9:32"
                      },
                      {
                        "assignments": [
                          7516
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7516,
                            "mutability": "mutable",
                            "name": "v",
                            "nameLocation": "4845:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7712,
                            "src": "4837:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7515,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4837:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7517,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4837:9:32"
                      },
                      {
                        "assignments": [
                          7519
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7519,
                            "mutability": "mutable",
                            "name": "w",
                            "nameLocation": "4864:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7712,
                            "src": "4856:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7518,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4856:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7520,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4856:9:32"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 7522,
                              "name": "x0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7496,
                              "src": "4892:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7523,
                              "name": "y0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7498,
                              "src": "4896:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7521,
                            "name": "isZeroCurve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7409,
                            "src": "4880:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 7524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4880:19:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7529,
                        "nodeType": "IfStatement",
                        "src": "4876:67:32",
                        "trueBody": {
                          "id": 7528,
                          "nodeType": "Block",
                          "src": "4901:42:32",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 7525,
                                  "name": "zeroProj",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7372,
                                  "src": "4922:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256,uint256,uint256)"
                                  }
                                },
                                "id": 7526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4922:10:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256)"
                                }
                              },
                              "functionReturnParameters": 7508,
                              "id": 7527,
                              "nodeType": "Return",
                              "src": "4915:17:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7530,
                            "name": "u",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7513,
                            "src": "4953:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7532,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7498,
                                "src": "4964:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7533,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7500,
                                "src": "4968:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7534,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "4972:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7531,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "4957:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4957:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4953:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7537,
                        "nodeType": "ExpressionStatement",
                        "src": "4953:21:32"
                      },
                      {
                        "expression": {
                          "id": 7544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7538,
                            "name": "u",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7513,
                            "src": "4984:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7540,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7513,
                                "src": "4995:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "32",
                                "id": 7541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4998:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              {
                                "id": 7542,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5001:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7539,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "4988:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4988:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4984:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7545,
                        "nodeType": "ExpressionStatement",
                        "src": "4984:19:32"
                      },
                      {
                        "expression": {
                          "id": 7552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7546,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7516,
                            "src": "5014:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7548,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7513,
                                "src": "5025:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7549,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7496,
                                "src": "5028:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7550,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5032:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7547,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5018:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5018:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5014:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7553,
                        "nodeType": "ExpressionStatement",
                        "src": "5014:20:32"
                      },
                      {
                        "expression": {
                          "id": 7560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7554,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7516,
                            "src": "5044:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7556,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7516,
                                "src": "5055:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7557,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7498,
                                "src": "5058:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7558,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5062:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7555,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5048:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5048:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5044:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7561,
                        "nodeType": "ExpressionStatement",
                        "src": "5044:20:32"
                      },
                      {
                        "expression": {
                          "id": 7568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7562,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7516,
                            "src": "5074:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7564,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7516,
                                "src": "5085:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "32",
                                "id": 7565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5088:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              {
                                "id": 7566,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5091:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7563,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5078:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5078:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5074:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7569,
                        "nodeType": "ExpressionStatement",
                        "src": "5074:19:32"
                      },
                      {
                        "expression": {
                          "id": 7576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7570,
                            "name": "x0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7496,
                            "src": "5104:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7572,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7496,
                                "src": "5116:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7573,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7496,
                                "src": "5120:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7574,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5124:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7571,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5109:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7575,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5109:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5104:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7577,
                        "nodeType": "ExpressionStatement",
                        "src": "5104:22:32"
                      },
                      {
                        "expression": {
                          "id": 7584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7578,
                            "name": "t",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7510,
                            "src": "5136:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7580,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7496,
                                "src": "5147:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "33",
                                "id": 7581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5151:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              {
                                "id": 7582,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5154:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7579,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5140:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5140:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5136:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7585,
                        "nodeType": "ExpressionStatement",
                        "src": "5136:20:32"
                      },
                      {
                        "expression": {
                          "id": 7592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7586,
                            "name": "z0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7500,
                            "src": "5167:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7588,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7500,
                                "src": "5179:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7589,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7500,
                                "src": "5183:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7590,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5187:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7587,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5172:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5172:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5167:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7593,
                        "nodeType": "ExpressionStatement",
                        "src": "5167:22:32"
                      },
                      {
                        "expression": {
                          "id": 7600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7594,
                            "name": "z0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7500,
                            "src": "5199:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7596,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7500,
                                "src": "5211:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7597,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7103,
                                "src": "5215:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7598,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5218:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7595,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5204:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5204:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5199:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7601,
                        "nodeType": "ExpressionStatement",
                        "src": "5199:21:32"
                      },
                      {
                        "expression": {
                          "id": 7608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7602,
                            "name": "t",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7510,
                            "src": "5230:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7604,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7510,
                                "src": "5241:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7605,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7500,
                                "src": "5244:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7606,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5248:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7603,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "5234:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5234:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5230:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7609,
                        "nodeType": "ExpressionStatement",
                        "src": "5230:20:32"
                      },
                      {
                        "expression": {
                          "id": 7616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7610,
                            "name": "w",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7519,
                            "src": "5261:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7612,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7510,
                                "src": "5272:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7613,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7510,
                                "src": "5275:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7614,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5278:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7611,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5265:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5265:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5261:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7617,
                        "nodeType": "ExpressionStatement",
                        "src": "5261:19:32"
                      },
                      {
                        "expression": {
                          "id": 7624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7618,
                            "name": "x0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7496,
                            "src": "5290:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 7620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5302:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              {
                                "id": 7621,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7516,
                                "src": "5305:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7622,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5308:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7619,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5295:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5295:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5290:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7625,
                        "nodeType": "ExpressionStatement",
                        "src": "5290:20:32"
                      },
                      {
                        "expression": {
                          "id": 7634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7626,
                            "name": "w",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7519,
                            "src": "5320:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7628,
                                "name": "w",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7519,
                                "src": "5331:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7629,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "5334:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 7630,
                                  "name": "x0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7496,
                                  "src": "5338:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5334:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7632,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5342:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7627,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "5324:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5324:20:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5320:24:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7635,
                        "nodeType": "ExpressionStatement",
                        "src": "5320:24:32"
                      },
                      {
                        "expression": {
                          "id": 7644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7636,
                            "name": "x0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7496,
                            "src": "5355:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7638,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7516,
                                "src": "5367:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7639,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "5370:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 7640,
                                  "name": "w",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7519,
                                  "src": "5374:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5370:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7642,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5377:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7637,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "5360:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5360:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5355:24:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7645,
                        "nodeType": "ExpressionStatement",
                        "src": "5355:24:32"
                      },
                      {
                        "expression": {
                          "id": 7652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7646,
                            "name": "x0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7496,
                            "src": "5389:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7648,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7510,
                                "src": "5401:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7649,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7496,
                                "src": "5404:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7650,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5408:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7647,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5394:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5394:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5389:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7653,
                        "nodeType": "ExpressionStatement",
                        "src": "5389:21:32"
                      },
                      {
                        "expression": {
                          "id": 7660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7654,
                            "name": "y0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7498,
                            "src": "5420:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7656,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7498,
                                "src": "5432:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7657,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7513,
                                "src": "5436:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7658,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5439:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7655,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5425:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5425:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5420:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7661,
                        "nodeType": "ExpressionStatement",
                        "src": "5420:21:32"
                      },
                      {
                        "expression": {
                          "id": 7668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7662,
                            "name": "y0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7498,
                            "src": "5451:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7664,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7498,
                                "src": "5463:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7665,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7498,
                                "src": "5467:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7666,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5471:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7663,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5456:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5456:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5451:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7669,
                        "nodeType": "ExpressionStatement",
                        "src": "5451:22:32"
                      },
                      {
                        "expression": {
                          "id": 7676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7670,
                            "name": "y0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7498,
                            "src": "5483:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 7672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5495:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              {
                                "id": 7673,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7498,
                                "src": "5498:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7674,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5502:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7671,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5488:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5488:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5483:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7677,
                        "nodeType": "ExpressionStatement",
                        "src": "5483:21:32"
                      },
                      {
                        "expression": {
                          "id": 7686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7678,
                            "name": "y1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7505,
                            "src": "5514:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7680,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7496,
                                "src": "5526:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7681,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "5530:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 7682,
                                  "name": "y0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7498,
                                  "src": "5534:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5530:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7684,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5538:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7679,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "5519:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5519:21:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5514:26:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7687,
                        "nodeType": "ExpressionStatement",
                        "src": "5514:26:32"
                      },
                      {
                        "expression": {
                          "id": 7694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7688,
                            "name": "x1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7503,
                            "src": "5551:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7690,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7513,
                                "src": "5563:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7691,
                                "name": "w",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7519,
                                "src": "5566:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7692,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5569:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7689,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5556:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5556:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5551:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7695,
                        "nodeType": "ExpressionStatement",
                        "src": "5551:20:32"
                      },
                      {
                        "expression": {
                          "id": 7702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7696,
                            "name": "z1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7507,
                            "src": "5582:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7698,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7513,
                                "src": "5594:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7699,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7513,
                                "src": "5597:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7700,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5600:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7697,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5587:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5587:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5582:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7703,
                        "nodeType": "ExpressionStatement",
                        "src": "5582:20:32"
                      },
                      {
                        "expression": {
                          "id": 7710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7704,
                            "name": "z1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7507,
                            "src": "5612:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7706,
                                "name": "z1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7507,
                                "src": "5624:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7707,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7513,
                                "src": "5628:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7708,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "5631:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7705,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "5617:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5617:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5612:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7711,
                        "nodeType": "ExpressionStatement",
                        "src": "5612:21:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7494,
                    "nodeType": "StructuredDocumentation",
                    "src": "4391:175:32",
                    "text": " @dev Double an elliptic curve point in projective coordinates. See\n https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates"
                  },
                  "id": 7713,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "twiceProj",
                  "nameLocation": "4580:9:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7496,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "4607:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "4599:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4599:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7498,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "4627:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "4619:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7497,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4619:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7500,
                        "mutability": "mutable",
                        "name": "z0",
                        "nameLocation": "4647:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "4639:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7499,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4639:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4589:66:32"
                  },
                  "returnParameters": {
                    "id": 7508,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7503,
                        "mutability": "mutable",
                        "name": "x1",
                        "nameLocation": "4724:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "4716:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7502,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4716:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7505,
                        "mutability": "mutable",
                        "name": "y1",
                        "nameLocation": "4748:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "4740:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7504,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4740:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7507,
                        "mutability": "mutable",
                        "name": "z1",
                        "nameLocation": "4772:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "4764:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7506,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4764:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4702:82:32"
                  },
                  "scope": 8456,
                  "src": "4571:1069:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7838,
                    "nodeType": "Block",
                    "src": "6101:619:32",
                    "statements": [
                      {
                        "assignments": [
                          7736
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7736,
                            "mutability": "mutable",
                            "name": "t0",
                            "nameLocation": "6119:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7838,
                            "src": "6111:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7735,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6111:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7737,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6111:10:32"
                      },
                      {
                        "assignments": [
                          7739
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7739,
                            "mutability": "mutable",
                            "name": "t1",
                            "nameLocation": "6139:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7838,
                            "src": "6131:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7738,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6131:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7740,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6131:10:32"
                      },
                      {
                        "assignments": [
                          7742
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7742,
                            "mutability": "mutable",
                            "name": "u0",
                            "nameLocation": "6159:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7838,
                            "src": "6151:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7741,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6151:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7743,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6151:10:32"
                      },
                      {
                        "assignments": [
                          7745
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7745,
                            "mutability": "mutable",
                            "name": "u1",
                            "nameLocation": "6179:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 7838,
                            "src": "6171:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7744,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6171:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7746,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6171:10:32"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 7748,
                              "name": "x0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7716,
                              "src": "6208:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7749,
                              "name": "y0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7718,
                              "src": "6212:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7747,
                            "name": "isZeroCurve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7409,
                            "src": "6196:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 7750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6196:19:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 7758,
                                "name": "x1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7722,
                                "src": "6283:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7759,
                                "name": "y1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7724,
                                "src": "6287:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7757,
                              "name": "isZeroCurve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7409,
                              "src": "6271:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 7760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6271:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 7767,
                          "nodeType": "IfStatement",
                          "src": "6267:69:32",
                          "trueBody": {
                            "id": 7766,
                            "nodeType": "Block",
                            "src": "6292:44:32",
                            "statements": [
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "id": 7761,
                                      "name": "x0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7716,
                                      "src": "6314:2:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7762,
                                      "name": "y0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7718,
                                      "src": "6318:2:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7763,
                                      "name": "z0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7720,
                                      "src": "6322:2:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7764,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "6313:12:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "functionReturnParameters": 7734,
                                "id": 7765,
                                "nodeType": "Return",
                                "src": "6306:19:32"
                              }
                            ]
                          }
                        },
                        "id": 7768,
                        "nodeType": "IfStatement",
                        "src": "6192:144:32",
                        "trueBody": {
                          "id": 7756,
                          "nodeType": "Block",
                          "src": "6217:44:32",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "id": 7751,
                                    "name": "x1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7722,
                                    "src": "6239:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 7752,
                                    "name": "y1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7724,
                                    "src": "6243:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 7753,
                                    "name": "z1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7726,
                                    "src": "6247:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7754,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6238:12:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256)"
                                }
                              },
                              "functionReturnParameters": 7734,
                              "id": 7755,
                              "nodeType": "Return",
                              "src": "6231:19:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7769,
                            "name": "t0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7736,
                            "src": "6346:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7771,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7718,
                                "src": "6358:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7772,
                                "name": "z1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7726,
                                "src": "6362:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7773,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "6366:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7770,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "6351:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6351:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6346:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7776,
                        "nodeType": "ExpressionStatement",
                        "src": "6346:22:32"
                      },
                      {
                        "expression": {
                          "id": 7783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7777,
                            "name": "t1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7739,
                            "src": "6378:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7779,
                                "name": "y1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7724,
                                "src": "6390:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7780,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7720,
                                "src": "6394:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7781,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "6398:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7778,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "6383:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6383:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6378:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7784,
                        "nodeType": "ExpressionStatement",
                        "src": "6378:22:32"
                      },
                      {
                        "expression": {
                          "id": 7791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7785,
                            "name": "u0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7742,
                            "src": "6411:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7787,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7716,
                                "src": "6423:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7788,
                                "name": "z1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7726,
                                "src": "6427:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7789,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "6431:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7786,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "6416:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6416:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6411:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7792,
                        "nodeType": "ExpressionStatement",
                        "src": "6411:22:32"
                      },
                      {
                        "expression": {
                          "id": 7799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7793,
                            "name": "u1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7745,
                            "src": "6443:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7795,
                                "name": "x1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7722,
                                "src": "6455:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7796,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7720,
                                "src": "6459:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7797,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "6463:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7794,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "6448:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6448:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6443:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7800,
                        "nodeType": "ExpressionStatement",
                        "src": "6443:22:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7801,
                            "name": "u0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7742,
                            "src": "6480:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 7802,
                            "name": "u1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7745,
                            "src": "6486:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6480:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7820,
                        "nodeType": "IfStatement",
                        "src": "6476:169:32",
                        "trueBody": {
                          "id": 7819,
                          "nodeType": "Block",
                          "src": "6490:155:32",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7804,
                                  "name": "t0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7736,
                                  "src": "6508:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 7805,
                                  "name": "t1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7739,
                                  "src": "6514:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6508:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 7817,
                                "nodeType": "Block",
                                "src": "6585:50:32",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 7814,
                                        "name": "zeroProj",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7372,
                                        "src": "6610:8:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                          "typeString": "function () pure returns (uint256,uint256,uint256)"
                                        }
                                      },
                                      "id": 7815,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6610:10:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256,uint256)"
                                      }
                                    },
                                    "functionReturnParameters": 7734,
                                    "id": 7816,
                                    "nodeType": "Return",
                                    "src": "6603:17:32"
                                  }
                                ]
                              },
                              "id": 7818,
                              "nodeType": "IfStatement",
                              "src": "6504:131:32",
                              "trueBody": {
                                "id": 7813,
                                "nodeType": "Block",
                                "src": "6518:61:32",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 7808,
                                          "name": "x0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7716,
                                          "src": "6553:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 7809,
                                          "name": "y0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7718,
                                          "src": "6557:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 7810,
                                          "name": "z0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7720,
                                          "src": "6561:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 7807,
                                        "name": "twiceProj",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7713,
                                        "src": "6543:9:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256,uint256)"
                                        }
                                      },
                                      "id": 7811,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6543:21:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256,uint256)"
                                      }
                                    },
                                    "functionReturnParameters": 7734,
                                    "id": 7812,
                                    "nodeType": "Return",
                                    "src": "6536:28:32"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 7821,
                                "name": "x2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7729,
                                "src": "6656:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7822,
                                "name": "y2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7731,
                                "src": "6660:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7823,
                                "name": "z2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7733,
                                "src": "6664:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7824,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "6655:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 7827,
                                    "name": "z0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7720,
                                    "src": "6686:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 7828,
                                    "name": "z1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7726,
                                    "src": "6690:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 7829,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7115,
                                    "src": "6694:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7826,
                                  "name": "mulmod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -16,
                                  "src": "6679:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6679:17:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7831,
                                "name": "u0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7742,
                                "src": "6698:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7832,
                                "name": "u1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7745,
                                "src": "6702:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7833,
                                "name": "t1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7739,
                                "src": "6706:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7834,
                                "name": "t0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7736,
                                "src": "6710:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7825,
                              "name": "addProj2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8013,
                              "src": "6670:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 7835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6670:43:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "6655:58:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7837,
                        "nodeType": "ExpressionStatement",
                        "src": "6655:58:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7714,
                    "nodeType": "StructuredDocumentation",
                    "src": "5646:174:32",
                    "text": " @dev Add two elliptic curve points in projective coordinates. See\n https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates"
                  },
                  "id": 7839,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addProj",
                  "nameLocation": "5834:7:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7716,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "5859:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "5851:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7715,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5851:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7718,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "5879:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "5871:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7717,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5871:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7720,
                        "mutability": "mutable",
                        "name": "z0",
                        "nameLocation": "5899:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "5891:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7719,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5891:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7722,
                        "mutability": "mutable",
                        "name": "x1",
                        "nameLocation": "5919:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "5911:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7721,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5911:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7724,
                        "mutability": "mutable",
                        "name": "y1",
                        "nameLocation": "5939:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "5931:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7723,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5931:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7726,
                        "mutability": "mutable",
                        "name": "z1",
                        "nameLocation": "5959:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "5951:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7725,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5951:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5841:126:32"
                  },
                  "returnParameters": {
                    "id": 7734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7729,
                        "mutability": "mutable",
                        "name": "x2",
                        "nameLocation": "6036:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "6028:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6028:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7731,
                        "mutability": "mutable",
                        "name": "y2",
                        "nameLocation": "6060:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "6052:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6052:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7733,
                        "mutability": "mutable",
                        "name": "z2",
                        "nameLocation": "6084:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 7839,
                        "src": "6076:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7732,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6076:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6014:82:32"
                  },
                  "scope": 8456,
                  "src": "5825:895:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8012,
                    "nodeType": "Block",
                    "src": "7080:622:32",
                    "statements": [
                      {
                        "assignments": [
                          7860
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7860,
                            "mutability": "mutable",
                            "name": "u",
                            "nameLocation": "7098:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8012,
                            "src": "7090:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7859,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7090:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7861,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7090:9:32"
                      },
                      {
                        "assignments": [
                          7863
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7863,
                            "mutability": "mutable",
                            "name": "u2",
                            "nameLocation": "7117:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8012,
                            "src": "7109:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7862,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7109:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7864,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7109:10:32"
                      },
                      {
                        "assignments": [
                          7866
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7866,
                            "mutability": "mutable",
                            "name": "u3",
                            "nameLocation": "7137:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8012,
                            "src": "7129:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7865,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7129:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7867,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7129:10:32"
                      },
                      {
                        "assignments": [
                          7869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7869,
                            "mutability": "mutable",
                            "name": "w",
                            "nameLocation": "7157:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8012,
                            "src": "7149:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7868,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7149:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7870,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7149:9:32"
                      },
                      {
                        "assignments": [
                          7872
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7872,
                            "mutability": "mutable",
                            "name": "t",
                            "nameLocation": "7176:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8012,
                            "src": "7168:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7871,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7168:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7873,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7168:9:32"
                      },
                      {
                        "expression": {
                          "id": 7882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7874,
                            "name": "t",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7872,
                            "src": "7188:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7876,
                                "name": "t0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7850,
                                "src": "7199:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7877,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "7203:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 7878,
                                  "name": "t1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7848,
                                  "src": "7207:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7203:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7880,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7211:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7875,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "7192:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7192:21:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7188:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7883,
                        "nodeType": "ExpressionStatement",
                        "src": "7188:25:32"
                      },
                      {
                        "expression": {
                          "id": 7892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7884,
                            "name": "u",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7860,
                            "src": "7223:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7886,
                                "name": "u0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7844,
                                "src": "7234:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7887,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "7238:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 7888,
                                  "name": "u1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7846,
                                  "src": "7242:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7238:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7890,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7246:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7885,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "7227:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7891,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7227:21:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7223:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7893,
                        "nodeType": "ExpressionStatement",
                        "src": "7223:25:32"
                      },
                      {
                        "expression": {
                          "id": 7900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7894,
                            "name": "u2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7863,
                            "src": "7258:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7896,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7860,
                                "src": "7270:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7897,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7860,
                                "src": "7273:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7898,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7276:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7895,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7263:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7263:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7258:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7901,
                        "nodeType": "ExpressionStatement",
                        "src": "7258:20:32"
                      },
                      {
                        "expression": {
                          "id": 7908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7902,
                            "name": "w",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7869,
                            "src": "7289:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7904,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7872,
                                "src": "7300:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7905,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7872,
                                "src": "7303:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7906,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7306:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7903,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7293:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7293:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7289:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7909,
                        "nodeType": "ExpressionStatement",
                        "src": "7289:19:32"
                      },
                      {
                        "expression": {
                          "id": 7916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7910,
                            "name": "w",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7869,
                            "src": "7318:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7912,
                                "name": "w",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7869,
                                "src": "7329:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7913,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7842,
                                "src": "7332:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7914,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7335:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7911,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7322:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7322:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7318:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7917,
                        "nodeType": "ExpressionStatement",
                        "src": "7318:19:32"
                      },
                      {
                        "expression": {
                          "id": 7924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7918,
                            "name": "u1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "7347:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7920,
                                "name": "u1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7846,
                                "src": "7359:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7921,
                                "name": "u0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7844,
                                "src": "7363:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7922,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7367:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7919,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "7352:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7352:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7347:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7925,
                        "nodeType": "ExpressionStatement",
                        "src": "7347:22:32"
                      },
                      {
                        "expression": {
                          "id": 7932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7926,
                            "name": "u1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "7379:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7928,
                                "name": "u1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7846,
                                "src": "7391:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7929,
                                "name": "u2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7863,
                                "src": "7395:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7930,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7399:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7927,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7384:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7384:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7379:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7933,
                        "nodeType": "ExpressionStatement",
                        "src": "7379:22:32"
                      },
                      {
                        "expression": {
                          "id": 7942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7934,
                            "name": "w",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7869,
                            "src": "7411:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7936,
                                "name": "w",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7869,
                                "src": "7422:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7937,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "7425:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 7938,
                                  "name": "u1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7846,
                                  "src": "7429:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7425:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7940,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7433:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7935,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "7415:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7415:20:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7411:24:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7943,
                        "nodeType": "ExpressionStatement",
                        "src": "7411:24:32"
                      },
                      {
                        "expression": {
                          "id": 7950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7944,
                            "name": "x2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7853,
                            "src": "7446:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7946,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7860,
                                "src": "7458:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7947,
                                "name": "w",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7869,
                                "src": "7461:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7948,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7464:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7945,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7451:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7451:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7446:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7951,
                        "nodeType": "ExpressionStatement",
                        "src": "7446:20:32"
                      },
                      {
                        "expression": {
                          "id": 7958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7952,
                            "name": "u3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7866,
                            "src": "7477:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7954,
                                "name": "u2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7863,
                                "src": "7489:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7955,
                                "name": "u",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7860,
                                "src": "7493:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7956,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7496:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7953,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7482:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7482:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7477:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7959,
                        "nodeType": "ExpressionStatement",
                        "src": "7477:21:32"
                      },
                      {
                        "expression": {
                          "id": 7966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7960,
                            "name": "u0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7844,
                            "src": "7508:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7962,
                                "name": "u0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7844,
                                "src": "7520:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7963,
                                "name": "u2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7863,
                                "src": "7524:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7964,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7528:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7961,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7513:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7513:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7508:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7967,
                        "nodeType": "ExpressionStatement",
                        "src": "7508:22:32"
                      },
                      {
                        "expression": {
                          "id": 7976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7968,
                            "name": "u0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7844,
                            "src": "7540:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7970,
                                "name": "u0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7844,
                                "src": "7552:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7971,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "7556:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 7972,
                                  "name": "w",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7869,
                                  "src": "7560:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7556:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7974,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7563:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7969,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "7545:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7545:20:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7540:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7977,
                        "nodeType": "ExpressionStatement",
                        "src": "7540:25:32"
                      },
                      {
                        "expression": {
                          "id": 7984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7978,
                            "name": "t",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7872,
                            "src": "7575:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7980,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7872,
                                "src": "7586:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7981,
                                "name": "u0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7844,
                                "src": "7589:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7982,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7593:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7979,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7579:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7579:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7575:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7985,
                        "nodeType": "ExpressionStatement",
                        "src": "7575:20:32"
                      },
                      {
                        "expression": {
                          "id": 7992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7986,
                            "name": "t0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7850,
                            "src": "7605:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7988,
                                "name": "t0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7850,
                                "src": "7617:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7989,
                                "name": "u3",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7866,
                                "src": "7621:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7990,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7625:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7987,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7610:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7610:17:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7605:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7993,
                        "nodeType": "ExpressionStatement",
                        "src": "7605:22:32"
                      },
                      {
                        "expression": {
                          "id": 8002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7994,
                            "name": "y2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7855,
                            "src": "7638:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7996,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7872,
                                "src": "7650:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7999,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7997,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7115,
                                  "src": "7653:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 7998,
                                  "name": "t0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7850,
                                  "src": "7657:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7653:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8000,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7661:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7995,
                              "name": "addmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -2,
                              "src": "7643:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7643:20:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7638:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8003,
                        "nodeType": "ExpressionStatement",
                        "src": "7638:25:32"
                      },
                      {
                        "expression": {
                          "id": 8010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8004,
                            "name": "z2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7857,
                            "src": "7674:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8006,
                                "name": "u3",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7866,
                                "src": "7686:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8007,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7842,
                                "src": "7690:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8008,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "7693:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8005,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "7679:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7679:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7674:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8011,
                        "nodeType": "ExpressionStatement",
                        "src": "7674:21:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7840,
                    "nodeType": "StructuredDocumentation",
                    "src": "6726:94:32",
                    "text": " @dev Helper function that splits addProj to avoid too many local variables."
                  },
                  "id": 8013,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addProj2",
                  "nameLocation": "6834:8:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7842,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "6860:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8013,
                        "src": "6852:9:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6852:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7844,
                        "mutability": "mutable",
                        "name": "u0",
                        "nameLocation": "6879:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8013,
                        "src": "6871:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7843,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6871:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7846,
                        "mutability": "mutable",
                        "name": "u1",
                        "nameLocation": "6899:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8013,
                        "src": "6891:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7845,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6891:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7848,
                        "mutability": "mutable",
                        "name": "t1",
                        "nameLocation": "6919:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8013,
                        "src": "6911:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7847,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6911:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7850,
                        "mutability": "mutable",
                        "name": "t0",
                        "nameLocation": "6939:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8013,
                        "src": "6931:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7849,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6931:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6842:105:32"
                  },
                  "returnParameters": {
                    "id": 7858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7853,
                        "mutability": "mutable",
                        "name": "x2",
                        "nameLocation": "7015:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8013,
                        "src": "7007:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7852,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7007:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7855,
                        "mutability": "mutable",
                        "name": "y2",
                        "nameLocation": "7039:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8013,
                        "src": "7031:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7854,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7031:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7857,
                        "mutability": "mutable",
                        "name": "z2",
                        "nameLocation": "7063:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8013,
                        "src": "7055:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7856,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7055:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6993:82:32"
                  },
                  "scope": 8456,
                  "src": "6825:877:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 8052,
                    "nodeType": "Block",
                    "src": "7929:125:32",
                    "statements": [
                      {
                        "assignments": [
                          8030
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8030,
                            "mutability": "mutable",
                            "name": "z0",
                            "nameLocation": "7947:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8052,
                            "src": "7939:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8029,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7939:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8031,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7939:10:32"
                      },
                      {
                        "expression": {
                          "id": 8044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 8032,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8016,
                                "src": "7961:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8033,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8018,
                                "src": "7965:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8034,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8030,
                                "src": "7969:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8035,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "7960:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8037,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8016,
                                "src": "7983:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8038,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8018,
                                "src": "7987:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "31",
                                "id": 8039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7991:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              {
                                "id": 8040,
                                "name": "x1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8020,
                                "src": "7994:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8041,
                                "name": "y1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8022,
                                "src": "7998:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "31",
                                "id": 8042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8002:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 8036,
                              "name": "addProj",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7839,
                              "src": "7975:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 8043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7975:29:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "7960:44:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8045,
                        "nodeType": "ExpressionStatement",
                        "src": "7960:44:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8047,
                              "name": "x0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8016,
                              "src": "8036:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8048,
                              "name": "y0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8018,
                              "src": "8040:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8049,
                              "name": "z0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8030,
                              "src": "8044:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8046,
                            "name": "toAffinePoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7356,
                            "src": "8022:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                            }
                          },
                          "id": 8050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8022:25:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 8028,
                        "id": 8051,
                        "nodeType": "Return",
                        "src": "8015:32:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8014,
                    "nodeType": "StructuredDocumentation",
                    "src": "7708:76:32",
                    "text": " @dev Add two elliptic curve points in affine coordinates."
                  },
                  "id": 8053,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nameLocation": "7798:3:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8023,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8016,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "7819:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8053,
                        "src": "7811:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8015,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7811:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8018,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "7839:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8053,
                        "src": "7831:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8017,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7831:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8020,
                        "mutability": "mutable",
                        "name": "x1",
                        "nameLocation": "7859:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8053,
                        "src": "7851:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8019,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7851:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8022,
                        "mutability": "mutable",
                        "name": "y1",
                        "nameLocation": "7879:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8053,
                        "src": "7871:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8021,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7871:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7801:86:32"
                  },
                  "returnParameters": {
                    "id": 8028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8025,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8053,
                        "src": "7911:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8024,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7911:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8027,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8053,
                        "src": "7920:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8026,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7920:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7910:18:32"
                  },
                  "scope": 8456,
                  "src": "7789:265:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8085,
                    "nodeType": "Block",
                    "src": "8250:116:32",
                    "statements": [
                      {
                        "assignments": [
                          8066
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8066,
                            "mutability": "mutable",
                            "name": "z0",
                            "nameLocation": "8268:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8085,
                            "src": "8260:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8065,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8260:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8067,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8260:10:32"
                      },
                      {
                        "expression": {
                          "id": 8077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 8068,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8056,
                                "src": "8282:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8069,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8058,
                                "src": "8286:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8070,
                                "name": "z0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8066,
                                "src": "8290:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8071,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8281:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8073,
                                "name": "x0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8056,
                                "src": "8306:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8074,
                                "name": "y0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8058,
                                "src": "8310:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "31",
                                "id": 8075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8314:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 8072,
                              "name": "twiceProj",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7713,
                              "src": "8296:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 8076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8296:20:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "8281:35:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8078,
                        "nodeType": "ExpressionStatement",
                        "src": "8281:35:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8080,
                              "name": "x0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8056,
                              "src": "8348:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8081,
                              "name": "y0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8058,
                              "src": "8352:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8082,
                              "name": "z0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8066,
                              "src": "8356:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8079,
                            "name": "toAffinePoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7356,
                            "src": "8334:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                            }
                          },
                          "id": 8083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8334:25:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 8064,
                        "id": 8084,
                        "nodeType": "Return",
                        "src": "8327:32:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8054,
                    "nodeType": "StructuredDocumentation",
                    "src": "8060:77:32",
                    "text": " @dev Double an elliptic curve point in affine coordinates."
                  },
                  "id": 8086,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "twice",
                  "nameLocation": "8151:5:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8059,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8056,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "8165:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8086,
                        "src": "8157:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8055,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8157:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8058,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "8177:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8086,
                        "src": "8169:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8057,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8169:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8156:24:32"
                  },
                  "returnParameters": {
                    "id": 8064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8061,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8086,
                        "src": "8228:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8228:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8063,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8086,
                        "src": "8237:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8062,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8237:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8227:18:32"
                  },
                  "scope": 8456,
                  "src": "8142:224:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8141,
                    "nodeType": "Block",
                    "src": "8607:277:32",
                    "statements": [
                      {
                        "assignments": [
                          8101
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8101,
                            "mutability": "mutable",
                            "name": "base2X",
                            "nameLocation": "8625:6:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8141,
                            "src": "8617:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8100,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8617:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8103,
                        "initialValue": {
                          "id": 8102,
                          "name": "x0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8089,
                          "src": "8634:2:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8617:19:32"
                      },
                      {
                        "assignments": [
                          8105
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8105,
                            "mutability": "mutable",
                            "name": "base2Y",
                            "nameLocation": "8654:6:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8141,
                            "src": "8646:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8104,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8646:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8107,
                        "initialValue": {
                          "id": 8106,
                          "name": "y0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8091,
                          "src": "8663:2:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8646:19:32"
                      },
                      {
                        "assignments": [
                          8109
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8109,
                            "mutability": "mutable",
                            "name": "base2Z",
                            "nameLocation": "8683:6:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8141,
                            "src": "8675:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8108,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8675:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8111,
                        "initialValue": {
                          "hexValue": "31",
                          "id": 8110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8692:1:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8675:18:32"
                      },
                      {
                        "body": {
                          "id": 8133,
                          "nodeType": "Block",
                          "src": "8738:85:32",
                          "statements": [
                            {
                              "expression": {
                                "id": 8131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 8122,
                                      "name": "base2X",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8101,
                                      "src": "8753:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8123,
                                      "name": "base2Y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8105,
                                      "src": "8761:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8124,
                                      "name": "base2Z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8109,
                                      "src": "8769:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 8125,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "8752:24:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8127,
                                      "name": "base2X",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8101,
                                      "src": "8789:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8128,
                                      "name": "base2Y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8105,
                                      "src": "8797:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8129,
                                      "name": "base2Z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8109,
                                      "src": "8805:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 8126,
                                    "name": "twiceProj",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7713,
                                    "src": "8779:9:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 8130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8779:33:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "src": "8752:60:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8132,
                              "nodeType": "ExpressionStatement",
                              "src": "8752:60:32"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8116,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "8724:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 8117,
                            "name": "exp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8093,
                            "src": "8728:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8724:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8134,
                        "initializationExpression": {
                          "assignments": [
                            8113
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8113,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "8717:1:32",
                              "nodeType": "VariableDeclaration",
                              "scope": 8134,
                              "src": "8709:9:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8112,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8709:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 8115,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 8114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8721:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8709:13:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 8120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "8733:3:32",
                            "subExpression": {
                              "id": 8119,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8113,
                              "src": "8733:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8121,
                          "nodeType": "ExpressionStatement",
                          "src": "8733:3:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "8704:119:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8136,
                              "name": "base2X",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8101,
                              "src": "8854:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8137,
                              "name": "base2Y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8105,
                              "src": "8862:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8138,
                              "name": "base2Z",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8109,
                              "src": "8870:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8135,
                            "name": "toAffinePoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7356,
                            "src": "8840:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                            }
                          },
                          "id": 8139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8840:37:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 8099,
                        "id": 8140,
                        "nodeType": "Return",
                        "src": "8833:44:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8087,
                    "nodeType": "StructuredDocumentation",
                    "src": "8372:94:32",
                    "text": " @dev Multiply an elliptic curve point by a 2 power base (i.e., (2^exp)*P))."
                  },
                  "id": 8142,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiplyPowerBase2",
                  "nameLocation": "8480:18:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8094,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8089,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "8516:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8142,
                        "src": "8508:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8088,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8508:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8091,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "8536:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8142,
                        "src": "8528:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8090,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8528:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8093,
                        "mutability": "mutable",
                        "name": "exp",
                        "nameLocation": "8556:3:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8142,
                        "src": "8548:11:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8092,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8548:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8498:67:32"
                  },
                  "returnParameters": {
                    "id": 8099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8096,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8142,
                        "src": "8589:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8589:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8098,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8142,
                        "src": "8598:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8598:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8588:18:32"
                  },
                  "scope": 8456,
                  "src": "8471:413:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8275,
                    "nodeType": "Block",
                    "src": "9105:769:32",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8156,
                            "name": "scalar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8149,
                            "src": "9119:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9129:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9119:11:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8163,
                              "name": "scalar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8149,
                              "src": "9186:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9196:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "9186:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8171,
                                "name": "scalar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8149,
                                "src": "9249:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 8172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9259:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "9249:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 8180,
                            "nodeType": "IfStatement",
                            "src": "9245:62:32",
                            "trueBody": {
                              "id": 8179,
                              "nodeType": "Block",
                              "src": "9262:45:32",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 8175,
                                        "name": "x0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8145,
                                        "src": "9289:2:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 8176,
                                        "name": "y0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8147,
                                        "src": "9293:2:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 8174,
                                      "name": "twice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8086,
                                      "src": "9283:5:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                                      }
                                    },
                                    "id": 8177,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9283:13:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "functionReturnParameters": 8155,
                                  "id": 8178,
                                  "nodeType": "Return",
                                  "src": "9276:20:32"
                                }
                              ]
                            }
                          },
                          "id": 8181,
                          "nodeType": "IfStatement",
                          "src": "9182:125:32",
                          "trueBody": {
                            "id": 8170,
                            "nodeType": "Block",
                            "src": "9199:40:32",
                            "statements": [
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "id": 8166,
                                      "name": "x0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8145,
                                      "src": "9221:2:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8167,
                                      "name": "y0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8147,
                                      "src": "9225:2:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 8168,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9220:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "functionReturnParameters": 8155,
                                "id": 8169,
                                "nodeType": "Return",
                                "src": "9213:15:32"
                              }
                            ]
                          }
                        },
                        "id": 8182,
                        "nodeType": "IfStatement",
                        "src": "9115:192:32",
                        "trueBody": {
                          "id": 8162,
                          "nodeType": "Block",
                          "src": "9132:44:32",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 8159,
                                  "name": "zeroAffine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7385,
                                  "src": "9153:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256,uint256)"
                                  }
                                },
                                "id": 8160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9153:12:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "functionReturnParameters": 8155,
                              "id": 8161,
                              "nodeType": "Return",
                              "src": "9146:19:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          8184
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8184,
                            "mutability": "mutable",
                            "name": "base2X",
                            "nameLocation": "9325:6:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8275,
                            "src": "9317:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8183,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9317:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8186,
                        "initialValue": {
                          "id": 8185,
                          "name": "x0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8145,
                          "src": "9334:2:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9317:19:32"
                      },
                      {
                        "assignments": [
                          8188
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8188,
                            "mutability": "mutable",
                            "name": "base2Y",
                            "nameLocation": "9354:6:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8275,
                            "src": "9346:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8187,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9346:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8190,
                        "initialValue": {
                          "id": 8189,
                          "name": "y0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8147,
                          "src": "9363:2:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9346:19:32"
                      },
                      {
                        "assignments": [
                          8192
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8192,
                            "mutability": "mutable",
                            "name": "base2Z",
                            "nameLocation": "9383:6:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8275,
                            "src": "9375:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8191,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9375:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8194,
                        "initialValue": {
                          "hexValue": "31",
                          "id": 8193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9392:1:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9375:18:32"
                      },
                      {
                        "assignments": [
                          8196
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8196,
                            "mutability": "mutable",
                            "name": "z1",
                            "nameLocation": "9411:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8275,
                            "src": "9403:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8195,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9403:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8198,
                        "initialValue": {
                          "hexValue": "31",
                          "id": 8197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9416:1:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9403:14:32"
                      },
                      {
                        "expression": {
                          "id": 8201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8199,
                            "name": "x1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8152,
                            "src": "9427:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8200,
                            "name": "x0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8145,
                            "src": "9432:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9427:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8202,
                        "nodeType": "ExpressionStatement",
                        "src": "9427:7:32"
                      },
                      {
                        "expression": {
                          "id": 8205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8203,
                            "name": "y1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8154,
                            "src": "9444:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8204,
                            "name": "y0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8147,
                            "src": "9449:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9444:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8206,
                        "nodeType": "ExpressionStatement",
                        "src": "9444:7:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8207,
                              "name": "scalar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8149,
                              "src": "9466:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 8208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9475:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "9466:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9480:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9466:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8219,
                        "nodeType": "IfStatement",
                        "src": "9462:57:32",
                        "trueBody": {
                          "id": 8218,
                          "nodeType": "Block",
                          "src": "9483:36:32",
                          "statements": [
                            {
                              "expression": {
                                "id": 8216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8212,
                                  "name": "x1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8152,
                                  "src": "9497:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8215,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 8213,
                                    "name": "y1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8154,
                                    "src": "9502:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "hexValue": "30",
                                    "id": 8214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9507:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "9502:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9497:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8217,
                              "nodeType": "ExpressionStatement",
                              "src": "9497:11:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 8224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8220,
                            "name": "scalar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8149,
                            "src": "9529:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8221,
                              "name": "scalar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8149,
                              "src": "9538:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9548:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "9538:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9529:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8225,
                        "nodeType": "ExpressionStatement",
                        "src": "9529:20:32"
                      },
                      {
                        "body": {
                          "id": 8267,
                          "nodeType": "Block",
                          "src": "9579:246:32",
                          "statements": [
                            {
                              "expression": {
                                "id": 8238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 8229,
                                      "name": "base2X",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8184,
                                      "src": "9594:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8230,
                                      "name": "base2Y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8188,
                                      "src": "9602:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8231,
                                      "name": "base2Z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8192,
                                      "src": "9610:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 8232,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "9593:24:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8234,
                                      "name": "base2X",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8184,
                                      "src": "9630:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8235,
                                      "name": "base2Y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8188,
                                      "src": "9638:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8236,
                                      "name": "base2Z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8192,
                                      "src": "9646:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 8233,
                                    "name": "twiceProj",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7713,
                                    "src": "9620:9:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 8237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9620:33:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "src": "9593:60:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8239,
                              "nodeType": "ExpressionStatement",
                              "src": "9593:60:32"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8242,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8240,
                                    "name": "scalar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8149,
                                    "src": "9672:6:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 8241,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9681:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "9672:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 8243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9686:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9672:15:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8260,
                              "nodeType": "IfStatement",
                              "src": "9668:112:32",
                              "trueBody": {
                                "id": 8259,
                                "nodeType": "Block",
                                "src": "9689:91:32",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 8257,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "components": [
                                          {
                                            "id": 8245,
                                            "name": "x1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8152,
                                            "src": "9708:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 8246,
                                            "name": "y1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8154,
                                            "src": "9712:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 8247,
                                            "name": "z1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8196,
                                            "src": "9716:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 8248,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "9707:12:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 8250,
                                            "name": "base2X",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8184,
                                            "src": "9730:6:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 8251,
                                            "name": "base2Y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8188,
                                            "src": "9738:6:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 8252,
                                            "name": "base2Z",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8192,
                                            "src": "9746:6:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 8253,
                                            "name": "x1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8152,
                                            "src": "9754:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 8254,
                                            "name": "y1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8154,
                                            "src": "9758:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 8255,
                                            "name": "z1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8196,
                                            "src": "9762:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 8249,
                                          "name": "addProj",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7839,
                                          "src": "9722:7:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256)"
                                          }
                                        },
                                        "id": 8256,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9722:43:32",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256,uint256)"
                                        }
                                      },
                                      "src": "9707:58:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8258,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9707:58:32"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 8265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8261,
                                  "name": "scalar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8149,
                                  "src": "9794:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8262,
                                    "name": "scalar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8149,
                                    "src": "9803:6:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 8263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9813:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "9803:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9794:20:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8266,
                              "nodeType": "ExpressionStatement",
                              "src": "9794:20:32"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8226,
                            "name": "scalar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8149,
                            "src": "9567:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9576:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9567:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8268,
                        "nodeType": "WhileStatement",
                        "src": "9560:265:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8270,
                              "name": "x1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8152,
                              "src": "9856:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8271,
                              "name": "y1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8154,
                              "src": "9860:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8272,
                              "name": "z1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8196,
                              "src": "9864:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8269,
                            "name": "toAffinePoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7356,
                            "src": "9842:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                            }
                          },
                          "id": 8273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9842:25:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 8155,
                        "id": 8274,
                        "nodeType": "Return",
                        "src": "9835:32:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8143,
                    "nodeType": "StructuredDocumentation",
                    "src": "8890:69:32",
                    "text": " @dev Multiply an elliptic curve point by a scalar."
                  },
                  "id": 8276,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiplyScalar",
                  "nameLocation": "8973:14:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8145,
                        "mutability": "mutable",
                        "name": "x0",
                        "nameLocation": "9005:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8276,
                        "src": "8997:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8144,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8997:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8147,
                        "mutability": "mutable",
                        "name": "y0",
                        "nameLocation": "9025:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8276,
                        "src": "9017:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8146,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9017:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8149,
                        "mutability": "mutable",
                        "name": "scalar",
                        "nameLocation": "9045:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8276,
                        "src": "9037:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8148,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9037:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8987:70:32"
                  },
                  "returnParameters": {
                    "id": 8155,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8152,
                        "mutability": "mutable",
                        "name": "x1",
                        "nameLocation": "9089:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8276,
                        "src": "9081:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9081:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8154,
                        "mutability": "mutable",
                        "name": "y1",
                        "nameLocation": "9101:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8276,
                        "src": "9093:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8153,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9093:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9080:24:32"
                  },
                  "scope": 8456,
                  "src": "8964:910:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8292,
                    "nodeType": "Block",
                    "src": "10078:54:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8287,
                              "name": "gx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7109,
                              "src": "10110:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8288,
                              "name": "gy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7112,
                              "src": "10114:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8289,
                              "name": "scalar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8279,
                              "src": "10118:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8286,
                            "name": "multiplyScalar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8276,
                            "src": "10095:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                            }
                          },
                          "id": 8290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10095:30:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 8285,
                        "id": 8291,
                        "nodeType": "Return",
                        "src": "10088:37:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8277,
                    "nodeType": "StructuredDocumentation",
                    "src": "9880:73:32",
                    "text": " @dev Multiply the curve's generator point by a scalar."
                  },
                  "id": 8293,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multipleGeneratorByScalar",
                  "nameLocation": "9967:25:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8279,
                        "mutability": "mutable",
                        "name": "scalar",
                        "nameLocation": "10001:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8293,
                        "src": "9993:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9993:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9992:16:32"
                  },
                  "returnParameters": {
                    "id": 8285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8282,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8293,
                        "src": "10056:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8281,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10056:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8284,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8293,
                        "src": "10065:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10065:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10055:18:32"
                  },
                  "scope": 8456,
                  "src": "9958:174:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8454,
                    "nodeType": "Block",
                    "src": "10372:824:32",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 8309,
                                  "name": "rs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8300,
                                  "src": "10466:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                    "typeString": "uint256[2] memory"
                                  }
                                },
                                "id": 8311,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 8310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10469:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10466:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10475:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10466:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 8314,
                                  "name": "rs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8300,
                                  "src": "10480:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                    "typeString": "uint256[2] memory"
                                  }
                                },
                                "id": 8316,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 8315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10483:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10480:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 8317,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7118,
                                "src": "10489:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10480:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "10466:24:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 8320,
                                "name": "rs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8300,
                                "src": "10494:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 8322,
                              "indexExpression": {
                                "hexValue": "31",
                                "id": 8321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10497:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10494:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 8323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10503:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "10494:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10466:38:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8329,
                        "nodeType": "IfStatement",
                        "src": "10462:116:32",
                        "trueBody": {
                          "id": 8328,
                          "nodeType": "Block",
                          "src": "10506:72:32",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 8326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10562:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 8308,
                              "id": 8327,
                              "nodeType": "Return",
                              "src": "10555:12:32"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 8338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "10591:22:32",
                          "subExpression": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 8331,
                                  "name": "Q",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8304,
                                  "src": "10602:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                    "typeString": "uint256[2] memory"
                                  }
                                },
                                "id": 8333,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 8332,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10604:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10602:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 8334,
                                  "name": "Q",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8304,
                                  "src": "10608:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                    "typeString": "uint256[2] memory"
                                  }
                                },
                                "id": 8336,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 8335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10610:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10608:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8330,
                              "name": "isOnCurve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7493,
                              "src": "10592:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 8337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10592:21:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8342,
                        "nodeType": "IfStatement",
                        "src": "10587:65:32",
                        "trueBody": {
                          "id": 8341,
                          "nodeType": "Block",
                          "src": "10615:37:32",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 8339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10636:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 8308,
                              "id": 8340,
                              "nodeType": "Return",
                              "src": "10629:12:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          8344
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8344,
                            "mutability": "mutable",
                            "name": "x1",
                            "nameLocation": "10670:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8454,
                            "src": "10662:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8343,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10662:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8345,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10662:10:32"
                      },
                      {
                        "assignments": [
                          8347
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8347,
                            "mutability": "mutable",
                            "name": "x2",
                            "nameLocation": "10690:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8454,
                            "src": "10682:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8346,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10682:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8348,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10682:10:32"
                      },
                      {
                        "assignments": [
                          8350
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8350,
                            "mutability": "mutable",
                            "name": "y1",
                            "nameLocation": "10710:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8454,
                            "src": "10702:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8349,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10702:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8351,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10702:10:32"
                      },
                      {
                        "assignments": [
                          8353
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8353,
                            "mutability": "mutable",
                            "name": "y2",
                            "nameLocation": "10730:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8454,
                            "src": "10722:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8352,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10722:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8354,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10722:10:32"
                      },
                      {
                        "assignments": [
                          8356
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8356,
                            "mutability": "mutable",
                            "name": "sInv",
                            "nameLocation": "10751:4:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8454,
                            "src": "10743:12:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8355,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10743:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8363,
                        "initialValue": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 8358,
                                "name": "rs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8300,
                                "src": "10769:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 8360,
                              "indexExpression": {
                                "hexValue": "31",
                                "id": 8359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10772:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10769:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8361,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7118,
                              "src": "10776:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8357,
                            "name": "inverseMod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7227,
                            "src": "10758:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10758:20:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10743:35:32"
                      },
                      {
                        "expression": {
                          "id": 8379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 8364,
                                "name": "x1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8344,
                                "src": "10789:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8365,
                                "name": "y1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8350,
                                "src": "10793:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8366,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "10788:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8368,
                                "name": "gx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7109,
                                "src": "10814:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8369,
                                "name": "gy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7112,
                                "src": "10818:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 8373,
                                        "name": "message",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8296,
                                        "src": "10837:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 8372,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10829:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8371,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10829:7:32",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 8374,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10829:16:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8375,
                                    "name": "sInv",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8356,
                                    "src": "10847:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8376,
                                    "name": "n",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7118,
                                    "src": "10853:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8370,
                                  "name": "mulmod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -16,
                                  "src": "10822:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10822:33:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8367,
                              "name": "multiplyScalar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8276,
                              "src": "10799:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                              }
                            },
                            "id": 8378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10799:57:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "10788:68:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8380,
                        "nodeType": "ExpressionStatement",
                        "src": "10788:68:32"
                      },
                      {
                        "expression": {
                          "id": 8399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 8381,
                                "name": "x2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8347,
                                "src": "10867:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8382,
                                "name": "y2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8353,
                                "src": "10871:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8383,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "10866:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 8385,
                                  "name": "Q",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8304,
                                  "src": "10892:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                    "typeString": "uint256[2] memory"
                                  }
                                },
                                "id": 8387,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 8386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10894:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10892:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 8388,
                                  "name": "Q",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8304,
                                  "src": "10898:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                    "typeString": "uint256[2] memory"
                                  }
                                },
                                "id": 8390,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 8389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10900:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10898:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 8392,
                                      "name": "rs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8300,
                                      "src": "10911:2:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                        "typeString": "uint256[2] memory"
                                      }
                                    },
                                    "id": 8394,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 8393,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10914:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10911:5:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8395,
                                    "name": "sInv",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8356,
                                    "src": "10918:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8396,
                                    "name": "n",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7118,
                                    "src": "10924:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8391,
                                  "name": "mulmod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -16,
                                  "src": "10904:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10904:22:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8384,
                              "name": "multiplyScalar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8276,
                              "src": "10877:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                              }
                            },
                            "id": 8398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10877:50:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "10866:61:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8400,
                        "nodeType": "ExpressionStatement",
                        "src": "10866:61:32"
                      },
                      {
                        "assignments": [
                          8406
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8406,
                            "mutability": "mutable",
                            "name": "P",
                            "nameLocation": "10955:1:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8454,
                            "src": "10937:19:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8404,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10937:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8405,
                              "length": {
                                "hexValue": "33",
                                "id": 8403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10945:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              "nodeType": "ArrayTypeName",
                              "src": "10937:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                                "typeString": "uint256[3]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8413,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8408,
                              "name": "x1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8344,
                              "src": "10987:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8409,
                              "name": "y1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8350,
                              "src": "10991:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8410,
                              "name": "x2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8347,
                              "src": "10995:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8411,
                              "name": "y2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8353,
                              "src": "10999:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8407,
                            "name": "addAndReturnProjectivePoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7315,
                            "src": "10959:27:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$3_memory_ptr_$",
                              "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256[3] memory)"
                            }
                          },
                          "id": 8412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10959:43:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                            "typeString": "uint256[3] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10937:65:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 8414,
                              "name": "P",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8406,
                              "src": "11017:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 8416,
                            "indexExpression": {
                              "hexValue": "32",
                              "id": 8415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11019:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11017:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11025:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11017:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8422,
                        "nodeType": "IfStatement",
                        "src": "11013:52:32",
                        "trueBody": {
                          "id": 8421,
                          "nodeType": "Block",
                          "src": "11028:37:32",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 8419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11049:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 8308,
                              "id": 8420,
                              "nodeType": "Return",
                              "src": "11042:12:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          8424
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8424,
                            "mutability": "mutable",
                            "name": "Px",
                            "nameLocation": "11083:2:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 8454,
                            "src": "11075:10:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8423,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11075:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8431,
                        "initialValue": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 8426,
                                "name": "P",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8406,
                                "src": "11099:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              "id": 8428,
                              "indexExpression": {
                                "hexValue": "32",
                                "id": 8427,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11101:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11099:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8429,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7115,
                              "src": "11105:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8425,
                            "name": "inverseMod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7227,
                            "src": "11088:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11088:19:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11075:32:32"
                      },
                      {
                        "expression": {
                          "id": 8444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8432,
                            "name": "Px",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8424,
                            "src": "11117:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 8434,
                                  "name": "P",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8406,
                                  "src": "11129:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 8436,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 8435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11131:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11129:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 8438,
                                    "name": "Px",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8424,
                                    "src": "11142:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8439,
                                    "name": "Px",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8424,
                                    "src": "11146:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8440,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7115,
                                    "src": "11150:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8437,
                                  "name": "mulmod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -16,
                                  "src": "11135:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11135:17:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8442,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7115,
                                "src": "11154:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8433,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -16,
                              "src": "11122:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11122:34:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11117:39:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8445,
                        "nodeType": "ExpressionStatement",
                        "src": "11117:39:32"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8446,
                              "name": "Px",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8424,
                              "src": "11174:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "id": 8447,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7118,
                              "src": "11179:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11174:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 8449,
                              "name": "rs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8300,
                              "src": "11184:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 8451,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 8450,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11187:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11184:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11174:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 8308,
                        "id": 8453,
                        "nodeType": "Return",
                        "src": "11167:22:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8294,
                    "nodeType": "StructuredDocumentation",
                    "src": "10138:83:32",
                    "text": " @dev Validate combination of message, signature, and public key."
                  },
                  "id": 8455,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateSignature",
                  "nameLocation": "10235:17:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8296,
                        "mutability": "mutable",
                        "name": "message",
                        "nameLocation": "10270:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8455,
                        "src": "10262:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8295,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10262:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8300,
                        "mutability": "mutable",
                        "name": "rs",
                        "nameLocation": "10305:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8455,
                        "src": "10287:20:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8297,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "10287:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8299,
                          "length": {
                            "hexValue": "32",
                            "id": 8298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10295:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "10287:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                            "typeString": "uint256[2]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8304,
                        "mutability": "mutable",
                        "name": "Q",
                        "nameLocation": "10335:1:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 8455,
                        "src": "10317:19:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8301,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "10317:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8303,
                          "length": {
                            "hexValue": "32",
                            "id": 8302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10325:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "10317:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                            "typeString": "uint256[2]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10252:90:32"
                  },
                  "returnParameters": {
                    "id": 8308,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8307,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8455,
                        "src": "10366:4:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8306,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10366:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10365:6:32"
                  },
                  "scope": 8456,
                  "src": "10226:970:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 8457,
              "src": "611:10587:32",
              "usedErrors": []
            }
          ],
          "src": "0:11199:32"
        },
        "id": 32
      },
      "contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol",
          "exportedSymbols": {
            "ModexpPrecompile": [
              8507
            ]
          },
          "id": 8508,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8458,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:33"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ModexpPrecompile",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 8507,
              "linearizedBaseContracts": [
                8507
              ],
              "name": "ModexpPrecompile",
              "nameLocation": "33:16:33",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 8505,
                    "nodeType": "Block",
                    "src": "307:526:33",
                    "statements": [
                      {
                        "assignments": [
                          8473
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8473,
                            "mutability": "mutable",
                            "name": "input",
                            "nameLocation": "330:5:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 8505,
                            "src": "317:18:33",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 8472,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "317:5:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8495,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 8478,
                                    "name": "base",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8461,
                                    "src": "376:4:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 8479,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "381:6:33",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "376:11:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "368:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8476,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "368:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "368:20:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 8483,
                                    "name": "exponent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8463,
                                    "src": "410:8:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 8484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "419:6:33",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "410:15:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "402:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8481,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "402:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "402:24:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 8488,
                                    "name": "modulus",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8465,
                                    "src": "448:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 8489,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "456:6:33",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "448:14:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "440:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8486,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "440:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "440:23:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8491,
                              "name": "base",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8461,
                              "src": "477:4:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 8492,
                              "name": "exponent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8463,
                              "src": "495:8:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 8493,
                              "name": "modulus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8465,
                              "src": "517:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 8474,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "338:3:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 8475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "342:12:33",
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "338:16:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 8494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "338:196:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "317:217:33"
                      },
                      {
                        "expression": {
                          "id": 8502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8496,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8470,
                            "src": "545:6:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 8499,
                                  "name": "modulus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8465,
                                  "src": "564:7:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 8500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "572:6:33",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "564:14:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "554:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 8497,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "558:5:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 8501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "554:25:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "545:34:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 8503,
                        "nodeType": "ExpressionStatement",
                        "src": "545:34:33"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "599:228:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "613:204:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "652:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "652:5:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "675:1:33",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "input",
                                        "nodeType": "YulIdentifier",
                                        "src": "698:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "705:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "694:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "694:14:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "input",
                                        "nodeType": "YulIdentifier",
                                        "src": "732:5:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "726:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "726:12:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "output",
                                        "nodeType": "YulIdentifier",
                                        "src": "760:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "768:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "756:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "756:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "modulus",
                                        "nodeType": "YulIdentifier",
                                        "src": "795:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "789:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "789:14:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:10:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:193:33"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nodeType": "YulIdentifier",
                                  "src": "613:7:33"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 8473,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "698:5:33",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8473,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "732:5:33",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8465,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "795:7:33",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8470,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "760:6:33",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8468,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "613:7:33",
                            "valueSize": 1
                          }
                        ],
                        "id": 8504,
                        "nodeType": "InlineAssembly",
                        "src": "590:237:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8459,
                    "nodeType": "StructuredDocumentation",
                    "src": "56:78:33",
                    "text": " @dev Computes (base ^ exponent) % modulus over big numbers."
                  },
                  "id": 8506,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "modexp",
                  "nameLocation": "148:6:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8461,
                        "mutability": "mutable",
                        "name": "base",
                        "nameLocation": "177:4:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 8506,
                        "src": "164:17:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8460,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "164:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8463,
                        "mutability": "mutable",
                        "name": "exponent",
                        "nameLocation": "204:8:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 8506,
                        "src": "191:21:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8462,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "191:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8465,
                        "mutability": "mutable",
                        "name": "modulus",
                        "nameLocation": "235:7:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 8506,
                        "src": "222:20:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8464,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "222:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "154:94:33"
                  },
                  "returnParameters": {
                    "id": 8471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8468,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "277:7:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 8506,
                        "src": "272:12:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8467,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "272:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8470,
                        "mutability": "mutable",
                        "name": "output",
                        "nameLocation": "299:6:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 8506,
                        "src": "286:19:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8469,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "286:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "271:35:33"
                  },
                  "scope": 8507,
                  "src": "139:694:33",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 8508,
              "src": "25:810:33",
              "usedErrors": []
            }
          ],
          "src": "0:836:33"
        },
        "id": 33
      },
      "contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/algorithms/P256SHA256Algorithm.sol",
          "exportedSymbols": {
            "Algorithm": [
              7075
            ],
            "BytesUtils": [
              5017
            ],
            "EllipticCurve": [
              8456
            ],
            "P256SHA256Algorithm": [
              8613
            ]
          },
          "id": 8614,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8509,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:34"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/Algorithm.sol",
              "file": "./Algorithm.sol",
              "id": 8510,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8614,
              "sourceUnit": 7076,
              "src": "25:25:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/EllipticCurve.sol",
              "file": "./EllipticCurve.sol",
              "id": 8511,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8614,
              "sourceUnit": 8457,
              "src": "51:29:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../BytesUtils.sol",
              "id": 8512,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8614,
              "sourceUnit": 5018,
              "src": "81:27:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8513,
                    "name": "Algorithm",
                    "nameLocations": [
                      "142:9:34"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7075,
                    "src": "142:9:34"
                  },
                  "id": 8514,
                  "nodeType": "InheritanceSpecifier",
                  "src": "142:9:34"
                },
                {
                  "baseName": {
                    "id": 8515,
                    "name": "EllipticCurve",
                    "nameLocations": [
                      "153:13:34"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8456,
                    "src": "153:13:34"
                  },
                  "id": 8516,
                  "nodeType": "InheritanceSpecifier",
                  "src": "153:13:34"
                }
              ],
              "canonicalName": "P256SHA256Algorithm",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 8613,
              "linearizedBaseContracts": [
                8613,
                8456,
                7075
              ],
              "name": "P256SHA256Algorithm",
              "nameLocation": "119:19:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 8518,
                  "libraryName": {
                    "id": 8517,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "179:10:34"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "179:10:34"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "173:23:34"
                },
                {
                  "baseFunctions": [
                    7074
                  ],
                  "body": {
                    "id": 8543,
                    "nodeType": "Block",
                    "src": "595:171:34",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8533,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8523,
                                  "src": "666:4:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "id": 8532,
                                "name": "sha256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -22,
                                "src": "659:6:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 8534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "659:12:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 8536,
                                  "name": "signature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8525,
                                  "src": "704:9:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "id": 8535,
                                "name": "parseSignature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8578,
                                "src": "689:14:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$2_memory_ptr_$",
                                  "typeString": "function (bytes memory) pure returns (uint256[2] memory)"
                                }
                              },
                              "id": 8537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "689:25:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 8539,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8521,
                                  "src": "741:3:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "id": 8538,
                                "name": "parseKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8612,
                                "src": "732:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$2_memory_ptr_$",
                                  "typeString": "function (bytes memory) pure returns (uint256[2] memory)"
                                }
                              },
                              "id": 8540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "732:13:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                "typeString": "uint256[2] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                "typeString": "uint256[2] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                                "typeString": "uint256[2] memory"
                              }
                            ],
                            "id": 8531,
                            "name": "validateSignature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8455,
                            "src": "624:17:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256[2] memory,uint256[2] memory) pure returns (bool)"
                            }
                          },
                          "id": 8541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "624:135:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 8530,
                        "id": 8542,
                        "nodeType": "Return",
                        "src": "605:154:34"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8519,
                    "nodeType": "StructuredDocumentation",
                    "src": "202:237:34",
                    "text": " @dev Verifies a signature.\n @param key The public key to verify with.\n @param data The signed data to verify.\n @param signature The signature to verify.\n @return True iff the signature is valid."
                  },
                  "functionSelector": "de8f50a1",
                  "id": 8544,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "453:6:34",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8527,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "571:8:34"
                  },
                  "parameters": {
                    "id": 8526,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8521,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "484:3:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 8544,
                        "src": "469:18:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8520,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "469:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8523,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "512:4:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 8544,
                        "src": "497:19:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8522,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "497:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8525,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "541:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 8544,
                        "src": "526:24:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8524,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "526:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "459:97:34"
                  },
                  "returnParameters": {
                    "id": 8530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8529,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8544,
                        "src": "589:4:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8528,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "589:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "588:6:34"
                  },
                  "scope": 8613,
                  "src": "444:322:34",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8577,
                    "nodeType": "Block",
                    "src": "885:154:34",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 8554,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8546,
                                  "src": "903:4:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 8555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "908:6:34",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "903:11:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3634",
                                "id": 8556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "918:2:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "903:17:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c69642070323536207369676e6174757265206c656e677468",
                              "id": 8558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "922:31:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f4db4179b6b12b07a3e6afd09ae307d93537f5fd420df2f4d89b9e7e20b6a8a6",
                                "typeString": "literal_string \"Invalid p256 signature length\""
                              },
                              "value": "Invalid p256 signature length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f4db4179b6b12b07a3e6afd09ae307d93537f5fd420df2f4d89b9e7e20b6a8a6",
                                "typeString": "literal_string \"Invalid p256 signature length\""
                              }
                            ],
                            "id": 8553,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "895:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "895:59:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8560,
                        "nodeType": "ExpressionStatement",
                        "src": "895:59:34"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 8565,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "997:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8563,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8546,
                                      "src": "980:4:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 8564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "985:11:34",
                                    "memberName": "readBytes32",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4612,
                                    "src": "980:16:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "980:19:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 8562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "972:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8561,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "972:7:34",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "972:28:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "3332",
                                      "id": 8572,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1027:2:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8570,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8546,
                                      "src": "1010:4:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 8571,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1015:11:34",
                                    "memberName": "readBytes32",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4612,
                                    "src": "1010:16:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8573,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1010:20:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 8569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1002:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8568,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1002:7:34",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1002:29:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8575,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "971:61:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        "functionReturnParameters": 8552,
                        "id": 8576,
                        "nodeType": "Return",
                        "src": "964:68:34"
                      }
                    ]
                  },
                  "id": 8578,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseSignature",
                  "nameLocation": "781:14:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8546,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "809:4:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 8578,
                        "src": "796:17:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8545,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "796:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "795:19:34"
                  },
                  "returnParameters": {
                    "id": 8552,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8551,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8578,
                        "src": "862:17:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8548,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "862:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8550,
                          "length": {
                            "hexValue": "32",
                            "id": 8549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "870:1:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "862:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                            "typeString": "uint256[2]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "861:19:34"
                  },
                  "scope": 8613,
                  "src": "772:267:34",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8611,
                    "nodeType": "Block",
                    "src": "1152:148:34",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 8588,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8580,
                                  "src": "1170:4:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 8589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1175:6:34",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1170:11:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3638",
                                "id": 8590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1185:2:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_68_by_1",
                                  "typeString": "int_const 68"
                                },
                                "value": "68"
                              },
                              "src": "1170:17:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c69642070323536206b6579206c656e677468",
                              "id": 8592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1189:25:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_27aebb422726d9dacb6497ba4421df0cdeaf42405bd6cfb285d8371f2f1f07dc",
                                "typeString": "literal_string \"Invalid p256 key length\""
                              },
                              "value": "Invalid p256 key length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_27aebb422726d9dacb6497ba4421df0cdeaf42405bd6cfb285d8371f2f1f07dc",
                                "typeString": "literal_string \"Invalid p256 key length\""
                              }
                            ],
                            "id": 8587,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1162:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1162:53:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8594,
                        "nodeType": "ExpressionStatement",
                        "src": "1162:53:34"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "34",
                                      "id": 8599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1258:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8597,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8580,
                                      "src": "1241:4:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 8598,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1246:11:34",
                                    "memberName": "readBytes32",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4612,
                                    "src": "1241:16:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1241:19:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 8596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1233:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8595,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1233:7:34",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1233:28:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "3336",
                                      "id": 8606,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1288:2:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_36_by_1",
                                        "typeString": "int_const 36"
                                      },
                                      "value": "36"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_36_by_1",
                                        "typeString": "int_const 36"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8604,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8580,
                                      "src": "1271:4:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 8605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1276:11:34",
                                    "memberName": "readBytes32",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4612,
                                    "src": "1271:16:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8607,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1271:20:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 8603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1263:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8602,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1263:7:34",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1263:29:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8609,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1232:61:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        "functionReturnParameters": 8586,
                        "id": 8610,
                        "nodeType": "Return",
                        "src": "1225:68:34"
                      }
                    ]
                  },
                  "id": 8612,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseKey",
                  "nameLocation": "1054:8:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8580,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1076:4:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 8612,
                        "src": "1063:17:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8579,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1063:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1062:19:34"
                  },
                  "returnParameters": {
                    "id": 8586,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8585,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8612,
                        "src": "1129:17:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8582,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1129:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8584,
                          "length": {
                            "hexValue": "32",
                            "id": 8583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1137:1:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "1129:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                            "typeString": "uint256[2]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1128:19:34"
                  },
                  "scope": 8613,
                  "src": "1045:255:34",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 8614,
              "src": "110:1192:34",
              "usedErrors": []
            }
          ],
          "src": "0:1303:34"
        },
        "id": 34
      },
      "contracts/dnssec-oracle/algorithms/RSASHA1Algorithm.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/algorithms/RSASHA1Algorithm.sol",
          "exportedSymbols": {
            "Algorithm": [
              7075
            ],
            "BytesUtils": [
              5017
            ],
            "ModexpPrecompile": [
              8507
            ],
            "RSASHA1Algorithm": [
              8745
            ],
            "RSAVerify": [
              8902
            ],
            "SHA1": [
              537
            ]
          },
          "id": 8746,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8615,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:35"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/Algorithm.sol",
              "file": "./Algorithm.sol",
              "id": 8616,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8746,
              "sourceUnit": 7076,
              "src": "25:25:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../BytesUtils.sol",
              "id": 8617,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8746,
              "sourceUnit": 5018,
              "src": "51:27:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/RSAVerify.sol",
              "file": "./RSAVerify.sol",
              "id": 8618,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8746,
              "sourceUnit": 8903,
              "src": "79:25:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ensdomains/solsha1/contracts/SHA1.sol",
              "file": "@ensdomains/solsha1/contracts/SHA1.sol",
              "id": 8619,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8746,
              "sourceUnit": 538,
              "src": "105:48:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8621,
                    "name": "Algorithm",
                    "nameLocations": [
                      "241:9:35"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7075,
                    "src": "241:9:35"
                  },
                  "id": 8622,
                  "nodeType": "InheritanceSpecifier",
                  "src": "241:9:35"
                }
              ],
              "canonicalName": "RSASHA1Algorithm",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 8620,
                "nodeType": "StructuredDocumentation",
                "src": "155:56:35",
                "text": " @dev Implements the DNSSEC RSASHA1 algorithm."
              },
              "fullyImplemented": true,
              "id": 8745,
              "linearizedBaseContracts": [
                8745,
                7075
              ],
              "name": "RSASHA1Algorithm",
              "nameLocation": "221:16:35",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 8624,
                  "libraryName": {
                    "id": 8623,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "263:10:35"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "263:10:35"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "257:23:35"
                },
                {
                  "baseFunctions": [
                    7074
                  ],
                  "body": {
                    "id": 8743,
                    "nodeType": "Block",
                    "src": "431:895:35",
                    "statements": [
                      {
                        "assignments": [
                          8637
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8637,
                            "mutability": "mutable",
                            "name": "exponent",
                            "nameLocation": "454:8:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 8743,
                            "src": "441:21:35",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 8636,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "441:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8638,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "441:21:35"
                      },
                      {
                        "assignments": [
                          8640
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8640,
                            "mutability": "mutable",
                            "name": "modulus",
                            "nameLocation": "485:7:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 8743,
                            "src": "472:20:35",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 8639,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "472:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8641,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "472:20:35"
                      },
                      {
                        "assignments": [
                          8643
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8643,
                            "mutability": "mutable",
                            "name": "exponentLen",
                            "nameLocation": "510:11:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 8743,
                            "src": "503:18:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 8642,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "503:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8651,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "34",
                                  "id": 8648,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "545:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  }
                                ],
                                "expression": {
                                  "id": 8646,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8626,
                                  "src": "531:3:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 8647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "535:9:35",
                                "memberName": "readUint8",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4552,
                                "src": "531:13:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                }
                              },
                              "id": 8649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "531:16:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 8645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "524:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": {
                              "id": 8644,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "524:6:35",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "524:24:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "503:45:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 8654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8652,
                            "name": "exponentLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8643,
                            "src": "562:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "577:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "562:16:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 8709,
                          "nodeType": "Block",
                          "src": "781:240:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 8684,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8679,
                                  "name": "exponentLen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8643,
                                  "src": "795:11:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "35",
                                      "id": 8682,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "824:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8680,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8626,
                                      "src": "809:3:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8681,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "813:10:35",
                                    "memberName": "readUint16",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4572,
                                    "src": "809:14:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                                    }
                                  },
                                  "id": 8683,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "809:17:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "795:31:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 8685,
                              "nodeType": "ExpressionStatement",
                              "src": "795:31:35"
                            },
                            {
                              "expression": {
                                "id": 8692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8686,
                                  "name": "exponent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8637,
                                  "src": "840:8:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "37",
                                      "id": 8689,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "865:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      "value": "7"
                                    },
                                    {
                                      "id": 8690,
                                      "name": "exponentLen",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8643,
                                      "src": "868:11:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8687,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8626,
                                      "src": "851:3:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8688,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "855:9:35",
                                    "memberName": "substring",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4745,
                                    "src": "851:13:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8691,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "851:29:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "840:40:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 8693,
                              "nodeType": "ExpressionStatement",
                              "src": "840:40:35"
                            },
                            {
                              "expression": {
                                "id": 8707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8694,
                                  "name": "modulus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8640,
                                  "src": "894:7:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "id": 8699,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8697,
                                        "name": "exponentLen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8643,
                                        "src": "935:11:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "37",
                                        "id": 8698,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "949:1:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_7_by_1",
                                          "typeString": "int_const 7"
                                        },
                                        "value": "7"
                                      },
                                      "src": "935:15:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8705,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 8703,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 8700,
                                            "name": "key",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8626,
                                            "src": "968:3:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_calldata_ptr",
                                              "typeString": "bytes calldata"
                                            }
                                          },
                                          "id": 8701,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "972:6:35",
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "src": "968:10:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 8702,
                                          "name": "exponentLen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8643,
                                          "src": "981:11:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        "src": "968:24:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "37",
                                        "id": 8704,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "995:1:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_7_by_1",
                                          "typeString": "int_const 7"
                                        },
                                        "value": "7"
                                      },
                                      "src": "968:28:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8695,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8626,
                                      "src": "904:3:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8696,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "908:9:35",
                                    "memberName": "substring",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4745,
                                    "src": "904:13:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8706,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "904:106:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "894:116:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 8708,
                              "nodeType": "ExpressionStatement",
                              "src": "894:116:35"
                            }
                          ]
                        },
                        "id": 8710,
                        "nodeType": "IfStatement",
                        "src": "558:463:35",
                        "trueBody": {
                          "id": 8678,
                          "nodeType": "Block",
                          "src": "580:195:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 8661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8655,
                                  "name": "exponent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8637,
                                  "src": "594:8:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "35",
                                      "id": 8658,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "619:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    },
                                    {
                                      "id": 8659,
                                      "name": "exponentLen",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8643,
                                      "src": "622:11:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8656,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8626,
                                      "src": "605:3:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "609:9:35",
                                    "memberName": "substring",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4745,
                                    "src": "605:13:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8660,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "605:29:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "594:40:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 8662,
                              "nodeType": "ExpressionStatement",
                              "src": "594:40:35"
                            },
                            {
                              "expression": {
                                "id": 8676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8663,
                                  "name": "modulus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8640,
                                  "src": "648:7:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "id": 8668,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8666,
                                        "name": "exponentLen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8643,
                                        "src": "689:11:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "35",
                                        "id": 8667,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "703:1:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_5_by_1",
                                          "typeString": "int_const 5"
                                        },
                                        "value": "5"
                                      },
                                      "src": "689:15:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8674,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 8672,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 8669,
                                            "name": "key",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8626,
                                            "src": "722:3:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_calldata_ptr",
                                              "typeString": "bytes calldata"
                                            }
                                          },
                                          "id": 8670,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "726:6:35",
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "src": "722:10:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 8671,
                                          "name": "exponentLen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8643,
                                          "src": "735:11:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        "src": "722:24:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "35",
                                        "id": 8673,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "749:1:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_5_by_1",
                                          "typeString": "int_const 5"
                                        },
                                        "value": "5"
                                      },
                                      "src": "722:28:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8664,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8626,
                                      "src": "658:3:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8665,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "662:9:35",
                                    "memberName": "substring",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4745,
                                    "src": "658:13:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "658:106:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "648:116:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 8677,
                              "nodeType": "ExpressionStatement",
                              "src": "648:116:35"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          8712
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8712,
                            "mutability": "mutable",
                            "name": "ok",
                            "nameLocation": "1086:2:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 8743,
                            "src": "1081:7:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 8711,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1081:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8713,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1081:7:35"
                      },
                      {
                        "assignments": [
                          8715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8715,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "1111:6:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 8743,
                            "src": "1098:19:35",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 8714,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1098:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8716,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1098:19:35"
                      },
                      {
                        "expression": {
                          "id": 8726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 8717,
                                "name": "ok",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8712,
                                "src": "1128:2:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "id": 8718,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8715,
                                "src": "1132:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 8719,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1127:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8722,
                                "name": "modulus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8640,
                                "src": "1163:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 8723,
                                "name": "exponent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8637,
                                "src": "1172:8:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 8724,
                                "name": "sig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8630,
                                "src": "1182:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "expression": {
                                "id": 8720,
                                "name": "RSAVerify",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8902,
                                "src": "1142:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_RSAVerify_$8902_$",
                                  "typeString": "type(library RSAVerify)"
                                }
                              },
                              "id": 8721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1152:10:35",
                              "memberName": "rsarecover",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8901,
                              "src": "1142:20:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"
                              }
                            },
                            "id": 8725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1142:44:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "1127:59:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8727,
                        "nodeType": "ExpressionStatement",
                        "src": "1127:59:35"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8728,
                            "name": "ok",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8712,
                            "src": "1256:2:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            },
                            "id": 8740,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 8731,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8628,
                                  "src": "1272:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "id": 8729,
                                  "name": "SHA1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 537,
                                  "src": "1262:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SHA1_$537_$",
                                    "typeString": "type(library SHA1)"
                                  }
                                },
                                "id": 8730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1267:4:35",
                                "memberName": "sha1",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 536,
                                "src": "1262:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes20_$",
                                  "typeString": "function (bytes memory) pure returns (bytes20)"
                                }
                              },
                              "id": 8732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1262:15:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8738,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 8735,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8715,
                                      "src": "1300:6:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 8736,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1307:6:35",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "1300:13:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "3230",
                                    "id": 8737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1316:2:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "20"
                                  },
                                  "src": "1300:18:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8733,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8715,
                                  "src": "1281:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 8734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1288:11:35",
                                "memberName": "readBytes20",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4632,
                                "src": "1281:18:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes20_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (bytes20)"
                                }
                              },
                              "id": 8739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1281:38:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            },
                            "src": "1262:57:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1256:63:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 8635,
                        "id": 8742,
                        "nodeType": "Return",
                        "src": "1249:70:35"
                      }
                    ]
                  },
                  "functionSelector": "de8f50a1",
                  "id": 8744,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "295:6:35",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8632,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "407:8:35"
                  },
                  "parameters": {
                    "id": 8631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8626,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "326:3:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 8744,
                        "src": "311:18:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8625,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "311:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8628,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "354:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 8744,
                        "src": "339:19:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8627,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "339:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8630,
                        "mutability": "mutable",
                        "name": "sig",
                        "nameLocation": "383:3:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 8744,
                        "src": "368:18:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8629,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "368:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "301:91:35"
                  },
                  "returnParameters": {
                    "id": 8635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8634,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8744,
                        "src": "425:4:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8633,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "425:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "424:6:35"
                  },
                  "scope": 8745,
                  "src": "286:1040:35",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 8746,
              "src": "212:1116:35",
              "usedErrors": []
            }
          ],
          "src": "0:1329:35"
        },
        "id": 35
      },
      "contracts/dnssec-oracle/algorithms/RSASHA256Algorithm.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/algorithms/RSASHA256Algorithm.sol",
          "exportedSymbols": {
            "Algorithm": [
              7075
            ],
            "BytesUtils": [
              5017
            ],
            "ModexpPrecompile": [
              8507
            ],
            "RSASHA256Algorithm": [
              8875
            ],
            "RSAVerify": [
              8902
            ]
          },
          "id": 8876,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8747,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:36"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/Algorithm.sol",
              "file": "./Algorithm.sol",
              "id": 8748,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8876,
              "sourceUnit": 7076,
              "src": "25:25:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../BytesUtils.sol",
              "id": 8749,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8876,
              "sourceUnit": 5018,
              "src": "51:27:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/RSAVerify.sol",
              "file": "./RSAVerify.sol",
              "id": 8750,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8876,
              "sourceUnit": 8903,
              "src": "79:25:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8752,
                    "name": "Algorithm",
                    "nameLocations": [
                      "196:9:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7075,
                    "src": "196:9:36"
                  },
                  "id": 8753,
                  "nodeType": "InheritanceSpecifier",
                  "src": "196:9:36"
                }
              ],
              "canonicalName": "RSASHA256Algorithm",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 8751,
                "nodeType": "StructuredDocumentation",
                "src": "106:58:36",
                "text": " @dev Implements the DNSSEC RSASHA256 algorithm."
              },
              "fullyImplemented": true,
              "id": 8875,
              "linearizedBaseContracts": [
                8875,
                7075
              ],
              "name": "RSASHA256Algorithm",
              "nameLocation": "174:18:36",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 8755,
                  "libraryName": {
                    "id": 8754,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "218:10:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "218:10:36"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "212:23:36"
                },
                {
                  "baseFunctions": [
                    7074
                  ],
                  "body": {
                    "id": 8873,
                    "nodeType": "Block",
                    "src": "386:892:36",
                    "statements": [
                      {
                        "assignments": [
                          8768
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8768,
                            "mutability": "mutable",
                            "name": "exponent",
                            "nameLocation": "409:8:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 8873,
                            "src": "396:21:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 8767,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "396:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8769,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "396:21:36"
                      },
                      {
                        "assignments": [
                          8771
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8771,
                            "mutability": "mutable",
                            "name": "modulus",
                            "nameLocation": "440:7:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 8873,
                            "src": "427:20:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 8770,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "427:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8772,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "427:20:36"
                      },
                      {
                        "assignments": [
                          8774
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8774,
                            "mutability": "mutable",
                            "name": "exponentLen",
                            "nameLocation": "465:11:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 8873,
                            "src": "458:18:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 8773,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "458:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8782,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "34",
                                  "id": 8779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "500:1:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  }
                                ],
                                "expression": {
                                  "id": 8777,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8757,
                                  "src": "486:3:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 8778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "490:9:36",
                                "memberName": "readUint8",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4552,
                                "src": "486:13:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                }
                              },
                              "id": 8780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "486:16:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 8776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "479:6:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": {
                              "id": 8775,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "479:6:36",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "479:24:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "458:45:36"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 8785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8783,
                            "name": "exponentLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8774,
                            "src": "517:11:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "532:1:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "517:16:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 8840,
                          "nodeType": "Block",
                          "src": "736:240:36",
                          "statements": [
                            {
                              "expression": {
                                "id": 8815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8810,
                                  "name": "exponentLen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8774,
                                  "src": "750:11:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "35",
                                      "id": 8813,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "779:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8811,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8757,
                                      "src": "764:3:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "768:10:36",
                                    "memberName": "readUint16",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4572,
                                    "src": "764:14:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                                    }
                                  },
                                  "id": 8814,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "764:17:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "750:31:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 8816,
                              "nodeType": "ExpressionStatement",
                              "src": "750:31:36"
                            },
                            {
                              "expression": {
                                "id": 8823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8817,
                                  "name": "exponent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8768,
                                  "src": "795:8:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "37",
                                      "id": 8820,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "820:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      "value": "7"
                                    },
                                    {
                                      "id": 8821,
                                      "name": "exponentLen",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8774,
                                      "src": "823:11:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8818,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8757,
                                      "src": "806:3:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8819,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "810:9:36",
                                    "memberName": "substring",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4745,
                                    "src": "806:13:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8822,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "806:29:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "795:40:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 8824,
                              "nodeType": "ExpressionStatement",
                              "src": "795:40:36"
                            },
                            {
                              "expression": {
                                "id": 8838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8825,
                                  "name": "modulus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8771,
                                  "src": "849:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "id": 8830,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8828,
                                        "name": "exponentLen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8774,
                                        "src": "890:11:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "37",
                                        "id": 8829,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "904:1:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_7_by_1",
                                          "typeString": "int_const 7"
                                        },
                                        "value": "7"
                                      },
                                      "src": "890:15:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8836,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 8834,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 8831,
                                            "name": "key",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8757,
                                            "src": "923:3:36",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_calldata_ptr",
                                              "typeString": "bytes calldata"
                                            }
                                          },
                                          "id": 8832,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "927:6:36",
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "src": "923:10:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 8833,
                                          "name": "exponentLen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8774,
                                          "src": "936:11:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        "src": "923:24:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "37",
                                        "id": 8835,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "950:1:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_7_by_1",
                                          "typeString": "int_const 7"
                                        },
                                        "value": "7"
                                      },
                                      "src": "923:28:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8826,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8757,
                                      "src": "859:3:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8827,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "863:9:36",
                                    "memberName": "substring",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4745,
                                    "src": "859:13:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "859:106:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "849:116:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 8839,
                              "nodeType": "ExpressionStatement",
                              "src": "849:116:36"
                            }
                          ]
                        },
                        "id": 8841,
                        "nodeType": "IfStatement",
                        "src": "513:463:36",
                        "trueBody": {
                          "id": 8809,
                          "nodeType": "Block",
                          "src": "535:195:36",
                          "statements": [
                            {
                              "expression": {
                                "id": 8792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8786,
                                  "name": "exponent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8768,
                                  "src": "549:8:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "35",
                                      "id": 8789,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "574:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    },
                                    {
                                      "id": 8790,
                                      "name": "exponentLen",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8774,
                                      "src": "577:11:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8787,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8757,
                                      "src": "560:3:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8788,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "564:9:36",
                                    "memberName": "substring",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4745,
                                    "src": "560:13:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8791,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "560:29:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "549:40:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 8793,
                              "nodeType": "ExpressionStatement",
                              "src": "549:40:36"
                            },
                            {
                              "expression": {
                                "id": 8807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8794,
                                  "name": "modulus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8771,
                                  "src": "603:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "id": 8799,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8797,
                                        "name": "exponentLen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8774,
                                        "src": "644:11:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "35",
                                        "id": 8798,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "658:1:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_5_by_1",
                                          "typeString": "int_const 5"
                                        },
                                        "value": "5"
                                      },
                                      "src": "644:15:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8805,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 8803,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 8800,
                                            "name": "key",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8757,
                                            "src": "677:3:36",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_calldata_ptr",
                                              "typeString": "bytes calldata"
                                            }
                                          },
                                          "id": 8801,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "681:6:36",
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "src": "677:10:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 8802,
                                          "name": "exponentLen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8774,
                                          "src": "690:11:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        "src": "677:24:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "35",
                                        "id": 8804,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "704:1:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_5_by_1",
                                          "typeString": "int_const 5"
                                        },
                                        "value": "5"
                                      },
                                      "src": "677:28:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8795,
                                      "name": "key",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8757,
                                      "src": "613:3:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 8796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "617:9:36",
                                    "memberName": "substring",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4745,
                                    "src": "613:13:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8806,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "613:106:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "603:116:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 8808,
                              "nodeType": "ExpressionStatement",
                              "src": "603:116:36"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          8843
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8843,
                            "mutability": "mutable",
                            "name": "ok",
                            "nameLocation": "1041:2:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 8873,
                            "src": "1036:7:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 8842,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1036:4:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8844,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1036:7:36"
                      },
                      {
                        "assignments": [
                          8846
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8846,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "1066:6:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 8873,
                            "src": "1053:19:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 8845,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1053:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8847,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1053:19:36"
                      },
                      {
                        "expression": {
                          "id": 8857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 8848,
                                "name": "ok",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8843,
                                "src": "1083:2:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "id": 8849,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8846,
                                "src": "1087:6:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 8850,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1082:12:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8853,
                                "name": "modulus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8771,
                                "src": "1118:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 8854,
                                "name": "exponent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8768,
                                "src": "1127:8:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 8855,
                                "name": "sig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8761,
                                "src": "1137:3:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "expression": {
                                "id": 8851,
                                "name": "RSAVerify",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8902,
                                "src": "1097:9:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_RSAVerify_$8902_$",
                                  "typeString": "type(library RSAVerify)"
                                }
                              },
                              "id": 8852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1107:10:36",
                              "memberName": "rsarecover",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8901,
                              "src": "1097:20:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"
                              }
                            },
                            "id": 8856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1097:44:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "1082:59:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8858,
                        "nodeType": "ExpressionStatement",
                        "src": "1082:59:36"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8859,
                            "name": "ok",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8843,
                            "src": "1211:2:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 8870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 8861,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8759,
                                  "src": "1224:4:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "id": 8860,
                                "name": "sha256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -22,
                                "src": "1217:6:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 8862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1217:12:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 8865,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8846,
                                      "src": "1252:6:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 8866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1259:6:36",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "1252:13:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "3332",
                                    "id": 8867,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1268:2:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  },
                                  "src": "1252:18:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8863,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8846,
                                  "src": "1233:6:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 8864,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1240:11:36",
                                "memberName": "readBytes32",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4612,
                                "src": "1233:18:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                }
                              },
                              "id": 8869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1233:38:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "src": "1217:54:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1211:60:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 8766,
                        "id": 8872,
                        "nodeType": "Return",
                        "src": "1204:67:36"
                      }
                    ]
                  },
                  "functionSelector": "de8f50a1",
                  "id": 8874,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "250:6:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8763,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "362:8:36"
                  },
                  "parameters": {
                    "id": 8762,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8757,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "281:3:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 8874,
                        "src": "266:18:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8756,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "266:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8759,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "309:4:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 8874,
                        "src": "294:19:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8758,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "294:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8761,
                        "mutability": "mutable",
                        "name": "sig",
                        "nameLocation": "338:3:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 8874,
                        "src": "323:18:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8760,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "323:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "256:91:36"
                  },
                  "returnParameters": {
                    "id": 8766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8765,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8874,
                        "src": "380:4:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8764,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "380:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "379:6:36"
                  },
                  "scope": 8875,
                  "src": "241:1037:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 8876,
              "src": "165:1115:36",
              "usedErrors": []
            }
          ],
          "src": "0:1281:36"
        },
        "id": 36
      },
      "contracts/dnssec-oracle/algorithms/RSAVerify.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/algorithms/RSAVerify.sol",
          "exportedSymbols": {
            "BytesUtils": [
              5017
            ],
            "ModexpPrecompile": [
              8507
            ],
            "RSAVerify": [
              8902
            ]
          },
          "id": 8903,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8877,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:37"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../BytesUtils.sol",
              "id": 8878,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8903,
              "sourceUnit": 5018,
              "src": "25:27:37",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/algorithms/ModexpPrecompile.sol",
              "file": "./ModexpPrecompile.sol",
              "id": 8879,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8903,
              "sourceUnit": 8508,
              "src": "53:32:37",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "RSAVerify",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 8902,
              "linearizedBaseContracts": [
                8902
              ],
              "name": "RSAVerify",
              "nameLocation": "95:9:37",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 8900,
                    "nodeType": "Block",
                    "src": "524:56:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8895,
                              "name": "S",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8886,
                              "src": "565:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 8896,
                              "name": "E",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8884,
                              "src": "568:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 8897,
                              "name": "N",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8882,
                              "src": "571:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "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"
                              }
                            ],
                            "expression": {
                              "id": 8893,
                              "name": "ModexpPrecompile",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8507,
                              "src": "541:16:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ModexpPrecompile_$8507_$",
                                "typeString": "type(library ModexpPrecompile)"
                              }
                            },
                            "id": 8894,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "558:6:37",
                            "memberName": "modexp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8506,
                            "src": "541:23:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 8898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "541:32:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 8892,
                        "id": 8899,
                        "nodeType": "Return",
                        "src": "534:39:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8880,
                    "nodeType": "StructuredDocumentation",
                    "src": "111:267:37",
                    "text": " @dev Recovers the input data from an RSA signature, returning the result in S.\n @param N The RSA public modulus.\n @param E The RSA public exponent.\n @param S The signature to recover.\n @return True if the recovery succeeded."
                  },
                  "id": 8901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rsarecover",
                  "nameLocation": "392:10:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8887,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8882,
                        "mutability": "mutable",
                        "name": "N",
                        "nameLocation": "425:1:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "412:14:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8881,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "412:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8884,
                        "mutability": "mutable",
                        "name": "E",
                        "nameLocation": "449:1:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "436:14:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8883,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "436:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8886,
                        "mutability": "mutable",
                        "name": "S",
                        "nameLocation": "473:1:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "460:14:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8885,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "460:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "402:78:37"
                  },
                  "returnParameters": {
                    "id": 8892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8889,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "504:4:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8888,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "504:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8891,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "510:12:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8890,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "510:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "503:20:37"
                  },
                  "scope": 8902,
                  "src": "383:197:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 8903,
              "src": "87:495:37",
              "usedErrors": []
            }
          ],
          "src": "0:583:37"
        },
        "id": 37
      },
      "contracts/dnssec-oracle/digests/Digest.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/digests/Digest.sol",
          "exportedSymbols": {
            "Digest": [
              8916
            ]
          },
          "id": 8917,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8904,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:38"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Digest",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 8905,
                "nodeType": "StructuredDocumentation",
                "src": "25:72:38",
                "text": " @dev An interface for contracts implementing a DNSSEC digest."
              },
              "fullyImplemented": false,
              "id": 8916,
              "linearizedBaseContracts": [
                8916
              ],
              "name": "Digest",
              "nameLocation": "108:6:38",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 8906,
                    "nodeType": "StructuredDocumentation",
                    "src": "121:207:38",
                    "text": " @dev Verifies a cryptographic hash.\n @param data The data to hash.\n @param hash The hash to compare to.\n @return True iff the hashed data matches the provided hash value."
                  },
                  "functionSelector": "f7e83aee",
                  "id": 8915,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "342:6:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8911,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8908,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "364:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 8915,
                        "src": "349:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8907,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "349:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8910,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "385:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 8915,
                        "src": "370:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8909,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "370:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "348:42:38"
                  },
                  "returnParameters": {
                    "id": 8914,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8913,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8915,
                        "src": "454:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8912,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "454:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "453:6:38"
                  },
                  "scope": 8916,
                  "src": "333:127:38",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "external"
                }
              ],
              "scope": 8917,
              "src": "98:364:38",
              "usedErrors": []
            }
          ],
          "src": "0:463:38"
        },
        "id": 38
      },
      "contracts/dnssec-oracle/digests/DummyDigest.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/digests/DummyDigest.sol",
          "exportedSymbols": {
            "Digest": [
              8916
            ],
            "DummyDigest": [
              8936
            ]
          },
          "id": 8937,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8918,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:39"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/digests/Digest.sol",
              "file": "./Digest.sol",
              "id": 8919,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8937,
              "sourceUnit": 8917,
              "src": "25:22:39",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8921,
                    "name": "Digest",
                    "nameLocations": [
                      "161:6:39"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8916,
                    "src": "161:6:39"
                  },
                  "id": 8922,
                  "nodeType": "InheritanceSpecifier",
                  "src": "161:6:39"
                }
              ],
              "canonicalName": "DummyDigest",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 8920,
                "nodeType": "StructuredDocumentation",
                "src": "49:87:39",
                "text": " @dev Implements a dummy DNSSEC digest that approves all hashes, for testing."
              },
              "fullyImplemented": true,
              "id": 8936,
              "linearizedBaseContracts": [
                8936,
                8916
              ],
              "name": "DummyDigest",
              "nameLocation": "146:11:39",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    8915
                  ],
                  "body": {
                    "id": 8934,
                    "nodeType": "Block",
                    "src": "296:28:39",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 8932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "313:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 8931,
                        "id": 8933,
                        "nodeType": "Return",
                        "src": "306:11:39"
                      }
                    ]
                  },
                  "functionSelector": "f7e83aee",
                  "id": 8935,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "183:6:39",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8928,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "260:8:39"
                  },
                  "parameters": {
                    "id": 8927,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8924,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8935,
                        "src": "190:14:39",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8923,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "190:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8926,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8935,
                        "src": "206:14:39",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8925,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "206:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "189:32:39"
                  },
                  "returnParameters": {
                    "id": 8931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8930,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8935,
                        "src": "286:4:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8929,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "286:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "285:6:39"
                  },
                  "scope": 8936,
                  "src": "174:150:39",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 8937,
              "src": "137:189:39",
              "usedErrors": []
            }
          ],
          "src": "0:327:39"
        },
        "id": 39
      },
      "contracts/dnssec-oracle/digests/SHA1Digest.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/digests/SHA1Digest.sol",
          "exportedSymbols": {
            "BytesUtils": [
              5017
            ],
            "Digest": [
              8916
            ],
            "SHA1": [
              537
            ],
            "SHA1Digest": [
              8984
            ]
          },
          "id": 8985,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8938,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:40"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/digests/Digest.sol",
              "file": "./Digest.sol",
              "id": 8939,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8985,
              "sourceUnit": 8917,
              "src": "25:22:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../BytesUtils.sol",
              "id": 8940,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8985,
              "sourceUnit": 5018,
              "src": "48:27:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ensdomains/solsha1/contracts/SHA1.sol",
              "file": "@ensdomains/solsha1/contracts/SHA1.sol",
              "id": 8941,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8985,
              "sourceUnit": 538,
              "src": "76:48:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8943,
                    "name": "Digest",
                    "nameLocations": [
                      "200:6:40"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8916,
                    "src": "200:6:40"
                  },
                  "id": 8944,
                  "nodeType": "InheritanceSpecifier",
                  "src": "200:6:40"
                }
              ],
              "canonicalName": "SHA1Digest",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 8942,
                "nodeType": "StructuredDocumentation",
                "src": "126:50:40",
                "text": " @dev Implements the DNSSEC SHA1 digest."
              },
              "fullyImplemented": true,
              "id": 8984,
              "linearizedBaseContracts": [
                8984,
                8916
              ],
              "name": "SHA1Digest",
              "nameLocation": "186:10:40",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 8946,
                  "libraryName": {
                    "id": 8945,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "219:10:40"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "219:10:40"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "213:23:40"
                },
                {
                  "baseFunctions": [
                    8915
                  ],
                  "body": {
                    "id": 8982,
                    "nodeType": "Block",
                    "src": "374:200:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 8957,
                                  "name": "hash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8950,
                                  "src": "392:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 8958,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "397:6:40",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "392:11:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3230",
                                "id": 8959,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "407:2:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              },
                              "src": "392:17:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c696420736861312068617368206c656e677468",
                              "id": 8961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "411:26:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9f91942562eaedb97d293286665fd857d2506d48f8db6e8d72947fb7bd5840be",
                                "typeString": "literal_string \"Invalid sha1 hash length\""
                              },
                              "value": "Invalid sha1 hash length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9f91942562eaedb97d293286665fd857d2506d48f8db6e8d72947fb7bd5840be",
                                "typeString": "literal_string \"Invalid sha1 hash length\""
                              }
                            ],
                            "id": 8956,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "384:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "384:54:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8963,
                        "nodeType": "ExpressionStatement",
                        "src": "384:54:40"
                      },
                      {
                        "assignments": [
                          8965
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8965,
                            "mutability": "mutable",
                            "name": "expected",
                            "nameLocation": "456:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8982,
                            "src": "448:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 8964,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "448:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8970,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 8968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "484:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 8966,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8950,
                              "src": "467:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 8967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "472:11:40",
                            "memberName": "readBytes20",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4632,
                            "src": "467:16:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes20_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes20)"
                            }
                          },
                          "id": 8969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "467:19:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes20",
                            "typeString": "bytes20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "448:38:40"
                      },
                      {
                        "assignments": [
                          8972
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8972,
                            "mutability": "mutable",
                            "name": "computed",
                            "nameLocation": "504:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8982,
                            "src": "496:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            },
                            "typeName": {
                              "id": 8971,
                              "name": "bytes20",
                              "nodeType": "ElementaryTypeName",
                              "src": "496:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8977,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8975,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8948,
                              "src": "525:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 8973,
                              "name": "SHA1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 537,
                              "src": "515:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_SHA1_$537_$",
                                "typeString": "type(library SHA1)"
                              }
                            },
                            "id": 8974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "520:4:40",
                            "memberName": "sha1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 536,
                            "src": "515:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes20_$",
                              "typeString": "function (bytes memory) pure returns (bytes20)"
                            }
                          },
                          "id": 8976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "515:15:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes20",
                            "typeString": "bytes20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "496:34:40"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 8980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8978,
                            "name": "expected",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8965,
                            "src": "547:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 8979,
                            "name": "computed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8972,
                            "src": "559:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          },
                          "src": "547:20:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 8955,
                        "id": 8981,
                        "nodeType": "Return",
                        "src": "540:27:40"
                      }
                    ]
                  },
                  "functionSelector": "f7e83aee",
                  "id": 8983,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "251:6:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8952,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "338:8:40"
                  },
                  "parameters": {
                    "id": 8951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8948,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "273:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8983,
                        "src": "258:19:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8947,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "258:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8950,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "294:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8983,
                        "src": "279:19:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8949,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "279:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "257:42:40"
                  },
                  "returnParameters": {
                    "id": 8955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8954,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8983,
                        "src": "364:4:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8953,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "364:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "363:6:40"
                  },
                  "scope": 8984,
                  "src": "242:332:40",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 8985,
              "src": "177:399:40",
              "usedErrors": []
            }
          ],
          "src": "0:577:40"
        },
        "id": 40
      },
      "contracts/dnssec-oracle/digests/SHA256Digest.sol": {
        "ast": {
          "absolutePath": "contracts/dnssec-oracle/digests/SHA256Digest.sol",
          "exportedSymbols": {
            "BytesUtils": [
              5017
            ],
            "Digest": [
              8916
            ],
            "SHA256Digest": [
              9022
            ]
          },
          "id": 9023,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8986,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:41"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/digests/Digest.sol",
              "file": "./Digest.sol",
              "id": 8987,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9023,
              "sourceUnit": 8917,
              "src": "25:22:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../BytesUtils.sol",
              "id": 8988,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9023,
              "sourceUnit": 5018,
              "src": "48:27:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8990,
                    "name": "Digest",
                    "nameLocations": [
                      "155:6:41"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8916,
                    "src": "155:6:41"
                  },
                  "id": 8991,
                  "nodeType": "InheritanceSpecifier",
                  "src": "155:6:41"
                }
              ],
              "canonicalName": "SHA256Digest",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 8989,
                "nodeType": "StructuredDocumentation",
                "src": "77:52:41",
                "text": " @dev Implements the DNSSEC SHA256 digest."
              },
              "fullyImplemented": true,
              "id": 9022,
              "linearizedBaseContracts": [
                9022,
                8916
              ],
              "name": "SHA256Digest",
              "nameLocation": "139:12:41",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 8993,
                  "libraryName": {
                    "id": 8992,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "174:10:41"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "174:10:41"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "168:23:41"
                },
                {
                  "baseFunctions": [
                    8915
                  ],
                  "body": {
                    "id": 9020,
                    "nodeType": "Block",
                    "src": "329:125:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 9004,
                                  "name": "hash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8997,
                                  "src": "347:4:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 9005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "352:6:41",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "347:11:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3332",
                                "id": 9006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "362:2:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "347:17:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964207368613235362068617368206c656e677468",
                              "id": 9008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "366:28:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ce42e9cf504331e2152a55e3e3f9b91901c3b1835c33cad24b208b6714eed29a",
                                "typeString": "literal_string \"Invalid sha256 hash length\""
                              },
                              "value": "Invalid sha256 hash length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ce42e9cf504331e2152a55e3e3f9b91901c3b1835c33cad24b208b6714eed29a",
                                "typeString": "literal_string \"Invalid sha256 hash length\""
                              }
                            ],
                            "id": 9003,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "339:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "339:56:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9010,
                        "nodeType": "ExpressionStatement",
                        "src": "339:56:41"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 9018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 9012,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8995,
                                "src": "419:4:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "id": 9011,
                              "name": "sha256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -22,
                              "src": "412:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 9013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "412:12:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 9016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "445:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 9014,
                                "name": "hash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8997,
                                "src": "428:4:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "id": 9015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "433:11:41",
                              "memberName": "readBytes32",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4612,
                              "src": "428:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 9017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "428:19:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "412:35:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9002,
                        "id": 9019,
                        "nodeType": "Return",
                        "src": "405:42:41"
                      }
                    ]
                  },
                  "functionSelector": "f7e83aee",
                  "id": 9021,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "206:6:41",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8999,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "293:8:41"
                  },
                  "parameters": {
                    "id": 8998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8995,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "228:4:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 9021,
                        "src": "213:19:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8994,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "213:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8997,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "249:4:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 9021,
                        "src": "234:19:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8996,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "234:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "212:42:41"
                  },
                  "returnParameters": {
                    "id": 9002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9001,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9021,
                        "src": "319:4:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9000,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "319:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "318:6:41"
                  },
                  "scope": 9022,
                  "src": "197:257:41",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9023,
              "src": "130:326:41",
              "usedErrors": []
            }
          ],
          "src": "0:457:41"
        },
        "id": 41
      },
      "contracts/ethregistrar/BaseRegistrarImplementation.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/BaseRegistrarImplementation.sol",
          "exportedSymbols": {
            "Address": [
              2833
            ],
            "BaseRegistrarImplementation": [
              9541
            ],
            "Context": [
              2855
            ],
            "ENS": [
              12157
            ],
            "ERC165": [
              3082
            ],
            "ERC721": [
              2377
            ],
            "IBaseRegistrar": [
              11222
            ],
            "IERC165": [
              3094
            ],
            "IERC721": [
              2493
            ],
            "IERC721Metadata": [
              2538
            ],
            "IERC721Receiver": [
              2511
            ],
            "Ownable": [
              642
            ],
            "Strings": [
              3058
            ]
          },
          "id": 9542,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9024,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:42"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../registry/ENS.sol",
              "id": 9025,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9542,
              "sourceUnit": 12158,
              "src": "26:29:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IBaseRegistrar.sol",
              "file": "./IBaseRegistrar.sol",
              "id": 9026,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9542,
              "sourceUnit": 11223,
              "src": "56:30:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
              "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
              "id": 9027,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9542,
              "sourceUnit": 2378,
              "src": "87:57:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 9028,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9542,
              "sourceUnit": 643,
              "src": "145:52:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9029,
                    "name": "ERC721",
                    "nameLocations": [
                      "239:6:42"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2377,
                    "src": "239:6:42"
                  },
                  "id": 9030,
                  "nodeType": "InheritanceSpecifier",
                  "src": "239:6:42"
                },
                {
                  "baseName": {
                    "id": 9031,
                    "name": "IBaseRegistrar",
                    "nameLocations": [
                      "247:14:42"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11222,
                    "src": "247:14:42"
                  },
                  "id": 9032,
                  "nodeType": "InheritanceSpecifier",
                  "src": "247:14:42"
                },
                {
                  "baseName": {
                    "id": 9033,
                    "name": "Ownable",
                    "nameLocations": [
                      "263:7:42"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "263:7:42"
                  },
                  "id": 9034,
                  "nodeType": "InheritanceSpecifier",
                  "src": "263:7:42"
                }
              ],
              "canonicalName": "BaseRegistrarImplementation",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 9541,
              "linearizedBaseContracts": [
                9541,
                642,
                11222,
                2377,
                2538,
                2493,
                3082,
                3094,
                2855
              ],
              "name": "BaseRegistrarImplementation",
              "nameLocation": "208:27:42",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 9038,
                  "mutability": "mutable",
                  "name": "expiries",
                  "nameLocation": "334:8:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 9541,
                  "src": "306:36:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 9037,
                    "keyType": {
                      "id": 9035,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "314:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "306:27:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 9036,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "325:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 9041,
                  "mutability": "mutable",
                  "name": "ens",
                  "nameLocation": "383:3:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 9541,
                  "src": "372:14:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 9040,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9039,
                      "name": "ENS",
                      "nameLocations": [
                        "372:3:42"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "372:3:42"
                    },
                    "referencedDeclaration": 12157,
                    "src": "372:3:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "ddf7fcb0",
                  "id": 9043,
                  "mutability": "mutable",
                  "name": "baseNode",
                  "nameLocation": "469:8:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 9541,
                  "src": "454:23:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9042,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "454:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "da8c229e",
                  "id": 9047,
                  "mutability": "mutable",
                  "name": "controllers",
                  "nameLocation": "590:11:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 9541,
                  "src": "558:43:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 9046,
                    "keyType": {
                      "id": 9044,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "566:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "558:24:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 9045,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "577:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "c1a287e2",
                  "id": 9050,
                  "mutability": "constant",
                  "name": "GRACE_PERIOD",
                  "nameLocation": "631:12:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 9541,
                  "src": "607:46:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9048,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "607:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3930",
                    "id": 9049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "646:7:42",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_7776000_by_1",
                      "typeString": "int_const 7776000"
                    },
                    "value": "90"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 9058,
                  "mutability": "constant",
                  "name": "INTERFACE_META_ID",
                  "nameLocation": "683:17:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 9541,
                  "src": "659:98:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9051,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "659:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "737570706f727473496e746572666163652862797465733429",
                            "id": 9055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "728:27:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                              "typeString": "literal_string \"supportsInterface(bytes4)\""
                            },
                            "value": "supportsInterface(bytes4)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                              "typeString": "literal_string \"supportsInterface(bytes4)\""
                            }
                          ],
                          "id": 9054,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "718:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 9056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "718:38:42",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9053,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "711:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 9052,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "711:6:42",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 9057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "711:46:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 9098,
                  "mutability": "constant",
                  "name": "ERC721_ID",
                  "nameLocation": "787:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 9541,
                  "src": "763:610:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9059,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "763:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 9096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 9092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 9088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 9084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 9080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "id": 9076,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "id": 9072,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "id": 9068,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "hexValue": "62616c616e63654f66286164647265737329",
                                            "id": 9063,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "837:20:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be",
                                              "typeString": "literal_string \"balanceOf(address)\""
                                            },
                                            "value": "balanceOf(address)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be",
                                              "typeString": "literal_string \"balanceOf(address)\""
                                            }
                                          ],
                                          "id": 9062,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -8,
                                          "src": "827:9:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 9064,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "827:31:42",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "^",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "hexValue": "6f776e65724f662875696e7432353629",
                                            "id": 9066,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "887:18:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_6352211e6566aa027e75ac9dbf2423197fbd9b82b9d981a3ab367d355866aa1c",
                                              "typeString": "literal_string \"ownerOf(uint256)\""
                                            },
                                            "value": "ownerOf(uint256)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_6352211e6566aa027e75ac9dbf2423197fbd9b82b9d981a3ab367d355866aa1c",
                                              "typeString": "literal_string \"ownerOf(uint256)\""
                                            }
                                          ],
                                          "id": 9065,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -8,
                                          "src": "877:9:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 9067,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "877:29:42",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "827:79:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "^",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "617070726f766528616464726573732c75696e7432353629",
                                          "id": 9070,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "935:26:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_095ea7b334ae44009aa867bfb386f5c3b4b443ac6f0ee573fa91c4608fbadfba",
                                            "typeString": "literal_string \"approve(address,uint256)\""
                                          },
                                          "value": "approve(address,uint256)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_095ea7b334ae44009aa867bfb386f5c3b4b443ac6f0ee573fa91c4608fbadfba",
                                            "typeString": "literal_string \"approve(address,uint256)\""
                                          }
                                        ],
                                        "id": 9069,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "925:9:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 9071,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "925:37:42",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "827:135:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "^",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "676574417070726f7665642875696e7432353629",
                                        "id": 9074,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "991:22:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_081812fc55e34fdc7cf5d8b5cf4e3621fa6423fde952ec6ab24afdc0d85c0b2e",
                                          "typeString": "literal_string \"getApproved(uint256)\""
                                        },
                                        "value": "getApproved(uint256)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_081812fc55e34fdc7cf5d8b5cf4e3621fa6423fde952ec6ab24afdc0d85c0b2e",
                                          "typeString": "literal_string \"getApproved(uint256)\""
                                        }
                                      ],
                                      "id": 9073,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "981:9:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 9075,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "981:33:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "src": "827:187:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "^",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "736574417070726f76616c466f72416c6c28616464726573732c626f6f6c29",
                                      "id": 9078,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1043:33:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_a22cb4651ab9570f89bb516380c40ce76762284fb1f21337ceaf6adab99e7d4a",
                                        "typeString": "literal_string \"setApprovalForAll(address,bool)\""
                                      },
                                      "value": "setApprovalForAll(address,bool)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_a22cb4651ab9570f89bb516380c40ce76762284fb1f21337ceaf6adab99e7d4a",
                                        "typeString": "literal_string \"setApprovalForAll(address,bool)\""
                                      }
                                    ],
                                    "id": 9077,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1033:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 9079,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1033:44:42",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "827:250:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "^",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "6973417070726f766564466f72416c6c28616464726573732c6164647265737329",
                                    "id": 9082,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1106:35:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e985e9c5c6636c6879256001057b28ccac7718ef0ac56553ff9b926452cab8a3",
                                      "typeString": "literal_string \"isApprovedForAll(address,address)\""
                                    },
                                    "value": "isApprovedForAll(address,address)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_e985e9c5c6636c6879256001057b28ccac7718ef0ac56553ff9b926452cab8a3",
                                      "typeString": "literal_string \"isApprovedForAll(address,address)\""
                                    }
                                  ],
                                  "id": 9081,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "1096:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 9083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1096:46:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "827:315:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "^",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "7472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629",
                                  "id": 9086,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1171:39:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b",
                                    "typeString": "literal_string \"transferFrom(address,address,uint256)\""
                                  },
                                  "value": "transferFrom(address,address,uint256)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b",
                                    "typeString": "literal_string \"transferFrom(address,address,uint256)\""
                                  }
                                ],
                                "id": 9085,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "1161:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 9087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1161:50:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "src": "827:384:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "^",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629",
                                "id": 9090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1240:43:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_42842e0eb38857a7775b4e7364b2775df7325074d088e7fb39590cd6281184ed",
                                  "typeString": "literal_string \"safeTransferFrom(address,address,uint256)\""
                                },
                                "value": "safeTransferFrom(address,address,uint256)"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_42842e0eb38857a7775b4e7364b2775df7325074d088e7fb39590cd6281184ed",
                                  "typeString": "literal_string \"safeTransferFrom(address,address,uint256)\""
                                }
                              ],
                              "id": 9089,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1230:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 9091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1230:54:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "827:457:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "^",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e743235362c627974657329",
                              "id": 9094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1313:49:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b88d4fde60196325a28bb7f99a2582e0b46de55b18761e960c14ad7a32099465",
                                "typeString": "literal_string \"safeTransferFrom(address,address,uint256,bytes)\""
                              },
                              "value": "safeTransferFrom(address,address,uint256,bytes)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_b88d4fde60196325a28bb7f99a2582e0b46de55b18761e960c14ad7a32099465",
                                "typeString": "literal_string \"safeTransferFrom(address,address,uint256,bytes)\""
                              }
                            ],
                            "id": 9093,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1303:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 9095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1303:60:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "827:536:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "807:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 9060,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "807:6:42",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 9097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "807:566:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 9106,
                  "mutability": "constant",
                  "name": "RECLAIM_ID",
                  "nameLocation": "1403:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 9541,
                  "src": "1379:90:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9099,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1379:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "7265636c61696d2875696e743235362c6164647265737329",
                            "id": 9103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1441:26:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_28ed4f6c74b219a5819055dfbcd2f1837c046c364cf01fabb6799e4f440d6f13",
                              "typeString": "literal_string \"reclaim(uint256,address)\""
                            },
                            "value": "reclaim(uint256,address)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_28ed4f6c74b219a5819055dfbcd2f1837c046c364cf01fabb6799e4f440d6f13",
                              "typeString": "literal_string \"reclaim(uint256,address)\""
                            }
                          ],
                          "id": 9102,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "1431:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 9104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1431:37:42",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1424:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 9100,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1424:6:42",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 9105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1424:45:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    1991
                  ],
                  "body": {
                    "id": 9139,
                    "nodeType": "Block",
                    "src": "2233:179:42",
                    "statements": [
                      {
                        "assignments": [
                          9118
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9118,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "2251:5:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 9139,
                            "src": "2243:13:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 9117,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2243:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9122,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 9120,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9111,
                              "src": "2267:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9119,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              9214
                            ],
                            "referencedDeclaration": 9214,
                            "src": "2259:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 9121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2259:16:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2243:32:42"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 9136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 9131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 9125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 9123,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9109,
                                    "src": "2293:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 9124,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9118,
                                    "src": "2304:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2293:16:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 9130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 9127,
                                        "name": "tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9111,
                                        "src": "2337:7:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 9126,
                                      "name": "getApproved",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1792,
                                      "src": "2325:11:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                        "typeString": "function (uint256) view returns (address)"
                                      }
                                    },
                                    "id": 9128,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2325:20:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 9129,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9109,
                                    "src": "2349:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2325:31:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2293:63:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 9133,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9118,
                                    "src": "2389:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9134,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9109,
                                    "src": "2396:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9132,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1827,
                                  "src": "2372:16:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 9135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2372:32:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2293:111:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 9137,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2292:113:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9116,
                        "id": 9138,
                        "nodeType": "Return",
                        "src": "2285:120:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9107,
                    "nodeType": "StructuredDocumentation",
                    "src": "1476:616:42",
                    "text": " v2.1.3 version of _isApprovedOrOwner which calls ownerOf(tokenId) and takes grace period into consideration instead of ERC721.ownerOf(tokenId);\n https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.1.3/contracts/token/ERC721/ERC721.sol#L187\n @dev Returns whether the given spender can transfer a given token ID\n @param spender address of the spender to query\n @param tokenId uint256 ID of the token to be transferred\n @return bool whether the msg.sender is approved for the given token ID,\n    is an operator of the owner, or is the owner of the token"
                  },
                  "id": 9140,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isApprovedOrOwner",
                  "nameLocation": "2106:18:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9113,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2197:8:42"
                  },
                  "parameters": {
                    "id": 9112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9109,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2133:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9140,
                        "src": "2125:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9108,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2125:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9111,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2150:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9140,
                        "src": "2142:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9110,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2142:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2124:34:42"
                  },
                  "returnParameters": {
                    "id": 9116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9115,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9140,
                        "src": "2223:4:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9114,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2223:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2222:6:42"
                  },
                  "scope": 9541,
                  "src": "2097:315:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9160,
                    "nodeType": "Block",
                    "src": "2474:57:42",
                    "statements": [
                      {
                        "expression": {
                          "id": 9154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9152,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9041,
                            "src": "2484:3:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9153,
                            "name": "_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9143,
                            "src": "2490:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "2484:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 9155,
                        "nodeType": "ExpressionStatement",
                        "src": "2484:10:42"
                      },
                      {
                        "expression": {
                          "id": 9158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9156,
                            "name": "baseNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9043,
                            "src": "2504:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9157,
                            "name": "_baseNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9145,
                            "src": "2515:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2504:20:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 9159,
                        "nodeType": "ExpressionStatement",
                        "src": "2504:20:42"
                      }
                    ]
                  },
                  "id": 9161,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "",
                          "id": 9148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2466:2:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        },
                        {
                          "hexValue": "",
                          "id": 9149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2470:2:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        }
                      ],
                      "id": 9150,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 9147,
                        "name": "ERC721",
                        "nameLocations": [
                          "2459:6:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2377,
                        "src": "2459:6:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2459:14:42"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9143,
                        "mutability": "mutable",
                        "name": "_ens",
                        "nameLocation": "2434:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9161,
                        "src": "2430:8:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 9142,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9141,
                            "name": "ENS",
                            "nameLocations": [
                              "2430:3:42"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "2430:3:42"
                          },
                          "referencedDeclaration": 12157,
                          "src": "2430:3:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9145,
                        "mutability": "mutable",
                        "name": "_baseNode",
                        "nameLocation": "2448:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9161,
                        "src": "2440:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 9144,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2440:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2429:29:42"
                  },
                  "returnParameters": {
                    "id": 9151,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2474:0:42"
                  },
                  "scope": 9541,
                  "src": "2418:113:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9176,
                    "nodeType": "Block",
                    "src": "2553:73:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 9166,
                                    "name": "baseNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9043,
                                    "src": "2581:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9164,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9041,
                                    "src": "2571:3:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 9165,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2575:5:42",
                                  "memberName": "owner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12126,
                                  "src": "2571:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32) view external returns (address)"
                                  }
                                },
                                "id": 9167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2571:19:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 9170,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2602:4:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                                      "typeString": "contract BaseRegistrarImplementation"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                                      "typeString": "contract BaseRegistrarImplementation"
                                    }
                                  ],
                                  "id": 9169,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2594:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9168,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2594:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2594:13:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2571:36:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9163,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2563:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 9173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2563:45:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9174,
                        "nodeType": "ExpressionStatement",
                        "src": "2563:45:42"
                      },
                      {
                        "id": 9175,
                        "nodeType": "PlaceholderStatement",
                        "src": "2618:1:42"
                      }
                    ]
                  },
                  "id": 9177,
                  "name": "live",
                  "nameLocation": "2546:4:42",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 9162,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2550:2:42"
                  },
                  "src": "2537:89:42",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9187,
                    "nodeType": "Block",
                    "src": "2658:60:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 9180,
                                "name": "controllers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9047,
                                "src": "2676:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 9183,
                              "indexExpression": {
                                "expression": {
                                  "id": 9181,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2688:3:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2692:6:42",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2688:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2676:23:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9179,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2668:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 9184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2668:32:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9185,
                        "nodeType": "ExpressionStatement",
                        "src": "2668:32:42"
                      },
                      {
                        "id": 9186,
                        "nodeType": "PlaceholderStatement",
                        "src": "2710:1:42"
                      }
                    ]
                  },
                  "id": 9188,
                  "name": "onlyController",
                  "nameLocation": "2641:14:42",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 9178,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2655:2:42"
                  },
                  "src": "2632:86:42",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    1657,
                    2426
                  ],
                  "body": {
                    "id": 9213,
                    "nodeType": "Block",
                    "src": "3129:100:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 9200,
                                  "name": "expiries",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9038,
                                  "src": "3147:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 9202,
                                "indexExpression": {
                                  "id": 9201,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9191,
                                  "src": "3156:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3147:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 9203,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "3167:5:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 9204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3173:9:42",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "3167:15:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3147:35:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9199,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3139:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 9206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3139:44:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9207,
                        "nodeType": "ExpressionStatement",
                        "src": "3139:44:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9210,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9191,
                              "src": "3214:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 9208,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3200:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_BaseRegistrarImplementation_$9541_$",
                                "typeString": "type(contract super BaseRegistrarImplementation)"
                              }
                            },
                            "id": 9209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3206:7:42",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1657,
                            "src": "3200:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 9211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3200:22:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 9198,
                        "id": 9212,
                        "nodeType": "Return",
                        "src": "3193:29:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9189,
                    "nodeType": "StructuredDocumentation",
                    "src": "2724:274:42",
                    "text": " @dev Gets the owner of the specified token ID. Names become unowned\n      when their registration expires.\n @param tokenId uint256 ID of the token to query the owner of\n @return address currently marked as the owner of the given token ID"
                  },
                  "functionSelector": "6352211e",
                  "id": 9214,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "3012:7:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9195,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 9193,
                        "name": "IERC721",
                        "nameLocations": [
                          "3082:7:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2493,
                        "src": "3082:7:42"
                      },
                      {
                        "id": 9194,
                        "name": "ERC721",
                        "nameLocations": [
                          "3091:6:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2377,
                        "src": "3091:6:42"
                      }
                    ],
                    "src": "3073:25:42"
                  },
                  "parameters": {
                    "id": 9192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9191,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3028:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9214,
                        "src": "3020:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3020:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3019:17:42"
                  },
                  "returnParameters": {
                    "id": 9198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9197,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9214,
                        "src": "3116:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9196,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3116:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3115:9:42"
                  },
                  "scope": 9541,
                  "src": "3003:226:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11168
                  ],
                  "body": {
                    "id": 9232,
                    "nodeType": "Block",
                    "src": "3374:89:42",
                    "statements": [
                      {
                        "expression": {
                          "id": 9226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9222,
                              "name": "controllers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9047,
                              "src": "3384:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 9224,
                            "indexExpression": {
                              "id": 9223,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9216,
                              "src": "3396:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3384:23:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 9225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3410:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "3384:30:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9227,
                        "nodeType": "ExpressionStatement",
                        "src": "3384:30:42"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9229,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9216,
                              "src": "3445:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9228,
                            "name": "ControllerAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11137,
                            "src": "3429:15:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 9230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3429:27:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9231,
                        "nodeType": "EmitStatement",
                        "src": "3424:32:42"
                      }
                    ]
                  },
                  "functionSelector": "a7fc7a07",
                  "id": 9233,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 9220,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9219,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "3364:9:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "3364:9:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3364:9:42"
                    }
                  ],
                  "name": "addController",
                  "nameLocation": "3312:13:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9218,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3355:8:42"
                  },
                  "parameters": {
                    "id": 9217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9216,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "3334:10:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9233,
                        "src": "3326:18:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9215,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3326:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3325:20:42"
                  },
                  "returnParameters": {
                    "id": 9221,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3374:0:42"
                  },
                  "scope": 9541,
                  "src": "3303:160:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    11173
                  ],
                  "body": {
                    "id": 9251,
                    "nodeType": "Block",
                    "src": "3595:92:42",
                    "statements": [
                      {
                        "expression": {
                          "id": 9245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9241,
                              "name": "controllers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9047,
                              "src": "3605:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 9243,
                            "indexExpression": {
                              "id": 9242,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9235,
                              "src": "3617:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3605:23:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 9244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3631:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "3605:31:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9246,
                        "nodeType": "ExpressionStatement",
                        "src": "3605:31:42"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9248,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9235,
                              "src": "3669:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9247,
                            "name": "ControllerRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11141,
                            "src": "3651:17:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 9249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3651:29:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9250,
                        "nodeType": "EmitStatement",
                        "src": "3646:34:42"
                      }
                    ]
                  },
                  "functionSelector": "f6a74ed7",
                  "id": 9252,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 9239,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9238,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "3585:9:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "3585:9:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3585:9:42"
                    }
                  ],
                  "name": "removeController",
                  "nameLocation": "3530:16:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9237,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3576:8:42"
                  },
                  "parameters": {
                    "id": 9236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9235,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "3555:10:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9252,
                        "src": "3547:18:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3547:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3546:20:42"
                  },
                  "returnParameters": {
                    "id": 9240,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3595:0:42"
                  },
                  "scope": 9541,
                  "src": "3521:166:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    11178
                  ],
                  "body": {
                    "id": 9267,
                    "nodeType": "Block",
                    "src": "3820:52:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9263,
                              "name": "baseNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9043,
                              "src": "3846:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 9264,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9254,
                              "src": "3856:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 9260,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9041,
                              "src": "3830:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 9262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3834:11:42",
                            "memberName": "setResolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12098,
                            "src": "3830:15:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 9265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3830:35:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9266,
                        "nodeType": "ExpressionStatement",
                        "src": "3830:35:42"
                      }
                    ]
                  },
                  "functionSelector": "4e543b26",
                  "id": 9268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 9258,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9257,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "3810:9:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "3810:9:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3810:9:42"
                    }
                  ],
                  "name": "setResolver",
                  "nameLocation": "3762:11:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9256,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3801:8:42"
                  },
                  "parameters": {
                    "id": 9255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9254,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "3782:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9268,
                        "src": "3774:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3774:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3773:18:42"
                  },
                  "returnParameters": {
                    "id": 9259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3820:0:42"
                  },
                  "scope": 9541,
                  "src": "3753:119:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    11185
                  ],
                  "body": {
                    "id": 9280,
                    "nodeType": "Block",
                    "src": "4013:36:42",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 9276,
                            "name": "expiries",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9038,
                            "src": "4030:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 9278,
                          "indexExpression": {
                            "id": 9277,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9270,
                            "src": "4039:2:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4030:12:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9275,
                        "id": 9279,
                        "nodeType": "Return",
                        "src": "4023:19:42"
                      }
                    ]
                  },
                  "functionSelector": "d6e4fa86",
                  "id": 9281,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "nameExpires",
                  "nameLocation": "3948:11:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9272,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3986:8:42"
                  },
                  "parameters": {
                    "id": 9271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9270,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3968:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9281,
                        "src": "3960:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9269,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3960:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3959:12:42"
                  },
                  "returnParameters": {
                    "id": 9275,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9274,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9281,
                        "src": "4004:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9273,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4004:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4003:9:42"
                  },
                  "scope": 9541,
                  "src": "3939:110:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    11192
                  ],
                  "body": {
                    "id": 9298,
                    "nodeType": "Block",
                    "src": "4196:142:42",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 9289,
                                "name": "expiries",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9038,
                                "src": "4286:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 9291,
                              "indexExpression": {
                                "id": 9290,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9283,
                                "src": "4295:2:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4286:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 9292,
                              "name": "GRACE_PERIOD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9050,
                              "src": "4301:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4286:27:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 9294,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "4316:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 9295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4322:9:42",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "4316:15:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4286:45:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9288,
                        "id": 9297,
                        "nodeType": "Return",
                        "src": "4279:52:42"
                      }
                    ]
                  },
                  "functionSelector": "96e494e8",
                  "id": 9299,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "available",
                  "nameLocation": "4138:9:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9285,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4172:8:42"
                  },
                  "parameters": {
                    "id": 9284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9283,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "4156:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9299,
                        "src": "4148:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4148:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4147:12:42"
                  },
                  "returnParameters": {
                    "id": 9288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9287,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9299,
                        "src": "4190:4:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9286,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4190:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4189:6:42"
                  },
                  "scope": 9541,
                  "src": "4129:209:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11204
                  ],
                  "body": {
                    "id": 9319,
                    "nodeType": "Block",
                    "src": "4705:60:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9313,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9302,
                              "src": "4732:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9314,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9304,
                              "src": "4736:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9315,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9306,
                              "src": "4743:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 9316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4753:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9312,
                            "name": "_register",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9429,
                            "src": "4722:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (uint256,address,uint256,bool) returns (uint256)"
                            }
                          },
                          "id": 9317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4722:36:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9311,
                        "id": 9318,
                        "nodeType": "Return",
                        "src": "4715:43:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9300,
                    "nodeType": "StructuredDocumentation",
                    "src": "4344:227:42",
                    "text": " @dev Register a name.\n @param id The token ID (keccak256 of the label).\n @param owner The address that should own the registration.\n @param duration Duration in seconds for the registration."
                  },
                  "functionSelector": "fca247ac",
                  "id": 9320,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "register",
                  "nameLocation": "4585:8:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9308,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4678:8:42"
                  },
                  "parameters": {
                    "id": 9307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9302,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "4611:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9320,
                        "src": "4603:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9301,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4603:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9304,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4631:5:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9320,
                        "src": "4623:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4623:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9306,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "4654:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9320,
                        "src": "4646:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4646:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4593:75:42"
                  },
                  "returnParameters": {
                    "id": 9311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9310,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9320,
                        "src": "4696:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4696:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4695:9:42"
                  },
                  "scope": 9541,
                  "src": "4576:189:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9339,
                    "nodeType": "Block",
                    "src": "5159:61:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9333,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9323,
                              "src": "5186:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9334,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9325,
                              "src": "5190:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9335,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9327,
                              "src": "5197:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 9336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5207:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9332,
                            "name": "_register",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9429,
                            "src": "5176:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (uint256,address,uint256,bool) returns (uint256)"
                            }
                          },
                          "id": 9337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5176:37:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9331,
                        "id": 9338,
                        "nodeType": "Return",
                        "src": "5169:44:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9321,
                    "nodeType": "StructuredDocumentation",
                    "src": "4771:259:42",
                    "text": " @dev Register a name, without modifying the registry.\n @param id The token ID (keccak256 of the label).\n @param owner The address that should own the registration.\n @param duration Duration in seconds for the registration."
                  },
                  "functionSelector": "0e297b45",
                  "id": 9340,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "registerOnly",
                  "nameLocation": "5044:12:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9323,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "5074:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9340,
                        "src": "5066:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9322,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5066:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9325,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "5094:5:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9340,
                        "src": "5086:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9324,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5086:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9327,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "5117:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9340,
                        "src": "5109:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5109:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5056:75:42"
                  },
                  "returnParameters": {
                    "id": 9331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9330,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9340,
                        "src": "5150:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5150:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5149:9:42"
                  },
                  "scope": 9541,
                  "src": "5035:185:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9428,
                    "nodeType": "Block",
                    "src": "5396:605:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 9359,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9342,
                                  "src": "5424:2:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9358,
                                "name": "available",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9299,
                                "src": "5414:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 9360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5414:13:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9357,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5406:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 9361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5406:22:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9362,
                        "nodeType": "ExpressionStatement",
                        "src": "5406:22:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 9364,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "5459:5:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 9365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5465:9:42",
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "5459:15:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 9366,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9346,
                                    "src": "5477:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5459:26:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9368,
                                  "name": "GRACE_PERIOD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9050,
                                  "src": "5488:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5459:41:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 9370,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "5519:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 9371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5525:9:42",
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "src": "5519:15:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9372,
                                  "name": "GRACE_PERIOD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9050,
                                  "src": "5537:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5519:30:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5459:90:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9363,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5438:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 9375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5438:121:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9376,
                        "nodeType": "ExpressionStatement",
                        "src": "5438:121:42"
                      },
                      {
                        "expression": {
                          "id": 9384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9377,
                              "name": "expiries",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9038,
                              "src": "5597:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 9379,
                            "indexExpression": {
                              "id": 9378,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9342,
                              "src": "5606:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5597:12:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 9380,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "5612:5:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 9381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5618:9:42",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "5612:15:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 9382,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9346,
                              "src": "5630:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5612:26:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5597:41:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9385,
                        "nodeType": "ExpressionStatement",
                        "src": "5597:41:42"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 9387,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9342,
                              "src": "5660:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9386,
                            "name": "_exists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1950,
                            "src": "5652:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) view returns (bool)"
                            }
                          },
                          "id": 9388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5652:11:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9394,
                        "nodeType": "IfStatement",
                        "src": "5648:105:42",
                        "trueBody": {
                          "id": 9393,
                          "nodeType": "Block",
                          "src": "5665:88:42",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9390,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9342,
                                    "src": "5739:2:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9389,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2161,
                                  "src": "5733:5:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 9391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5733:9:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9392,
                              "nodeType": "ExpressionStatement",
                              "src": "5733:9:42"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9396,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9344,
                              "src": "5768:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9397,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9342,
                              "src": "5775:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9395,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2101,
                            "src": "5762:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 9398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5762:16:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9399,
                        "nodeType": "ExpressionStatement",
                        "src": "5762:16:42"
                      },
                      {
                        "condition": {
                          "id": 9400,
                          "name": "updateRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9348,
                          "src": "5792:14:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9413,
                        "nodeType": "IfStatement",
                        "src": "5788:94:42",
                        "trueBody": {
                          "id": 9412,
                          "nodeType": "Block",
                          "src": "5808:74:42",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9404,
                                    "name": "baseNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9043,
                                    "src": "5842:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 9407,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9342,
                                        "src": "5860:2:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 9406,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5852:7:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 9405,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5852:7:42",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 9408,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5852:11:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 9409,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9344,
                                    "src": "5865:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9401,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9041,
                                    "src": "5822:3:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 9403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5826:15:42",
                                  "memberName": "setSubnodeOwner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12091,
                                  "src": "5822:19:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                                  }
                                },
                                "id": 9410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5822:49:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 9411,
                              "nodeType": "ExpressionStatement",
                              "src": "5822:49:42"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9415,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9342,
                              "src": "5912:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9416,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9344,
                              "src": "5916:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 9417,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "5923:5:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 9418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5929:9:42",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "5923:15:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 9419,
                                "name": "duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9346,
                                "src": "5941:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5923:26:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9414,
                            "name": "NameRegistered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11157,
                            "src": "5897:14:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,address,uint256)"
                            }
                          },
                          "id": 9421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5897:53:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9422,
                        "nodeType": "EmitStatement",
                        "src": "5892:58:42"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 9423,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "5968:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 9424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5974:9:42",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "5968:15:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 9425,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9346,
                            "src": "5986:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5968:26:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9356,
                        "id": 9427,
                        "nodeType": "Return",
                        "src": "5961:33:42"
                      }
                    ]
                  },
                  "id": 9429,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 9351,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9350,
                        "name": "live",
                        "nameLocations": [
                          "5358:4:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9177,
                        "src": "5358:4:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5358:4:42"
                    },
                    {
                      "id": 9353,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9352,
                        "name": "onlyController",
                        "nameLocations": [
                          "5363:14:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9188,
                        "src": "5363:14:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5363:14:42"
                    }
                  ],
                  "name": "_register",
                  "nameLocation": "5235:9:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9349,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9342,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "5262:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9429,
                        "src": "5254:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9341,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5254:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9344,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "5282:5:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9429,
                        "src": "5274:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9343,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5274:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9346,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "5305:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9429,
                        "src": "5297:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9345,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5297:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9348,
                        "mutability": "mutable",
                        "name": "updateRegistry",
                        "nameLocation": "5328:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9429,
                        "src": "5323:19:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9347,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5323:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5244:104:42"
                  },
                  "returnParameters": {
                    "id": 9356,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9355,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9429,
                        "src": "5387:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5387:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5386:9:42"
                  },
                  "scope": 9541,
                  "src": "5226:775:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    11213
                  ],
                  "body": {
                    "id": 9485,
                    "nodeType": "Block",
                    "src": "6152:363:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 9444,
                                    "name": "expiries",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9038,
                                    "src": "6170:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 9446,
                                  "indexExpression": {
                                    "id": 9445,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9431,
                                    "src": "6179:2:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6170:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9447,
                                  "name": "GRACE_PERIOD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9050,
                                  "src": "6185:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6170:27:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 9449,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "6201:5:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 9450,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6207:9:42",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "6201:15:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6170:46:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9443,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6162:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 9452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6162:55:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9453,
                        "nodeType": "ExpressionStatement",
                        "src": "6162:55:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 9455,
                                      "name": "expiries",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9038,
                                      "src": "6299:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                        "typeString": "mapping(uint256 => uint256)"
                                      }
                                    },
                                    "id": 9457,
                                    "indexExpression": {
                                      "id": 9456,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9431,
                                      "src": "6308:2:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6299:12:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 9458,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9433,
                                    "src": "6314:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6299:23:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9460,
                                  "name": "GRACE_PERIOD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9050,
                                  "src": "6325:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6299:38:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9462,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9433,
                                  "src": "6340:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 9463,
                                  "name": "GRACE_PERIOD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9050,
                                  "src": "6351:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6340:23:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6299:64:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9454,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6278:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 9466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6278:95:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9467,
                        "nodeType": "ExpressionStatement",
                        "src": "6278:95:42"
                      },
                      {
                        "expression": {
                          "id": 9472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9468,
                              "name": "expiries",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9038,
                              "src": "6411:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 9470,
                            "indexExpression": {
                              "id": 9469,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9431,
                              "src": "6420:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6411:12:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 9471,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9433,
                            "src": "6427:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6411:24:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9473,
                        "nodeType": "ExpressionStatement",
                        "src": "6411:24:42"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9475,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9431,
                              "src": "6462:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 9476,
                                "name": "expiries",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9038,
                                "src": "6466:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 9478,
                              "indexExpression": {
                                "id": 9477,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9431,
                                "src": "6475:2:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6466:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9474,
                            "name": "NameRenewed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11163,
                            "src": "6450:11:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 9479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6450:29:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9480,
                        "nodeType": "EmitStatement",
                        "src": "6445:34:42"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 9481,
                            "name": "expiries",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9038,
                            "src": "6496:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 9483,
                          "indexExpression": {
                            "id": 9482,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9431,
                            "src": "6505:2:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6496:12:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9442,
                        "id": 9484,
                        "nodeType": "Return",
                        "src": "6489:19:42"
                      }
                    ]
                  },
                  "functionSelector": "c475abff",
                  "id": 9486,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 9437,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9436,
                        "name": "live",
                        "nameLocations": [
                          "6094:4:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9177,
                        "src": "6094:4:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6094:4:42"
                    },
                    {
                      "id": 9439,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9438,
                        "name": "onlyController",
                        "nameLocations": [
                          "6107:14:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9188,
                        "src": "6107:14:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6107:14:42"
                    }
                  ],
                  "name": "renew",
                  "nameLocation": "6016:5:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9435,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6077:8:42"
                  },
                  "parameters": {
                    "id": 9434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9431,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "6030:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9486,
                        "src": "6022:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6022:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9433,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "6042:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9486,
                        "src": "6034:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9432,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6034:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6021:30:42"
                  },
                  "returnParameters": {
                    "id": 9442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9441,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9486,
                        "src": "6139:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6139:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6138:9:42"
                  },
                  "scope": 9541,
                  "src": "6007:508:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    11221
                  ],
                  "body": {
                    "id": 9516,
                    "nodeType": "Block",
                    "src": "6684:119:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 9499,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "6721:3:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 9500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6725:6:42",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "6721:10:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 9501,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9489,
                                  "src": "6733:2:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9498,
                                "name": "_isApprovedOrOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  9140
                                ],
                                "referencedDeclaration": 9140,
                                "src": "6702:18:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) view returns (bool)"
                                }
                              },
                              "id": 9502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6702:34:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 9497,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6694:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 9503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6694:43:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9504,
                        "nodeType": "ExpressionStatement",
                        "src": "6694:43:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9508,
                              "name": "baseNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9043,
                              "src": "6767:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 9511,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9489,
                                  "src": "6785:2:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6777:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 9509,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6777:7:42",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6777:11:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 9513,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9491,
                              "src": "6790:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 9505,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9041,
                              "src": "6747:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 9507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6751:15:42",
                            "memberName": "setSubnodeOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12091,
                            "src": "6747:19:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                            }
                          },
                          "id": 9514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6747:49:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 9515,
                        "nodeType": "ExpressionStatement",
                        "src": "6747:49:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9487,
                    "nodeType": "StructuredDocumentation",
                    "src": "6521:91:42",
                    "text": " @dev Reclaim ownership of a name in ENS, if you own it in the registrar."
                  },
                  "functionSelector": "28ed4f6c",
                  "id": 9517,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 9495,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9494,
                        "name": "live",
                        "nameLocations": [
                          "6679:4:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9177,
                        "src": "6679:4:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6679:4:42"
                    }
                  ],
                  "name": "reclaim",
                  "nameLocation": "6626:7:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9493,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6670:8:42"
                  },
                  "parameters": {
                    "id": 9492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9489,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "6642:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9517,
                        "src": "6634:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9488,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6634:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9491,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "6654:5:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9517,
                        "src": "6646:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6646:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6633:27:42"
                  },
                  "returnParameters": {
                    "id": 9496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6684:0:42"
                  },
                  "scope": 9541,
                  "src": "6617:186:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1605,
                    3093
                  ],
                  "body": {
                    "id": 9539,
                    "nodeType": "Block",
                    "src": "6945:149:42",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 9529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9527,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9519,
                                "src": "6974:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 9528,
                                "name": "INTERFACE_META_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9058,
                                "src": "6989:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "6974:32:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 9532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9530,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9519,
                                "src": "7022:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 9531,
                                "name": "ERC721_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9098,
                                "src": "7037:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "7022:24:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "6974:72:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9534,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9519,
                              "src": "7062:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 9535,
                              "name": "RECLAIM_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9106,
                              "src": "7077:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "7062:25:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6974:113:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9526,
                        "id": 9538,
                        "nodeType": "Return",
                        "src": "6955:132:42"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 9540,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "6818:17:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9523,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 9521,
                        "name": "ERC721",
                        "nameLocations": [
                          "6901:6:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2377,
                        "src": "6901:6:42"
                      },
                      {
                        "id": 9522,
                        "name": "IERC165",
                        "nameLocations": [
                          "6909:7:42"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3094,
                        "src": "6909:7:42"
                      }
                    ],
                    "src": "6892:25:42"
                  },
                  "parameters": {
                    "id": 9520,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9519,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "6843:11:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9540,
                        "src": "6836:18:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 9518,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "6836:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6835:20:42"
                  },
                  "returnParameters": {
                    "id": 9526,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9525,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9540,
                        "src": "6935:4:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9524,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6935:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6934:6:42"
                  },
                  "scope": 9541,
                  "src": "6809:285:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 9542,
              "src": "199:6897:42",
              "usedErrors": []
            }
          ],
          "src": "0:7097:42"
        },
        "id": 42
      },
      "contracts/ethregistrar/BulkRenewal.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/BulkRenewal.sol",
          "exportedSymbols": {
            "Address": [
              2833
            ],
            "BaseRegistrarImplementation": [
              9541
            ],
            "BulkRenewal": [
              9764
            ],
            "CommitmentTooNew": [
              9791
            ],
            "CommitmentTooOld": [
              9795
            ],
            "DurationTooShort": [
              9803
            ],
            "ENS": [
              12157
            ],
            "ERC165": [
              3082
            ],
            "ERC20Recoverable": [
              15873
            ],
            "ETHRegistrarController": [
              10590
            ],
            "IABIResolver": [
              14922
            ],
            "IAddrResolver": [
              14940
            ],
            "IAddressResolver": [
              14961
            ],
            "IBulkRenewal": [
              11242
            ],
            "IContentHashResolver": [
              14978
            ],
            "IDNSRecordResolver": [
              15011
            ],
            "IDNSZoneResolver": [
              15030
            ],
            "IERC165": [
              3094
            ],
            "IETHRegistrarController": [
              11321
            ],
            "IExtendedResolver": [
              15044
            ],
            "IInterfaceResolver": [
              15065
            ],
            "INameResolver": [
              15082
            ],
            "INameWrapper": [
              18030
            ],
            "IPriceOracle": [
              11342
            ],
            "IPubkeyResolver": [
              15103
            ],
            "ITextResolver": [
              15126
            ],
            "IVersionableResolver": [
              15142
            ],
            "InsufficientValue": [
              9811
            ],
            "MaxCommitmentAgeTooHigh": [
              9819
            ],
            "MaxCommitmentAgeTooLow": [
              9817
            ],
            "NameNotAvailable": [
              9799
            ],
            "Ownable": [
              642
            ],
            "Resolver": [
              13920
            ],
            "ResolverBase": [
              13995
            ],
            "ResolverRequiredWhenDataSupplied": [
              9805
            ],
            "ReverseRegistrar": [
              13213
            ],
            "StringUtils": [
              12020
            ],
            "Unauthorised": [
              9815
            ],
            "UnexpiredCommitmentExists": [
              9809
            ]
          },
          "id": 9765,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9543,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:43"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../registry/ENS.sol",
              "id": 9544,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9765,
              "sourceUnit": 12158,
              "src": "57:29:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/ETHRegistrarController.sol",
              "file": "./ETHRegistrarController.sol",
              "id": 9545,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9765,
              "sourceUnit": 10591,
              "src": "87:38:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IETHRegistrarController.sol",
              "file": "./IETHRegistrarController.sol",
              "id": 9546,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9765,
              "sourceUnit": 11322,
              "src": "126:39:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/Resolver.sol",
              "file": "../resolvers/Resolver.sol",
              "id": 9547,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9765,
              "sourceUnit": 13921,
              "src": "166:35:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IBulkRenewal.sol",
              "file": "./IBulkRenewal.sol",
              "id": 9548,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9765,
              "sourceUnit": 11243,
              "src": "202:28:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IPriceOracle.sol",
              "file": "./IPriceOracle.sol",
              "id": 9549,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9765,
              "sourceUnit": 11343,
              "src": "231:28:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "id": 9550,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9765,
              "sourceUnit": 3095,
              "src": "261:65:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9551,
                    "name": "IBulkRenewal",
                    "nameLocations": [
                      "352:12:43"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11242,
                    "src": "352:12:43"
                  },
                  "id": 9552,
                  "nodeType": "InheritanceSpecifier",
                  "src": "352:12:43"
                }
              ],
              "canonicalName": "BulkRenewal",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 9764,
              "linearizedBaseContracts": [
                9764,
                11242
              ],
              "name": "BulkRenewal",
              "nameLocation": "337:11:43",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 9555,
                  "mutability": "constant",
                  "name": "ETH_NAMEHASH",
                  "nameLocation": "396:12:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 9764,
                  "src": "371:114:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9553,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "371:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307839336364656237303862373534356463363638656239323830313736313639643163333363666438656436663034363930613062636338386139336663346165",
                    "id": 9554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "419:66:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_66853817334611902194238164484889819180315942402426128563245745834960013477038_by_1",
                      "typeString": "int_const 6685...(69 digits omitted)...7038"
                    },
                    "value": "0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 9558,
                  "mutability": "immutable",
                  "name": "ens",
                  "nameLocation": "513:3:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 9764,
                  "src": "492:24:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 9557,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9556,
                      "name": "ENS",
                      "nameLocations": [
                        "492:3:43"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "492:3:43"
                    },
                    "referencedDeclaration": 12157,
                    "src": "492:3:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9568,
                    "nodeType": "Block",
                    "src": "545:27:43",
                    "statements": [
                      {
                        "expression": {
                          "id": 9566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9564,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9558,
                            "src": "555:3:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9565,
                            "name": "_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "561:4:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "555:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 9567,
                        "nodeType": "ExpressionStatement",
                        "src": "555:10:43"
                      }
                    ]
                  },
                  "id": 9569,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9562,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9561,
                        "mutability": "mutable",
                        "name": "_ens",
                        "nameLocation": "539:4:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 9569,
                        "src": "535:8:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 9560,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9559,
                            "name": "ENS",
                            "nameLocations": [
                              "535:3:43"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "535:3:43"
                          },
                          "referencedDeclaration": 12157,
                          "src": "535:3:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "534:10:43"
                  },
                  "returnParameters": {
                    "id": 9563,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "545:0:43"
                  },
                  "scope": 9764,
                  "src": "523:49:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9596,
                    "nodeType": "Block",
                    "src": "650:286:43",
                    "statements": [
                      {
                        "assignments": [
                          9577
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9577,
                            "mutability": "mutable",
                            "name": "r",
                            "nameLocation": "669:1:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 9596,
                            "src": "660:10:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Resolver_$13920",
                              "typeString": "contract Resolver"
                            },
                            "typeName": {
                              "id": 9576,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 9575,
                                "name": "Resolver",
                                "nameLocations": [
                                  "660:8:43"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 13920,
                                "src": "660:8:43"
                              },
                              "referencedDeclaration": 13920,
                              "src": "660:8:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Resolver_$13920",
                                "typeString": "contract Resolver"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9584,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 9581,
                                  "name": "ETH_NAMEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9555,
                                  "src": "695:12:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 9579,
                                  "name": "ens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9558,
                                  "src": "682:3:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ENS_$12157",
                                    "typeString": "contract ENS"
                                  }
                                },
                                "id": 9580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "686:8:43",
                                "memberName": "resolver",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12133,
                                "src": "682:12:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                  "typeString": "function (bytes32) view external returns (address)"
                                }
                              },
                              "id": 9582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "682:26:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9578,
                            "name": "Resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13920,
                            "src": "673:8:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Resolver_$13920_$",
                              "typeString": "type(contract Resolver)"
                            }
                          },
                          "id": 9583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "673:36:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Resolver_$13920",
                            "typeString": "contract Resolver"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "660:49:43"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 9588,
                                  "name": "ETH_NAMEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9555,
                                  "src": "822:12:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 9590,
                                        "name": "IETHRegistrarController",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11321,
                                        "src": "861:23:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IETHRegistrarController_$11321_$",
                                          "typeString": "type(contract IETHRegistrarController)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IETHRegistrarController_$11321_$",
                                          "typeString": "type(contract IETHRegistrarController)"
                                        }
                                      ],
                                      "id": 9589,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "856:4:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 9591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "856:29:43",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IETHRegistrarController_$11321",
                                      "typeString": "type(contract IETHRegistrarController)"
                                    }
                                  },
                                  "id": 9592,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "886:11:43",
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "856:41:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 9586,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9577,
                                  "src": "778:1:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Resolver_$13920",
                                    "typeString": "contract Resolver"
                                  }
                                },
                                "id": 9587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "780:20:43",
                                "memberName": "interfaceImplementer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15064,
                                "src": "778:22:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes4_$returns$_t_address_$",
                                  "typeString": "function (bytes32,bytes4) view external returns (address)"
                                }
                              },
                              "id": 9593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "778:137:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9585,
                            "name": "ETHRegistrarController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10590,
                            "src": "738:22:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ETHRegistrarController_$10590_$",
                              "typeString": "type(contract ETHRegistrarController)"
                            }
                          },
                          "id": 9594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "738:191:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                            "typeString": "contract ETHRegistrarController"
                          }
                        },
                        "functionReturnParameters": 9574,
                        "id": 9595,
                        "nodeType": "Return",
                        "src": "719:210:43"
                      }
                    ]
                  },
                  "id": 9597,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getController",
                  "nameLocation": "587:13:43",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "600:2:43"
                  },
                  "returnParameters": {
                    "id": 9574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9573,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9597,
                        "src": "626:22:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                          "typeString": "contract ETHRegistrarController"
                        },
                        "typeName": {
                          "id": 9572,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9571,
                            "name": "ETHRegistrarController",
                            "nameLocations": [
                              "626:22:43"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 10590,
                            "src": "626:22:43"
                          },
                          "referencedDeclaration": 10590,
                          "src": "626:22:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                            "typeString": "contract ETHRegistrarController"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "625:24:43"
                  },
                  "scope": 9764,
                  "src": "578:358:43",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    11233
                  ],
                  "body": {
                    "id": 9654,
                    "nodeType": "Block",
                    "src": "1087:409:43",
                    "statements": [
                      {
                        "assignments": [
                          9610
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9610,
                            "mutability": "mutable",
                            "name": "controller",
                            "nameLocation": "1120:10:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 9654,
                            "src": "1097:33:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                              "typeString": "contract ETHRegistrarController"
                            },
                            "typeName": {
                              "id": 9609,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 9608,
                                "name": "ETHRegistrarController",
                                "nameLocations": [
                                  "1097:22:43"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 10590,
                                "src": "1097:22:43"
                              },
                              "referencedDeclaration": 10590,
                              "src": "1097:22:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                                "typeString": "contract ETHRegistrarController"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9613,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9611,
                            "name": "getController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9597,
                            "src": "1133:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ETHRegistrarController_$10590_$",
                              "typeString": "function () view returns (contract ETHRegistrarController)"
                            }
                          },
                          "id": 9612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1133:15:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                            "typeString": "contract ETHRegistrarController"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1097:51:43"
                      },
                      {
                        "assignments": [
                          9615
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9615,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "1166:6:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 9654,
                            "src": "1158:14:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9614,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1158:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9618,
                        "initialValue": {
                          "expression": {
                            "id": 9616,
                            "name": "names",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9600,
                            "src": "1175:5:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "string calldata[] calldata"
                            }
                          },
                          "id": 9617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1181:6:43",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1175:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1158:29:43"
                      },
                      {
                        "body": {
                          "id": 9652,
                          "nodeType": "Block",
                          "src": "1231:259:43",
                          "statements": [
                            {
                              "assignments": [
                                9630
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9630,
                                  "mutability": "mutable",
                                  "name": "price",
                                  "nameLocation": "1271:5:43",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9652,
                                  "src": "1245:31:43",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                    "typeString": "struct IPriceOracle.Price"
                                  },
                                  "typeName": {
                                    "id": 9629,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 9628,
                                      "name": "IPriceOracle.Price",
                                      "nameLocations": [
                                        "1245:12:43",
                                        "1258:5:43"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 11328,
                                      "src": "1245:18:43"
                                    },
                                    "referencedDeclaration": 11328,
                                    "src": "1245:18:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Price_$11328_storage_ptr",
                                      "typeString": "struct IPriceOracle.Price"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9638,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 9633,
                                      "name": "names",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9600,
                                      "src": "1317:5:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "string calldata[] calldata"
                                      }
                                    },
                                    "id": 9635,
                                    "indexExpression": {
                                      "id": 9634,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9620,
                                      "src": "1323:1:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1317:8:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  },
                                  {
                                    "id": 9636,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9602,
                                    "src": "1343:8:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9631,
                                    "name": "controller",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9610,
                                    "src": "1279:10:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                                      "typeString": "contract ETHRegistrarController"
                                    }
                                  },
                                  "id": 9632,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1290:9:43",
                                  "memberName": "rentPrice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9987,
                                  "src": "1279:20:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_Price_$11328_memory_ptr_$",
                                    "typeString": "function (string memory,uint256) view external returns (struct IPriceOracle.Price memory)"
                                  }
                                },
                                "id": 9637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1279:86:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                  "typeString": "struct IPriceOracle.Price memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1245:120:43"
                            },
                            {
                              "id": 9651,
                              "nodeType": "UncheckedBlock",
                              "src": "1379:101:43",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 9640,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "1407:3:43",
                                    "subExpression": {
                                      "id": 9639,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9620,
                                      "src": "1409:1:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9641,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1407:3:43"
                                },
                                {
                                  "expression": {
                                    "id": 9649,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 9642,
                                      "name": "total",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9606,
                                      "src": "1428:5:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9647,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 9643,
                                              "name": "price",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9630,
                                              "src": "1438:5:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                                "typeString": "struct IPriceOracle.Price memory"
                                              }
                                            },
                                            "id": 9644,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "1444:4:43",
                                            "memberName": "base",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11325,
                                            "src": "1438:10:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 9645,
                                              "name": "price",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9630,
                                              "src": "1451:5:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                                "typeString": "struct IPriceOracle.Price memory"
                                              }
                                            },
                                            "id": 9646,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "1457:7:43",
                                            "memberName": "premium",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11327,
                                            "src": "1451:13:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1438:26:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 9648,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1437:28:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1428:37:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9650,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1428:37:43"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9623,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9620,
                            "src": "1217:1:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 9624,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9615,
                            "src": "1221:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1217:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9653,
                        "initializationExpression": {
                          "assignments": [
                            9620
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9620,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1210:1:43",
                              "nodeType": "VariableDeclaration",
                              "scope": 9653,
                              "src": "1202:9:43",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9619,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1202:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 9622,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 9621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1214:1:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1202:13:43"
                        },
                        "nodeType": "ForStatement",
                        "src": "1197:293:43"
                      }
                    ]
                  },
                  "functionSelector": "3971d467",
                  "id": 9655,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rentPrice",
                  "nameLocation": "951:9:43",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9604,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1042:8:43"
                  },
                  "parameters": {
                    "id": 9603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9600,
                        "mutability": "mutable",
                        "name": "names",
                        "nameLocation": "979:5:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 9655,
                        "src": "961:23:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9598,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "961:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 9599,
                          "nodeType": "ArrayTypeName",
                          "src": "961:8:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9602,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "994:8:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 9655,
                        "src": "986:16:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "986:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "960:43:43"
                  },
                  "returnParameters": {
                    "id": 9607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9606,
                        "mutability": "mutable",
                        "name": "total",
                        "nameLocation": "1076:5:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 9655,
                        "src": "1068:13:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1068:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1067:15:43"
                  },
                  "scope": 9764,
                  "src": "942:554:43",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    11241
                  ],
                  "body": {
                    "id": 9740,
                    "nodeType": "Block",
                    "src": "1617:643:43",
                    "statements": [
                      {
                        "assignments": [
                          9666
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9666,
                            "mutability": "mutable",
                            "name": "controller",
                            "nameLocation": "1650:10:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 9740,
                            "src": "1627:33:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                              "typeString": "contract ETHRegistrarController"
                            },
                            "typeName": {
                              "id": 9665,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 9664,
                                "name": "ETHRegistrarController",
                                "nameLocations": [
                                  "1627:22:43"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 10590,
                                "src": "1627:22:43"
                              },
                              "referencedDeclaration": 10590,
                              "src": "1627:22:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                                "typeString": "contract ETHRegistrarController"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9669,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9667,
                            "name": "getController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9597,
                            "src": "1663:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ETHRegistrarController_$10590_$",
                              "typeString": "function () view returns (contract ETHRegistrarController)"
                            }
                          },
                          "id": 9668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1663:15:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                            "typeString": "contract ETHRegistrarController"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1627:51:43"
                      },
                      {
                        "assignments": [
                          9671
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9671,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "1696:6:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 9740,
                            "src": "1688:14:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9670,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1688:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9674,
                        "initialValue": {
                          "expression": {
                            "id": 9672,
                            "name": "names",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9658,
                            "src": "1705:5:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "string calldata[] calldata"
                            }
                          },
                          "id": 9673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1711:6:43",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1705:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1688:29:43"
                      },
                      {
                        "assignments": [
                          9676
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9676,
                            "mutability": "mutable",
                            "name": "total",
                            "nameLocation": "1735:5:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 9740,
                            "src": "1727:13:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9675,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1727:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9677,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1727:13:43"
                      },
                      {
                        "body": {
                          "id": 9725,
                          "nodeType": "Block",
                          "src": "1784:371:43",
                          "statements": [
                            {
                              "assignments": [
                                9689
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9689,
                                  "mutability": "mutable",
                                  "name": "price",
                                  "nameLocation": "1824:5:43",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9725,
                                  "src": "1798:31:43",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                    "typeString": "struct IPriceOracle.Price"
                                  },
                                  "typeName": {
                                    "id": 9688,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 9687,
                                      "name": "IPriceOracle.Price",
                                      "nameLocations": [
                                        "1798:12:43",
                                        "1811:5:43"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 11328,
                                      "src": "1798:18:43"
                                    },
                                    "referencedDeclaration": 11328,
                                    "src": "1798:18:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Price_$11328_storage_ptr",
                                      "typeString": "struct IPriceOracle.Price"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9697,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 9692,
                                      "name": "names",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9658,
                                      "src": "1870:5:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "string calldata[] calldata"
                                      }
                                    },
                                    "id": 9694,
                                    "indexExpression": {
                                      "id": 9693,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9679,
                                      "src": "1876:1:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1870:8:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  },
                                  {
                                    "id": 9695,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9660,
                                    "src": "1896:8:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9690,
                                    "name": "controller",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9666,
                                    "src": "1832:10:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                                      "typeString": "contract ETHRegistrarController"
                                    }
                                  },
                                  "id": 9691,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1843:9:43",
                                  "memberName": "rentPrice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9987,
                                  "src": "1832:20:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_Price_$11328_memory_ptr_$",
                                    "typeString": "function (string memory,uint256) view external returns (struct IPriceOracle.Price memory)"
                                  }
                                },
                                "id": 9696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1832:86:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                  "typeString": "struct IPriceOracle.Price memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1798:120:43"
                            },
                            {
                              "assignments": [
                                9699
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9699,
                                  "mutability": "mutable",
                                  "name": "totalPrice",
                                  "nameLocation": "1940:10:43",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9725,
                                  "src": "1932:18:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9698,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1932:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9705,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 9700,
                                    "name": "price",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9689,
                                    "src": "1953:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                      "typeString": "struct IPriceOracle.Price memory"
                                    }
                                  },
                                  "id": 9701,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1959:4:43",
                                  "memberName": "base",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11325,
                                  "src": "1953:10:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "expression": {
                                    "id": 9702,
                                    "name": "price",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9689,
                                    "src": "1966:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                      "typeString": "struct IPriceOracle.Price memory"
                                    }
                                  },
                                  "id": 9703,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1972:7:43",
                                  "memberName": "premium",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11327,
                                  "src": "1966:13:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1953:26:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1932:47:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 9711,
                                      "name": "names",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9658,
                                      "src": "2029:5:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "string calldata[] calldata"
                                      }
                                    },
                                    "id": 9713,
                                    "indexExpression": {
                                      "id": 9712,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9679,
                                      "src": "2035:1:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2029:8:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  },
                                  {
                                    "id": 9714,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9660,
                                    "src": "2039:8:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 9706,
                                      "name": "controller",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9666,
                                      "src": "1993:10:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                                        "typeString": "contract ETHRegistrarController"
                                      }
                                    },
                                    "id": 9708,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2004:5:43",
                                    "memberName": "renew",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 10287,
                                    "src": "1993:16:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                                      "typeString": "function (string memory,uint256) payable external"
                                    }
                                  },
                                  "id": 9710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "value"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 9709,
                                      "name": "totalPrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9699,
                                      "src": "2017:10:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "src": "1993:35:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_string_memory_ptr_$_t_uint256_$returns$__$value",
                                    "typeString": "function (string memory,uint256) payable external"
                                  }
                                },
                                "id": 9715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1993:55:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9716,
                              "nodeType": "ExpressionStatement",
                              "src": "1993:55:43"
                            },
                            {
                              "id": 9724,
                              "nodeType": "UncheckedBlock",
                              "src": "2062:83:43",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 9718,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "2090:3:43",
                                    "subExpression": {
                                      "id": 9717,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9679,
                                      "src": "2092:1:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9719,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2090:3:43"
                                },
                                {
                                  "expression": {
                                    "id": 9722,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 9720,
                                      "name": "total",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9676,
                                      "src": "2111:5:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 9721,
                                      "name": "totalPrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9699,
                                      "src": "2120:10:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2111:19:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9723,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2111:19:43"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9682,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9679,
                            "src": "1770:1:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 9683,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9671,
                            "src": "1774:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1770:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9726,
                        "initializationExpression": {
                          "assignments": [
                            9679
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9679,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1763:1:43",
                              "nodeType": "VariableDeclaration",
                              "scope": 9726,
                              "src": "1755:9:43",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9678,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1755:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 9681,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 9680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1767:1:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1755:13:43"
                        },
                        "nodeType": "ForStatement",
                        "src": "1750:405:43"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9735,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2239:4:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_BulkRenewal_$9764",
                                      "typeString": "contract BulkRenewal"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_BulkRenewal_$9764",
                                      "typeString": "contract BulkRenewal"
                                    }
                                  ],
                                  "id": 9734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2231:7:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9733,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2231:7:43",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2231:13:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2245:7:43",
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "src": "2231:21:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 9729,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2210:3:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 9730,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2214:6:43",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "2210:10:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2202:8:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 9727,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2202:8:43",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2202:19:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 9732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2222:8:43",
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "src": "2202:28:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 9738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2202:51:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9739,
                        "nodeType": "ExpressionStatement",
                        "src": "2202:51:43"
                      }
                    ]
                  },
                  "functionSelector": "e8d6dbb4",
                  "id": 9741,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renewAll",
                  "nameLocation": "1511:8:43",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9662,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1604:8:43"
                  },
                  "parameters": {
                    "id": 9661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9658,
                        "mutability": "mutable",
                        "name": "names",
                        "nameLocation": "1538:5:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 9741,
                        "src": "1520:23:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9656,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1520:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 9657,
                          "nodeType": "ArrayTypeName",
                          "src": "1520:8:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9660,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1553:8:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 9741,
                        "src": "1545:16:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9659,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1545:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1519:43:43"
                  },
                  "returnParameters": {
                    "id": 9663,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1617:0:43"
                  },
                  "scope": 9764,
                  "src": "1502:758:43",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9762,
                    "nodeType": "Block",
                    "src": "2370:137:43",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9748,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9743,
                              "src": "2399:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9750,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3094,
                                    "src": "2419:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 9749,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2414:4:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2414:13:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3094",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 9752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2428:11:43",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "2414:25:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2399:40:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9754,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9743,
                              "src": "2455:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9756,
                                    "name": "IBulkRenewal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11242,
                                    "src": "2475:12:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IBulkRenewal_$11242_$",
                                      "typeString": "type(contract IBulkRenewal)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IBulkRenewal_$11242_$",
                                      "typeString": "type(contract IBulkRenewal)"
                                    }
                                  ],
                                  "id": 9755,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2470:4:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2470:18:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IBulkRenewal_$11242",
                                  "typeString": "type(contract IBulkRenewal)"
                                }
                              },
                              "id": 9758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2489:11:43",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "2470:30:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2455:45:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2399:101:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9747,
                        "id": 9761,
                        "nodeType": "Return",
                        "src": "2380:120:43"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 9763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "2275:17:43",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9744,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9743,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "2300:11:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 9763,
                        "src": "2293:18:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 9742,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2293:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2292:20:43"
                  },
                  "returnParameters": {
                    "id": 9747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9746,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9763,
                        "src": "2360:4:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9745,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2360:4:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2359:6:43"
                  },
                  "scope": 9764,
                  "src": "2266:241:43",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9765,
              "src": "328:2181:43",
              "usedErrors": []
            }
          ],
          "src": "31:2479:43"
        },
        "id": 43
      },
      "contracts/ethregistrar/ETHRegistrarController.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/ETHRegistrarController.sol",
          "exportedSymbols": {
            "Address": [
              2833
            ],
            "BaseRegistrarImplementation": [
              9541
            ],
            "CommitmentTooNew": [
              9791
            ],
            "CommitmentTooOld": [
              9795
            ],
            "DurationTooShort": [
              9803
            ],
            "ERC20Recoverable": [
              15873
            ],
            "ETHRegistrarController": [
              10590
            ],
            "IERC165": [
              3094
            ],
            "IETHRegistrarController": [
              11321
            ],
            "INameWrapper": [
              18030
            ],
            "IPriceOracle": [
              11342
            ],
            "InsufficientValue": [
              9811
            ],
            "MaxCommitmentAgeTooHigh": [
              9819
            ],
            "MaxCommitmentAgeTooLow": [
              9817
            ],
            "NameNotAvailable": [
              9799
            ],
            "Ownable": [
              642
            ],
            "Resolver": [
              13920
            ],
            "ResolverRequiredWhenDataSupplied": [
              9805
            ],
            "ReverseRegistrar": [
              13213
            ],
            "StringUtils": [
              12020
            ],
            "Unauthorised": [
              9815
            ],
            "UnexpiredCommitmentExists": [
              9809
            ]
          },
          "id": 10591,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9766,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:44"
            },
            {
              "absolutePath": "contracts/ethregistrar/BaseRegistrarImplementation.sol",
              "file": "./BaseRegistrarImplementation.sol",
              "id": 9768,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 9542,
              "src": "57:78:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9767,
                    "name": "BaseRegistrarImplementation",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9541,
                    "src": "65:27:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/StringUtils.sol",
              "file": "./StringUtils.sol",
              "id": 9770,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 12021,
              "src": "136:46:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9769,
                    "name": "StringUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12020,
                    "src": "144:11:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/Resolver.sol",
              "file": "../resolvers/Resolver.sol",
              "id": 9772,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 13921,
              "src": "183:51:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9771,
                    "name": "Resolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13920,
                    "src": "191:8:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/registry/ReverseRegistrar.sol",
              "file": "../registry/ReverseRegistrar.sol",
              "id": 9774,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 13214,
              "src": "235:66:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9773,
                    "name": "ReverseRegistrar",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13213,
                    "src": "243:16:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IETHRegistrarController.sol",
              "file": "./IETHRegistrarController.sol",
              "id": 9777,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 11322,
              "src": "302:84:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9775,
                    "name": "IETHRegistrarController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11321,
                    "src": "310:23:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 9776,
                    "name": "IPriceOracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11342,
                    "src": "335:12:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 9779,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 643,
              "src": "388:67:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9778,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 642,
                    "src": "396:7:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "id": 9781,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 3095,
              "src": "456:80:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9780,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3094,
                    "src": "464:7:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "@openzeppelin/contracts/utils/Address.sol",
              "id": 9783,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 2834,
              "src": "537:66:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9782,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2833,
                    "src": "545:7:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/INameWrapper.sol",
              "file": "../wrapper/INameWrapper.sol",
              "id": 9785,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 18031,
              "src": "604:57:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9784,
                    "name": "INameWrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18030,
                    "src": "612:12:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/ERC20Recoverable.sol",
              "file": "../utils/ERC20Recoverable.sol",
              "id": 9787,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10591,
              "sourceUnit": 15874,
              "src": "662:63:44",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9786,
                    "name": "ERC20Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15873,
                    "src": "670:16:44",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "errorSelector": "5320bcf9",
              "id": 9791,
              "name": "CommitmentTooNew",
              "nameLocation": "733:16:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9790,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9789,
                    "mutability": "mutable",
                    "name": "commitment",
                    "nameLocation": "758:10:44",
                    "nodeType": "VariableDeclaration",
                    "scope": 9791,
                    "src": "750:18:44",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 9788,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "750:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "749:20:44"
              },
              "src": "727:43:44"
            },
            {
              "errorSelector": "cb7690d7",
              "id": 9795,
              "name": "CommitmentTooOld",
              "nameLocation": "777:16:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9794,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9793,
                    "mutability": "mutable",
                    "name": "commitment",
                    "nameLocation": "802:10:44",
                    "nodeType": "VariableDeclaration",
                    "scope": 9795,
                    "src": "794:18:44",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 9792,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "794:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "793:20:44"
              },
              "src": "771:43:44"
            },
            {
              "errorSelector": "477707e8",
              "id": 9799,
              "name": "NameNotAvailable",
              "nameLocation": "821:16:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9798,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9797,
                    "mutability": "mutable",
                    "name": "name",
                    "nameLocation": "845:4:44",
                    "nodeType": "VariableDeclaration",
                    "scope": 9799,
                    "src": "838:11:44",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string"
                    },
                    "typeName": {
                      "id": 9796,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "838:6:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "837:13:44"
              },
              "src": "815:36:44"
            },
            {
              "errorSelector": "9a71997b",
              "id": 9803,
              "name": "DurationTooShort",
              "nameLocation": "858:16:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9802,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9801,
                    "mutability": "mutable",
                    "name": "duration",
                    "nameLocation": "883:8:44",
                    "nodeType": "VariableDeclaration",
                    "scope": 9803,
                    "src": "875:16:44",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 9800,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "875:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "874:18:44"
              },
              "src": "852:41:44"
            },
            {
              "errorSelector": "d3f605c4",
              "id": 9805,
              "name": "ResolverRequiredWhenDataSupplied",
              "nameLocation": "900:32:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9804,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "932:2:44"
              },
              "src": "894:41:44"
            },
            {
              "errorSelector": "0a059d71",
              "id": 9809,
              "name": "UnexpiredCommitmentExists",
              "nameLocation": "942:25:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9808,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9807,
                    "mutability": "mutable",
                    "name": "commitment",
                    "nameLocation": "976:10:44",
                    "nodeType": "VariableDeclaration",
                    "scope": 9809,
                    "src": "968:18:44",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 9806,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "968:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "967:20:44"
              },
              "src": "936:52:44"
            },
            {
              "errorSelector": "11011294",
              "id": 9811,
              "name": "InsufficientValue",
              "nameLocation": "995:17:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9810,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "1012:2:44"
              },
              "src": "989:26:44"
            },
            {
              "errorSelector": "e4fd57ae",
              "id": 9815,
              "name": "Unauthorised",
              "nameLocation": "1022:12:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9814,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9813,
                    "mutability": "mutable",
                    "name": "node",
                    "nameLocation": "1043:4:44",
                    "nodeType": "VariableDeclaration",
                    "scope": 9815,
                    "src": "1035:12:44",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 9812,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1035:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1034:14:44"
              },
              "src": "1016:33:44"
            },
            {
              "errorSelector": "3e5aa838",
              "id": 9817,
              "name": "MaxCommitmentAgeTooLow",
              "nameLocation": "1056:22:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9816,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "1078:2:44"
              },
              "src": "1050:31:44"
            },
            {
              "errorSelector": "2d0c6794",
              "id": 9819,
              "name": "MaxCommitmentAgeTooHigh",
              "nameLocation": "1088:23:44",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9818,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "1111:2:44"
              },
              "src": "1082:32:44"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9821,
                    "name": "Ownable",
                    "nameLocations": [
                      "1244:7:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "1244:7:44"
                  },
                  "id": 9822,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1244:7:44"
                },
                {
                  "baseName": {
                    "id": 9823,
                    "name": "IETHRegistrarController",
                    "nameLocations": [
                      "1257:23:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11321,
                    "src": "1257:23:44"
                  },
                  "id": 9824,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1257:23:44"
                },
                {
                  "baseName": {
                    "id": 9825,
                    "name": "IERC165",
                    "nameLocations": [
                      "1286:7:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3094,
                    "src": "1286:7:44"
                  },
                  "id": 9826,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1286:7:44"
                },
                {
                  "baseName": {
                    "id": 9827,
                    "name": "ERC20Recoverable",
                    "nameLocations": [
                      "1299:16:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15873,
                    "src": "1299:16:44"
                  },
                  "id": 9828,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1299:16:44"
                }
              ],
              "canonicalName": "ETHRegistrarController",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 9820,
                "nodeType": "StructuredDocumentation",
                "src": "1116:88:44",
                "text": " @dev A registrar controller for registering and renewing names at fixed cost."
              },
              "fullyImplemented": true,
              "id": 10590,
              "linearizedBaseContracts": [
                10590,
                15873,
                3094,
                11321,
                642,
                2855
              ],
              "name": "ETHRegistrarController",
              "nameLocation": "1214:22:44",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 9830,
                  "libraryName": {
                    "id": 9829,
                    "name": "StringUtils",
                    "nameLocations": [
                      "1328:11:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12020,
                    "src": "1328:11:44"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1322:24:44"
                },
                {
                  "global": false,
                  "id": 9833,
                  "libraryName": {
                    "id": 9831,
                    "name": "Address",
                    "nameLocations": [
                      "1357:7:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2833,
                    "src": "1357:7:44"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1351:26:44",
                  "typeName": {
                    "id": 9832,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1369:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "8a95b09f",
                  "id": 9836,
                  "mutability": "constant",
                  "name": "MIN_REGISTRATION_DURATION",
                  "nameLocation": "1407:25:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1383:59:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9834,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1383:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3238",
                    "id": 9835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1435:7:44",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2419200_by_1",
                      "typeString": "int_const 2419200"
                    },
                    "value": "28"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 9839,
                  "mutability": "constant",
                  "name": "ETH_NODE",
                  "nameLocation": "1473:8:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1448:110:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9837,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1448:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307839336364656237303862373534356463363638656239323830313736313639643163333363666438656436663034363930613062636338386139336663346165",
                    "id": 9838,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1492:66:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_66853817334611902194238164484889819180315942402426128563245745834960013477038_by_1",
                      "typeString": "int_const 6685...(69 digits omitted)...7038"
                    },
                    "value": "0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 9846,
                  "mutability": "constant",
                  "name": "MAX_EXPIRY",
                  "nameLocation": "1588:10:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1564:53:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 9840,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1564:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 9843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1606:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 9842,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "1606:6:44",
                            "typeDescriptions": {}
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          }
                        ],
                        "id": 9841,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -27,
                        "src": "1601:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 9844,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1601:12:44",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_uint64",
                        "typeString": "type(uint64)"
                      }
                    },
                    "id": 9845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1614:3:44",
                    "memberName": "max",
                    "nodeType": "MemberAccess",
                    "src": "1601:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 9849,
                  "mutability": "immutable",
                  "name": "base",
                  "nameLocation": "1661:4:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1623:42:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                    "typeString": "contract BaseRegistrarImplementation"
                  },
                  "typeName": {
                    "id": 9848,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9847,
                      "name": "BaseRegistrarImplementation",
                      "nameLocations": [
                        "1623:27:44"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9541,
                      "src": "1623:27:44"
                    },
                    "referencedDeclaration": 9541,
                    "src": "1623:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                      "typeString": "contract BaseRegistrarImplementation"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "d3419bf3",
                  "id": 9852,
                  "mutability": "immutable",
                  "name": "prices",
                  "nameLocation": "1701:6:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1671:36:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPriceOracle_$11342",
                    "typeString": "contract IPriceOracle"
                  },
                  "typeName": {
                    "id": 9851,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9850,
                      "name": "IPriceOracle",
                      "nameLocations": [
                        "1671:12:44"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 11342,
                      "src": "1671:12:44"
                    },
                    "referencedDeclaration": 11342,
                    "src": "1671:12:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceOracle_$11342",
                      "typeString": "contract IPriceOracle"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "8d839ffe",
                  "id": 9854,
                  "mutability": "immutable",
                  "name": "minCommitmentAge",
                  "nameLocation": "1738:16:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1713:41:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1713:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "ce1e09c0",
                  "id": 9856,
                  "mutability": "immutable",
                  "name": "maxCommitmentAge",
                  "nameLocation": "1785:16:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1760:41:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9855,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1760:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "80869853",
                  "id": 9859,
                  "mutability": "immutable",
                  "name": "reverseRegistrar",
                  "nameLocation": "1841:16:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1807:50:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                    "typeString": "contract ReverseRegistrar"
                  },
                  "typeName": {
                    "id": 9858,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9857,
                      "name": "ReverseRegistrar",
                      "nameLocations": [
                        "1807:16:44"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 13213,
                      "src": "1807:16:44"
                    },
                    "referencedDeclaration": 13213,
                    "src": "1807:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                      "typeString": "contract ReverseRegistrar"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "a8e5fbc0",
                  "id": 9862,
                  "mutability": "immutable",
                  "name": "nameWrapper",
                  "nameLocation": "1893:11:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1863:41:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_INameWrapper_$18030",
                    "typeString": "contract INameWrapper"
                  },
                  "typeName": {
                    "id": 9861,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9860,
                      "name": "INameWrapper",
                      "nameLocations": [
                        "1863:12:44"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18030,
                      "src": "1863:12:44"
                    },
                    "referencedDeclaration": 18030,
                    "src": "1863:12:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_INameWrapper_$18030",
                      "typeString": "contract INameWrapper"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "839df945",
                  "id": 9866,
                  "mutability": "mutable",
                  "name": "commitments",
                  "nameLocation": "1946:11:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 10590,
                  "src": "1911:46:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "typeName": {
                    "id": 9865,
                    "keyType": {
                      "id": 9863,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1919:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1911:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                      "typeString": "mapping(bytes32 => uint256)"
                    },
                    "valueType": {
                      "id": 9864,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1930:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "69e37f151eb98a09618ddaa80c8cfaf1ce5996867c489f45b555b412271ebf27",
                  "id": 9880,
                  "name": "NameRegistered",
                  "nameLocation": "1970:14:44",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9868,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "2001:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9880,
                        "src": "1994:11:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9867,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1994:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9870,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "2031:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9880,
                        "src": "2015:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 9869,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2015:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9872,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2062:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9880,
                        "src": "2046:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2046:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9874,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "baseCost",
                        "nameLocation": "2085:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9880,
                        "src": "2077:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9873,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2077:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9876,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "premium",
                        "nameLocation": "2111:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9880,
                        "src": "2103:15:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9875,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2103:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9878,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "2136:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9880,
                        "src": "2128:15:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9877,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2128:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1984:165:44"
                  },
                  "src": "1964:186:44"
                },
                {
                  "anonymous": false,
                  "eventSelector": "3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae",
                  "id": 9890,
                  "name": "NameRenewed",
                  "nameLocation": "2161:11:44",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9889,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9882,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "2189:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9890,
                        "src": "2182:11:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9881,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2182:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9884,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "2219:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9890,
                        "src": "2203:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 9883,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2203:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9886,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "cost",
                        "nameLocation": "2242:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9890,
                        "src": "2234:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9885,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2234:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9888,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "2264:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9890,
                        "src": "2256:15:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9887,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2256:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2172:105:44"
                  },
                  "src": "2155:123:44"
                },
                {
                  "body": {
                    "id": 9950,
                    "nodeType": "Block",
                    "src": "2524:447:44",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9909,
                            "name": "_maxCommitmentAge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9900,
                            "src": "2538:17:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 9910,
                            "name": "_minCommitmentAge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9898,
                            "src": "2559:17:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2538:38:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9916,
                        "nodeType": "IfStatement",
                        "src": "2534:100:44",
                        "trueBody": {
                          "id": 9915,
                          "nodeType": "Block",
                          "src": "2578:56:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 9912,
                                  "name": "MaxCommitmentAgeTooLow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9817,
                                  "src": "2599:22:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2599:24:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9914,
                              "nodeType": "RevertStatement",
                              "src": "2592:31:44"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9917,
                            "name": "_maxCommitmentAge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9900,
                            "src": "2648:17:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 9918,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "2668:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 9919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2674:9:44",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "2668:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2648:35:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9925,
                        "nodeType": "IfStatement",
                        "src": "2644:98:44",
                        "trueBody": {
                          "id": 9924,
                          "nodeType": "Block",
                          "src": "2685:57:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 9921,
                                  "name": "MaxCommitmentAgeTooHigh",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9819,
                                  "src": "2706:23:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2706:25:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9923,
                              "nodeType": "RevertStatement",
                              "src": "2699:32:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 9928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9926,
                            "name": "base",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9849,
                            "src": "2752:4:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                              "typeString": "contract BaseRegistrarImplementation"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9927,
                            "name": "_base",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9893,
                            "src": "2759:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                              "typeString": "contract BaseRegistrarImplementation"
                            }
                          },
                          "src": "2752:12:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                            "typeString": "contract BaseRegistrarImplementation"
                          }
                        },
                        "id": 9929,
                        "nodeType": "ExpressionStatement",
                        "src": "2752:12:44"
                      },
                      {
                        "expression": {
                          "id": 9932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9930,
                            "name": "prices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9852,
                            "src": "2774:6:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracle_$11342",
                              "typeString": "contract IPriceOracle"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9931,
                            "name": "_prices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9896,
                            "src": "2783:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracle_$11342",
                              "typeString": "contract IPriceOracle"
                            }
                          },
                          "src": "2774:16:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracle_$11342",
                            "typeString": "contract IPriceOracle"
                          }
                        },
                        "id": 9933,
                        "nodeType": "ExpressionStatement",
                        "src": "2774:16:44"
                      },
                      {
                        "expression": {
                          "id": 9936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9934,
                            "name": "minCommitmentAge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9854,
                            "src": "2800:16:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9935,
                            "name": "_minCommitmentAge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9898,
                            "src": "2819:17:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2800:36:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9937,
                        "nodeType": "ExpressionStatement",
                        "src": "2800:36:44"
                      },
                      {
                        "expression": {
                          "id": 9940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9938,
                            "name": "maxCommitmentAge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9856,
                            "src": "2846:16:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9939,
                            "name": "_maxCommitmentAge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9900,
                            "src": "2865:17:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2846:36:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9941,
                        "nodeType": "ExpressionStatement",
                        "src": "2846:36:44"
                      },
                      {
                        "expression": {
                          "id": 9944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9942,
                            "name": "reverseRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9859,
                            "src": "2892:16:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                              "typeString": "contract ReverseRegistrar"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9943,
                            "name": "_reverseRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9903,
                            "src": "2911:17:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                              "typeString": "contract ReverseRegistrar"
                            }
                          },
                          "src": "2892:36:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                            "typeString": "contract ReverseRegistrar"
                          }
                        },
                        "id": 9945,
                        "nodeType": "ExpressionStatement",
                        "src": "2892:36:44"
                      },
                      {
                        "expression": {
                          "id": 9948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9946,
                            "name": "nameWrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9862,
                            "src": "2938:11:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapper_$18030",
                              "typeString": "contract INameWrapper"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9947,
                            "name": "_nameWrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9906,
                            "src": "2952:12:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapper_$18030",
                              "typeString": "contract INameWrapper"
                            }
                          },
                          "src": "2938:26:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapper_$18030",
                            "typeString": "contract INameWrapper"
                          }
                        },
                        "id": 9949,
                        "nodeType": "ExpressionStatement",
                        "src": "2938:26:44"
                      }
                    ]
                  },
                  "id": 9951,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9907,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9893,
                        "mutability": "mutable",
                        "name": "_base",
                        "nameLocation": "2333:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9951,
                        "src": "2305:33:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                          "typeString": "contract BaseRegistrarImplementation"
                        },
                        "typeName": {
                          "id": 9892,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9891,
                            "name": "BaseRegistrarImplementation",
                            "nameLocations": [
                              "2305:27:44"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 9541,
                            "src": "2305:27:44"
                          },
                          "referencedDeclaration": 9541,
                          "src": "2305:27:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                            "typeString": "contract BaseRegistrarImplementation"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9896,
                        "mutability": "mutable",
                        "name": "_prices",
                        "nameLocation": "2361:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9951,
                        "src": "2348:20:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPriceOracle_$11342",
                          "typeString": "contract IPriceOracle"
                        },
                        "typeName": {
                          "id": 9895,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9894,
                            "name": "IPriceOracle",
                            "nameLocations": [
                              "2348:12:44"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11342,
                            "src": "2348:12:44"
                          },
                          "referencedDeclaration": 11342,
                          "src": "2348:12:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracle_$11342",
                            "typeString": "contract IPriceOracle"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9898,
                        "mutability": "mutable",
                        "name": "_minCommitmentAge",
                        "nameLocation": "2386:17:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9951,
                        "src": "2378:25:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9897,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2378:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9900,
                        "mutability": "mutable",
                        "name": "_maxCommitmentAge",
                        "nameLocation": "2421:17:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9951,
                        "src": "2413:25:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9899,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2413:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9903,
                        "mutability": "mutable",
                        "name": "_reverseRegistrar",
                        "nameLocation": "2465:17:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9951,
                        "src": "2448:34:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                          "typeString": "contract ReverseRegistrar"
                        },
                        "typeName": {
                          "id": 9902,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9901,
                            "name": "ReverseRegistrar",
                            "nameLocations": [
                              "2448:16:44"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 13213,
                            "src": "2448:16:44"
                          },
                          "referencedDeclaration": 13213,
                          "src": "2448:16:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                            "typeString": "contract ReverseRegistrar"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9906,
                        "mutability": "mutable",
                        "name": "_nameWrapper",
                        "nameLocation": "2505:12:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9951,
                        "src": "2492:25:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INameWrapper_$18030",
                          "typeString": "contract INameWrapper"
                        },
                        "typeName": {
                          "id": 9905,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9904,
                            "name": "INameWrapper",
                            "nameLocations": [
                              "2492:12:44"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 18030,
                            "src": "2492:12:44"
                          },
                          "referencedDeclaration": 18030,
                          "src": "2492:12:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapper_$18030",
                            "typeString": "contract INameWrapper"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2295:228:44"
                  },
                  "returnParameters": {
                    "id": 9908,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2524:0:44"
                  },
                  "scope": 10590,
                  "src": "2284:687:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11255
                  ],
                  "body": {
                    "id": 9986,
                    "nodeType": "Block",
                    "src": "3133:135:44",
                    "statements": [
                      {
                        "assignments": [
                          9963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9963,
                            "mutability": "mutable",
                            "name": "label",
                            "nameLocation": "3151:5:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 9986,
                            "src": "3143:13:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9962,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3143:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9970,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 9967,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9953,
                                  "src": "3175:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 9966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3169:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 9965,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3169:5:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3169:11:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 9964,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "3159:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 9969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3159:22:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3143:38:44"
                      },
                      {
                        "expression": {
                          "id": 9984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9971,
                            "name": "price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9960,
                            "src": "3191:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                              "typeString": "struct IPriceOracle.Price memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9974,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9953,
                                "src": "3212:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 9979,
                                        "name": "label",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9963,
                                        "src": "3243:5:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 9978,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3235:7:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 9977,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3235:7:44",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 9980,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3235:14:44",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9975,
                                    "name": "base",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9849,
                                    "src": "3218:4:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                                      "typeString": "contract BaseRegistrarImplementation"
                                    }
                                  },
                                  "id": 9976,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3223:11:44",
                                  "memberName": "nameExpires",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9281,
                                  "src": "3218:16:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view external returns (uint256)"
                                  }
                                },
                                "id": 9981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3218:32:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 9982,
                                "name": "duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9955,
                                "src": "3252:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 9972,
                                "name": "prices",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9852,
                                "src": "3199:6:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPriceOracle_$11342",
                                  "typeString": "contract IPriceOracle"
                                }
                              },
                              "id": 9973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3206:5:44",
                              "memberName": "price",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11341,
                              "src": "3199:12:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_Price_$11328_memory_ptr_$",
                                "typeString": "function (string memory,uint256,uint256) view external returns (struct IPriceOracle.Price memory)"
                              }
                            },
                            "id": 9983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3199:62:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                              "typeString": "struct IPriceOracle.Price memory"
                            }
                          },
                          "src": "3191:70:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                            "typeString": "struct IPriceOracle.Price memory"
                          }
                        },
                        "id": 9985,
                        "nodeType": "ExpressionStatement",
                        "src": "3191:70:44"
                      }
                    ]
                  },
                  "functionSelector": "83e7f6ff",
                  "id": 9987,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rentPrice",
                  "nameLocation": "2986:9:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9957,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3070:8:44"
                  },
                  "parameters": {
                    "id": 9956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9953,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "3010:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9987,
                        "src": "2996:18:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9952,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2996:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9955,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "3024:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9987,
                        "src": "3016:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9954,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3016:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2995:38:44"
                  },
                  "returnParameters": {
                    "id": 9961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9960,
                        "mutability": "mutable",
                        "name": "price",
                        "nameLocation": "3122:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9987,
                        "src": "3096:31:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                          "typeString": "struct IPriceOracle.Price"
                        },
                        "typeName": {
                          "id": 9959,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9958,
                            "name": "IPriceOracle.Price",
                            "nameLocations": [
                              "3096:12:44",
                              "3109:5:44"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11328,
                            "src": "3096:18:44"
                          },
                          "referencedDeclaration": 11328,
                          "src": "3096:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$11328_storage_ptr",
                            "typeString": "struct IPriceOracle.Price"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3095:33:44"
                  },
                  "scope": 10590,
                  "src": "2977:291:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10000,
                    "nodeType": "Block",
                    "src": "3336:42:44",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 9994,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9989,
                                "src": "3353:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 9995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3358:6:44",
                              "memberName": "strlen",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12019,
                              "src": "3353:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_string_memory_ptr_$",
                                "typeString": "function (string memory) pure returns (uint256)"
                              }
                            },
                            "id": 9996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3353:13:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 9997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3370:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "3353:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9993,
                        "id": 9999,
                        "nodeType": "Return",
                        "src": "3346:25:44"
                      }
                    ]
                  },
                  "functionSelector": "9791c097",
                  "id": 10001,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "valid",
                  "nameLocation": "3283:5:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9989,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "3303:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10001,
                        "src": "3289:18:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9988,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3289:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3288:20:44"
                  },
                  "returnParameters": {
                    "id": 9993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9992,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10001,
                        "src": "3330:4:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9991,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3330:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3329:6:44"
                  },
                  "scope": 10590,
                  "src": "3274:104:44",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11262
                  ],
                  "body": {
                    "id": 10030,
                    "nodeType": "Block",
                    "src": "3459:117:44",
                    "statements": [
                      {
                        "assignments": [
                          10010
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10010,
                            "mutability": "mutable",
                            "name": "label",
                            "nameLocation": "3477:5:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10030,
                            "src": "3469:13:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 10009,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3469:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10017,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10014,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10003,
                                  "src": "3501:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 10013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3495:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 10012,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3495:5:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3495:11:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10011,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "3485:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 10016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3485:22:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3469:38:44"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 10028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 10019,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10003,
                                "src": "3530:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 10018,
                              "name": "valid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10001,
                              "src": "3524:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bool_$",
                                "typeString": "function (string memory) pure returns (bool)"
                              }
                            },
                            "id": 10020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3524:11:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 10025,
                                    "name": "label",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10010,
                                    "src": "3562:5:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 10024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3554:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10023,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3554:7:44",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3554:14:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 10021,
                                "name": "base",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9849,
                                "src": "3539:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$9541",
                                  "typeString": "contract BaseRegistrarImplementation"
                                }
                              },
                              "id": 10022,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3544:9:44",
                              "memberName": "available",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9299,
                              "src": "3539:14:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256) view external returns (bool)"
                              }
                            },
                            "id": 10027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3539:30:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3524:45:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 10008,
                        "id": 10029,
                        "nodeType": "Return",
                        "src": "3517:52:44"
                      }
                    ]
                  },
                  "functionSelector": "aeb8ce9b",
                  "id": 10031,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "available",
                  "nameLocation": "3393:9:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10005,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3435:8:44"
                  },
                  "parameters": {
                    "id": 10004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10003,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "3417:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10031,
                        "src": "3403:18:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10002,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3403:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3402:20:44"
                  },
                  "returnParameters": {
                    "id": 10008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10007,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10031,
                        "src": "3453:4:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10006,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3453:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3452:6:44"
                  },
                  "scope": 10590,
                  "src": "3384:192:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11286
                  ],
                  "body": {
                    "id": 10096,
                    "nodeType": "Block",
                    "src": "3889:540:44",
                    "statements": [
                      {
                        "assignments": [
                          10057
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10057,
                            "mutability": "mutable",
                            "name": "label",
                            "nameLocation": "3907:5:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10096,
                            "src": "3899:13:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 10056,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3899:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10064,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10061,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10033,
                                  "src": "3931:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 10060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3925:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 10059,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3925:5:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3925:11:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10058,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "3915:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 10063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3915:22:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3899:38:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 10075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 10065,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10044,
                                "src": "3951:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "bytes calldata[] calldata"
                                }
                              },
                              "id": 10066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3956:6:44",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3951:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 10067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3965:1:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3951:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 10074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10069,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10041,
                              "src": "3970:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 10072,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3990:1:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 10071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3982:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10070,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3982:7:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3982:10:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3970:22:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3951:41:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10080,
                        "nodeType": "IfStatement",
                        "src": "3947:113:44",
                        "trueBody": {
                          "id": 10079,
                          "nodeType": "Block",
                          "src": "3994:66:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 10076,
                                  "name": "ResolverRequiredWhenDataSupplied",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9805,
                                  "src": "4015:32:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 10077,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4015:34:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10078,
                              "nodeType": "RevertStatement",
                              "src": "4008:41:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10084,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10057,
                                  "src": "4147:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 10085,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10035,
                                  "src": "4174:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 10086,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10037,
                                  "src": "4201:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 10087,
                                  "name": "resolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10041,
                                  "src": "4231:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 10088,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10044,
                                  "src": "4261:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                {
                                  "id": 10089,
                                  "name": "secret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10039,
                                  "src": "4287:6:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 10090,
                                  "name": "reverseRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10046,
                                  "src": "4315:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 10091,
                                  "name": "fuses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10048,
                                  "src": "4350:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                {
                                  "id": 10092,
                                  "name": "wrapperExpiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10050,
                                  "src": "4377:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                ],
                                "expression": {
                                  "id": 10082,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4115:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 10083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "4119:6:44",
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "4115:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 10093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4115:293:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10081,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4088:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 10094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4088:334:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 10055,
                        "id": 10095,
                        "nodeType": "Return",
                        "src": "4069:353:44"
                      }
                    ]
                  },
                  "functionSelector": "d555254a",
                  "id": 10097,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "makeCommitment",
                  "nameLocation": "3591:14:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10052,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3862:8:44"
                  },
                  "parameters": {
                    "id": 10051,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10033,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "3629:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3615:18:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10032,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3615:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10035,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3651:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3643:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10034,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3643:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10037,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "3674:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3666:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10036,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3666:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10039,
                        "mutability": "mutable",
                        "name": "secret",
                        "nameLocation": "3700:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3692:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10038,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3692:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10041,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "3724:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3716:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3716:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10044,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3759:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3742:21:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10042,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "3742:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 10043,
                          "nodeType": "ArrayTypeName",
                          "src": "3742:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10046,
                        "mutability": "mutable",
                        "name": "reverseRecord",
                        "nameLocation": "3778:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3773:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10045,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3773:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10048,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "3808:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3801:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10047,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3801:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10050,
                        "mutability": "mutable",
                        "name": "wrapperExpiry",
                        "nameLocation": "3830:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3823:20:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 10049,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3823:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3605:244:44"
                  },
                  "returnParameters": {
                    "id": 10055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10054,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10097,
                        "src": "3880:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10053,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3880:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3879:9:44"
                  },
                  "scope": 10590,
                  "src": "3582:847:44",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11291
                  ],
                  "body": {
                    "id": 10124,
                    "nodeType": "Block",
                    "src": "4487:203:44",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 10103,
                                "name": "commitments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9866,
                                "src": "4501:11:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                  "typeString": "mapping(bytes32 => uint256)"
                                }
                              },
                              "id": 10105,
                              "indexExpression": {
                                "id": 10104,
                                "name": "commitment",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10099,
                                "src": "4513:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4501:23:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 10106,
                              "name": "maxCommitmentAge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9856,
                              "src": "4527:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4501:42:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "expression": {
                              "id": 10108,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "4547:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4553:9:44",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "4547:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4501:61:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10116,
                        "nodeType": "IfStatement",
                        "src": "4497:136:44",
                        "trueBody": {
                          "id": 10115,
                          "nodeType": "Block",
                          "src": "4564:69:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 10112,
                                    "name": "commitment",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10099,
                                    "src": "4611:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 10111,
                                  "name": "UnexpiredCommitmentExists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9809,
                                  "src": "4585:25:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 10113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4585:37:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10114,
                              "nodeType": "RevertStatement",
                              "src": "4578:44:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 10122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 10117,
                              "name": "commitments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9866,
                              "src": "4642:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 10119,
                            "indexExpression": {
                              "id": 10118,
                              "name": "commitment",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10099,
                              "src": "4654:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4642:23:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 10120,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "4668:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4674:9:44",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "4668:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4642:41:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10123,
                        "nodeType": "ExpressionStatement",
                        "src": "4642:41:44"
                      }
                    ]
                  },
                  "functionSelector": "f14fcbc8",
                  "id": 10125,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "commit",
                  "nameLocation": "4444:6:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10101,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4478:8:44"
                  },
                  "parameters": {
                    "id": 10100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10099,
                        "mutability": "mutable",
                        "name": "commitment",
                        "nameLocation": "4459:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10125,
                        "src": "4451:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10098,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4451:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4450:20:44"
                  },
                  "returnParameters": {
                    "id": 10102,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4487:0:44"
                  },
                  "scope": 10590,
                  "src": "4435:255:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11313
                  ],
                  "body": {
                    "id": 10270,
                    "nodeType": "Block",
                    "src": "4984:1300:44",
                    "statements": [
                      {
                        "assignments": [
                          10152
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10152,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "5020:5:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10270,
                            "src": "4994:31:44",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                              "typeString": "struct IPriceOracle.Price"
                            },
                            "typeName": {
                              "id": 10151,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 10150,
                                "name": "IPriceOracle.Price",
                                "nameLocations": [
                                  "4994:12:44",
                                  "5007:5:44"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 11328,
                                "src": "4994:18:44"
                              },
                              "referencedDeclaration": 11328,
                              "src": "4994:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$11328_storage_ptr",
                                "typeString": "struct IPriceOracle.Price"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10157,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10154,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10127,
                              "src": "5038:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 10155,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10131,
                              "src": "5044:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10153,
                            "name": "rentPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9987,
                            "src": "5028:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_Price_$11328_memory_ptr_$",
                              "typeString": "function (string memory,uint256) view returns (struct IPriceOracle.Price memory)"
                            }
                          },
                          "id": 10156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5028:25:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                            "typeString": "struct IPriceOracle.Price memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4994:59:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10158,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "5067:3:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5071:5:44",
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "5067:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 10160,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10152,
                                "src": "5079:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                  "typeString": "struct IPriceOracle.Price memory"
                                }
                              },
                              "id": 10161,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5085:4:44",
                              "memberName": "base",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11325,
                              "src": "5079:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "expression": {
                                "id": 10162,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10152,
                                "src": "5092:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                  "typeString": "struct IPriceOracle.Price memory"
                                }
                              },
                              "id": 10163,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5098:7:44",
                              "memberName": "premium",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11327,
                              "src": "5092:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5079:26:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5067:38:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10170,
                        "nodeType": "IfStatement",
                        "src": "5063:95:44",
                        "trueBody": {
                          "id": 10169,
                          "nodeType": "Block",
                          "src": "5107:51:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 10166,
                                  "name": "InsufficientValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9811,
                                  "src": "5128:17:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 10167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5128:19:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10168,
                              "nodeType": "RevertStatement",
                              "src": "5121:26:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10172,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10127,
                              "src": "5200:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 10173,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10131,
                              "src": "5218:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 10175,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10127,
                                  "src": "5272:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                },
                                {
                                  "id": 10176,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10129,
                                  "src": "5294:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 10177,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10131,
                                  "src": "5317:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 10178,
                                  "name": "secret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10133,
                                  "src": "5343:6:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 10179,
                                  "name": "resolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10135,
                                  "src": "5367:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 10180,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10138,
                                  "src": "5393:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                {
                                  "id": 10181,
                                  "name": "reverseRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10140,
                                  "src": "5415:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 10182,
                                  "name": "fuses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10142,
                                  "src": "5446:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                {
                                  "id": 10183,
                                  "name": "wrapperExpiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10144,
                                  "src": "5469:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                ],
                                "id": 10174,
                                "name": "makeCommitment",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10097,
                                "src": "5240:14:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_bytes32_$_t_address_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_bool_$_t_uint32_$_t_uint64_$returns$_t_bytes32_$",
                                  "typeString": "function (string memory,address,uint256,bytes32,address,bytes calldata[] calldata,bool,uint32,uint64) pure returns (bytes32)"
                                }
                              },
                              "id": 10184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5240:256:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 10171,
                            "name": "_consumeCommitment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10529,
                            "src": "5168:18:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_bytes32_$returns$__$",
                              "typeString": "function (string memory,uint256,bytes32)"
                            }
                          },
                          "id": 10185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5168:338:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10186,
                        "nodeType": "ExpressionStatement",
                        "src": "5168:338:44"
                      },
                      {
                        "assignments": [
                          10188
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10188,
                            "mutability": "mutable",
                            "name": "expires",
                            "nameLocation": "5525:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10270,
                            "src": "5517:15:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10187,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5517:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10198,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10191,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10127,
                              "src": "5582:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 10192,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10129,
                              "src": "5600:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10193,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10131,
                              "src": "5619:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10194,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10135,
                              "src": "5641:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10195,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10142,
                              "src": "5663:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 10196,
                              "name": "wrapperExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10144,
                              "src": "5682:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "id": 10189,
                              "name": "nameWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9862,
                              "src": "5535:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                "typeString": "contract INameWrapper"
                              }
                            },
                            "id": 10190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5547:21:44",
                            "memberName": "registerAndWrapETH2LD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17876,
                            "src": "5535:33:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_address_$_t_uint32_$_t_uint64_$returns$_t_uint256_$",
                              "typeString": "function (string memory,address,uint256,address,uint32,uint64) external returns (uint256)"
                            }
                          },
                          "id": 10197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5535:170:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5517:188:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10199,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10138,
                              "src": "5720:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            },
                            "id": 10200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5725:6:44",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5720:11:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5734:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5720:15:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10215,
                        "nodeType": "IfStatement",
                        "src": "5716:97:44",
                        "trueBody": {
                          "id": 10214,
                          "nodeType": "Block",
                          "src": "5737:76:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10204,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10135,
                                    "src": "5763:8:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 10208,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10127,
                                            "src": "5789:4:44",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_calldata_ptr",
                                              "typeString": "string calldata"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_calldata_ptr",
                                              "typeString": "string calldata"
                                            }
                                          ],
                                          "id": 10207,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5783:5:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 10206,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5783:5:44",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 10209,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5783:11:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "id": 10205,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "5773:9:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 10210,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5773:22:44",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 10211,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10138,
                                    "src": "5797:4:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "bytes calldata[] calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "bytes calldata[] calldata"
                                    }
                                  ],
                                  "id": 10203,
                                  "name": "_setRecords",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10564,
                                  "src": "5751:11:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$",
                                    "typeString": "function (address,bytes32,bytes calldata[] calldata)"
                                  }
                                },
                                "id": 10212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5751:51:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10213,
                              "nodeType": "ExpressionStatement",
                              "src": "5751:51:44"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 10216,
                          "name": "reverseRecord",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10140,
                          "src": "5827:13:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10225,
                        "nodeType": "IfStatement",
                        "src": "5823:89:44",
                        "trueBody": {
                          "id": 10224,
                          "nodeType": "Block",
                          "src": "5842:70:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10218,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10127,
                                    "src": "5874:4:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  },
                                  {
                                    "id": 10219,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10135,
                                    "src": "5880:8:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 10220,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5890:3:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 10221,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5894:6:44",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5890:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10217,
                                  "name": "_setReverseRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10589,
                                  "src": "5856:17:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (string memory,address,address)"
                                  }
                                },
                                "id": 10222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5856:45:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10223,
                              "nodeType": "ExpressionStatement",
                              "src": "5856:45:44"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10227,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10127,
                              "src": "5955:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 10231,
                                      "name": "name",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10127,
                                      "src": "5989:4:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    ],
                                    "id": 10230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5983:5:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 10229,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5983:5:44",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5983:11:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "id": 10228,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "5973:9:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5973:22:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 10234,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10129,
                              "src": "6009:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 10235,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10152,
                                "src": "6028:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                  "typeString": "struct IPriceOracle.Price memory"
                                }
                              },
                              "id": 10236,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6034:4:44",
                              "memberName": "base",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11325,
                              "src": "6028:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 10237,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10152,
                                "src": "6052:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                  "typeString": "struct IPriceOracle.Price memory"
                                }
                              },
                              "id": 10238,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6058:7:44",
                              "memberName": "premium",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11327,
                              "src": "6052:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10239,
                              "name": "expires",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10188,
                              "src": "6079:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10226,
                            "name": "NameRegistered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9880,
                            "src": "5927:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (string memory,bytes32,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 10240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5927:169:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10241,
                        "nodeType": "EmitStatement",
                        "src": "5922:174:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10242,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6111:3:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10243,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6115:5:44",
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "6111:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 10244,
                                    "name": "price",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10152,
                                    "src": "6124:5:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                      "typeString": "struct IPriceOracle.Price memory"
                                    }
                                  },
                                  "id": 10245,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6130:4:44",
                                  "memberName": "base",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11325,
                                  "src": "6124:10:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "expression": {
                                    "id": 10246,
                                    "name": "price",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10152,
                                    "src": "6137:5:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                      "typeString": "struct IPriceOracle.Price memory"
                                    }
                                  },
                                  "id": 10247,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6143:7:44",
                                  "memberName": "premium",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11327,
                                  "src": "6137:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6124:26:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 10249,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6123:28:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6111:40:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10269,
                        "nodeType": "IfStatement",
                        "src": "6107:171:44",
                        "trueBody": {
                          "id": 10268,
                          "nodeType": "Block",
                          "src": "6153:125:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10265,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 10257,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "6213:3:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10258,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "6217:5:44",
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "src": "6213:9:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 10263,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 10259,
                                              "name": "price",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10152,
                                              "src": "6226:5:44",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                                "typeString": "struct IPriceOracle.Price memory"
                                              }
                                            },
                                            "id": 10260,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6232:4:44",
                                            "memberName": "base",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11325,
                                            "src": "6226:10:44",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 10261,
                                              "name": "price",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10152,
                                              "src": "6239:5:44",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                                "typeString": "struct IPriceOracle.Price memory"
                                              }
                                            },
                                            "id": 10262,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6245:7:44",
                                            "memberName": "premium",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11327,
                                            "src": "6239:13:44",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "6226:26:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 10264,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6225:28:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6213:40:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 10253,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "6175:3:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 10254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "6179:6:44",
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "6175:10:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6167:8:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 10251,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6167:8:44",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 10255,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6167:19:44",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "id": 10256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6187:8:44",
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "src": "6167:28:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 10266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6167:100:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10267,
                              "nodeType": "ExpressionStatement",
                              "src": "6167:100:44"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "7acaaf26",
                  "id": 10271,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "register",
                  "nameLocation": "4705:8:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10146,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4975:8:44"
                  },
                  "parameters": {
                    "id": 10145,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10127,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "4739:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4723:20:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10126,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4723:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10129,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4761:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4753:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4753:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10131,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "4784:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4776:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10130,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4776:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10133,
                        "mutability": "mutable",
                        "name": "secret",
                        "nameLocation": "4810:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4802:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10132,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4802:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10135,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "4834:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4826:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10134,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4826:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10138,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4869:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4852:21:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10136,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "4852:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 10137,
                          "nodeType": "ArrayTypeName",
                          "src": "4852:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10140,
                        "mutability": "mutable",
                        "name": "reverseRecord",
                        "nameLocation": "4888:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4883:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10139,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4883:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10142,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "4918:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4911:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10141,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4911:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10144,
                        "mutability": "mutable",
                        "name": "wrapperExpiry",
                        "nameLocation": "4940:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10271,
                        "src": "4933:20:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 10143,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "4933:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4713:246:44"
                  },
                  "returnParameters": {
                    "id": 10147,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4984:0:44"
                  },
                  "scope": 10590,
                  "src": "4696:1588:44",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11320
                  ],
                  "body": {
                    "id": 10286,
                    "nodeType": "Block",
                    "src": "6399:45:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10280,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10273,
                              "src": "6416:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 10281,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10275,
                              "src": "6422:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 10282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6432:1:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "30",
                              "id": 10283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6435:1:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 10279,
                            "name": "_renew",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10427,
                            "src": "6409:6:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$_t_uint256_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (string calldata,uint256,uint32,uint64)"
                            }
                          },
                          "id": 10284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6409:28:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10285,
                        "nodeType": "ExpressionStatement",
                        "src": "6409:28:44"
                      }
                    ]
                  },
                  "functionSelector": "acf1a841",
                  "id": 10287,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renew",
                  "nameLocation": "6299:5:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10277,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6386:8:44"
                  },
                  "parameters": {
                    "id": 10276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10273,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "6321:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10287,
                        "src": "6305:20:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10272,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6305:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10275,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "6335:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10287,
                        "src": "6327:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6327:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6304:40:44"
                  },
                  "returnParameters": {
                    "id": 10278,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6399:0:44"
                  },
                  "scope": 10590,
                  "src": "6290:154:44",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10337,
                    "nodeType": "Block",
                    "src": "6605:316:44",
                    "statements": [
                      {
                        "assignments": [
                          10299
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10299,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "6623:9:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10337,
                            "src": "6615:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 10298,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6615:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10306,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10303,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10289,
                                  "src": "6651:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 10302,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6645:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 10301,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6645:5:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6645:11:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 10300,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "6635:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 10305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6635:22:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6615:42:44"
                      },
                      {
                        "assignments": [
                          10308
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10308,
                            "mutability": "mutable",
                            "name": "nodehash",
                            "nameLocation": "6675:8:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10337,
                            "src": "6667:16:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 10307,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6667:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10316,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10312,
                                  "name": "ETH_NODE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9839,
                                  "src": "6713:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 10313,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10299,
                                  "src": "6723:9:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 10310,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6696:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 10311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "6700:12:44",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "6696:16:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 10314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6696:37:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10309,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "6686:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 10315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6686:48:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6667:67:44"
                      },
                      {
                        "condition": {
                          "id": 10323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6748:57:44",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 10319,
                                "name": "nodehash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10308,
                                "src": "6784:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10320,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "6794:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6798:6:44",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "6794:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 10317,
                                "name": "nameWrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9862,
                                "src": "6749:11:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                  "typeString": "contract INameWrapper"
                                }
                              },
                              "id": 10318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6761:22:44",
                              "memberName": "isTokenOwnerOrApproved",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17981,
                              "src": "6749:34:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (bytes32,address) external returns (bool)"
                              }
                            },
                            "id": 10322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6749:56:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10329,
                        "nodeType": "IfStatement",
                        "src": "6744:117:44",
                        "trueBody": {
                          "id": 10328,
                          "nodeType": "Block",
                          "src": "6807:54:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 10325,
                                    "name": "nodehash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10308,
                                    "src": "6841:8:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 10324,
                                  "name": "Unauthorised",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9815,
                                  "src": "6828:12:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 10326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6828:22:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10327,
                              "nodeType": "RevertStatement",
                              "src": "6821:29:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10331,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10289,
                              "src": "6877:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 10332,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10291,
                              "src": "6883:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10333,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10293,
                              "src": "6893:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 10334,
                              "name": "wrapperExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10295,
                              "src": "6900:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 10330,
                            "name": "_renew",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10427,
                            "src": "6870:6:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_calldata_ptr_$_t_uint256_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (string calldata,uint256,uint32,uint64)"
                            }
                          },
                          "id": 10335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6870:44:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10336,
                        "nodeType": "ExpressionStatement",
                        "src": "6870:44:44"
                      }
                    ]
                  },
                  "functionSelector": "6459220f",
                  "id": 10338,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renewWithFuses",
                  "nameLocation": "6459:14:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10296,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10289,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "6499:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10338,
                        "src": "6483:20:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10288,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6483:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10291,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "6521:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10338,
                        "src": "6513:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10290,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6513:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10293,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "6546:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10338,
                        "src": "6539:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10292,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6539:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10295,
                        "mutability": "mutable",
                        "name": "wrapperExpiry",
                        "nameLocation": "6568:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10338,
                        "src": "6561:20:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 10294,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "6561:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6473:114:44"
                  },
                  "returnParameters": {
                    "id": 10297,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6605:0:44"
                  },
                  "scope": 10590,
                  "src": "6450:471:44",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10426,
                    "nodeType": "Block",
                    "src": "7066:544:44",
                    "statements": [
                      {
                        "assignments": [
                          10350
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10350,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "7084:9:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10426,
                            "src": "7076:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 10349,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7076:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10357,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10354,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10340,
                                  "src": "7112:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 10353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7106:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 10352,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7106:5:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7106:11:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 10351,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "7096:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 10356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7096:22:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7076:42:44"
                      },
                      {
                        "assignments": [
                          10359
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10359,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "7136:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10426,
                            "src": "7128:15:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10358,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7128:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10364,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10362,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10350,
                              "src": "7154:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 10361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7146:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 10360,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7146:7:44",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 10363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7146:18:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7128:36:44"
                      },
                      {
                        "assignments": [
                          10369
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10369,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "7200:5:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10426,
                            "src": "7174:31:44",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                              "typeString": "struct IPriceOracle.Price"
                            },
                            "typeName": {
                              "id": 10368,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 10367,
                                "name": "IPriceOracle.Price",
                                "nameLocations": [
                                  "7174:12:44",
                                  "7187:5:44"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 11328,
                                "src": "7174:18:44"
                              },
                              "referencedDeclaration": 11328,
                              "src": "7174:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$11328_storage_ptr",
                                "typeString": "struct IPriceOracle.Price"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10374,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10371,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10340,
                              "src": "7218:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 10372,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10342,
                              "src": "7224:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10370,
                            "name": "rentPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9987,
                            "src": "7208:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_Price_$11328_memory_ptr_$",
                              "typeString": "function (string memory,uint256) view returns (struct IPriceOracle.Price memory)"
                            }
                          },
                          "id": 10373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7208:25:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                            "typeString": "struct IPriceOracle.Price memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7174:59:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10375,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "7247:3:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7251:5:44",
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "7247:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 10377,
                              "name": "price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10369,
                              "src": "7259:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                "typeString": "struct IPriceOracle.Price memory"
                              }
                            },
                            "id": 10378,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7265:4:44",
                            "memberName": "base",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11325,
                            "src": "7259:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7247:22:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10384,
                        "nodeType": "IfStatement",
                        "src": "7243:79:44",
                        "trueBody": {
                          "id": 10383,
                          "nodeType": "Block",
                          "src": "7271:51:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 10380,
                                  "name": "InsufficientValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9811,
                                  "src": "7292:17:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 10381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7292:19:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10382,
                              "nodeType": "RevertStatement",
                              "src": "7285:26:44"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          10386
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10386,
                            "mutability": "mutable",
                            "name": "expires",
                            "nameLocation": "7339:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10426,
                            "src": "7331:15:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10385,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7331:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10387,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7331:15:44"
                      },
                      {
                        "expression": {
                          "id": 10396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10388,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10386,
                            "src": "7356:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 10391,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10359,
                                "src": "7384:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 10392,
                                "name": "duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10342,
                                "src": "7393:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 10393,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10344,
                                "src": "7403:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 10394,
                                "name": "wrapperExpiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10346,
                                "src": "7410:13:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "expression": {
                                "id": 10389,
                                "name": "nameWrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9862,
                                "src": "7366:11:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                  "typeString": "contract INameWrapper"
                                }
                              },
                              "id": 10390,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7378:5:44",
                              "memberName": "renew",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17889,
                              "src": "7366:17:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint32_$_t_uint64_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint32,uint64) external returns (uint256)"
                              }
                            },
                            "id": 10395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7366:58:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7356:68:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10397,
                        "nodeType": "ExpressionStatement",
                        "src": "7356:68:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10398,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "7439:3:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7443:5:44",
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "7439:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 10400,
                              "name": "price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10369,
                              "src": "7451:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                "typeString": "struct IPriceOracle.Price memory"
                              }
                            },
                            "id": 10401,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7457:4:44",
                            "memberName": "base",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11325,
                            "src": "7451:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7439:22:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10417,
                        "nodeType": "IfStatement",
                        "src": "7435:105:44",
                        "trueBody": {
                          "id": 10416,
                          "nodeType": "Block",
                          "src": "7463:77:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 10409,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "7506:3:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10410,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "7510:5:44",
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "src": "7506:9:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 10411,
                                        "name": "price",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10369,
                                        "src": "7518:5:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                                          "typeString": "struct IPriceOracle.Price memory"
                                        }
                                      },
                                      "id": 10412,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "7524:4:44",
                                      "memberName": "base",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11325,
                                      "src": "7518:10:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7506:22:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 10405,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "7485:3:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 10406,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "7489:6:44",
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "7485:10:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7477:8:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 10403,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7477:8:44",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 10407,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7477:19:44",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "id": 10408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7497:8:44",
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "src": "7477:28:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 10414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7477:52:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10415,
                              "nodeType": "ExpressionStatement",
                              "src": "7477:52:44"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10419,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10340,
                              "src": "7567:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 10420,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10350,
                              "src": "7573:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 10421,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7584:3:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7588:5:44",
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "7584:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10423,
                              "name": "expires",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10386,
                              "src": "7595:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10418,
                            "name": "NameRenewed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9890,
                            "src": "7555:11:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (string memory,bytes32,uint256,uint256)"
                            }
                          },
                          "id": 10424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7555:48:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10425,
                        "nodeType": "EmitStatement",
                        "src": "7550:53:44"
                      }
                    ]
                  },
                  "id": 10427,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_renew",
                  "nameLocation": "6936:6:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10340,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "6968:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10427,
                        "src": "6952:20:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10339,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6952:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10342,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "6990:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10427,
                        "src": "6982:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10341,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6982:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10344,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "7015:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10427,
                        "src": "7008:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10343,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7008:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10346,
                        "mutability": "mutable",
                        "name": "wrapperExpiry",
                        "nameLocation": "7037:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10427,
                        "src": "7030:20:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 10345,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "7030:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6942:114:44"
                  },
                  "returnParameters": {
                    "id": 10348,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7066:0:44"
                  },
                  "scope": 10590,
                  "src": "6927:683:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10443,
                    "nodeType": "Block",
                    "src": "7643:65:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10438,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "7687:4:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                                      "typeString": "contract ETHRegistrarController"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ETHRegistrarController_$10590",
                                      "typeString": "contract ETHRegistrarController"
                                    }
                                  ],
                                  "id": 10437,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7679:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10436,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7679:7:44",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7679:13:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 10440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7693:7:44",
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "src": "7679:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 10432,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 570,
                                    "src": "7661:5:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 10433,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7661:7:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7653:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 10430,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7653:8:44",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7653:16:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 10435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7670:8:44",
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "src": "7653:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 10441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7653:48:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10442,
                        "nodeType": "ExpressionStatement",
                        "src": "7653:48:44"
                      }
                    ]
                  },
                  "functionSelector": "3ccfd60b",
                  "id": 10444,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nameLocation": "7625:8:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10428,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7633:2:44"
                  },
                  "returnParameters": {
                    "id": 10429,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7643:0:44"
                  },
                  "scope": 10590,
                  "src": "7616:92:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3093
                  ],
                  "body": {
                    "id": 10465,
                    "nodeType": "Block",
                    "src": "7818:148:44",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 10463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 10456,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10451,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10446,
                              "src": "7847:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10453,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3094,
                                    "src": "7867:7:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 10452,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "7862:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 10454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7862:13:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3094",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 10455,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7876:11:44",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "7862:25:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "7847:40:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 10462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10457,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10446,
                              "src": "7903:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10459,
                                    "name": "IETHRegistrarController",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11321,
                                    "src": "7923:23:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IETHRegistrarController_$11321_$",
                                      "typeString": "type(contract IETHRegistrarController)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IETHRegistrarController_$11321_$",
                                      "typeString": "type(contract IETHRegistrarController)"
                                    }
                                  ],
                                  "id": 10458,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "7918:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 10460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7918:29:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IETHRegistrarController_$11321",
                                  "typeString": "type(contract IETHRegistrarController)"
                                }
                              },
                              "id": 10461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7948:11:44",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "7918:41:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "7903:56:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7847:112:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 10450,
                        "id": 10464,
                        "nodeType": "Return",
                        "src": "7828:131:44"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 10466,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "7723:17:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10446,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "7748:11:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10466,
                        "src": "7741:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 10445,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "7741:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7740:20:44"
                  },
                  "returnParameters": {
                    "id": 10450,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10449,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10466,
                        "src": "7808:4:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10448,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7808:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7807:6:44"
                  },
                  "scope": 10590,
                  "src": "7714:252:44",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10528,
                    "nodeType": "Block",
                    "src": "8127:635:44",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 10475,
                                "name": "commitments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9866,
                                "src": "8186:11:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                  "typeString": "mapping(bytes32 => uint256)"
                                }
                              },
                              "id": 10477,
                              "indexExpression": {
                                "id": 10476,
                                "name": "commitment",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10472,
                                "src": "8198:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8186:23:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 10478,
                              "name": "minCommitmentAge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9854,
                              "src": "8212:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8186:42:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 10480,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "8231:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8237:9:44",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "8231:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8186:60:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10488,
                        "nodeType": "IfStatement",
                        "src": "8182:126:44",
                        "trueBody": {
                          "id": 10487,
                          "nodeType": "Block",
                          "src": "8248:60:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 10484,
                                    "name": "commitment",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10472,
                                    "src": "8286:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 10483,
                                  "name": "CommitmentTooNew",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9791,
                                  "src": "8269:16:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 10485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8269:28:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10486,
                              "nodeType": "RevertStatement",
                              "src": "8262:35:44"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 10489,
                                "name": "commitments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9866,
                                "src": "8395:11:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                  "typeString": "mapping(bytes32 => uint256)"
                                }
                              },
                              "id": 10491,
                              "indexExpression": {
                                "id": 10490,
                                "name": "commitment",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10472,
                                "src": "8407:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8395:23:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 10492,
                              "name": "maxCommitmentAge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9856,
                              "src": "8421:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8395:42:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "expression": {
                              "id": 10494,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "8441:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8447:9:44",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "8441:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8395:61:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10502,
                        "nodeType": "IfStatement",
                        "src": "8391:127:44",
                        "trueBody": {
                          "id": 10501,
                          "nodeType": "Block",
                          "src": "8458:60:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 10498,
                                    "name": "commitment",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10472,
                                    "src": "8496:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 10497,
                                  "name": "CommitmentTooOld",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9795,
                                  "src": "8479:16:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 10499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8479:28:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10500,
                              "nodeType": "RevertStatement",
                              "src": "8472:35:44"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 10506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8531:16:44",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 10504,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10468,
                                "src": "8542:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 10503,
                              "name": "available",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10031,
                              "src": "8532:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                                "typeString": "function (string memory) view returns (bool)"
                              }
                            },
                            "id": 10505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8532:15:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10512,
                        "nodeType": "IfStatement",
                        "src": "8527:76:44",
                        "trueBody": {
                          "id": 10511,
                          "nodeType": "Block",
                          "src": "8549:54:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 10508,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10468,
                                    "src": "8587:4:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 10507,
                                  "name": "NameNotAvailable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9799,
                                  "src": "8570:16:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 10509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8570:22:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10510,
                              "nodeType": "RevertStatement",
                              "src": "8563:29:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 10517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8613:32:44",
                          "subExpression": {
                            "components": [
                              {
                                "baseExpression": {
                                  "id": 10513,
                                  "name": "commitments",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9866,
                                  "src": "8621:11:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 10515,
                                "indexExpression": {
                                  "id": 10514,
                                  "name": "commitment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10472,
                                  "src": "8633:10:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8621:23:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 10516,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8620:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10518,
                        "nodeType": "ExpressionStatement",
                        "src": "8613:32:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10519,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10470,
                            "src": "8660:8:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 10520,
                            "name": "MIN_REGISTRATION_DURATION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9836,
                            "src": "8671:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8660:36:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10527,
                        "nodeType": "IfStatement",
                        "src": "8656:100:44",
                        "trueBody": {
                          "id": 10526,
                          "nodeType": "Block",
                          "src": "8698:58:44",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 10523,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10470,
                                    "src": "8736:8:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10522,
                                  "name": "DurationTooShort",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9803,
                                  "src": "8719:16:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) pure"
                                  }
                                },
                                "id": 10524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8719:26:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10525,
                              "nodeType": "RevertStatement",
                              "src": "8712:33:44"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 10529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_consumeCommitment",
                  "nameLocation": "8011:18:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10468,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "8053:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10529,
                        "src": "8039:18:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10467,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8039:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10470,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "8075:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10529,
                        "src": "8067:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10469,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8067:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10472,
                        "mutability": "mutable",
                        "name": "commitment",
                        "nameLocation": "8101:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10529,
                        "src": "8093:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10471,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8093:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8029:88:44"
                  },
                  "returnParameters": {
                    "id": 10474,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8127:0:44"
                  },
                  "scope": 10590,
                  "src": "8002:760:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10563,
                    "nodeType": "Block",
                    "src": "8891:231:44",
                    "statements": [
                      {
                        "assignments": [
                          10540
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10540,
                            "mutability": "mutable",
                            "name": "nodehash",
                            "nameLocation": "8948:8:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10563,
                            "src": "8940:16:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 10539,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8940:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10548,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10544,
                                  "name": "ETH_NODE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9839,
                                  "src": "8986:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 10545,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10533,
                                  "src": "8996:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 10542,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8969:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 10543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "8973:12:44",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8969:16:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 10546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8969:33:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10541,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8959:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 10547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8959:44:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8940:63:44"
                      },
                      {
                        "assignments": [
                          10551
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10551,
                            "mutability": "mutable",
                            "name": "resolver",
                            "nameLocation": "9022:8:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 10563,
                            "src": "9013:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Resolver_$13920",
                              "typeString": "contract Resolver"
                            },
                            "typeName": {
                              "id": 10550,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 10549,
                                "name": "Resolver",
                                "nameLocations": [
                                  "9013:8:44"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 13920,
                                "src": "9013:8:44"
                              },
                              "referencedDeclaration": 13920,
                              "src": "9013:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Resolver_$13920",
                                "typeString": "contract Resolver"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10555,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10553,
                              "name": "resolverAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10531,
                              "src": "9042:15:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10552,
                            "name": "Resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13920,
                            "src": "9033:8:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Resolver_$13920_$",
                              "typeString": "type(contract Resolver)"
                            }
                          },
                          "id": 10554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9033:25:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Resolver_$13920",
                            "typeString": "contract Resolver"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9013:45:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10559,
                              "name": "nodehash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10540,
                              "src": "9100:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 10560,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10536,
                              "src": "9110:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            ],
                            "expression": {
                              "id": 10556,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10551,
                              "src": "9068:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Resolver_$13920",
                                "typeString": "contract Resolver"
                              }
                            },
                            "id": 10558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9077:22:44",
                            "memberName": "multicallWithNodeCheck",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13891,
                            "src": "9068:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (bytes32,bytes memory[] memory) external returns (bytes memory[] memory)"
                            }
                          },
                          "id": 10561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9068:47:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "id": 10562,
                        "nodeType": "ExpressionStatement",
                        "src": "9068:47:44"
                      }
                    ]
                  },
                  "id": 10564,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setRecords",
                  "nameLocation": "8777:11:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10531,
                        "mutability": "mutable",
                        "name": "resolverAddress",
                        "nameLocation": "8806:15:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10564,
                        "src": "8798:23:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10530,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8798:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10533,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "8839:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10564,
                        "src": "8831:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10532,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8831:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10536,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8871:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10564,
                        "src": "8854:21:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10534,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "8854:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 10535,
                          "nodeType": "ArrayTypeName",
                          "src": "8854:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8788:93:44"
                  },
                  "returnParameters": {
                    "id": 10538,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8891:0:44"
                  },
                  "scope": 10590,
                  "src": "8768:354:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10588,
                    "nodeType": "Block",
                    "src": "9247:164:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 10576,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9302:3:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9306:6:44",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "9302:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10578,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10570,
                              "src": "9326:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10579,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10568,
                              "src": "9345:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 10583,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10566,
                                  "src": "9381:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "hexValue": "2e657468",
                                  "id": 10584,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9387:6:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3fb990fa953eacf73a21f422399a8c2bc86a94e3bd2a6dff82e1db46f66eeb4e",
                                    "typeString": "literal_string \".eth\""
                                  },
                                  "value": ".eth"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_3fb990fa953eacf73a21f422399a8c2bc86a94e3bd2a6dff82e1db46f66eeb4e",
                                    "typeString": "literal_string \".eth\""
                                  }
                                ],
                                "expression": {
                                  "id": 10581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9367:6:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 10580,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9367:6:44",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9374:6:44",
                                "memberName": "concat",
                                "nodeType": "MemberAccess",
                                "src": "9367:13:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () pure returns (string memory)"
                                }
                              },
                              "id": 10585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9367:27:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 10573,
                              "name": "reverseRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9859,
                              "src": "9257:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                                "typeString": "contract ReverseRegistrar"
                              }
                            },
                            "id": 10575,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9274:14:44",
                            "memberName": "setNameForAddr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13154,
                            "src": "9257:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_string_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (address,address,address,string memory) external returns (bytes32)"
                            }
                          },
                          "id": 10586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9257:147:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 10587,
                        "nodeType": "ExpressionStatement",
                        "src": "9257:147:44"
                      }
                    ]
                  },
                  "id": 10589,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setReverseRecord",
                  "nameLocation": "9137:17:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10571,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10566,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "9178:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10589,
                        "src": "9164:18:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10565,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9164:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10568,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "9200:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10589,
                        "src": "9192:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10567,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9192:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10570,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "9226:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 10589,
                        "src": "9218:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10569,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9218:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9154:83:44"
                  },
                  "returnParameters": {
                    "id": 10572,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9247:0:44"
                  },
                  "scope": 10590,
                  "src": "9128:283:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 10591,
              "src": "1205:8208:44",
              "usedErrors": [
                9791,
                9795,
                9799,
                9803,
                9805,
                9809,
                9811,
                9815,
                9817,
                9819
              ]
            }
          ],
          "src": "31:9383:44"
        },
        "id": 44
      },
      "contracts/ethregistrar/ExponentialPremiumPriceOracle.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/ExponentialPremiumPriceOracle.sol",
          "exportedSymbols": {
            "AggregatorInterface": [
              11657
            ],
            "Context": [
              2855
            ],
            "ExponentialPremiumPriceOracle": [
              11127
            ],
            "IERC165": [
              3094
            ],
            "IPriceOracle": [
              11342
            ],
            "Ownable": [
              642
            ],
            "SafeMath": [
              11644
            ],
            "StablePriceOracle": [
              11920
            ],
            "StringUtils": [
              12020
            ]
          },
          "id": 11128,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10592,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:45"
            },
            {
              "absolutePath": "contracts/ethregistrar/StablePriceOracle.sol",
              "file": "./StablePriceOracle.sol",
              "id": 10593,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11128,
              "sourceUnit": 11921,
              "src": "57:33:45",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10594,
                    "name": "StablePriceOracle",
                    "nameLocations": [
                      "134:17:45"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11920,
                    "src": "134:17:45"
                  },
                  "id": 10595,
                  "nodeType": "InheritanceSpecifier",
                  "src": "134:17:45"
                }
              ],
              "canonicalName": "ExponentialPremiumPriceOracle",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 11127,
              "linearizedBaseContracts": [
                11127,
                11920,
                11342
              ],
              "name": "ExponentialPremiumPriceOracle",
              "nameLocation": "101:29:45",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 10598,
                  "mutability": "constant",
                  "name": "GRACE_PERIOD",
                  "nameLocation": "175:12:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "158:39:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10596,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "158:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3930",
                    "id": 10597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "190:7:45",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_7776000_by_1",
                      "typeString": "int_const 7776000"
                    },
                    "value": "90"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10600,
                  "mutability": "immutable",
                  "name": "startPremium",
                  "nameLocation": "221:12:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "203:30:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10599,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "203:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10602,
                  "mutability": "immutable",
                  "name": "endValue",
                  "nameLocation": "257:8:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "239:26:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "239:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10629,
                    "nodeType": "Block",
                    "src": "469:92:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 10621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10619,
                            "name": "startPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10600,
                            "src": "479:12:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10620,
                            "name": "_startPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10610,
                            "src": "494:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "479:28:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10622,
                        "nodeType": "ExpressionStatement",
                        "src": "479:28:45"
                      },
                      {
                        "expression": {
                          "id": 10627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10623,
                            "name": "endValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10602,
                            "src": "517:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10624,
                              "name": "_startPremium",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10610,
                              "src": "528:13:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "id": 10625,
                              "name": "totalDays",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10612,
                              "src": "545:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "528:26:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "517:37:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10628,
                        "nodeType": "ExpressionStatement",
                        "src": "517:37:45"
                      }
                    ]
                  },
                  "id": 10630,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 10615,
                          "name": "_usdOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10605,
                          "src": "444:10:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                            "typeString": "contract AggregatorInterface"
                          }
                        },
                        {
                          "id": 10616,
                          "name": "_rentPrices",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10608,
                          "src": "456:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        }
                      ],
                      "id": 10617,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 10614,
                        "name": "StablePriceOracle",
                        "nameLocations": [
                          "426:17:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11920,
                        "src": "426:17:45"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "426:42:45"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10605,
                        "mutability": "mutable",
                        "name": "_usdOracle",
                        "nameLocation": "313:10:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 10630,
                        "src": "293:30:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                          "typeString": "contract AggregatorInterface"
                        },
                        "typeName": {
                          "id": 10604,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 10603,
                            "name": "AggregatorInterface",
                            "nameLocations": [
                              "293:19:45"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11657,
                            "src": "293:19:45"
                          },
                          "referencedDeclaration": 11657,
                          "src": "293:19:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                            "typeString": "contract AggregatorInterface"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10608,
                        "mutability": "mutable",
                        "name": "_rentPrices",
                        "nameLocation": "350:11:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 10630,
                        "src": "333:28:45",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10606,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "333:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10607,
                          "nodeType": "ArrayTypeName",
                          "src": "333:9:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10610,
                        "mutability": "mutable",
                        "name": "_startPremium",
                        "nameLocation": "379:13:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 10630,
                        "src": "371:21:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10609,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "371:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10612,
                        "mutability": "mutable",
                        "name": "totalDays",
                        "nameLocation": "410:9:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 10630,
                        "src": "402:17:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10611,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "402:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "283:142:45"
                  },
                  "returnParameters": {
                    "id": 10618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "469:0:45"
                  },
                  "scope": 11127,
                  "src": "272:289:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 10633,
                  "mutability": "constant",
                  "name": "PRECISION",
                  "nameLocation": "584:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "567:33:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10631,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "567:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "31653138",
                    "id": 10632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "596:4:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10636,
                  "mutability": "constant",
                  "name": "bit1",
                  "nameLocation": "623:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "606:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10634,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "606:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393939393839343233343639333134343332",
                    "id": 10635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "630:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_999989423469314432_by_1",
                      "typeString": "int_const 999989423469314432"
                    },
                    "value": "999989423469314432"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10639,
                  "mutability": "constant",
                  "name": "bit2",
                  "nameLocation": "701:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "684:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10637,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "684:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393939393738383437303530343931393034",
                    "id": 10638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "708:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_999978847050491904_by_1",
                      "typeString": "int_const 999978847050491904"
                    },
                    "value": "999978847050491904"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10642,
                  "mutability": "constant",
                  "name": "bit3",
                  "nameLocation": "779:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "762:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10640,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "762:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393939393537363934353438343331313034",
                    "id": 10641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "786:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_999957694548431104_by_1",
                      "typeString": "int_const 999957694548431104"
                    },
                    "value": "999957694548431104"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10645,
                  "mutability": "constant",
                  "name": "bit4",
                  "nameLocation": "827:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "810:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10643,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "810:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393939393135333930383836363133353034",
                    "id": 10644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "834:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_999915390886613504_by_1",
                      "typeString": "int_const 999915390886613504"
                    },
                    "value": "999915390886613504"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10648,
                  "mutability": "constant",
                  "name": "bit5",
                  "nameLocation": "875:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "858:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10646,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "858:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393939383330373838393331393239303838",
                    "id": 10647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "882:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_999830788931929088_by_1",
                      "typeString": "int_const 999830788931929088"
                    },
                    "value": "999830788931929088"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10651,
                  "mutability": "constant",
                  "name": "bit6",
                  "nameLocation": "923:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "906:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "906:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393939363631363036343936323433373132",
                    "id": 10650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "930:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_999661606496243712_by_1",
                      "typeString": "int_const 999661606496243712"
                    },
                    "value": "999661606496243712"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10654,
                  "mutability": "constant",
                  "name": "bit7",
                  "nameLocation": "971:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "954:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10652,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "954:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393939333233333237353032363530373532",
                    "id": 10653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "978:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_999323327502650752_by_1",
                      "typeString": "int_const 999323327502650752"
                    },
                    "value": "999323327502650752"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10657,
                  "mutability": "constant",
                  "name": "bit8",
                  "nameLocation": "1019:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1002:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1002:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393938363437313132383930393730323430",
                    "id": 10656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1026:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_998647112890970240_by_1",
                      "typeString": "int_const 998647112890970240"
                    },
                    "value": "998647112890970240"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10660,
                  "mutability": "constant",
                  "name": "bit9",
                  "nameLocation": "1067:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1050:42:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1050:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393937323936303536303835343730303830",
                    "id": 10659,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1074:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_997296056085470080_by_1",
                      "typeString": "int_const 997296056085470080"
                    },
                    "value": "997296056085470080"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10663,
                  "mutability": "constant",
                  "name": "bit10",
                  "nameLocation": "1115:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1098:43:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10661,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1098:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393934353939343233343833363333313532",
                    "id": 10662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1123:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_994599423483633152_by_1",
                      "typeString": "int_const 994599423483633152"
                    },
                    "value": "994599423483633152"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10666,
                  "mutability": "constant",
                  "name": "bit11",
                  "nameLocation": "1164:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1147:43:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1147:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393839323238303133313933393735343234",
                    "id": 10665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1172:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_989228013193975424_by_1",
                      "typeString": "int_const 989228013193975424"
                    },
                    "value": "989228013193975424"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10669,
                  "mutability": "constant",
                  "name": "bit12",
                  "nameLocation": "1213:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1196:43:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10667,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1196:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393738353732303632303837373030303936",
                    "id": 10668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1221:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_978572062087700096_by_1",
                      "typeString": "int_const 978572062087700096"
                    },
                    "value": "978572062087700096"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10672,
                  "mutability": "constant",
                  "name": "bit13",
                  "nameLocation": "1262:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1245:43:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1245:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393537363033323830363938353733363936",
                    "id": 10671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1270:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_957603280698573696_by_1",
                      "typeString": "int_const 957603280698573696"
                    },
                    "value": "957603280698573696"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10675,
                  "mutability": "constant",
                  "name": "bit14",
                  "nameLocation": "1311:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1294:43:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1294:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393137303034303433323034363731323332",
                    "id": 10674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1319:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_917004043204671232_by_1",
                      "typeString": "int_const 917004043204671232"
                    },
                    "value": "917004043204671232"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10678,
                  "mutability": "constant",
                  "name": "bit15",
                  "nameLocation": "1360:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1343:43:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10676,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1343:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "383430383936343135323533373134353630",
                    "id": 10677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1368:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_840896415253714560_by_1",
                      "typeString": "int_const 840896415253714560"
                    },
                    "value": "840896415253714560"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10681,
                  "mutability": "constant",
                  "name": "bit16",
                  "nameLocation": "1409:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 11127,
                  "src": "1392:43:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1392:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "373037313036373831313836353437353834",
                    "id": 10680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1417:18:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_707106781186547584_by_1",
                      "typeString": "int_const 707106781186547584"
                    },
                    "value": "707106781186547584"
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    11849
                  ],
                  "body": {
                    "id": 10733,
                    "nodeType": "Block",
                    "src": "1652:343:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 10698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10694,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10686,
                            "src": "1662:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10695,
                              "name": "expires",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10686,
                              "src": "1672:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 10696,
                              "name": "GRACE_PERIOD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10598,
                              "src": "1682:12:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1672:22:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1662:32:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10699,
                        "nodeType": "ExpressionStatement",
                        "src": "1662:32:45"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10700,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10686,
                            "src": "1708:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 10701,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1718:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1724:9:45",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "1718:15:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1708:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10707,
                        "nodeType": "IfStatement",
                        "src": "1704:64:45",
                        "trueBody": {
                          "id": 10706,
                          "nodeType": "Block",
                          "src": "1735:33:45",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 10704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1756:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 10693,
                              "id": 10705,
                              "nodeType": "Return",
                              "src": "1749:8:45"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          10709
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10709,
                            "mutability": "mutable",
                            "name": "elapsed",
                            "nameLocation": "1786:7:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 10733,
                            "src": "1778:15:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10708,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1778:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10714,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10710,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1796:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1802:9:45",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "1796:15:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 10712,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10686,
                            "src": "1814:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1796:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1778:43:45"
                      },
                      {
                        "assignments": [
                          10716
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10716,
                            "mutability": "mutable",
                            "name": "premium",
                            "nameLocation": "1839:7:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 10733,
                            "src": "1831:15:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10715,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1831:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10721,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10718,
                              "name": "startPremium",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10600,
                              "src": "1864:12:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10719,
                              "name": "elapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10709,
                              "src": "1878:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10717,
                            "name": "decayedPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10796,
                            "src": "1849:14:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 10720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1849:37:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1831:55:45"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10722,
                            "name": "premium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10716,
                            "src": "1900:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 10723,
                            "name": "endValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10602,
                            "src": "1911:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1900:19:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10730,
                        "nodeType": "IfStatement",
                        "src": "1896:75:45",
                        "trueBody": {
                          "id": 10729,
                          "nodeType": "Block",
                          "src": "1921:50:45",
                          "statements": [
                            {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10725,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10716,
                                  "src": "1942:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 10726,
                                  "name": "endValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10602,
                                  "src": "1952:8:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1942:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 10693,
                              "id": 10728,
                              "nodeType": "Return",
                              "src": "1935:25:45"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 10731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1987:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 10693,
                        "id": 10732,
                        "nodeType": "Return",
                        "src": "1980:8:45"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10682,
                    "nodeType": "StructuredDocumentation",
                    "src": "1442:75:45",
                    "text": " @dev Returns the pricing premium in internal base units."
                  },
                  "id": 10734,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_premium",
                  "nameLocation": "1531:8:45",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10690,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1625:8:45"
                  },
                  "parameters": {
                    "id": 10689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10684,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10734,
                        "src": "1549:13:45",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10683,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1549:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10686,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "1580:7:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 10734,
                        "src": "1572:15:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10685,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1572:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10688,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10734,
                        "src": "1597:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1597:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1539:71:45"
                  },
                  "returnParameters": {
                    "id": 10693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10692,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10734,
                        "src": "1643:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10691,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1643:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1642:9:45"
                  },
                  "scope": 11127,
                  "src": "1522:473:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10795,
                    "nodeType": "Block",
                    "src": "2287:386:45",
                    "statements": [
                      {
                        "assignments": [
                          10745
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10745,
                            "mutability": "mutable",
                            "name": "daysPast",
                            "nameLocation": "2305:8:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 10795,
                            "src": "2297:16:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10744,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2297:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10752,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10746,
                                  "name": "elapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10739,
                                  "src": "2317:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 10747,
                                  "name": "PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10633,
                                  "src": "2327:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2317:19:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 10749,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2316:21:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 10750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2340:6:45",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            },
                            "value": "1"
                          },
                          "src": "2316:30:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2297:49:45"
                      },
                      {
                        "assignments": [
                          10754
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10754,
                            "mutability": "mutable",
                            "name": "intDays",
                            "nameLocation": "2364:7:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 10795,
                            "src": "2356:15:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10753,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2356:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10758,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10755,
                            "name": "daysPast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10745,
                            "src": "2374:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 10756,
                            "name": "PRECISION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10633,
                            "src": "2385:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2374:20:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2356:38:45"
                      },
                      {
                        "assignments": [
                          10760
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10760,
                            "mutability": "mutable",
                            "name": "premium",
                            "nameLocation": "2412:7:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 10795,
                            "src": "2404:15:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10759,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2404:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10764,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10761,
                            "name": "startPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10737,
                            "src": "2422:12:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "id": 10762,
                            "name": "intDays",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10754,
                            "src": "2438:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2422:23:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2404:41:45"
                      },
                      {
                        "assignments": [
                          10766
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10766,
                            "mutability": "mutable",
                            "name": "partDay",
                            "nameLocation": "2463:7:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 10795,
                            "src": "2455:15:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10765,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2455:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10773,
                        "initialValue": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10767,
                                "name": "daysPast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10745,
                                "src": "2474:8:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10768,
                                  "name": "intDays",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10754,
                                  "src": "2485:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 10769,
                                  "name": "PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10633,
                                  "src": "2495:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2485:19:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2474:30:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 10772,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2473:32:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2455:50:45"
                      },
                      {
                        "assignments": [
                          10775
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10775,
                            "mutability": "mutable",
                            "name": "fraction",
                            "nameLocation": "2523:8:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 10795,
                            "src": "2515:16:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10774,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2515:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10785,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10776,
                                  "name": "partDay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10766,
                                  "src": "2535:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_65536_by_1",
                                        "typeString": "int_const 65536"
                                      },
                                      "id": 10779,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "32",
                                        "id": 10777,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2546:1:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "3136",
                                        "id": 10778,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2549:2:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_16_by_1",
                                          "typeString": "int_const 16"
                                        },
                                        "value": "16"
                                      },
                                      "src": "2546:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_65536_by_1",
                                        "typeString": "int_const 65536"
                                      }
                                    }
                                  ],
                                  "id": 10780,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2545:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_65536_by_1",
                                    "typeString": "int_const 65536"
                                  }
                                },
                                "src": "2535:17:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 10782,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2534:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 10783,
                            "name": "PRECISION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10633,
                            "src": "2556:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2534:31:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2515:50:45"
                      },
                      {
                        "assignments": [
                          10787
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10787,
                            "mutability": "mutable",
                            "name": "totalPremium",
                            "nameLocation": "2583:12:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 10795,
                            "src": "2575:20:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10786,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2575:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10792,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10789,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10775,
                              "src": "2619:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10790,
                              "name": "premium",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10760,
                              "src": "2629:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10788,
                            "name": "addFractionalPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11112,
                            "src": "2598:20:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 10791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2598:39:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2575:62:45"
                      },
                      {
                        "expression": {
                          "id": 10793,
                          "name": "totalPremium",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10787,
                          "src": "2654:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10743,
                        "id": 10794,
                        "nodeType": "Return",
                        "src": "2647:19:45"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10735,
                    "nodeType": "StructuredDocumentation",
                    "src": "2001:160:45",
                    "text": " @dev Returns the premium price at current time elapsed\n @param startPremium starting price\n @param elapsed time past since expiry"
                  },
                  "functionSelector": "59e1777c",
                  "id": 10796,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decayedPremium",
                  "nameLocation": "2175:14:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10737,
                        "mutability": "mutable",
                        "name": "startPremium",
                        "nameLocation": "2198:12:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 10796,
                        "src": "2190:20:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10736,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2190:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10739,
                        "mutability": "mutable",
                        "name": "elapsed",
                        "nameLocation": "2220:7:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 10796,
                        "src": "2212:15:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10738,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2212:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2189:39:45"
                  },
                  "returnParameters": {
                    "id": 10743,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10742,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10796,
                        "src": "2274:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10741,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2274:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2273:9:45"
                  },
                  "scope": 11127,
                  "src": "2166:507:45",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11111,
                    "nodeType": "Block",
                    "src": "2804:1676:45",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10805,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "2818:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "id": 10808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10806,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2830:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 10807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2835:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "2830:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                }
                              ],
                              "id": 10809,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2829:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            },
                            "src": "2818:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2841:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2818:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10823,
                        "nodeType": "IfStatement",
                        "src": "2814:93:45",
                        "trueBody": {
                          "id": 10822,
                          "nodeType": "Block",
                          "src": "2844:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10813,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "2858:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10816,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10814,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "2869:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10815,
                                          "name": "bit1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10636,
                                          "src": "2879:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2869:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10817,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2868:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10818,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "2887:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2868:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2858:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10821,
                              "nodeType": "ExpressionStatement",
                              "src": "2858:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10824,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "2920:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "id": 10827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2932:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 10826,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2937:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "2932:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  }
                                }
                              ],
                              "id": 10828,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2931:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            },
                            "src": "2920:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2943:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2920:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10842,
                        "nodeType": "IfStatement",
                        "src": "2916:93:45",
                        "trueBody": {
                          "id": 10841,
                          "nodeType": "Block",
                          "src": "2946:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10832,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "2960:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10835,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10833,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "2971:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10834,
                                          "name": "bit2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10639,
                                          "src": "2981:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2971:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10836,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2970:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10837,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "2989:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2970:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2960:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10840,
                              "nodeType": "ExpressionStatement",
                              "src": "2960:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10843,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3022:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "id": 10846,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10844,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3034:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 10845,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3039:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "3034:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  }
                                }
                              ],
                              "id": 10847,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3033:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              }
                            },
                            "src": "3022:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3045:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3022:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10861,
                        "nodeType": "IfStatement",
                        "src": "3018:93:45",
                        "trueBody": {
                          "id": 10860,
                          "nodeType": "Block",
                          "src": "3048:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10851,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3062:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10854,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10852,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3073:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10853,
                                          "name": "bit3",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10642,
                                          "src": "3083:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3073:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10855,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3072:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10856,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3091:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3072:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3062:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10859,
                              "nodeType": "ExpressionStatement",
                              "src": "3062:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10867,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10862,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3124:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "id": 10865,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10863,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3136:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "33",
                                    "id": 10864,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3141:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    },
                                    "value": "3"
                                  },
                                  "src": "3136:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  }
                                }
                              ],
                              "id": 10866,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3135:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              }
                            },
                            "src": "3124:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3147:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3124:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10880,
                        "nodeType": "IfStatement",
                        "src": "3120:93:45",
                        "trueBody": {
                          "id": 10879,
                          "nodeType": "Block",
                          "src": "3150:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10870,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3164:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10873,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10871,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3175:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10872,
                                          "name": "bit4",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10645,
                                          "src": "3185:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3175:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10874,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3174:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10875,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3193:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3174:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3164:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10878,
                              "nodeType": "ExpressionStatement",
                              "src": "3164:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10881,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3226:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_16_by_1",
                                    "typeString": "int_const 16"
                                  },
                                  "id": 10884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10882,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3238:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "34",
                                    "id": 10883,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3243:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "src": "3238:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16_by_1",
                                    "typeString": "int_const 16"
                                  }
                                }
                              ],
                              "id": 10885,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3237:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_16_by_1",
                                "typeString": "int_const 16"
                              }
                            },
                            "src": "3226:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3249:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3226:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10899,
                        "nodeType": "IfStatement",
                        "src": "3222:93:45",
                        "trueBody": {
                          "id": 10898,
                          "nodeType": "Block",
                          "src": "3252:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10889,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3266:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10892,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10890,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3277:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10891,
                                          "name": "bit5",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10648,
                                          "src": "3287:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3277:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10893,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3276:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10894,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3295:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3276:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3266:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10897,
                              "nodeType": "ExpressionStatement",
                              "src": "3266:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10900,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3328:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "id": 10903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3340:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "35",
                                    "id": 10902,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3345:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_5_by_1",
                                      "typeString": "int_const 5"
                                    },
                                    "value": "5"
                                  },
                                  "src": "3340:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  }
                                }
                              ],
                              "id": 10904,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3339:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              }
                            },
                            "src": "3328:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3351:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3328:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10918,
                        "nodeType": "IfStatement",
                        "src": "3324:93:45",
                        "trueBody": {
                          "id": 10917,
                          "nodeType": "Block",
                          "src": "3354:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10908,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3368:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10914,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10911,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10909,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3379:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10910,
                                          "name": "bit6",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10651,
                                          "src": "3389:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3379:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10912,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3378:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10913,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3397:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3378:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3368:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10916,
                              "nodeType": "ExpressionStatement",
                              "src": "3368:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10919,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3430:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_64_by_1",
                                    "typeString": "int_const 64"
                                  },
                                  "id": 10922,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3442:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "36",
                                    "id": 10921,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3447:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_6_by_1",
                                      "typeString": "int_const 6"
                                    },
                                    "value": "6"
                                  },
                                  "src": "3442:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_64_by_1",
                                    "typeString": "int_const 64"
                                  }
                                }
                              ],
                              "id": 10923,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3441:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_64_by_1",
                                "typeString": "int_const 64"
                              }
                            },
                            "src": "3430:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10925,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3453:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3430:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10937,
                        "nodeType": "IfStatement",
                        "src": "3426:93:45",
                        "trueBody": {
                          "id": 10936,
                          "nodeType": "Block",
                          "src": "3456:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10927,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3470:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10933,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10930,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10928,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3481:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10929,
                                          "name": "bit7",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10654,
                                          "src": "3491:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3481:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10931,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3480:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10932,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3499:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3480:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3470:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10935,
                              "nodeType": "ExpressionStatement",
                              "src": "3470:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10938,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3532:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_128_by_1",
                                    "typeString": "int_const 128"
                                  },
                                  "id": 10941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10939,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3544:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "37",
                                    "id": 10940,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3549:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "value": "7"
                                  },
                                  "src": "3544:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_128_by_1",
                                    "typeString": "int_const 128"
                                  }
                                }
                              ],
                              "id": 10942,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3543:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_128_by_1",
                                "typeString": "int_const 128"
                              }
                            },
                            "src": "3532:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3555:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3532:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10956,
                        "nodeType": "IfStatement",
                        "src": "3528:93:45",
                        "trueBody": {
                          "id": 10955,
                          "nodeType": "Block",
                          "src": "3558:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10946,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3572:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10952,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10949,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10947,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3583:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10948,
                                          "name": "bit8",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10657,
                                          "src": "3593:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3583:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10950,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3582:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10951,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3601:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3582:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3572:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10954,
                              "nodeType": "ExpressionStatement",
                              "src": "3572:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10957,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3634:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "id": 10960,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10958,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3646:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "38",
                                    "id": 10959,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3651:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  "src": "3646:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  }
                                }
                              ],
                              "id": 10961,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3645:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_256_by_1",
                                "typeString": "int_const 256"
                              }
                            },
                            "src": "3634:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3657:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3634:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10975,
                        "nodeType": "IfStatement",
                        "src": "3630:93:45",
                        "trueBody": {
                          "id": 10974,
                          "nodeType": "Block",
                          "src": "3660:63:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10965,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3674:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10971,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10968,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10966,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3685:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10967,
                                          "name": "bit9",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10660,
                                          "src": "3695:4:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3685:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10969,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3684:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10970,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3703:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3684:28:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3674:38:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10973,
                              "nodeType": "ExpressionStatement",
                              "src": "3674:38:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10976,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3736:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_512_by_1",
                                    "typeString": "int_const 512"
                                  },
                                  "id": 10979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10977,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3748:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "39",
                                    "id": 10978,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3753:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_9_by_1",
                                      "typeString": "int_const 9"
                                    },
                                    "value": "9"
                                  },
                                  "src": "3748:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_512_by_1",
                                    "typeString": "int_const 512"
                                  }
                                }
                              ],
                              "id": 10980,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3747:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_512_by_1",
                                "typeString": "int_const 512"
                              }
                            },
                            "src": "3736:19:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3759:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3736:24:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10994,
                        "nodeType": "IfStatement",
                        "src": "3732:94:45",
                        "trueBody": {
                          "id": 10993,
                          "nodeType": "Block",
                          "src": "3762:64:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 10991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10984,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3776:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10990,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10987,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 10985,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3787:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 10986,
                                          "name": "bit10",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10663,
                                          "src": "3797:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3787:15:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10988,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3786:17:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 10989,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3806:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3786:29:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3776:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10992,
                              "nodeType": "ExpressionStatement",
                              "src": "3776:39:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10995,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3839:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1024_by_1",
                                    "typeString": "int_const 1024"
                                  },
                                  "id": 10998,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 10996,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3851:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "3130",
                                    "id": 10997,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3856:2:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "src": "3851:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1024_by_1",
                                    "typeString": "int_const 1024"
                                  }
                                }
                              ],
                              "id": 10999,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3850:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1024_by_1",
                                "typeString": "int_const 1024"
                              }
                            },
                            "src": "3839:20:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3863:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3839:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11013,
                        "nodeType": "IfStatement",
                        "src": "3835:95:45",
                        "trueBody": {
                          "id": 11012,
                          "nodeType": "Block",
                          "src": "3866:64:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 11010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11003,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3880:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11009,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11006,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11004,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3891:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11005,
                                          "name": "bit11",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10666,
                                          "src": "3901:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3891:15:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 11007,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3890:17:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11008,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "3910:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3890:29:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3880:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11011,
                              "nodeType": "ExpressionStatement",
                              "src": "3880:39:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11014,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "3943:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_2048_by_1",
                                    "typeString": "int_const 2048"
                                  },
                                  "id": 11017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 11015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3955:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "3131",
                                    "id": 11016,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3960:2:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_11_by_1",
                                      "typeString": "int_const 11"
                                    },
                                    "value": "11"
                                  },
                                  "src": "3955:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2048_by_1",
                                    "typeString": "int_const 2048"
                                  }
                                }
                              ],
                              "id": 11018,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3954:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2048_by_1",
                                "typeString": "int_const 2048"
                              }
                            },
                            "src": "3943:20:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3967:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3943:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11032,
                        "nodeType": "IfStatement",
                        "src": "3939:95:45",
                        "trueBody": {
                          "id": 11031,
                          "nodeType": "Block",
                          "src": "3970:64:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 11029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11022,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "3984:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11025,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11023,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "3995:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11024,
                                          "name": "bit12",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10669,
                                          "src": "4005:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3995:15:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 11026,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3994:17:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11027,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "4014:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3994:29:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3984:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11030,
                              "nodeType": "ExpressionStatement",
                              "src": "3984:39:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11038,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11033,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "4047:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_4096_by_1",
                                    "typeString": "int_const 4096"
                                  },
                                  "id": 11036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 11034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4059:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "3132",
                                    "id": 11035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4064:2:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    "value": "12"
                                  },
                                  "src": "4059:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4096_by_1",
                                    "typeString": "int_const 4096"
                                  }
                                }
                              ],
                              "id": 11037,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4058:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4096_by_1",
                                "typeString": "int_const 4096"
                              }
                            },
                            "src": "4047:20:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4071:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4047:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11051,
                        "nodeType": "IfStatement",
                        "src": "4043:95:45",
                        "trueBody": {
                          "id": 11050,
                          "nodeType": "Block",
                          "src": "4074:64:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 11048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11041,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "4088:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11047,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11044,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11042,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "4099:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11043,
                                          "name": "bit13",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10672,
                                          "src": "4109:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4099:15:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 11045,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4098:17:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11046,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "4118:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4098:29:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4088:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11049,
                              "nodeType": "ExpressionStatement",
                              "src": "4088:39:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11052,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "4151:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_8192_by_1",
                                    "typeString": "int_const 8192"
                                  },
                                  "id": 11055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 11053,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4163:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "3133",
                                    "id": 11054,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4168:2:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_13_by_1",
                                      "typeString": "int_const 13"
                                    },
                                    "value": "13"
                                  },
                                  "src": "4163:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8192_by_1",
                                    "typeString": "int_const 8192"
                                  }
                                }
                              ],
                              "id": 11056,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4162:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8192_by_1",
                                "typeString": "int_const 8192"
                              }
                            },
                            "src": "4151:20:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4175:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4151:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11070,
                        "nodeType": "IfStatement",
                        "src": "4147:95:45",
                        "trueBody": {
                          "id": 11069,
                          "nodeType": "Block",
                          "src": "4178:64:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 11067,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11060,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "4192:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11066,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11063,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11061,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "4203:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11062,
                                          "name": "bit14",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10675,
                                          "src": "4213:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4203:15:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 11064,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4202:17:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11065,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "4222:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4202:29:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4192:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11068,
                              "nodeType": "ExpressionStatement",
                              "src": "4192:39:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11071,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "4255:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_16384_by_1",
                                    "typeString": "int_const 16384"
                                  },
                                  "id": 11074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 11072,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4267:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "3134",
                                    "id": 11073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4272:2:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_14_by_1",
                                      "typeString": "int_const 14"
                                    },
                                    "value": "14"
                                  },
                                  "src": "4267:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16384_by_1",
                                    "typeString": "int_const 16384"
                                  }
                                }
                              ],
                              "id": 11075,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4266:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_16384_by_1",
                                "typeString": "int_const 16384"
                              }
                            },
                            "src": "4255:20:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4279:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4255:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11089,
                        "nodeType": "IfStatement",
                        "src": "4251:95:45",
                        "trueBody": {
                          "id": 11088,
                          "nodeType": "Block",
                          "src": "4282:64:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 11086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11079,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "4296:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11080,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "4307:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11081,
                                          "name": "bit15",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10678,
                                          "src": "4317:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4307:15:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 11083,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4306:17:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11084,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "4326:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4306:29:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4296:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11087,
                              "nodeType": "ExpressionStatement",
                              "src": "4296:39:45"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11090,
                              "name": "fraction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "4359:8:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_32768_by_1",
                                    "typeString": "int_const 32768"
                                  },
                                  "id": 11093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 11091,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4371:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "3135",
                                    "id": 11092,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4376:2:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_15_by_1",
                                      "typeString": "int_const 15"
                                    },
                                    "value": "15"
                                  },
                                  "src": "4371:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32768_by_1",
                                    "typeString": "int_const 32768"
                                  }
                                }
                              ],
                              "id": 11094,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4370:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32768_by_1",
                                "typeString": "int_const 32768"
                              }
                            },
                            "src": "4359:20:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4383:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4359:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11108,
                        "nodeType": "IfStatement",
                        "src": "4355:95:45",
                        "trueBody": {
                          "id": 11107,
                          "nodeType": "Block",
                          "src": "4386:64:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 11105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11098,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10800,
                                  "src": "4400:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11104,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11101,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11099,
                                          "name": "premium",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10800,
                                          "src": "4411:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11100,
                                          "name": "bit16",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10681,
                                          "src": "4421:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4411:15:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 11102,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4410:17:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11103,
                                    "name": "PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "4430:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4410:29:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4400:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11106,
                              "nodeType": "ExpressionStatement",
                              "src": "4400:39:45"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 11109,
                          "name": "premium",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10800,
                          "src": "4466:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10804,
                        "id": 11110,
                        "nodeType": "Return",
                        "src": "4459:14:45"
                      }
                    ]
                  },
                  "id": 11112,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addFractionalPremium",
                  "nameLocation": "2688:20:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10798,
                        "mutability": "mutable",
                        "name": "fraction",
                        "nameLocation": "2717:8:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11112,
                        "src": "2709:16:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10797,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2709:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10800,
                        "mutability": "mutable",
                        "name": "premium",
                        "nameLocation": "2735:7:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11112,
                        "src": "2727:15:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10799,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2727:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2708:35:45"
                  },
                  "returnParameters": {
                    "id": 10804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10803,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11112,
                        "src": "2791:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10802,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2791:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2790:9:45"
                  },
                  "scope": 11127,
                  "src": "2679:1801:45",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    11919
                  ],
                  "body": {
                    "id": 11125,
                    "nodeType": "Block",
                    "src": "4621:60:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11122,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11114,
                              "src": "4662:11:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 11120,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "4638:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ExponentialPremiumPriceOracle_$11127_$",
                                "typeString": "type(contract super ExponentialPremiumPriceOracle)"
                              }
                            },
                            "id": 11121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4644:17:45",
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11919,
                            "src": "4638:23:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) view returns (bool)"
                            }
                          },
                          "id": 11123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4638:36:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 11119,
                        "id": 11124,
                        "nodeType": "Return",
                        "src": "4631:43:45"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 11126,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "4495:17:45",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11116,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4585:8:45"
                  },
                  "parameters": {
                    "id": 11115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11114,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "4520:11:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11126,
                        "src": "4513:18:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 11113,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4513:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4512:20:45"
                  },
                  "returnParameters": {
                    "id": 11119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11118,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11126,
                        "src": "4611:4:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11117,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4611:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4610:6:45"
                  },
                  "scope": 11127,
                  "src": "4486:195:45",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 11128,
              "src": "92:4591:45",
              "usedErrors": []
            }
          ],
          "src": "31:4653:45"
        },
        "id": 45
      },
      "contracts/ethregistrar/IBaseRegistrar.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/IBaseRegistrar.sol",
          "exportedSymbols": {
            "ENS": [
              12157
            ],
            "IBaseRegistrar": [
              11222
            ],
            "IERC165": [
              3094
            ],
            "IERC721": [
              2493
            ]
          },
          "id": 11223,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../registry/ENS.sol",
              "id": 11129,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11223,
              "sourceUnit": 12158,
              "src": "0:29:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IBaseRegistrar.sol",
              "file": "./IBaseRegistrar.sol",
              "id": 11130,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11223,
              "sourceUnit": 11223,
              "src": "30:30:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
              "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
              "id": 11131,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11223,
              "sourceUnit": 2494,
              "src": "61:58:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11132,
                    "name": "IERC721",
                    "nameLocations": [
                      "149:7:46"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2493,
                    "src": "149:7:46"
                  },
                  "id": 11133,
                  "nodeType": "InheritanceSpecifier",
                  "src": "149:7:46"
                }
              ],
              "canonicalName": "IBaseRegistrar",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 11222,
              "linearizedBaseContracts": [
                11222,
                2493,
                3094
              ],
              "name": "IBaseRegistrar",
              "nameLocation": "131:14:46",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d7474",
                  "id": 11137,
                  "name": "ControllerAdded",
                  "nameLocation": "169:15:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11136,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11135,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "201:10:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11137,
                        "src": "185:26:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11134,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "185:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "184:28:46"
                  },
                  "src": "163:50:46"
                },
                {
                  "anonymous": false,
                  "eventSelector": "33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e81113",
                  "id": 11141,
                  "name": "ControllerRemoved",
                  "nameLocation": "224:17:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11139,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "258:10:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11141,
                        "src": "242:26:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11138,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "242:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "241:28:46"
                  },
                  "src": "218:52:46"
                },
                {
                  "anonymous": false,
                  "eventSelector": "ea3d7e1195a15d2ddcd859b01abd4c6b960fa9f9264e499a70a90c7f0c64b717",
                  "id": 11149,
                  "name": "NameMigrated",
                  "nameLocation": "281:12:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11148,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11143,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "319:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11149,
                        "src": "303:18:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11142,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "303:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11145,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "347:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11149,
                        "src": "331:21:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11144,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "331:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11147,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "370:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11149,
                        "src": "362:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11146,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "362:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "293:90:46"
                  },
                  "src": "275:109:46"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b3d987963d01b2f68493b4bdb130988f157ea43070d4ad840fee0466ed9370d9",
                  "id": 11157,
                  "name": "NameRegistered",
                  "nameLocation": "395:14:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11156,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11151,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "435:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11157,
                        "src": "419:18:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11150,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "419:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11153,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "463:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11157,
                        "src": "447:21:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11152,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11155,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "486:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11157,
                        "src": "478:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11154,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "478:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "409:90:46"
                  },
                  "src": "389:111:46"
                },
                {
                  "anonymous": false,
                  "eventSelector": "9b87a00e30f1ac65d898f070f8a3488fe60517182d0a2098e1b4b93a54aa9bd6",
                  "id": 11163,
                  "name": "NameRenewed",
                  "nameLocation": "511:11:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11159,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "539:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11163,
                        "src": "523:18:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11158,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "523:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11161,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "551:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11163,
                        "src": "543:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "543:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "522:37:46"
                  },
                  "src": "505:55:46"
                },
                {
                  "functionSelector": "a7fc7a07",
                  "id": 11168,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addController",
                  "nameLocation": "643:13:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11165,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "665:10:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11168,
                        "src": "657:18:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11164,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "657:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "656:20:46"
                  },
                  "returnParameters": {
                    "id": 11167,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "685:0:46"
                  },
                  "scope": 11222,
                  "src": "634:52:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f6a74ed7",
                  "id": 11173,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeController",
                  "nameLocation": "753:16:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11170,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "778:10:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11173,
                        "src": "770:18:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "770:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "769:20:46"
                  },
                  "returnParameters": {
                    "id": 11172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "798:0:46"
                  },
                  "scope": 11222,
                  "src": "744:55:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "4e543b26",
                  "id": 11178,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setResolver",
                  "nameLocation": "874:11:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11175,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "894:8:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11178,
                        "src": "886:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11174,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "886:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "885:18:46"
                  },
                  "returnParameters": {
                    "id": 11177,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "912:0:46"
                  },
                  "scope": 11222,
                  "src": "865:48:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d6e4fa86",
                  "id": 11185,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "nameExpires",
                  "nameLocation": "997:11:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11180,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1017:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11185,
                        "src": "1009:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11179,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1009:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1008:12:46"
                  },
                  "returnParameters": {
                    "id": 11184,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11183,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11185,
                        "src": "1044:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1044:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1043:9:46"
                  },
                  "scope": 11222,
                  "src": "988:65:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "96e494e8",
                  "id": 11192,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "available",
                  "nameLocation": "1142:9:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11187,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1160:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11192,
                        "src": "1152:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11186,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1152:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1151:12:46"
                  },
                  "returnParameters": {
                    "id": 11191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11190,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11192,
                        "src": "1187:4:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11189,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1187:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1186:6:46"
                  },
                  "scope": 11222,
                  "src": "1133:60:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 11193,
                    "nodeType": "StructuredDocumentation",
                    "src": "1199:40:46",
                    "text": " @dev Register a name."
                  },
                  "functionSelector": "fca247ac",
                  "id": 11204,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "register",
                  "nameLocation": "1253:8:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11200,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11195,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1279:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11204,
                        "src": "1271:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1271:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11197,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1299:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11204,
                        "src": "1291:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11196,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1291:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11199,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1322:8:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11204,
                        "src": "1314:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11198,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1314:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1261:75:46"
                  },
                  "returnParameters": {
                    "id": 11203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11202,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11204,
                        "src": "1355:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1355:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1354:9:46"
                  },
                  "scope": 11222,
                  "src": "1244:120:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c475abff",
                  "id": 11213,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renew",
                  "nameLocation": "1379:5:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11206,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1393:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11213,
                        "src": "1385:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11205,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1385:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11208,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1405:8:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11213,
                        "src": "1397:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1397:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1384:30:46"
                  },
                  "returnParameters": {
                    "id": 11212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11211,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11213,
                        "src": "1433:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1433:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1432:9:46"
                  },
                  "scope": 11222,
                  "src": "1370:72:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 11214,
                    "nodeType": "StructuredDocumentation",
                    "src": "1448:91:46",
                    "text": " @dev Reclaim ownership of a name in ENS, if you own it in the registrar."
                  },
                  "functionSelector": "28ed4f6c",
                  "id": 11221,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reclaim",
                  "nameLocation": "1553:7:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11216,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1569:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11221,
                        "src": "1561:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11215,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1561:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11218,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1581:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 11221,
                        "src": "1573:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1573:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1560:27:46"
                  },
                  "returnParameters": {
                    "id": 11220,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1596:0:46"
                  },
                  "scope": 11222,
                  "src": "1544:53:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11223,
              "src": "121:1478:46",
              "usedErrors": []
            }
          ],
          "src": "0:1600:46"
        },
        "id": 46
      },
      "contracts/ethregistrar/IBulkRenewal.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/IBulkRenewal.sol",
          "exportedSymbols": {
            "IBulkRenewal": [
              11242
            ]
          },
          "id": 11243,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IBulkRenewal",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 11242,
              "linearizedBaseContracts": [
                11242
              ],
              "name": "IBulkRenewal",
              "nameLocation": "10:12:47",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "3971d467",
                  "id": 11233,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rentPrice",
                  "nameLocation": "38:9:47",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11226,
                        "mutability": "mutable",
                        "name": "names",
                        "nameLocation": "66:5:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 11233,
                        "src": "48:23:47",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11224,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "48:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 11225,
                          "nodeType": "ArrayTypeName",
                          "src": "48:8:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11228,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "81:8:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 11233,
                        "src": "73:16:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "73:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "47:43:47"
                  },
                  "returnParameters": {
                    "id": 11232,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11231,
                        "mutability": "mutable",
                        "name": "total",
                        "nameLocation": "146:5:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 11233,
                        "src": "138:13:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11230,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "138:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "137:15:47"
                  },
                  "scope": 11242,
                  "src": "29:124:47",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "e8d6dbb4",
                  "id": 11241,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renewAll",
                  "nameLocation": "168:8:47",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11239,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11236,
                        "mutability": "mutable",
                        "name": "names",
                        "nameLocation": "195:5:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 11241,
                        "src": "177:23:47",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11234,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "177:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 11235,
                          "nodeType": "ArrayTypeName",
                          "src": "177:8:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11238,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "210:8:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 11241,
                        "src": "202:16:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "202:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "176:43:47"
                  },
                  "returnParameters": {
                    "id": 11240,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "252:0:47"
                  },
                  "scope": 11242,
                  "src": "159:94:47",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11243,
              "src": "0:255:47",
              "usedErrors": []
            }
          ],
          "src": "0:256:47"
        },
        "id": 47
      },
      "contracts/ethregistrar/IETHRegistrarController.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/IETHRegistrarController.sol",
          "exportedSymbols": {
            "IETHRegistrarController": [
              11321
            ],
            "IPriceOracle": [
              11342
            ]
          },
          "id": 11322,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11244,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:48"
            },
            {
              "absolutePath": "contracts/ethregistrar/IPriceOracle.sol",
              "file": "./IPriceOracle.sol",
              "id": 11245,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11322,
              "sourceUnit": 11343,
              "src": "57:28:48",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IETHRegistrarController",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 11321,
              "linearizedBaseContracts": [
                11321
              ],
              "name": "IETHRegistrarController",
              "nameLocation": "97:23:48",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "83e7f6ff",
                  "id": 11255,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rentPrice",
                  "nameLocation": "136:9:48",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11247,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11255,
                        "src": "146:13:48",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11246,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "146:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11249,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11255,
                        "src": "161:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "161:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "145:24:48"
                  },
                  "returnParameters": {
                    "id": 11254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11253,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11255,
                        "src": "204:25:48",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                          "typeString": "struct IPriceOracle.Price"
                        },
                        "typeName": {
                          "id": 11252,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 11251,
                            "name": "IPriceOracle.Price",
                            "nameLocations": [
                              "204:12:48",
                              "217:5:48"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11328,
                            "src": "204:18:48"
                          },
                          "referencedDeclaration": 11328,
                          "src": "204:18:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$11328_storage_ptr",
                            "typeString": "struct IPriceOracle.Price"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "203:27:48"
                  },
                  "scope": 11321,
                  "src": "127:104:48",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "aeb8ce9b",
                  "id": 11262,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "available",
                  "nameLocation": "246:9:48",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11257,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11262,
                        "src": "256:13:48",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11256,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "256:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "255:15:48"
                  },
                  "returnParameters": {
                    "id": 11261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11260,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11262,
                        "src": "289:4:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11259,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "289:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "288:6:48"
                  },
                  "scope": 11321,
                  "src": "237:58:48",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d555254a",
                  "id": 11286,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "makeCommitment",
                  "nameLocation": "310:14:48",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11264,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "334:13:48",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11263,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "334:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11266,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "357:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11265,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "357:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11268,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "374:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11267,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "374:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11270,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "391:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11269,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "391:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11272,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "408:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11271,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11275,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "425:16:48",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11273,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "425:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 11274,
                          "nodeType": "ArrayTypeName",
                          "src": "425:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11277,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "451:4:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11276,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "451:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11279,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "465:6:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 11278,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "465:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11281,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "481:6:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 11280,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "481:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "324:169:48"
                  },
                  "returnParameters": {
                    "id": 11285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11284,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11286,
                        "src": "512:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11283,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "512:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "511:9:48"
                  },
                  "scope": 11321,
                  "src": "301:220:48",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f14fcbc8",
                  "id": 11291,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "commit",
                  "nameLocation": "536:6:48",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11288,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11291,
                        "src": "543:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11287,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "543:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "542:9:48"
                  },
                  "returnParameters": {
                    "id": 11290,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "560:0:48"
                  },
                  "scope": 11321,
                  "src": "527:34:48",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "7acaaf26",
                  "id": 11313,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "register",
                  "nameLocation": "576:8:48",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11293,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "594:15:48",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11292,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "594:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11295,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "619:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "619:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11297,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "636:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11296,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "636:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11299,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "653:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11298,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "653:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11301,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "670:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11300,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11304,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "687:16:48",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11302,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "687:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 11303,
                          "nodeType": "ArrayTypeName",
                          "src": "687:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11306,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "713:4:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11305,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "713:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11308,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "727:6:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 11307,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "727:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11310,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11313,
                        "src": "743:6:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 11309,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "743:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "584:171:48"
                  },
                  "returnParameters": {
                    "id": 11312,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "772:0:48"
                  },
                  "scope": 11321,
                  "src": "567:206:48",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "acf1a841",
                  "id": 11320,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renew",
                  "nameLocation": "788:5:48",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11315,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11320,
                        "src": "794:15:48",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11314,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "794:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11317,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11320,
                        "src": "811:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "793:26:48"
                  },
                  "returnParameters": {
                    "id": 11319,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "836:0:48"
                  },
                  "scope": 11321,
                  "src": "779:58:48",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11322,
              "src": "87:752:48",
              "usedErrors": []
            }
          ],
          "src": "31:809:48"
        },
        "id": 48
      },
      "contracts/ethregistrar/IPriceOracle.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/IPriceOracle.sol",
          "exportedSymbols": {
            "IPriceOracle": [
              11342
            ]
          },
          "id": 11343,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11323,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".17",
                "<",
                "0.9",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:32:49"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IPriceOracle",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 11342,
              "linearizedBaseContracts": [
                11342
              ],
              "name": "IPriceOracle",
              "nameLocation": "75:12:49",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IPriceOracle.Price",
                  "id": 11328,
                  "members": [
                    {
                      "constant": false,
                      "id": 11325,
                      "mutability": "mutable",
                      "name": "base",
                      "nameLocation": "125:4:49",
                      "nodeType": "VariableDeclaration",
                      "scope": 11328,
                      "src": "117:12:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11324,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "117:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11327,
                      "mutability": "mutable",
                      "name": "premium",
                      "nameLocation": "147:7:49",
                      "nodeType": "VariableDeclaration",
                      "scope": 11328,
                      "src": "139:15:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11326,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "139:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Price",
                  "nameLocation": "101:5:49",
                  "nodeType": "StructDefinition",
                  "scope": 11342,
                  "src": "94:67:49",
                  "visibility": "public"
                },
                {
                  "documentation": {
                    "id": 11329,
                    "nodeType": "StructuredDocumentation",
                    "src": "167:370:49",
                    "text": " @dev Returns the price to register or renew a name.\n @param name The name being registered or renewed.\n @param expires When the name presently expires (0 if this is a new registration).\n @param duration How long the name is being registered or extended for, in seconds.\n @return base premium tuple of base price + premium price"
                  },
                  "functionSelector": "50e9a715",
                  "id": 11341,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "price",
                  "nameLocation": "551:5:49",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11336,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11331,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "582:4:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 11341,
                        "src": "566:20:49",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11330,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "566:6:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11333,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "604:7:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 11341,
                        "src": "596:15:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11332,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "596:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11335,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "629:8:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 11341,
                        "src": "621:16:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11334,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "621:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "556:87:49"
                  },
                  "returnParameters": {
                    "id": 11340,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11339,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11341,
                        "src": "667:14:49",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$11328_calldata_ptr",
                          "typeString": "struct IPriceOracle.Price"
                        },
                        "typeName": {
                          "id": 11338,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 11337,
                            "name": "Price",
                            "nameLocations": [
                              "667:5:49"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11328,
                            "src": "667:5:49"
                          },
                          "referencedDeclaration": 11328,
                          "src": "667:5:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$11328_storage_ptr",
                            "typeString": "struct IPriceOracle.Price"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "666:16:49"
                  },
                  "scope": 11342,
                  "src": "542:141:49",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11343,
              "src": "65:620:49",
              "usedErrors": []
            }
          ],
          "src": "31:655:49"
        },
        "id": 49
      },
      "contracts/ethregistrar/LinearPremiumPriceOracle.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/LinearPremiumPriceOracle.sol",
          "exportedSymbols": {
            "AggregatorInterface": [
              11657
            ],
            "Context": [
              2855
            ],
            "IERC165": [
              3094
            ],
            "IPriceOracle": [
              11342
            ],
            "LinearPremiumPriceOracle": [
              11510
            ],
            "Ownable": [
              642
            ],
            "SafeMath": [
              11644
            ],
            "StablePriceOracle": [
              11920
            ],
            "StringUtils": [
              12020
            ]
          },
          "id": 11511,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11344,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:50"
            },
            {
              "absolutePath": "contracts/ethregistrar/SafeMath.sol",
              "file": "./SafeMath.sol",
              "id": 11345,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11511,
              "sourceUnit": 11645,
              "src": "57:24:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/StablePriceOracle.sol",
              "file": "./StablePriceOracle.sol",
              "id": 11346,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11511,
              "sourceUnit": 11921,
              "src": "82:33:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11347,
                    "name": "StablePriceOracle",
                    "nameLocations": [
                      "154:17:50"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11920,
                    "src": "154:17:50"
                  },
                  "id": 11348,
                  "nodeType": "InheritanceSpecifier",
                  "src": "154:17:50"
                }
              ],
              "canonicalName": "LinearPremiumPriceOracle",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 11510,
              "linearizedBaseContracts": [
                11510,
                11920,
                11342
              ],
              "name": "LinearPremiumPriceOracle",
              "nameLocation": "126:24:50",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 11350,
                  "libraryName": {
                    "id": 11349,
                    "name": "SafeMath",
                    "nameLocations": [
                      "184:8:50"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11644,
                    "src": "184:8:50"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "178:21:50"
                },
                {
                  "constant": false,
                  "id": 11353,
                  "mutability": "immutable",
                  "name": "GRACE_PERIOD",
                  "nameLocation": "223:12:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 11510,
                  "src": "205:40:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11351,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "205:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3930",
                    "id": 11352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "238:7:50",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_7776000_by_1",
                      "typeString": "int_const 7776000"
                    },
                    "value": "90"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "7d3fb8b7",
                  "id": 11355,
                  "mutability": "immutable",
                  "name": "initialPremium",
                  "nameLocation": "277:14:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 11510,
                  "src": "252:39:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11354,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "252:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "f05af2b7",
                  "id": 11357,
                  "mutability": "immutable",
                  "name": "premiumDecreaseRate",
                  "nameLocation": "322:19:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 11510,
                  "src": "297:44:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11356,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "297:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 11365,
                  "mutability": "constant",
                  "name": "TIME_UNTIL_PREMIUM_ID",
                  "nameLocation": "372:21:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 11510,
                  "src": "348:103:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 11358,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "348:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "74696d65556e74696c5072656d69756d2875696e742c75696e74",
                            "id": 11362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "421:28:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a377dd9642cebf45fb7337de53983749383ac5da8d3b497b8a0ed3662534165f",
                              "typeString": "literal_string \"timeUntilPremium(uint,uint\""
                            },
                            "value": "timeUntilPremium(uint,uint"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a377dd9642cebf45fb7337de53983749383ac5da8d3b497b8a0ed3662534165f",
                              "typeString": "literal_string \"timeUntilPremium(uint,uint\""
                            }
                          ],
                          "id": 11361,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "411:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 11363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "411:39:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11360,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "404:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 11359,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "404:6:50",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 11364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "404:47:50",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 11390,
                    "nodeType": "Block",
                    "src": "675:101:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 11384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11382,
                            "name": "initialPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11355,
                            "src": "685:14:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11383,
                            "name": "_initialPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11373,
                            "src": "702:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "685:32:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11385,
                        "nodeType": "ExpressionStatement",
                        "src": "685:32:50"
                      },
                      {
                        "expression": {
                          "id": 11388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11386,
                            "name": "premiumDecreaseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11357,
                            "src": "727:19:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11387,
                            "name": "_premiumDecreaseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11375,
                            "src": "749:20:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "727:42:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11389,
                        "nodeType": "ExpressionStatement",
                        "src": "727:42:50"
                      }
                    ]
                  },
                  "id": 11391,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 11378,
                          "name": "_usdOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11368,
                          "src": "650:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                            "typeString": "contract AggregatorInterface"
                          }
                        },
                        {
                          "id": 11379,
                          "name": "_rentPrices",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11371,
                          "src": "662:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        }
                      ],
                      "id": 11380,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 11377,
                        "name": "StablePriceOracle",
                        "nameLocations": [
                          "632:17:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11920,
                        "src": "632:17:50"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "632:42:50"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11376,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11368,
                        "mutability": "mutable",
                        "name": "_usdOracle",
                        "nameLocation": "499:10:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11391,
                        "src": "479:30:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                          "typeString": "contract AggregatorInterface"
                        },
                        "typeName": {
                          "id": 11367,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 11366,
                            "name": "AggregatorInterface",
                            "nameLocations": [
                              "479:19:50"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11657,
                            "src": "479:19:50"
                          },
                          "referencedDeclaration": 11657,
                          "src": "479:19:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                            "typeString": "contract AggregatorInterface"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11371,
                        "mutability": "mutable",
                        "name": "_rentPrices",
                        "nameLocation": "536:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11391,
                        "src": "519:28:50",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11369,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "519:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11370,
                          "nodeType": "ArrayTypeName",
                          "src": "519:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11373,
                        "mutability": "mutable",
                        "name": "_initialPremium",
                        "nameLocation": "565:15:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11391,
                        "src": "557:23:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11372,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "557:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11375,
                        "mutability": "mutable",
                        "name": "_premiumDecreaseRate",
                        "nameLocation": "598:20:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11391,
                        "src": "590:28:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11374,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "590:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "469:155:50"
                  },
                  "returnParameters": {
                    "id": 11381,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "675:0:50"
                  },
                  "scope": 11510,
                  "src": "458:318:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11849
                  ],
                  "body": {
                    "id": 11440,
                    "nodeType": "Block",
                    "src": "930:502:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 11408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11403,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11395,
                            "src": "940:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11406,
                                "name": "GRACE_PERIOD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11353,
                                "src": "962:12:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 11404,
                                "name": "expires",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11395,
                                "src": "950:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "958:3:50",
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11622,
                              "src": "950:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "950:25:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "940:35:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11409,
                        "nodeType": "ExpressionStatement",
                        "src": "940:35:50"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11410,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11395,
                            "src": "989:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 11411,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "999:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 11412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1005:9:50",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "999:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "989:25:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11417,
                        "nodeType": "IfStatement",
                        "src": "985:103:50",
                        "trueBody": {
                          "id": 11416,
                          "nodeType": "Block",
                          "src": "1016:72:50",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 11414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1076:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 11402,
                              "id": 11415,
                              "nodeType": "Return",
                              "src": "1069:8:50"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11419
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11419,
                            "mutability": "mutable",
                            "name": "discount",
                            "nameLocation": "1164:8:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 11440,
                            "src": "1156:16:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11418,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1156:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11428,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 11425,
                                  "name": "expires",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11395,
                                  "src": "1232:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "expression": {
                                    "id": 11422,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "1212:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 11423,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1218:9:50",
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "src": "1212:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1228:3:50",
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11597,
                                "src": "1212:19:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 11426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1212:28:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11420,
                              "name": "premiumDecreaseRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11357,
                              "src": "1175:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1195:3:50",
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11547,
                            "src": "1175:23:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1175:75:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1156:94:50"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11429,
                            "name": "discount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11419,
                            "src": "1323:8:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 11430,
                            "name": "initialPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11355,
                            "src": "1334:14:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1323:25:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11435,
                        "nodeType": "IfStatement",
                        "src": "1319:64:50",
                        "trueBody": {
                          "id": 11434,
                          "nodeType": "Block",
                          "src": "1350:33:50",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 11432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1371:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 11402,
                              "id": 11433,
                              "nodeType": "Return",
                              "src": "1364:8:50"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11436,
                            "name": "initialPremium",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11355,
                            "src": "1400:14:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 11437,
                            "name": "discount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11419,
                            "src": "1417:8:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1400:25:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11402,
                        "id": 11439,
                        "nodeType": "Return",
                        "src": "1393:32:50"
                      }
                    ]
                  },
                  "id": 11441,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_premium",
                  "nameLocation": "791:8:50",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11399,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "903:8:50"
                  },
                  "parameters": {
                    "id": 11398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11393,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "823:4:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11441,
                        "src": "809:18:50",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11392,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "809:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11395,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "845:7:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11441,
                        "src": "837:15:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "837:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11397,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11441,
                        "src": "862:7:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11396,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "862:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "799:89:50"
                  },
                  "returnParameters": {
                    "id": 11402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11401,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11441,
                        "src": "921:7:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11400,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "921:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "920:9:50"
                  },
                  "scope": 11510,
                  "src": "782:650:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11489,
                    "nodeType": "Block",
                    "src": "1938:291:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 11455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11451,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11446,
                            "src": "1948:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11453,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11446,
                                "src": "1970:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11452,
                              "name": "weiToAttoUSD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11897,
                              "src": "1957:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256)"
                              }
                            },
                            "id": 11454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1957:20:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1948:29:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11456,
                        "nodeType": "ExpressionStatement",
                        "src": "1948:29:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11458,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11446,
                                "src": "1995:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 11459,
                                "name": "initialPremium",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11355,
                                "src": "2005:14:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1995:24:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 11457,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1987:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 11461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1987:33:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11462,
                        "nodeType": "ExpressionStatement",
                        "src": "1987:33:50"
                      },
                      {
                        "expression": {
                          "id": 11468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11463,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11444,
                            "src": "2031:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11466,
                                "name": "GRACE_PERIOD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11353,
                                "src": "2053:12:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 11464,
                                "name": "expires",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11444,
                                "src": "2041:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2049:3:50",
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11622,
                              "src": "2041:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2041:25:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2031:35:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11469,
                        "nodeType": "ExpressionStatement",
                        "src": "2031:35:50"
                      },
                      {
                        "assignments": [
                          11471
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11471,
                            "mutability": "mutable",
                            "name": "discount",
                            "nameLocation": "2085:8:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 11489,
                            "src": "2077:16:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11470,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2077:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11476,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11474,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11446,
                              "src": "2115:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11472,
                              "name": "initialPremium",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11355,
                              "src": "2096:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2111:3:50",
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11597,
                            "src": "2096:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2096:26:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2077:45:50"
                      },
                      {
                        "assignments": [
                          11478
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11478,
                            "mutability": "mutable",
                            "name": "duration",
                            "nameLocation": "2140:8:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 11489,
                            "src": "2132:16:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11477,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2132:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11483,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11481,
                              "name": "premiumDecreaseRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11357,
                              "src": "2164:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11479,
                              "name": "discount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11471,
                              "src": "2151:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2160:3:50",
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11572,
                            "src": "2151:12:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2151:33:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2132:52:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11486,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11478,
                              "src": "2213:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11484,
                              "name": "expires",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11444,
                              "src": "2201:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2209:3:50",
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11622,
                            "src": "2201:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2201:21:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11450,
                        "id": 11488,
                        "nodeType": "Return",
                        "src": "2194:28:50"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11442,
                    "nodeType": "StructuredDocumentation",
                    "src": "1438:376:50",
                    "text": " @dev Returns the timestamp at which a name with the specified expiry date will have\n      the specified re-registration price premium.\n @param expires The timestamp at which the name expires.\n @param amount The amount, in wei, the caller is willing to pay\n @return The timestamp at which the premium for this domain will be `amount`."
                  },
                  "functionSelector": "ed6c33ed",
                  "id": 11490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timeUntilPremium",
                  "nameLocation": "1828:16:50",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11444,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "1853:7:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11490,
                        "src": "1845:15:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11443,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1845:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11446,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1870:6:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11490,
                        "src": "1862:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1862:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1844:33:50"
                  },
                  "returnParameters": {
                    "id": 11450,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11449,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11490,
                        "src": "1925:7:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11448,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1925:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1924:9:50"
                  },
                  "scope": 11510,
                  "src": "1819:410:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    11919
                  ],
                  "body": {
                    "id": 11508,
                    "nodeType": "Block",
                    "src": "2370:126:50",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 11506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 11500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11498,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11492,
                                  "src": "2400:11:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 11499,
                                  "name": "TIME_UNTIL_PREMIUM_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11365,
                                  "src": "2415:21:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2400:36:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 11501,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2399:38:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 11504,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11492,
                                "src": "2477:11:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 11502,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2453:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_LinearPremiumPriceOracle_$11510_$",
                                  "typeString": "type(contract super LinearPremiumPriceOracle)"
                                }
                              },
                              "id": 11503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2459:17:50",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11919,
                              "src": "2453:23:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 11505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2453:36:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2399:90:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 11497,
                        "id": 11507,
                        "nodeType": "Return",
                        "src": "2380:109:50"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 11509,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "2244:17:50",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11494,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2334:8:50"
                  },
                  "parameters": {
                    "id": 11493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11492,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "2269:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 11509,
                        "src": "2262:18:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 11491,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2262:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2261:20:50"
                  },
                  "returnParameters": {
                    "id": 11497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11496,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11509,
                        "src": "2360:4:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11495,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2360:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2359:6:50"
                  },
                  "scope": 11510,
                  "src": "2235:261:50",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 11511,
              "src": "117:2381:50",
              "usedErrors": []
            }
          ],
          "src": "31:2468:50"
        },
        "id": 50
      },
      "contracts/ethregistrar/SafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/SafeMath.sol",
          "exportedSymbols": {
            "SafeMath": [
              11644
            ]
          },
          "id": 11645,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11512,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:51"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SafeMath",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 11513,
                "nodeType": "StructuredDocumentation",
                "src": "57:99:51",
                "text": " @title SafeMath\n @dev Unsigned math operations with safety checks that revert on error"
              },
              "fullyImplemented": true,
              "id": 11644,
              "linearizedBaseContracts": [
                11644
              ],
              "name": "SafeMath",
              "nameLocation": "165:8:51",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 11546,
                    "nodeType": "Block",
                    "src": "330:354:51",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11523,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11516,
                            "src": "561:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "566:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "561:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11529,
                        "nodeType": "IfStatement",
                        "src": "557:45:51",
                        "trueBody": {
                          "id": 11528,
                          "nodeType": "Block",
                          "src": "569:33:51",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 11526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "590:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 11522,
                              "id": 11527,
                              "nodeType": "Return",
                              "src": "583:8:51"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11531
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11531,
                            "mutability": "mutable",
                            "name": "c",
                            "nameLocation": "620:1:51",
                            "nodeType": "VariableDeclaration",
                            "scope": 11546,
                            "src": "612:9:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11530,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "612:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11535,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11532,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11516,
                            "src": "624:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 11533,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11518,
                            "src": "628:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "624:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "612:17:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11537,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11531,
                                  "src": "647:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 11538,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11516,
                                  "src": "651:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "647:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 11540,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11518,
                                "src": "656:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "647:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 11536,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "639:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 11542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "639:19:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11543,
                        "nodeType": "ExpressionStatement",
                        "src": "639:19:51"
                      },
                      {
                        "expression": {
                          "id": 11544,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11531,
                          "src": "676:1:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11522,
                        "id": 11545,
                        "nodeType": "Return",
                        "src": "669:8:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11514,
                    "nodeType": "StructuredDocumentation",
                    "src": "180:78:51",
                    "text": " @dev Multiplies two unsigned integers, reverts on overflow."
                  },
                  "id": 11547,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nameLocation": "272:3:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11516,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "284:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11547,
                        "src": "276:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "276:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11518,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "295:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11547,
                        "src": "287:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11517,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "287:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "275:22:51"
                  },
                  "returnParameters": {
                    "id": 11522,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11521,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11547,
                        "src": "321:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11520,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "321:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "320:9:51"
                  },
                  "scope": 11644,
                  "src": "263:421:51",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11571,
                    "nodeType": "Block",
                    "src": "881:229:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11558,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11552,
                                "src": "965:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 11559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "969:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "965:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 11557,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "957:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 11561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "957:14:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11562,
                        "nodeType": "ExpressionStatement",
                        "src": "957:14:51"
                      },
                      {
                        "assignments": [
                          11564
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11564,
                            "mutability": "mutable",
                            "name": "c",
                            "nameLocation": "989:1:51",
                            "nodeType": "VariableDeclaration",
                            "scope": 11571,
                            "src": "981:9:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11563,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "981:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11568,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11565,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11550,
                            "src": "993:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 11566,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11552,
                            "src": "997:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "993:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "981:17:51"
                      },
                      {
                        "expression": {
                          "id": 11569,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11564,
                          "src": "1102:1:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11556,
                        "id": 11570,
                        "nodeType": "Return",
                        "src": "1095:8:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11548,
                    "nodeType": "StructuredDocumentation",
                    "src": "690:119:51",
                    "text": " @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero."
                  },
                  "id": 11572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nameLocation": "823:3:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11553,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11550,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "835:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11572,
                        "src": "827:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11549,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "827:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11552,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "846:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11572,
                        "src": "838:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11551,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "826:22:51"
                  },
                  "returnParameters": {
                    "id": 11556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11555,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11572,
                        "src": "872:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11554,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "872:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "871:9:51"
                  },
                  "scope": 11644,
                  "src": "814:296:51",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11596,
                    "nodeType": "Block",
                    "src": "1310:78:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11583,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11577,
                                "src": "1328:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 11584,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11575,
                                "src": "1333:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1328:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 11582,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1320:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 11586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1320:15:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11587,
                        "nodeType": "ExpressionStatement",
                        "src": "1320:15:51"
                      },
                      {
                        "assignments": [
                          11589
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11589,
                            "mutability": "mutable",
                            "name": "c",
                            "nameLocation": "1353:1:51",
                            "nodeType": "VariableDeclaration",
                            "scope": 11596,
                            "src": "1345:9:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11588,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1345:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11593,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11590,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11575,
                            "src": "1357:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 11591,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11577,
                            "src": "1361:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1357:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1345:17:51"
                      },
                      {
                        "expression": {
                          "id": 11594,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11589,
                          "src": "1380:1:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11581,
                        "id": 11595,
                        "nodeType": "Return",
                        "src": "1373:8:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11573,
                    "nodeType": "StructuredDocumentation",
                    "src": "1116:122:51",
                    "text": " @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend)."
                  },
                  "id": 11597,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nameLocation": "1252:3:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11575,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1264:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11597,
                        "src": "1256:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11574,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1256:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11577,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1275:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11597,
                        "src": "1267:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1267:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1255:22:51"
                  },
                  "returnParameters": {
                    "id": 11581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11580,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11597,
                        "src": "1301:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1301:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1300:9:51"
                  },
                  "scope": 11644,
                  "src": "1243:145:51",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11621,
                    "nodeType": "Block",
                    "src": "1538:78:51",
                    "statements": [
                      {
                        "assignments": [
                          11608
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11608,
                            "mutability": "mutable",
                            "name": "c",
                            "nameLocation": "1556:1:51",
                            "nodeType": "VariableDeclaration",
                            "scope": 11621,
                            "src": "1548:9:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11607,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1548:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11612,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11609,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11600,
                            "src": "1560:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 11610,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11602,
                            "src": "1564:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1560:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1548:17:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11614,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11608,
                                "src": "1583:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 11615,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11600,
                                "src": "1588:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1583:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 11613,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1575:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 11617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1575:15:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11618,
                        "nodeType": "ExpressionStatement",
                        "src": "1575:15:51"
                      },
                      {
                        "expression": {
                          "id": 11619,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11608,
                          "src": "1608:1:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11606,
                        "id": 11620,
                        "nodeType": "Return",
                        "src": "1601:8:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11598,
                    "nodeType": "StructuredDocumentation",
                    "src": "1394:72:51",
                    "text": " @dev Adds two unsigned integers, reverts on overflow."
                  },
                  "id": 11622,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nameLocation": "1480:3:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11600,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1492:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11622,
                        "src": "1484:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1484:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11602,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1503:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11622,
                        "src": "1495:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1495:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1483:22:51"
                  },
                  "returnParameters": {
                    "id": 11606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11605,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11622,
                        "src": "1529:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11604,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1529:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1528:9:51"
                  },
                  "scope": 11644,
                  "src": "1471:145:51",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11642,
                    "nodeType": "Block",
                    "src": "1838:54:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11633,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11627,
                                "src": "1856:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 11634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1861:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1856:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 11632,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1848:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 11636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1848:15:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11637,
                        "nodeType": "ExpressionStatement",
                        "src": "1848:15:51"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11638,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11625,
                            "src": "1880:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "id": 11639,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11627,
                            "src": "1884:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1880:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11631,
                        "id": 11641,
                        "nodeType": "Return",
                        "src": "1873:12:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11623,
                    "nodeType": "StructuredDocumentation",
                    "src": "1622:144:51",
                    "text": " @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n reverts when dividing by zero."
                  },
                  "id": 11643,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mod",
                  "nameLocation": "1780:3:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11628,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11625,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1792:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11643,
                        "src": "1784:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11624,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1784:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11627,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1803:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 11643,
                        "src": "1795:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11626,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1795:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1783:22:51"
                  },
                  "returnParameters": {
                    "id": 11631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11630,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11643,
                        "src": "1829:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1829:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1828:9:51"
                  },
                  "scope": 11644,
                  "src": "1771:121:51",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 11645,
              "src": "157:1737:51",
              "usedErrors": []
            }
          ],
          "src": "31:1864:51"
        },
        "id": 51
      },
      "contracts/ethregistrar/StablePriceOracle.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/StablePriceOracle.sol",
          "exportedSymbols": {
            "AggregatorInterface": [
              11657
            ],
            "Context": [
              2855
            ],
            "IERC165": [
              3094
            ],
            "IPriceOracle": [
              11342
            ],
            "Ownable": [
              642
            ],
            "SafeMath": [
              11644
            ],
            "StablePriceOracle": [
              11920
            ],
            "StringUtils": [
              12020
            ]
          },
          "id": 11921,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11646,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:52"
            },
            {
              "absolutePath": "contracts/ethregistrar/IPriceOracle.sol",
              "file": "./IPriceOracle.sol",
              "id": 11647,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11921,
              "sourceUnit": 11343,
              "src": "57:28:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/SafeMath.sol",
              "file": "./SafeMath.sol",
              "id": 11648,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11921,
              "sourceUnit": 11645,
              "src": "86:24:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/StringUtils.sol",
              "file": "./StringUtils.sol",
              "id": 11649,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11921,
              "sourceUnit": 12021,
              "src": "111:27:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 11650,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11921,
              "sourceUnit": 643,
              "src": "139:52:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "id": 11651,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11921,
              "sourceUnit": 3095,
              "src": "192:65:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "AggregatorInterface",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 11657,
              "linearizedBaseContracts": [
                11657
              ],
              "name": "AggregatorInterface",
              "nameLocation": "269:19:52",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "50d25bcd",
                  "id": 11656,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nameLocation": "304:12:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "316:2:52"
                  },
                  "returnParameters": {
                    "id": 11655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11654,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11656,
                        "src": "342:6:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 11653,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "341:8:52"
                  },
                  "scope": 11657,
                  "src": "295:55:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11921,
              "src": "259:93:52",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11658,
                    "name": "IPriceOracle",
                    "nameLocations": [
                      "446:12:52"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11342,
                    "src": "446:12:52"
                  },
                  "id": 11659,
                  "nodeType": "InheritanceSpecifier",
                  "src": "446:12:52"
                }
              ],
              "canonicalName": "StablePriceOracle",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 11920,
              "linearizedBaseContracts": [
                11920,
                11342
              ],
              "name": "StablePriceOracle",
              "nameLocation": "425:17:52",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 11661,
                  "libraryName": {
                    "id": 11660,
                    "name": "SafeMath",
                    "nameLocations": [
                      "471:8:52"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11644,
                    "src": "471:8:52"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "465:21:52"
                },
                {
                  "global": false,
                  "id": 11663,
                  "libraryName": {
                    "id": 11662,
                    "name": "StringUtils",
                    "nameLocations": [
                      "497:11:52"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12020,
                    "src": "497:11:52"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "491:24:52"
                },
                {
                  "constant": false,
                  "functionSelector": "2c0fd74c",
                  "id": 11665,
                  "mutability": "immutable",
                  "name": "price1Letter",
                  "nameLocation": "588:12:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 11920,
                  "src": "563:37:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "563:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cd5d2c74",
                  "id": 11667,
                  "mutability": "immutable",
                  "name": "price2Letter",
                  "nameLocation": "631:12:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 11920,
                  "src": "606:37:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11666,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "606:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "a200e153",
                  "id": 11669,
                  "mutability": "immutable",
                  "name": "price3Letter",
                  "nameLocation": "674:12:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 11920,
                  "src": "649:37:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "649:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d820ed42",
                  "id": 11671,
                  "mutability": "immutable",
                  "name": "price4Letter",
                  "nameLocation": "717:12:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 11920,
                  "src": "692:37:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "692:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "59b6b86c",
                  "id": 11673,
                  "mutability": "immutable",
                  "name": "price5Letter",
                  "nameLocation": "760:12:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 11920,
                  "src": "735:37:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11672,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "735:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "c8a4271f",
                  "id": 11676,
                  "mutability": "immutable",
                  "name": "usdOracle",
                  "nameLocation": "838:9:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 11920,
                  "src": "801:46:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                    "typeString": "contract AggregatorInterface"
                  },
                  "typeName": {
                    "id": 11675,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11674,
                      "name": "AggregatorInterface",
                      "nameLocations": [
                        "801:19:52"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 11657,
                      "src": "801:19:52"
                    },
                    "referencedDeclaration": 11657,
                    "src": "801:19:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                      "typeString": "contract AggregatorInterface"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "73422d94aedd596c2d4d39f27a01033adc390a9054efaf259afefd95ef7331df",
                  "id": 11681,
                  "name": "RentPriceChanged",
                  "nameLocation": "860:16:52",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11680,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11679,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "prices",
                        "nameLocation": "887:6:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11681,
                        "src": "877:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11677,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "877:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11678,
                          "nodeType": "ArrayTypeName",
                          "src": "877:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "876:18:52"
                  },
                  "src": "854:41:52"
                },
                {
                  "body": {
                    "id": 11724,
                    "nodeType": "Block",
                    "src": "975:234:52",
                    "statements": [
                      {
                        "expression": {
                          "id": 11692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11690,
                            "name": "usdOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11676,
                            "src": "985:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                              "typeString": "contract AggregatorInterface"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11691,
                            "name": "_usdOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11684,
                            "src": "997:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                              "typeString": "contract AggregatorInterface"
                            }
                          },
                          "src": "985:22:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                            "typeString": "contract AggregatorInterface"
                          }
                        },
                        "id": 11693,
                        "nodeType": "ExpressionStatement",
                        "src": "985:22:52"
                      },
                      {
                        "expression": {
                          "id": 11698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11694,
                            "name": "price1Letter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11665,
                            "src": "1017:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 11695,
                              "name": "_rentPrices",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11687,
                              "src": "1032:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 11697,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 11696,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1044:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1032:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1017:29:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11699,
                        "nodeType": "ExpressionStatement",
                        "src": "1017:29:52"
                      },
                      {
                        "expression": {
                          "id": 11704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11700,
                            "name": "price2Letter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11667,
                            "src": "1056:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 11701,
                              "name": "_rentPrices",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11687,
                              "src": "1071:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 11703,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 11702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1083:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1071:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1056:29:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11705,
                        "nodeType": "ExpressionStatement",
                        "src": "1056:29:52"
                      },
                      {
                        "expression": {
                          "id": 11710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11706,
                            "name": "price3Letter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11669,
                            "src": "1095:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 11707,
                              "name": "_rentPrices",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11687,
                              "src": "1110:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 11709,
                            "indexExpression": {
                              "hexValue": "32",
                              "id": 11708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1122:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1110:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1095:29:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11711,
                        "nodeType": "ExpressionStatement",
                        "src": "1095:29:52"
                      },
                      {
                        "expression": {
                          "id": 11716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11712,
                            "name": "price4Letter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11671,
                            "src": "1134:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 11713,
                              "name": "_rentPrices",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11687,
                              "src": "1149:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 11715,
                            "indexExpression": {
                              "hexValue": "33",
                              "id": 11714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1161:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1149:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1134:29:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11717,
                        "nodeType": "ExpressionStatement",
                        "src": "1134:29:52"
                      },
                      {
                        "expression": {
                          "id": 11722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11718,
                            "name": "price5Letter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11673,
                            "src": "1173:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 11719,
                              "name": "_rentPrices",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11687,
                              "src": "1188:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 11721,
                            "indexExpression": {
                              "hexValue": "34",
                              "id": 11720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1200:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1188:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1173:29:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11723,
                        "nodeType": "ExpressionStatement",
                        "src": "1173:29:52"
                      }
                    ]
                  },
                  "id": 11725,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11688,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11684,
                        "mutability": "mutable",
                        "name": "_usdOracle",
                        "nameLocation": "933:10:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11725,
                        "src": "913:30:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                          "typeString": "contract AggregatorInterface"
                        },
                        "typeName": {
                          "id": 11683,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 11682,
                            "name": "AggregatorInterface",
                            "nameLocations": [
                              "913:19:52"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11657,
                            "src": "913:19:52"
                          },
                          "referencedDeclaration": 11657,
                          "src": "913:19:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                            "typeString": "contract AggregatorInterface"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11687,
                        "mutability": "mutable",
                        "name": "_rentPrices",
                        "nameLocation": "962:11:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11725,
                        "src": "945:28:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11685,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "945:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11686,
                          "nodeType": "ArrayTypeName",
                          "src": "945:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "912:62:52"
                  },
                  "returnParameters": {
                    "id": 11689,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "975:0:52"
                  },
                  "scope": 11920,
                  "src": "901:308:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    11341
                  ],
                  "body": {
                    "id": 11812,
                    "nodeType": "Block",
                    "src": "1376:646:52",
                    "statements": [
                      {
                        "assignments": [
                          11739
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11739,
                            "mutability": "mutable",
                            "name": "len",
                            "nameLocation": "1394:3:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 11812,
                            "src": "1386:11:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11738,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1386:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11743,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 11740,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11727,
                              "src": "1400:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            "id": 11741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1405:6:52",
                            "memberName": "strlen",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12019,
                            "src": "1400:11:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_string_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (uint256)"
                            }
                          },
                          "id": 11742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1400:13:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1386:27:52"
                      },
                      {
                        "assignments": [
                          11745
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11745,
                            "mutability": "mutable",
                            "name": "basePrice",
                            "nameLocation": "1431:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 11812,
                            "src": "1423:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11744,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1423:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11746,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1423:17:52"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11747,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11739,
                            "src": "1455:3:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "35",
                            "id": 11748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1462:1:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "src": "1455:8:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11757,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11739,
                              "src": "1535:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 11758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1542:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "1535:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11767,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11739,
                                "src": "1615:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "33",
                                "id": 11768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1622:1:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              "src": "1615:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11777,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11739,
                                  "src": "1695:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 11778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1702:1:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "1695:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 11793,
                                "nodeType": "Block",
                                "src": "1771:60:52",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 11791,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 11787,
                                        "name": "basePrice",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11745,
                                        "src": "1785:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11790,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11788,
                                          "name": "price1Letter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11665,
                                          "src": "1797:12:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11789,
                                          "name": "duration",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11731,
                                          "src": "1812:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1797:23:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1785:35:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11792,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1785:35:52"
                                  }
                                ]
                              },
                              "id": 11794,
                              "nodeType": "IfStatement",
                              "src": "1691:140:52",
                              "trueBody": {
                                "id": 11786,
                                "nodeType": "Block",
                                "src": "1705:60:52",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 11784,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 11780,
                                        "name": "basePrice",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11745,
                                        "src": "1719:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11783,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11781,
                                          "name": "price2Letter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11667,
                                          "src": "1731:12:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11782,
                                          "name": "duration",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11731,
                                          "src": "1746:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1731:23:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1719:35:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11785,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1719:35:52"
                                  }
                                ]
                              }
                            },
                            "id": 11795,
                            "nodeType": "IfStatement",
                            "src": "1611:220:52",
                            "trueBody": {
                              "id": 11776,
                              "nodeType": "Block",
                              "src": "1625:60:52",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 11774,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 11770,
                                      "name": "basePrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11745,
                                      "src": "1639:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 11773,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 11771,
                                        "name": "price3Letter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11669,
                                        "src": "1651:12:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 11772,
                                        "name": "duration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11731,
                                        "src": "1666:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1651:23:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1639:35:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11775,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1639:35:52"
                                }
                              ]
                            }
                          },
                          "id": 11796,
                          "nodeType": "IfStatement",
                          "src": "1531:300:52",
                          "trueBody": {
                            "id": 11766,
                            "nodeType": "Block",
                            "src": "1545:60:52",
                            "statements": [
                              {
                                "expression": {
                                  "id": 11764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 11760,
                                    "name": "basePrice",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11745,
                                    "src": "1559:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 11763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 11761,
                                      "name": "price4Letter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11671,
                                      "src": "1571:12:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 11762,
                                      "name": "duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11731,
                                      "src": "1586:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1571:23:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1559:35:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11765,
                                "nodeType": "ExpressionStatement",
                                "src": "1559:35:52"
                              }
                            ]
                          }
                        },
                        "id": 11797,
                        "nodeType": "IfStatement",
                        "src": "1451:380:52",
                        "trueBody": {
                          "id": 11756,
                          "nodeType": "Block",
                          "src": "1465:60:52",
                          "statements": [
                            {
                              "expression": {
                                "id": 11754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11750,
                                  "name": "basePrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11745,
                                  "src": "1479:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11753,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 11751,
                                    "name": "price5Letter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11673,
                                    "src": "1491:12:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 11752,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11731,
                                    "src": "1506:8:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1491:23:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1479:35:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11755,
                              "nodeType": "ExpressionStatement",
                              "src": "1479:35:52"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 11801,
                                  "name": "basePrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11745,
                                  "src": "1916:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11800,
                                "name": "attoUSDToWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11873,
                                "src": "1903:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 11802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1903:23:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 11805,
                                      "name": "name",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11727,
                                      "src": "1975:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    },
                                    {
                                      "id": 11806,
                                      "name": "expires",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11729,
                                      "src": "1981:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 11807,
                                      "name": "duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11731,
                                      "src": "1990:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 11804,
                                    "name": "_premium",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11849,
                                    "src": "1966:8:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (string memory,uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 11808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1966:33:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11803,
                                "name": "attoUSDToWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11873,
                                "src": "1953:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 11809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1953:47:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11798,
                              "name": "IPriceOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11342,
                              "src": "1860:12:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IPriceOracle_$11342_$",
                                "typeString": "type(contract IPriceOracle)"
                              }
                            },
                            "id": 11799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1873:5:52",
                            "memberName": "Price",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11328,
                            "src": "1860:18:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_Price_$11328_storage_ptr_$",
                              "typeString": "type(struct IPriceOracle.Price storage pointer)"
                            }
                          },
                          "id": 11810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "1897:4:52",
                            "1944:7:52"
                          ],
                          "names": [
                            "base",
                            "premium"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "1860:155:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                            "typeString": "struct IPriceOracle.Price memory"
                          }
                        },
                        "functionReturnParameters": 11737,
                        "id": 11811,
                        "nodeType": "Return",
                        "src": "1841:174:52"
                      }
                    ]
                  },
                  "functionSelector": "50e9a715",
                  "id": 11813,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "price",
                  "nameLocation": "1224:5:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11733,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1331:8:52"
                  },
                  "parameters": {
                    "id": 11732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11727,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "1255:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11813,
                        "src": "1239:20:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11726,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1239:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11729,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "1277:7:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11813,
                        "src": "1269:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1269:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11731,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1302:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11813,
                        "src": "1294:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1294:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1229:87:52"
                  },
                  "returnParameters": {
                    "id": 11737,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11736,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11813,
                        "src": "1349:25:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$11328_memory_ptr",
                          "typeString": "struct IPriceOracle.Price"
                        },
                        "typeName": {
                          "id": 11735,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 11734,
                            "name": "IPriceOracle.Price",
                            "nameLocations": [
                              "1349:12:52",
                              "1362:5:52"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11328,
                            "src": "1349:18:52"
                          },
                          "referencedDeclaration": 11328,
                          "src": "1349:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$11328_storage_ptr",
                            "typeString": "struct IPriceOracle.Price"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1348:27:52"
                  },
                  "scope": 11920,
                  "src": "1215:807:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11833,
                    "nodeType": "Block",
                    "src": "2228:71:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 11827,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11816,
                                  "src": "2267:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                },
                                {
                                  "id": 11828,
                                  "name": "expires",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11818,
                                  "src": "2273:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 11829,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11820,
                                  "src": "2282:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11826,
                                "name": "_premium",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11849,
                                "src": "2258:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (string memory,uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 11830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2258:33:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11825,
                            "name": "attoUSDToWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11873,
                            "src": "2245:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 11831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2245:47:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11824,
                        "id": 11832,
                        "nodeType": "Return",
                        "src": "2238:54:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11814,
                    "nodeType": "StructuredDocumentation",
                    "src": "2028:59:52",
                    "text": " @dev Returns the pricing premium in wei."
                  },
                  "functionSelector": "a34e3596",
                  "id": 11834,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "premium",
                  "nameLocation": "2101:7:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11816,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "2134:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11834,
                        "src": "2118:20:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11815,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2118:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11818,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "2156:7:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11834,
                        "src": "2148:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11817,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2148:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11820,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "2181:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11834,
                        "src": "2173:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11819,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2173:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2108:87:52"
                  },
                  "returnParameters": {
                    "id": 11824,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11823,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11834,
                        "src": "2219:7:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11822,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2219:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2218:9:52"
                  },
                  "scope": 11920,
                  "src": "2092:207:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11848,
                    "nodeType": "Block",
                    "src": "2528:25:52",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 11846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2545:1:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 11845,
                        "id": 11847,
                        "nodeType": "Return",
                        "src": "2538:8:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11835,
                    "nodeType": "StructuredDocumentation",
                    "src": "2305:75:52",
                    "text": " @dev Returns the pricing premium in internal base units."
                  },
                  "id": 11849,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_premium",
                  "nameLocation": "2394:8:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11837,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "2426:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11849,
                        "src": "2412:18:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11836,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2412:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11839,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "2448:7:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11849,
                        "src": "2440:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11838,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2440:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11841,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "2473:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11849,
                        "src": "2465:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11840,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2465:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2402:85:52"
                  },
                  "returnParameters": {
                    "id": 11845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11844,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11849,
                        "src": "2519:7:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11843,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2519:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2518:9:52"
                  },
                  "scope": 11920,
                  "src": "2385:168:52",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11872,
                    "nodeType": "Block",
                    "src": "2629:111:52",
                    "statements": [
                      {
                        "assignments": [
                          11857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11857,
                            "mutability": "mutable",
                            "name": "ethPrice",
                            "nameLocation": "2647:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 11872,
                            "src": "2639:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11856,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2639:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11864,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 11860,
                                  "name": "usdOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11676,
                                  "src": "2666:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                                    "typeString": "contract AggregatorInterface"
                                  }
                                },
                                "id": 11861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2676:12:52",
                                "memberName": "latestAnswer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11656,
                                "src": "2666:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_int256_$",
                                  "typeString": "function () view external returns (int256)"
                                }
                              },
                              "id": 11862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2666:24:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 11859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2658:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 11858,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2658:7:52",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 11863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2658:33:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2639:52:52"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11867,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11865,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11851,
                                  "src": "2709:6:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "316538",
                                  "id": 11866,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2718:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100000000_by_1",
                                    "typeString": "int_const 100000000"
                                  },
                                  "value": "1e8"
                                },
                                "src": "2709:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11868,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2708:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 11869,
                            "name": "ethPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11857,
                            "src": "2725:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2708:25:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11855,
                        "id": 11871,
                        "nodeType": "Return",
                        "src": "2701:32:52"
                      }
                    ]
                  },
                  "id": 11873,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "attoUSDToWei",
                  "nameLocation": "2568:12:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11851,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2589:6:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11873,
                        "src": "2581:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11850,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2581:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2580:16:52"
                  },
                  "returnParameters": {
                    "id": 11855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11854,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11873,
                        "src": "2620:7:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11853,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2620:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2619:9:52"
                  },
                  "scope": 11920,
                  "src": "2559:181:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11896,
                    "nodeType": "Block",
                    "src": "2816:111:52",
                    "statements": [
                      {
                        "assignments": [
                          11881
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11881,
                            "mutability": "mutable",
                            "name": "ethPrice",
                            "nameLocation": "2834:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 11896,
                            "src": "2826:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11880,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2826:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11888,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 11884,
                                  "name": "usdOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11676,
                                  "src": "2853:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_AggregatorInterface_$11657",
                                    "typeString": "contract AggregatorInterface"
                                  }
                                },
                                "id": 11885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2863:12:52",
                                "memberName": "latestAnswer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11656,
                                "src": "2853:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_int256_$",
                                  "typeString": "function () view external returns (int256)"
                                }
                              },
                              "id": 11886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2853:24:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 11883,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2845:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 11882,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2845:7:52",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 11887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2845:33:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2826:52:52"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11889,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11875,
                                  "src": "2896:6:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 11890,
                                  "name": "ethPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11881,
                                  "src": "2905:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2896:17:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11892,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2895:19:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "hexValue": "316538",
                            "id": 11893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2917:3:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100000000_by_1",
                              "typeString": "int_const 100000000"
                            },
                            "value": "1e8"
                          },
                          "src": "2895:25:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11879,
                        "id": 11895,
                        "nodeType": "Return",
                        "src": "2888:32:52"
                      }
                    ]
                  },
                  "id": 11897,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "weiToAttoUSD",
                  "nameLocation": "2755:12:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11876,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11875,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2776:6:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11897,
                        "src": "2768:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11874,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2768:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2767:16:52"
                  },
                  "returnParameters": {
                    "id": 11879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11878,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11897,
                        "src": "2807:7:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11877,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2807:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2806:9:52"
                  },
                  "scope": 11920,
                  "src": "2746:181:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11918,
                    "nodeType": "Block",
                    "src": "3051:137:52",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 11916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 11909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11904,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11899,
                              "src": "3080:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 11906,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3094,
                                    "src": "3100:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 11905,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3095:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 11907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3095:13:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3094",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 11908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3109:11:52",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "3095:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "3080:40:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 11915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11910,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11899,
                              "src": "3136:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 11912,
                                    "name": "IPriceOracle",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11342,
                                    "src": "3156:12:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IPriceOracle_$11342_$",
                                      "typeString": "type(contract IPriceOracle)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IPriceOracle_$11342_$",
                                      "typeString": "type(contract IPriceOracle)"
                                    }
                                  ],
                                  "id": 11911,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3151:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 11913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3151:18:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IPriceOracle_$11342",
                                  "typeString": "type(contract IPriceOracle)"
                                }
                              },
                              "id": 11914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3170:11:52",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "3151:30:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "3136:45:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3080:101:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 11903,
                        "id": 11917,
                        "nodeType": "Return",
                        "src": "3061:120:52"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 11919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "2942:17:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11899,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "2967:11:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 11919,
                        "src": "2960:18:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 11898,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2960:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2959:20:52"
                  },
                  "returnParameters": {
                    "id": 11903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11902,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11919,
                        "src": "3041:4:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11901,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3041:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3040:6:52"
                  },
                  "scope": 11920,
                  "src": "2933:255:52",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 11921,
              "src": "416:2774:52",
              "usedErrors": []
            }
          ],
          "src": "31:3160:52"
        },
        "id": 52
      },
      "contracts/ethregistrar/StringUtils.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/StringUtils.sol",
          "exportedSymbols": {
            "StringUtils": [
              12020
            ]
          },
          "id": 12021,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11922,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:53"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "StringUtils",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 12020,
              "linearizedBaseContracts": [
                12020
              ],
              "name": "StringUtils",
              "nameLocation": "34:11:53",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 12018,
                    "nodeType": "Block",
                    "src": "287:557:53",
                    "statements": [
                      {
                        "assignments": [
                          11931
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11931,
                            "mutability": "mutable",
                            "name": "len",
                            "nameLocation": "305:3:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 12018,
                            "src": "297:11:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11930,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "297:7:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11932,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "297:11:53"
                      },
                      {
                        "assignments": [
                          11934
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11934,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "326:1:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 12018,
                            "src": "318:9:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11933,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "318:7:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11936,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 11935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "330:1:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "318:13:53"
                      },
                      {
                        "assignments": [
                          11938
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11938,
                            "mutability": "mutable",
                            "name": "bytelength",
                            "nameLocation": "349:10:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 12018,
                            "src": "341:18:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11937,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "341:7:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11944,
                        "initialValue": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 11941,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11925,
                                "src": "368:1:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 11940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "362:5:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 11939,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "362:5:53",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 11942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "362:8:53",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 11943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "371:6:53",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "362:15:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "341:36:53"
                      },
                      {
                        "body": {
                          "id": 12014,
                          "nodeType": "Block",
                          "src": "424:394:53",
                          "statements": [
                            {
                              "assignments": [
                                11956
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11956,
                                  "mutability": "mutable",
                                  "name": "b",
                                  "nameLocation": "445:1:53",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 12014,
                                  "src": "438:8:53",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "typeName": {
                                    "id": 11955,
                                    "name": "bytes1",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "438:6:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11963,
                              "initialValue": {
                                "baseExpression": {
                                  "arguments": [
                                    {
                                      "id": 11959,
                                      "name": "s",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11925,
                                      "src": "455:1:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 11958,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "449:5:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 11957,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "449:5:53",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11960,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "449:8:53",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 11962,
                                "indexExpression": {
                                  "id": 11961,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11934,
                                  "src": "458:1:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "449:11:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "438:22:53"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 11966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11964,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11956,
                                  "src": "478:1:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30783830",
                                  "id": 11965,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "482:4:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_128_by_1",
                                    "typeString": "int_const 128"
                                  },
                                  "value": "0x80"
                                },
                                "src": "478:8:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 11974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 11972,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11956,
                                    "src": "537:1:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "hexValue": "30784530",
                                    "id": 11973,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "541:4:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    "value": "0xE0"
                                  },
                                  "src": "537:8:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 11982,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 11980,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11956,
                                      "src": "596:1:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "hexValue": "30784630",
                                      "id": 11981,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "600:4:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_240_by_1",
                                        "typeString": "int_const 240"
                                      },
                                      "value": "0xF0"
                                    },
                                    "src": "596:8:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      },
                                      "id": 11990,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 11988,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11956,
                                        "src": "655:1:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "hexValue": "30784638",
                                        "id": 11989,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "659:4:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_248_by_1",
                                          "typeString": "int_const 248"
                                        },
                                        "value": "0xF8"
                                      },
                                      "src": "655:8:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        },
                                        "id": 11998,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11996,
                                          "name": "b",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11956,
                                          "src": "714:1:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                          "hexValue": "30784643",
                                          "id": 11997,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "718:4:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_252_by_1",
                                            "typeString": "int_const 252"
                                          },
                                          "value": "0xFC"
                                        },
                                        "src": "714:8:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 12008,
                                        "nodeType": "Block",
                                        "src": "769:39:53",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 12006,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 12004,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 11934,
                                                "src": "787:1:53",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "+=",
                                              "rightHandSide": {
                                                "hexValue": "36",
                                                "id": 12005,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "792:1:53",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_6_by_1",
                                                  "typeString": "int_const 6"
                                                },
                                                "value": "6"
                                              },
                                              "src": "787:6:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 12007,
                                            "nodeType": "ExpressionStatement",
                                            "src": "787:6:53"
                                          }
                                        ]
                                      },
                                      "id": 12009,
                                      "nodeType": "IfStatement",
                                      "src": "710:98:53",
                                      "trueBody": {
                                        "id": 12003,
                                        "nodeType": "Block",
                                        "src": "724:39:53",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 12001,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 11999,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 11934,
                                                "src": "742:1:53",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "+=",
                                              "rightHandSide": {
                                                "hexValue": "35",
                                                "id": 12000,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "747:1:53",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_5_by_1",
                                                  "typeString": "int_const 5"
                                                },
                                                "value": "5"
                                              },
                                              "src": "742:6:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 12002,
                                            "nodeType": "ExpressionStatement",
                                            "src": "742:6:53"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 12010,
                                    "nodeType": "IfStatement",
                                    "src": "651:157:53",
                                    "trueBody": {
                                      "id": 11995,
                                      "nodeType": "Block",
                                      "src": "665:39:53",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 11993,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 11991,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11934,
                                              "src": "683:1:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "hexValue": "34",
                                              "id": 11992,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "688:1:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_4_by_1",
                                                "typeString": "int_const 4"
                                              },
                                              "value": "4"
                                            },
                                            "src": "683:6:53",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 11994,
                                          "nodeType": "ExpressionStatement",
                                          "src": "683:6:53"
                                        }
                                      ]
                                    }
                                  },
                                  "id": 12011,
                                  "nodeType": "IfStatement",
                                  "src": "592:216:53",
                                  "trueBody": {
                                    "id": 11987,
                                    "nodeType": "Block",
                                    "src": "606:39:53",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 11985,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 11983,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11934,
                                            "src": "624:1:53",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "hexValue": "33",
                                            "id": 11984,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "629:1:53",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "src": "624:6:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 11986,
                                        "nodeType": "ExpressionStatement",
                                        "src": "624:6:53"
                                      }
                                    ]
                                  }
                                },
                                "id": 12012,
                                "nodeType": "IfStatement",
                                "src": "533:275:53",
                                "trueBody": {
                                  "id": 11979,
                                  "nodeType": "Block",
                                  "src": "547:39:53",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 11977,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 11975,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11934,
                                          "src": "565:1:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                          "hexValue": "32",
                                          "id": 11976,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "570:1:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "565:6:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 11978,
                                      "nodeType": "ExpressionStatement",
                                      "src": "565:6:53"
                                    }
                                  ]
                                }
                              },
                              "id": 12013,
                              "nodeType": "IfStatement",
                              "src": "474:334:53",
                              "trueBody": {
                                "id": 11971,
                                "nodeType": "Block",
                                "src": "488:39:53",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 11969,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 11967,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11934,
                                        "src": "506:1:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 11968,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "511:1:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "506:6:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11970,
                                    "nodeType": "ExpressionStatement",
                                    "src": "506:6:53"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11949,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11934,
                            "src": "401:1:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 11950,
                            "name": "bytelength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11938,
                            "src": "405:10:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "401:14:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12015,
                        "initializationExpression": {
                          "expression": {
                            "id": 11947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 11945,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11931,
                              "src": "392:3:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "hexValue": "30",
                              "id": 11946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "398:1:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "392:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11948,
                          "nodeType": "ExpressionStatement",
                          "src": "392:7:53"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 11953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "417:5:53",
                            "subExpression": {
                              "id": 11952,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11931,
                              "src": "417:3:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11954,
                          "nodeType": "ExpressionStatement",
                          "src": "417:5:53"
                        },
                        "nodeType": "ForStatement",
                        "src": "387:431:53"
                      },
                      {
                        "expression": {
                          "id": 12016,
                          "name": "len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11931,
                          "src": "834:3:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11929,
                        "id": 12017,
                        "nodeType": "Return",
                        "src": "827:10:53"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11923,
                    "nodeType": "StructuredDocumentation",
                    "src": "52:165:53",
                    "text": " @dev Returns the length of a given string\n @param s The string to measure the length of\n @return The length of the input string"
                  },
                  "id": 12019,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "strlen",
                  "nameLocation": "231:6:53",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11925,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "252:1:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 12019,
                        "src": "238:15:53",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11924,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:6:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "237:17:53"
                  },
                  "returnParameters": {
                    "id": 11929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11928,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12019,
                        "src": "278:7:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "278:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "277:9:53"
                  },
                  "scope": 12020,
                  "src": "222:622:53",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 12021,
              "src": "26:820:53",
              "usedErrors": []
            }
          ],
          "src": "0:847:53"
        },
        "id": 53
      },
      "contracts/registry/ENS.sol": {
        "ast": {
          "absolutePath": "contracts/registry/ENS.sol",
          "exportedSymbols": {
            "ENS": [
              12157
            ]
          },
          "id": 12158,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12022,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:54"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ENS",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 12157,
              "linearizedBaseContracts": [
                12157
              ],
              "name": "ENS",
              "nameLocation": "36:3:54",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "ce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82",
                  "id": 12030,
                  "name": "NewOwner",
                  "nameLocation": "125:8:54",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12029,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12024,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "150:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12030,
                        "src": "134:20:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12023,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "134:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12026,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "172:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12030,
                        "src": "156:21:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12025,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "156:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12028,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "187:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12030,
                        "src": "179:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12027,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "179:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "133:60:54"
                  },
                  "src": "119:75:54"
                },
                {
                  "anonymous": false,
                  "eventSelector": "d4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266",
                  "id": 12036,
                  "name": "Transfer",
                  "nameLocation": "283:8:54",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12032,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "308:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12036,
                        "src": "292:20:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12031,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "292:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12034,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "322:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12036,
                        "src": "314:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12033,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "314:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "291:37:54"
                  },
                  "src": "277:52:54"
                },
                {
                  "anonymous": false,
                  "eventSelector": "335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0",
                  "id": 12042,
                  "name": "NewResolver",
                  "nameLocation": "393:11:54",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12038,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "421:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12042,
                        "src": "405:20:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12037,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "405:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12040,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "435:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12042,
                        "src": "427:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12039,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "427:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "404:40:54"
                  },
                  "src": "387:58:54"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68",
                  "id": 12048,
                  "name": "NewTTL",
                  "nameLocation": "502:6:54",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12047,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12044,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "525:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12048,
                        "src": "509:20:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12043,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "509:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12046,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "538:3:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12048,
                        "src": "531:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12045,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "531:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "508:34:54"
                  },
                  "src": "496:47:54"
                },
                {
                  "anonymous": false,
                  "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
                  "id": 12056,
                  "name": "ApprovalForAll",
                  "nameLocation": "607:14:54",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12050,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "647:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12056,
                        "src": "631:21:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12049,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "631:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12052,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "678:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12056,
                        "src": "662:24:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12051,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "662:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12054,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "701:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12056,
                        "src": "696:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12053,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "696:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "621:94:54"
                  },
                  "src": "601:115:54"
                },
                {
                  "functionSelector": "cf408823",
                  "id": 12067,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setRecord",
                  "nameLocation": "731:9:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12058,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "758:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12067,
                        "src": "750:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12057,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "750:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12060,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "780:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12067,
                        "src": "772:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12059,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "772:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12062,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "803:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12067,
                        "src": "795:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12061,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "795:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12064,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "828:3:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12067,
                        "src": "821:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12063,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "821:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "740:97:54"
                  },
                  "returnParameters": {
                    "id": 12066,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "846:0:54"
                  },
                  "scope": 12157,
                  "src": "722:125:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "5ef2c7f0",
                  "id": 12080,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSubnodeRecord",
                  "nameLocation": "862:16:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12069,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "896:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12080,
                        "src": "888:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12068,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "888:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12071,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "918:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12080,
                        "src": "910:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12070,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "910:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12073,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "941:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12080,
                        "src": "933:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "933:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12075,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "964:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12080,
                        "src": "956:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12074,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "956:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12077,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "989:3:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12080,
                        "src": "982:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12076,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "982:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "878:120:54"
                  },
                  "returnParameters": {
                    "id": 12079,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1007:0:54"
                  },
                  "scope": 12157,
                  "src": "853:155:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "06ab5923",
                  "id": 12091,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSubnodeOwner",
                  "nameLocation": "1023:15:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12082,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1056:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12091,
                        "src": "1048:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12081,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1048:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12084,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "1078:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12091,
                        "src": "1070:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12083,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1070:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12086,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1101:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12091,
                        "src": "1093:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12085,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1093:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1038:74:54"
                  },
                  "returnParameters": {
                    "id": 12090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12089,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12091,
                        "src": "1131:7:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12088,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1131:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1130:9:54"
                  },
                  "scope": 12157,
                  "src": "1014:126:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "1896f70a",
                  "id": 12098,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setResolver",
                  "nameLocation": "1155:11:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12096,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12093,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1175:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12098,
                        "src": "1167:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12092,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1167:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12095,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1189:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12098,
                        "src": "1181:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12094,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1181:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1166:32:54"
                  },
                  "returnParameters": {
                    "id": 12097,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1207:0:54"
                  },
                  "scope": 12157,
                  "src": "1146:62:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "5b0fc9c3",
                  "id": 12105,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setOwner",
                  "nameLocation": "1223:8:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12100,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1240:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12105,
                        "src": "1232:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12099,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1232:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12102,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1254:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12105,
                        "src": "1246:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12101,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1246:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1231:29:54"
                  },
                  "returnParameters": {
                    "id": 12104,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1269:0:54"
                  },
                  "scope": 12157,
                  "src": "1214:56:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "14ab9038",
                  "id": 12112,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTTL",
                  "nameLocation": "1285:6:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12110,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12107,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1300:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12112,
                        "src": "1292:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12106,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1292:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12109,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "1313:3:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12112,
                        "src": "1306:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12108,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1306:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1291:26:54"
                  },
                  "returnParameters": {
                    "id": 12111,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1326:0:54"
                  },
                  "scope": 12157,
                  "src": "1276:51:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "a22cb465",
                  "id": 12119,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "1342:17:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12114,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1368:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12119,
                        "src": "1360:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1360:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12116,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "1383:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12119,
                        "src": "1378:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12115,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1378:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1359:33:54"
                  },
                  "returnParameters": {
                    "id": 12118,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1401:0:54"
                  },
                  "scope": 12157,
                  "src": "1333:69:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "02571be3",
                  "id": 12126,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "1417:5:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12122,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12121,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1431:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12126,
                        "src": "1423:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12120,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1423:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1422:14:54"
                  },
                  "returnParameters": {
                    "id": 12125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12124,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12126,
                        "src": "1460:7:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12123,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1460:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1459:9:54"
                  },
                  "scope": 12157,
                  "src": "1408:61:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "0178b8bf",
                  "id": 12133,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resolver",
                  "nameLocation": "1484:8:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12128,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1501:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12133,
                        "src": "1493:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12127,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1493:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1492:14:54"
                  },
                  "returnParameters": {
                    "id": 12132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12131,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12133,
                        "src": "1530:7:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1530:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1529:9:54"
                  },
                  "scope": 12157,
                  "src": "1475:64:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "16a25cbd",
                  "id": 12140,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ttl",
                  "nameLocation": "1554:3:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12136,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12135,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1566:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12140,
                        "src": "1558:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12134,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1558:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1557:14:54"
                  },
                  "returnParameters": {
                    "id": 12139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12138,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12140,
                        "src": "1595:6:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12137,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1595:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1594:8:54"
                  },
                  "scope": 12157,
                  "src": "1545:58:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f79fe538",
                  "id": 12147,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recordExists",
                  "nameLocation": "1618:12:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12142,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1639:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12147,
                        "src": "1631:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12141,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1631:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1630:14:54"
                  },
                  "returnParameters": {
                    "id": 12146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12145,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12147,
                        "src": "1668:4:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12144,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1668:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1667:6:54"
                  },
                  "scope": 12157,
                  "src": "1609:65:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "e985e9c5",
                  "id": 12156,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "1689:16:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12152,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12149,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1714:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12156,
                        "src": "1706:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12148,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1706:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12151,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1729:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 12156,
                        "src": "1721:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12150,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1721:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1705:33:54"
                  },
                  "returnParameters": {
                    "id": 12155,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12154,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12156,
                        "src": "1786:4:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12153,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1786:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1785:6:54"
                  },
                  "scope": 12157,
                  "src": "1680:112:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 12158,
              "src": "26:1768:54",
              "usedErrors": []
            }
          ],
          "src": "0:1795:54"
        },
        "id": 54
      },
      "contracts/registry/ENSRegistry.sol": {
        "ast": {
          "absolutePath": "contracts/registry/ENSRegistry.sol",
          "exportedSymbols": {
            "ENS": [
              12157
            ],
            "ENSRegistry": [
              12581
            ]
          },
          "id": 12582,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12159,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:55"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "./ENS.sol",
              "id": 12160,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12582,
              "sourceUnit": 12158,
              "src": "26:19:55",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 12162,
                    "name": "ENS",
                    "nameLocations": [
                      "109:3:55"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12157,
                    "src": "109:3:55"
                  },
                  "id": 12163,
                  "nodeType": "InheritanceSpecifier",
                  "src": "109:3:55"
                }
              ],
              "canonicalName": "ENSRegistry",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 12161,
                "nodeType": "StructuredDocumentation",
                "src": "47:37:55",
                "text": " The ENS registry contract."
              },
              "fullyImplemented": true,
              "id": 12581,
              "linearizedBaseContracts": [
                12581,
                12157
              ],
              "name": "ENSRegistry",
              "nameLocation": "94:11:55",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ENSRegistry.Record",
                  "id": 12170,
                  "members": [
                    {
                      "constant": false,
                      "id": 12165,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "151:5:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 12170,
                      "src": "143:13:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12164,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "143:7:55",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12167,
                      "mutability": "mutable",
                      "name": "resolver",
                      "nameLocation": "174:8:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 12170,
                      "src": "166:16:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12166,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "166:7:55",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12169,
                      "mutability": "mutable",
                      "name": "ttl",
                      "nameLocation": "199:3:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 12170,
                      "src": "192:10:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 12168,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "192:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Record",
                  "nameLocation": "126:6:55",
                  "nodeType": "StructDefinition",
                  "scope": 12581,
                  "src": "119:90:55",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 12175,
                  "mutability": "mutable",
                  "name": "records",
                  "nameLocation": "242:7:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 12581,
                  "src": "215:34:55",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                    "typeString": "mapping(bytes32 => struct ENSRegistry.Record)"
                  },
                  "typeName": {
                    "id": 12174,
                    "keyType": {
                      "id": 12171,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "223:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "215:26:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                      "typeString": "mapping(bytes32 => struct ENSRegistry.Record)"
                    },
                    "valueType": {
                      "id": 12173,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12172,
                        "name": "Record",
                        "nameLocations": [
                          "234:6:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12170,
                        "src": "234:6:55"
                      },
                      "referencedDeclaration": 12170,
                      "src": "234:6:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$12170_storage_ptr",
                        "typeString": "struct ENSRegistry.Record"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12181,
                  "mutability": "mutable",
                  "name": "operators",
                  "nameLocation": "300:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 12581,
                  "src": "255:54:55",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 12180,
                    "keyType": {
                      "id": 12176,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "263:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "255:44:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 12179,
                      "keyType": {
                        "id": 12177,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "282:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "274:24:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 12178,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "293:4:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12207,
                    "nodeType": "Block",
                    "src": "420:133:55",
                    "statements": [
                      {
                        "assignments": [
                          12186
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12186,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "438:5:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 12207,
                            "src": "430:13:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12185,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "430:7:55",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12191,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12187,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12175,
                              "src": "446:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                              }
                            },
                            "id": 12189,
                            "indexExpression": {
                              "id": 12188,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12183,
                              "src": "454:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "446:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$12170_storage",
                              "typeString": "struct ENSRegistry.Record storage ref"
                            }
                          },
                          "id": 12190,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "460:5:55",
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12165,
                          "src": "446:19:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "430:35:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12193,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12186,
                                  "src": "483:5:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 12194,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "492:3:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 12195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "496:6:55",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "492:10:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "483:19:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 12197,
                                    "name": "operators",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12181,
                                    "src": "506:9:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(address => mapping(address => bool))"
                                    }
                                  },
                                  "id": 12199,
                                  "indexExpression": {
                                    "id": 12198,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12186,
                                    "src": "516:5:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "506:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 12202,
                                "indexExpression": {
                                  "expression": {
                                    "id": 12200,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "523:3:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 12201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "527:6:55",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "523:10:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "506:28:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "483:51:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12192,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "475:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 12204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "475:60:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12205,
                        "nodeType": "ExpressionStatement",
                        "src": "475:60:55"
                      },
                      {
                        "id": 12206,
                        "nodeType": "PlaceholderStatement",
                        "src": "545:1:55"
                      }
                    ]
                  },
                  "id": 12208,
                  "name": "authorised",
                  "nameLocation": "395:10:55",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 12184,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12183,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "414:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12208,
                        "src": "406:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12182,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "406:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "405:14:55"
                  },
                  "src": "386:167:55",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12220,
                    "nodeType": "Block",
                    "src": "639:48:55",
                    "statements": [
                      {
                        "expression": {
                          "id": 12218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12212,
                                "name": "records",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12175,
                                "src": "649:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                  "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                }
                              },
                              "id": 12214,
                              "indexExpression": {
                                "hexValue": "307830",
                                "id": 12213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "657:3:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "649:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$12170_storage",
                                "typeString": "struct ENSRegistry.Record storage ref"
                              }
                            },
                            "id": 12215,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "662:5:55",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12165,
                            "src": "649:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 12216,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "670:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "674:6:55",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "670:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "649:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12219,
                        "nodeType": "ExpressionStatement",
                        "src": "649:31:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12209,
                    "nodeType": "StructuredDocumentation",
                    "src": "559:54:55",
                    "text": " @dev Constructs a new ENS registry."
                  },
                  "id": 12221,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12210,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "629:2:55"
                  },
                  "returnParameters": {
                    "id": 12211,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "639:0:55"
                  },
                  "scope": 12581,
                  "src": "618:69:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12067
                  ],
                  "body": {
                    "id": 12245,
                    "nodeType": "Block",
                    "src": "1070:87:55",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12235,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12224,
                              "src": "1089:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12236,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12226,
                              "src": "1095:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12234,
                            "name": "setOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12299,
                            "src": "1080:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 12237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1080:21:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12238,
                        "nodeType": "ExpressionStatement",
                        "src": "1080:21:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12240,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12224,
                              "src": "1130:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12241,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12228,
                              "src": "1136:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12242,
                              "name": "ttl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12230,
                              "src": "1146:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 12239,
                            "name": "_setResolverAndTTL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12580,
                            "src": "1111:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,uint64)"
                            }
                          },
                          "id": 12243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1111:39:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12244,
                        "nodeType": "ExpressionStatement",
                        "src": "1111:39:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12222,
                    "nodeType": "StructuredDocumentation",
                    "src": "693:230:55",
                    "text": " @dev Sets the record for a node.\n @param node The node to update.\n @param owner The address of the new owner.\n @param resolver The address of the resolver.\n @param ttl The TTL in seconds."
                  },
                  "functionSelector": "cf408823",
                  "id": 12246,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setRecord",
                  "nameLocation": "937:9:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12232,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1061:8:55"
                  },
                  "parameters": {
                    "id": 12231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12224,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "964:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12246,
                        "src": "956:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12223,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "956:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12226,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "986:5:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12246,
                        "src": "978:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "978:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12228,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1009:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12246,
                        "src": "1001:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12227,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1001:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12230,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "1034:3:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12246,
                        "src": "1027:10:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12229,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1027:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "946:97:55"
                  },
                  "returnParameters": {
                    "id": 12233,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1070:0:55"
                  },
                  "scope": 12581,
                  "src": "928:229:55",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    12080
                  ],
                  "body": {
                    "id": 12275,
                    "nodeType": "Block",
                    "src": "1636:122:55",
                    "statements": [
                      {
                        "assignments": [
                          12262
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12262,
                            "mutability": "mutable",
                            "name": "subnode",
                            "nameLocation": "1654:7:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 12275,
                            "src": "1646:15:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12261,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1646:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12268,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12264,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "1680:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12265,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12251,
                              "src": "1686:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12266,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "1693:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12263,
                            "name": "setSubnodeOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12339,
                            "src": "1664:15:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32,address) returns (bytes32)"
                            }
                          },
                          "id": 12267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1664:35:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1646:53:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12270,
                              "name": "subnode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12262,
                              "src": "1728:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12271,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12255,
                              "src": "1737:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12272,
                              "name": "ttl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12257,
                              "src": "1747:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 12269,
                            "name": "_setResolverAndTTL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12580,
                            "src": "1709:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,uint64)"
                            }
                          },
                          "id": 12273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1709:42:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12274,
                        "nodeType": "ExpressionStatement",
                        "src": "1709:42:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12247,
                    "nodeType": "StructuredDocumentation",
                    "src": "1163:296:55",
                    "text": " @dev Sets the record for a subnode.\n @param node The parent node.\n @param label The hash of the label specifying the subnode.\n @param owner The address of the new owner.\n @param resolver The address of the resolver.\n @param ttl The TTL in seconds."
                  },
                  "functionSelector": "5ef2c7f0",
                  "id": 12276,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSubnodeRecord",
                  "nameLocation": "1473:16:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12259,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1627:8:55"
                  },
                  "parameters": {
                    "id": 12258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12249,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1507:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12276,
                        "src": "1499:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12248,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1499:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12251,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "1529:5:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12276,
                        "src": "1521:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12250,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1521:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12253,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1552:5:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12276,
                        "src": "1544:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12252,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1544:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12255,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1575:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12276,
                        "src": "1567:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12254,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1567:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12257,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "1600:3:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12276,
                        "src": "1593:10:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12256,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1593:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1489:120:55"
                  },
                  "returnParameters": {
                    "id": 12260,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1636:0:55"
                  },
                  "scope": 12581,
                  "src": "1464:294:55",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    12105
                  ],
                  "body": {
                    "id": 12298,
                    "nodeType": "Block",
                    "src": "2121:75:55",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12289,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12279,
                              "src": "2141:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12290,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12281,
                              "src": "2147:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12288,
                            "name": "_setOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12530,
                            "src": "2131:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 12291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2131:22:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12292,
                        "nodeType": "ExpressionStatement",
                        "src": "2131:22:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12294,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12279,
                              "src": "2177:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12295,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12281,
                              "src": "2183:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12293,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12036,
                            "src": "2168:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 12296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2168:21:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12297,
                        "nodeType": "EmitStatement",
                        "src": "2163:26:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12277,
                    "nodeType": "StructuredDocumentation",
                    "src": "1764:228:55",
                    "text": " @dev Transfers ownership of a node to a new address. May only be called by the current owner of the node.\n @param node The node to transfer ownership of.\n @param owner The address of the new owner."
                  },
                  "functionSelector": "5b0fc9c3",
                  "id": 12299,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12285,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12279,
                          "src": "2111:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12286,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12284,
                        "name": "authorised",
                        "nameLocations": [
                          "2100:10:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12208,
                        "src": "2100:10:55"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2100:16:55"
                    }
                  ],
                  "name": "setOwner",
                  "nameLocation": "2006:8:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12283,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2083:8:55"
                  },
                  "parameters": {
                    "id": 12282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12279,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2023:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12299,
                        "src": "2015:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12278,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2015:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12281,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2037:5:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12299,
                        "src": "2029:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12280,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2029:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2014:29:55"
                  },
                  "returnParameters": {
                    "id": 12287,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2121:0:55"
                  },
                  "scope": 12581,
                  "src": "1997:199:55",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12091
                  ],
                  "body": {
                    "id": 12338,
                    "nodeType": "Block",
                    "src": "2666:177:55",
                    "statements": [
                      {
                        "assignments": [
                          12316
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12316,
                            "mutability": "mutable",
                            "name": "subnode",
                            "nameLocation": "2684:7:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 12338,
                            "src": "2676:15:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12315,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2676:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12324,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 12320,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12302,
                                  "src": "2721:4:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 12321,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12304,
                                  "src": "2727:5:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 12318,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2704:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2708:12:55",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "2704:16:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 12322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2704:29:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12317,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2694:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 12323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2694:40:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2676:58:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12326,
                              "name": "subnode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12316,
                              "src": "2754:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12327,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12306,
                              "src": "2763:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12325,
                            "name": "_setOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12530,
                            "src": "2744:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 12328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2744:25:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12329,
                        "nodeType": "ExpressionStatement",
                        "src": "2744:25:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12331,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12302,
                              "src": "2793:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12332,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12304,
                              "src": "2799:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12333,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12306,
                              "src": "2806:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12330,
                            "name": "NewOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12030,
                            "src": "2784:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 12334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2784:28:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12335,
                        "nodeType": "EmitStatement",
                        "src": "2779:33:55"
                      },
                      {
                        "expression": {
                          "id": 12336,
                          "name": "subnode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12316,
                          "src": "2829:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 12314,
                        "id": 12337,
                        "nodeType": "Return",
                        "src": "2822:14:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12300,
                    "nodeType": "StructuredDocumentation",
                    "src": "2202:301:55",
                    "text": " @dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\n @param node The parent node.\n @param label The hash of the label specifying the subnode.\n @param owner The address of the new owner."
                  },
                  "functionSelector": "06ab5923",
                  "id": 12339,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12310,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12302,
                          "src": "2642:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12311,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12309,
                        "name": "authorised",
                        "nameLocations": [
                          "2631:10:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12208,
                        "src": "2631:10:55"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2631:16:55"
                    }
                  ],
                  "name": "setSubnodeOwner",
                  "nameLocation": "2517:15:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12308,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2622:8:55"
                  },
                  "parameters": {
                    "id": 12307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12302,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2550:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12339,
                        "src": "2542:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12301,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2542:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12304,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "2572:5:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12339,
                        "src": "2564:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12303,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2564:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12306,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2595:5:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12339,
                        "src": "2587:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12305,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2587:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2532:74:55"
                  },
                  "returnParameters": {
                    "id": 12314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12313,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12339,
                        "src": "2657:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12312,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2657:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2656:9:55"
                  },
                  "scope": 12581,
                  "src": "2508:335:55",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12098
                  ],
                  "body": {
                    "id": 12363,
                    "nodeType": "Block",
                    "src": "3148:92:55",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12352,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12342,
                              "src": "3175:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12353,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12344,
                              "src": "3181:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12351,
                            "name": "NewResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12042,
                            "src": "3163:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 12354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3163:27:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12355,
                        "nodeType": "EmitStatement",
                        "src": "3158:32:55"
                      },
                      {
                        "expression": {
                          "id": 12361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12356,
                                "name": "records",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12175,
                                "src": "3200:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                  "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                }
                              },
                              "id": 12358,
                              "indexExpression": {
                                "id": 12357,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12342,
                                "src": "3208:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3200:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$12170_storage",
                                "typeString": "struct ENSRegistry.Record storage ref"
                              }
                            },
                            "id": 12359,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "3214:8:55",
                            "memberName": "resolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12167,
                            "src": "3200:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12360,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12344,
                            "src": "3225:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3200:33:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12362,
                        "nodeType": "ExpressionStatement",
                        "src": "3200:33:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12340,
                    "nodeType": "StructuredDocumentation",
                    "src": "2849:164:55",
                    "text": " @dev Sets the resolver address for the specified node.\n @param node The node to update.\n @param resolver The address of the resolver."
                  },
                  "functionSelector": "1896f70a",
                  "id": 12364,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12348,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12342,
                          "src": "3138:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12349,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12347,
                        "name": "authorised",
                        "nameLocations": [
                          "3127:10:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12208,
                        "src": "3127:10:55"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3127:16:55"
                    }
                  ],
                  "name": "setResolver",
                  "nameLocation": "3027:11:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12346,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3110:8:55"
                  },
                  "parameters": {
                    "id": 12345,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12342,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "3047:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12364,
                        "src": "3039:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12341,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3039:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12344,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "3061:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12364,
                        "src": "3053:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12343,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3053:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3038:32:55"
                  },
                  "returnParameters": {
                    "id": 12350,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3148:0:55"
                  },
                  "scope": 12581,
                  "src": "3018:222:55",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12112
                  ],
                  "body": {
                    "id": 12388,
                    "nodeType": "Block",
                    "src": "3507:72:55",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12377,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12367,
                              "src": "3529:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12378,
                              "name": "ttl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12369,
                              "src": "3535:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 12376,
                            "name": "NewTTL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12048,
                            "src": "3522:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,uint64)"
                            }
                          },
                          "id": 12379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3522:17:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12380,
                        "nodeType": "EmitStatement",
                        "src": "3517:22:55"
                      },
                      {
                        "expression": {
                          "id": 12386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12381,
                                "name": "records",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12175,
                                "src": "3549:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                  "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                }
                              },
                              "id": 12383,
                              "indexExpression": {
                                "id": 12382,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12367,
                                "src": "3557:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3549:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$12170_storage",
                                "typeString": "struct ENSRegistry.Record storage ref"
                              }
                            },
                            "id": 12384,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "3563:3:55",
                            "memberName": "ttl",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12169,
                            "src": "3549:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12385,
                            "name": "ttl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12369,
                            "src": "3569:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "3549:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 12387,
                        "nodeType": "ExpressionStatement",
                        "src": "3549:23:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12365,
                    "nodeType": "StructuredDocumentation",
                    "src": "3246:137:55",
                    "text": " @dev Sets the TTL for the specified node.\n @param node The node to update.\n @param ttl The TTL in seconds."
                  },
                  "functionSelector": "14ab9038",
                  "id": 12389,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12373,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12367,
                          "src": "3497:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12374,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12372,
                        "name": "authorised",
                        "nameLocations": [
                          "3486:10:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12208,
                        "src": "3486:10:55"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3486:16:55"
                    }
                  ],
                  "name": "setTTL",
                  "nameLocation": "3397:6:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12371,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3469:8:55"
                  },
                  "parameters": {
                    "id": 12370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12367,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "3412:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12389,
                        "src": "3404:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12366,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3404:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12369,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "3425:3:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12389,
                        "src": "3418:10:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12368,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3418:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3403:26:55"
                  },
                  "returnParameters": {
                    "id": 12375,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3507:0:55"
                  },
                  "scope": 12581,
                  "src": "3388:191:55",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12119
                  ],
                  "body": {
                    "id": 12414,
                    "nodeType": "Block",
                    "src": "4027:120:55",
                    "statements": [
                      {
                        "expression": {
                          "id": 12405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 12398,
                                "name": "operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12181,
                                "src": "4037:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 12402,
                              "indexExpression": {
                                "expression": {
                                  "id": 12399,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4047:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4051:6:55",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "4047:10:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4037:21:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 12403,
                            "indexExpression": {
                              "id": 12401,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12392,
                              "src": "4059:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4037:31:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12404,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12394,
                            "src": "4071:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4037:42:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12406,
                        "nodeType": "ExpressionStatement",
                        "src": "4037:42:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12408,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4109:3:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4113:6:55",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4109:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12410,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12392,
                              "src": "4121:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12411,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12394,
                              "src": "4131:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12407,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12056,
                            "src": "4094:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 12412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4094:46:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12413,
                        "nodeType": "EmitStatement",
                        "src": "4089:51:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12390,
                    "nodeType": "StructuredDocumentation",
                    "src": "3585:323:55",
                    "text": " @dev Enable or disable approval for a third party (\"operator\") to manage\n  all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\n @param operator Address to add to the set of authorized operators.\n @param approved True if the operator is approved, false to revoke approval."
                  },
                  "functionSelector": "a22cb465",
                  "id": 12415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "3922:17:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12396,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4014:8:55"
                  },
                  "parameters": {
                    "id": 12395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12392,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3948:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12415,
                        "src": "3940:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12391,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3940:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12394,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "3963:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12415,
                        "src": "3958:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12393,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3958:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3939:33:55"
                  },
                  "returnParameters": {
                    "id": 12397,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4027:0:55"
                  },
                  "scope": 12581,
                  "src": "3913:234:55",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    12126
                  ],
                  "body": {
                    "id": 12446,
                    "nodeType": "Block",
                    "src": "4427:153:55",
                    "statements": [
                      {
                        "assignments": [
                          12425
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12425,
                            "mutability": "mutable",
                            "name": "addr",
                            "nameLocation": "4445:4:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 12446,
                            "src": "4437:12:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12424,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4437:7:55",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12430,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12426,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12175,
                              "src": "4452:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                              }
                            },
                            "id": 12428,
                            "indexExpression": {
                              "id": 12427,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12418,
                              "src": "4460:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4452:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$12170_storage",
                              "typeString": "struct ENSRegistry.Record storage ref"
                            }
                          },
                          "id": 12429,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4466:5:55",
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12165,
                          "src": "4452:19:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4437:34:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12431,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12425,
                            "src": "4485:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 12434,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "4501:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ENSRegistry_$12581",
                                  "typeString": "contract ENSRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ENSRegistry_$12581",
                                  "typeString": "contract ENSRegistry"
                                }
                              ],
                              "id": 12433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4493:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12432,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4493:7:55",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4493:13:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4485:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12443,
                        "nodeType": "IfStatement",
                        "src": "4481:71:55",
                        "trueBody": {
                          "id": 12442,
                          "nodeType": "Block",
                          "src": "4508:44:55",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "307830",
                                    "id": 12439,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4537:3:55",
                                    "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": 12438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4529:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12437,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4529:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4529:12:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 12423,
                              "id": 12441,
                              "nodeType": "Return",
                              "src": "4522:19:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 12444,
                          "name": "addr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12425,
                          "src": "4569:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 12423,
                        "id": 12445,
                        "nodeType": "Return",
                        "src": "4562:11:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12416,
                    "nodeType": "StructuredDocumentation",
                    "src": "4153:149:55",
                    "text": " @dev Returns the address that owns the specified node.\n @param node The specified node.\n @return address of the owner."
                  },
                  "functionSelector": "02571be3",
                  "id": 12447,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "4316:5:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12420,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4388:8:55"
                  },
                  "parameters": {
                    "id": 12419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12418,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "4330:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12447,
                        "src": "4322:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12417,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4322:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4321:14:55"
                  },
                  "returnParameters": {
                    "id": 12423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12422,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12447,
                        "src": "4414:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4414:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4413:9:55"
                  },
                  "scope": 12581,
                  "src": "4307:273:55",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12133
                  ],
                  "body": {
                    "id": 12461,
                    "nodeType": "Block",
                    "src": "4876:46:55",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "baseExpression": {
                              "id": 12456,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12175,
                              "src": "4893:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                              }
                            },
                            "id": 12458,
                            "indexExpression": {
                              "id": 12457,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12450,
                              "src": "4901:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4893:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$12170_storage",
                              "typeString": "struct ENSRegistry.Record storage ref"
                            }
                          },
                          "id": 12459,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4907:8:55",
                          "memberName": "resolver",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12167,
                          "src": "4893:22:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 12455,
                        "id": 12460,
                        "nodeType": "Return",
                        "src": "4886:29:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12448,
                    "nodeType": "StructuredDocumentation",
                    "src": "4586:162:55",
                    "text": " @dev Returns the address of the resolver for the specified node.\n @param node The specified node.\n @return address of the resolver."
                  },
                  "functionSelector": "0178b8bf",
                  "id": 12462,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resolver",
                  "nameLocation": "4762:8:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12452,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4837:8:55"
                  },
                  "parameters": {
                    "id": 12451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12450,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "4779:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12462,
                        "src": "4771:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12449,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4771:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4770:14:55"
                  },
                  "returnParameters": {
                    "id": 12455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12454,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12462,
                        "src": "4863:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12453,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4863:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4862:9:55"
                  },
                  "scope": 12581,
                  "src": "4753:169:55",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12140
                  ],
                  "body": {
                    "id": 12476,
                    "nodeType": "Block",
                    "src": "5163:41:55",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "baseExpression": {
                              "id": 12471,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12175,
                              "src": "5180:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                              }
                            },
                            "id": 12473,
                            "indexExpression": {
                              "id": 12472,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12465,
                              "src": "5188:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5180:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$12170_storage",
                              "typeString": "struct ENSRegistry.Record storage ref"
                            }
                          },
                          "id": 12474,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5194:3:55",
                          "memberName": "ttl",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12169,
                          "src": "5180:17:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 12470,
                        "id": 12475,
                        "nodeType": "Return",
                        "src": "5173:24:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12463,
                    "nodeType": "StructuredDocumentation",
                    "src": "4928:157:55",
                    "text": " @dev Returns the TTL of a node, and any records associated with it.\n @param node The specified node.\n @return ttl of the node."
                  },
                  "functionSelector": "16a25cbd",
                  "id": 12477,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ttl",
                  "nameLocation": "5099:3:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12467,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5137:8:55"
                  },
                  "parameters": {
                    "id": 12466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12465,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "5111:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12477,
                        "src": "5103:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12464,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5103:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5102:14:55"
                  },
                  "returnParameters": {
                    "id": 12470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12469,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12477,
                        "src": "5155:6:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12468,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "5155:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5154:8:55"
                  },
                  "scope": 12581,
                  "src": "5090:114:55",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12147
                  ],
                  "body": {
                    "id": 12496,
                    "nodeType": "Block",
                    "src": "5498:59:55",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 12486,
                                "name": "records",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12175,
                                "src": "5515:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                  "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                }
                              },
                              "id": 12488,
                              "indexExpression": {
                                "id": 12487,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12480,
                                "src": "5523:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5515:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$12170_storage",
                                "typeString": "struct ENSRegistry.Record storage ref"
                              }
                            },
                            "id": 12489,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5529:5:55",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12165,
                            "src": "5515:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 12492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5546:3:55",
                                "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": 12491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5538:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12490,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5538:7:55",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5538:12:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5515:35:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 12485,
                        "id": 12495,
                        "nodeType": "Return",
                        "src": "5508:42:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12478,
                    "nodeType": "StructuredDocumentation",
                    "src": "5210:159:55",
                    "text": " @dev Returns whether a record has been imported to the registry.\n @param node The specified node.\n @return Bool if record exists"
                  },
                  "functionSelector": "f79fe538",
                  "id": 12497,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recordExists",
                  "nameLocation": "5383:12:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12482,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5462:8:55"
                  },
                  "parameters": {
                    "id": 12481,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12480,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "5404:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12497,
                        "src": "5396:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12479,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5396:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5395:14:55"
                  },
                  "returnParameters": {
                    "id": 12485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12484,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12497,
                        "src": "5488:4:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12483,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5488:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5487:6:55"
                  },
                  "scope": 12581,
                  "src": "5374:183:55",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12156
                  ],
                  "body": {
                    "id": 12514,
                    "nodeType": "Block",
                    "src": "6019:50:55",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 12508,
                              "name": "operators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12181,
                              "src": "6036:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 12510,
                            "indexExpression": {
                              "id": 12509,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12500,
                              "src": "6046:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6036:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 12512,
                          "indexExpression": {
                            "id": 12511,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12502,
                            "src": "6053:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6036:26:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 12507,
                        "id": 12513,
                        "nodeType": "Return",
                        "src": "6029:33:55"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12498,
                    "nodeType": "StructuredDocumentation",
                    "src": "5563:302:55",
                    "text": " @dev Query if an address is an authorized operator for another address.\n @param owner The address that owns the records.\n @param operator The address that acts on behalf of the owner.\n @return True if `operator` is an approved operator for `owner`, false otherwise."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 12515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "5879:16:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12504,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5983:8:55"
                  },
                  "parameters": {
                    "id": 12503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12500,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "5904:5:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12515,
                        "src": "5896:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12499,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5896:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12502,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5919:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12515,
                        "src": "5911:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12501,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5911:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5895:33:55"
                  },
                  "returnParameters": {
                    "id": 12507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12506,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12515,
                        "src": "6009:4:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12505,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6009:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6008:6:55"
                  },
                  "scope": 12581,
                  "src": "5870:199:55",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12529,
                    "nodeType": "Block",
                    "src": "6140:44:55",
                    "statements": [
                      {
                        "expression": {
                          "id": 12527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12522,
                                "name": "records",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12175,
                                "src": "6150:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                  "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                }
                              },
                              "id": 12524,
                              "indexExpression": {
                                "id": 12523,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12517,
                                "src": "6158:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6150:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$12170_storage",
                                "typeString": "struct ENSRegistry.Record storage ref"
                              }
                            },
                            "id": 12525,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "6164:5:55",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12165,
                            "src": "6150:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12526,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12519,
                            "src": "6172:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6150:27:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12528,
                        "nodeType": "ExpressionStatement",
                        "src": "6150:27:55"
                      }
                    ]
                  },
                  "id": 12530,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setOwner",
                  "nameLocation": "6084:9:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12520,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12517,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "6102:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12530,
                        "src": "6094:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12516,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6094:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12519,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "6116:5:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12530,
                        "src": "6108:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12518,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6108:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6093:29:55"
                  },
                  "returnParameters": {
                    "id": 12521,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6140:0:55"
                  },
                  "scope": 12581,
                  "src": "6075:109:55",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12579,
                    "nodeType": "Block",
                    "src": "6301:284:55",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12539,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12534,
                            "src": "6315:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 12540,
                                "name": "records",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12175,
                                "src": "6327:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                  "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                }
                              },
                              "id": 12542,
                              "indexExpression": {
                                "id": 12541,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12532,
                                "src": "6335:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6327:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$12170_storage",
                                "typeString": "struct ENSRegistry.Record storage ref"
                              }
                            },
                            "id": 12543,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6341:8:55",
                            "memberName": "resolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12167,
                            "src": "6327:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6315:34:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12558,
                        "nodeType": "IfStatement",
                        "src": "6311:144:55",
                        "trueBody": {
                          "id": 12557,
                          "nodeType": "Block",
                          "src": "6351:104:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 12550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 12545,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12175,
                                      "src": "6365:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                        "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                      }
                                    },
                                    "id": 12547,
                                    "indexExpression": {
                                      "id": 12546,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12532,
                                      "src": "6373:4:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6365:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Record_$12170_storage",
                                      "typeString": "struct ENSRegistry.Record storage ref"
                                    }
                                  },
                                  "id": 12548,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "6379:8:55",
                                  "memberName": "resolver",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12167,
                                  "src": "6365:22:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 12549,
                                  "name": "resolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12534,
                                  "src": "6390:8:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6365:33:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12551,
                              "nodeType": "ExpressionStatement",
                              "src": "6365:33:55"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 12553,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12532,
                                    "src": "6429:4:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 12554,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12534,
                                    "src": "6435:8:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 12552,
                                  "name": "NewResolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12042,
                                  "src": "6417:11:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address)"
                                  }
                                },
                                "id": 12555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6417:27:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12556,
                              "nodeType": "EmitStatement",
                              "src": "6412:32:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 12564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12559,
                            "name": "ttl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12536,
                            "src": "6469:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 12560,
                                "name": "records",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12175,
                                "src": "6476:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                  "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                }
                              },
                              "id": 12562,
                              "indexExpression": {
                                "id": 12561,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12532,
                                "src": "6484:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6476:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$12170_storage",
                                "typeString": "struct ENSRegistry.Record storage ref"
                              }
                            },
                            "id": 12563,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6490:3:55",
                            "memberName": "ttl",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12169,
                            "src": "6476:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "6469:24:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12578,
                        "nodeType": "IfStatement",
                        "src": "6465:114:55",
                        "trueBody": {
                          "id": 12577,
                          "nodeType": "Block",
                          "src": "6495:84:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 12570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 12565,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12175,
                                      "src": "6509:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$12170_storage_$",
                                        "typeString": "mapping(bytes32 => struct ENSRegistry.Record storage ref)"
                                      }
                                    },
                                    "id": 12567,
                                    "indexExpression": {
                                      "id": 12566,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12532,
                                      "src": "6517:4:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6509:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Record_$12170_storage",
                                      "typeString": "struct ENSRegistry.Record storage ref"
                                    }
                                  },
                                  "id": 12568,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "6523:3:55",
                                  "memberName": "ttl",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12169,
                                  "src": "6509:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 12569,
                                  "name": "ttl",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12536,
                                  "src": "6529:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "6509:23:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 12571,
                              "nodeType": "ExpressionStatement",
                              "src": "6509:23:55"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 12573,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12532,
                                    "src": "6558:4:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 12574,
                                    "name": "ttl",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12536,
                                    "src": "6564:3:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 12572,
                                  "name": "NewTTL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12048,
                                  "src": "6551:6:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,uint64)"
                                  }
                                },
                                "id": 12575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6551:17:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12576,
                              "nodeType": "EmitStatement",
                              "src": "6546:22:55"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 12580,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setResolverAndTTL",
                  "nameLocation": "6199:18:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12532,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "6235:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12580,
                        "src": "6227:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12531,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6227:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12534,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "6257:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12580,
                        "src": "6249:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12533,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6249:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12536,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "6282:3:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 12580,
                        "src": "6275:10:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12535,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "6275:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6217:74:55"
                  },
                  "returnParameters": {
                    "id": 12538,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6301:0:55"
                  },
                  "scope": 12581,
                  "src": "6190:395:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 12582,
              "src": "85:6502:55",
              "usedErrors": []
            }
          ],
          "src": "0:6588:55"
        },
        "id": 55
      },
      "contracts/registry/ENSRegistryWithFallback.sol": {
        "ast": {
          "absolutePath": "contracts/registry/ENSRegistryWithFallback.sol",
          "exportedSymbols": {
            "ENS": [
              12157
            ],
            "ENSRegistry": [
              12581
            ],
            "ENSRegistryWithFallback": [
              12719
            ]
          },
          "id": 12720,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12583,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:56"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "./ENS.sol",
              "id": 12584,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12720,
              "sourceUnit": 12158,
              "src": "26:19:56",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/registry/ENSRegistry.sol",
              "file": "./ENSRegistry.sol",
              "id": 12585,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12720,
              "sourceUnit": 12582,
              "src": "46:27:56",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 12587,
                    "name": "ENSRegistry",
                    "nameLocations": [
                      "149:11:56"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12581,
                    "src": "149:11:56"
                  },
                  "id": 12588,
                  "nodeType": "InheritanceSpecifier",
                  "src": "149:11:56"
                }
              ],
              "canonicalName": "ENSRegistryWithFallback",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 12586,
                "nodeType": "StructuredDocumentation",
                "src": "75:37:56",
                "text": " The ENS registry contract."
              },
              "fullyImplemented": true,
              "id": 12719,
              "linearizedBaseContracts": [
                12719,
                12581,
                12157
              ],
              "name": "ENSRegistryWithFallback",
              "nameLocation": "122:23:56",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "b83f8663",
                  "id": 12591,
                  "mutability": "mutable",
                  "name": "old",
                  "nameLocation": "178:3:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 12719,
                  "src": "167:14:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 12590,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12589,
                      "name": "ENS",
                      "nameLocations": [
                        "167:3:56"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "167:3:56"
                    },
                    "referencedDeclaration": 12157,
                    "src": "167:3:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12604,
                    "nodeType": "Block",
                    "src": "291:27:56",
                    "statements": [
                      {
                        "expression": {
                          "id": 12602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12600,
                            "name": "old",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12591,
                            "src": "301:3:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12601,
                            "name": "_old",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12595,
                            "src": "307:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "301:10:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 12603,
                        "nodeType": "ExpressionStatement",
                        "src": "301:10:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12592,
                    "nodeType": "StructuredDocumentation",
                    "src": "188:55:56",
                    "text": " @dev Constructs a new ENS registrar."
                  },
                  "id": 12605,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [],
                      "id": 12598,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 12597,
                        "name": "ENSRegistry",
                        "nameLocations": [
                          "277:11:56"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12581,
                        "src": "277:11:56"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "277:13:56"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12596,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12595,
                        "mutability": "mutable",
                        "name": "_old",
                        "nameLocation": "264:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 12605,
                        "src": "260:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 12594,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 12593,
                            "name": "ENS",
                            "nameLocations": [
                              "260:3:56"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "260:3:56"
                          },
                          "referencedDeclaration": 12157,
                          "src": "260:3:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "259:10:56"
                  },
                  "returnParameters": {
                    "id": 12599,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "291:0:56"
                  },
                  "scope": 12719,
                  "src": "248:70:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12462
                  ],
                  "body": {
                    "id": 12630,
                    "nodeType": "Block",
                    "src": "562:129:56",
                    "statements": [
                      {
                        "condition": {
                          "id": 12617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "576:19:56",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 12615,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12608,
                                "src": "590:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 12614,
                              "name": "recordExists",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12497,
                              "src": "577:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                                "typeString": "function (bytes32) view returns (bool)"
                              }
                            },
                            "id": 12616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "577:18:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12624,
                        "nodeType": "IfStatement",
                        "src": "572:75:56",
                        "trueBody": {
                          "id": 12623,
                          "nodeType": "Block",
                          "src": "597:50:56",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12620,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12608,
                                    "src": "631:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 12618,
                                    "name": "old",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12591,
                                    "src": "618:3:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 12619,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "622:8:56",
                                  "memberName": "resolver",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12133,
                                  "src": "618:12:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32) view external returns (address)"
                                  }
                                },
                                "id": 12621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "618:18:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 12613,
                              "id": 12622,
                              "nodeType": "Return",
                              "src": "611:25:56"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12627,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12608,
                              "src": "679:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 12625,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "664:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ENSRegistryWithFallback_$12719_$",
                                "typeString": "type(contract super ENSRegistryWithFallback)"
                              }
                            },
                            "id": 12626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "670:8:56",
                            "memberName": "resolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12462,
                            "src": "664:14:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 12628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "664:20:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 12613,
                        "id": 12629,
                        "nodeType": "Return",
                        "src": "657:27:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12606,
                    "nodeType": "StructuredDocumentation",
                    "src": "324:162:56",
                    "text": " @dev Returns the address of the resolver for the specified node.\n @param node The specified node.\n @return address of the resolver."
                  },
                  "functionSelector": "0178b8bf",
                  "id": 12631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resolver",
                  "nameLocation": "500:8:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12610,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "535:8:56"
                  },
                  "parameters": {
                    "id": 12609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12608,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "517:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 12631,
                        "src": "509:12:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12607,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "509:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "508:14:56"
                  },
                  "returnParameters": {
                    "id": 12613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12612,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12631,
                        "src": "553:7:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12611,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "553:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "552:9:56"
                  },
                  "scope": 12719,
                  "src": "491:200:56",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12447
                  ],
                  "body": {
                    "id": 12656,
                    "nodeType": "Block",
                    "src": "919:123:56",
                    "statements": [
                      {
                        "condition": {
                          "id": 12643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "933:19:56",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 12641,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12634,
                                "src": "947:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 12640,
                              "name": "recordExists",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12497,
                              "src": "934:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                                "typeString": "function (bytes32) view returns (bool)"
                              }
                            },
                            "id": 12642,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "934:18:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12650,
                        "nodeType": "IfStatement",
                        "src": "929:72:56",
                        "trueBody": {
                          "id": 12649,
                          "nodeType": "Block",
                          "src": "954:47:56",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12646,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12634,
                                    "src": "985:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 12644,
                                    "name": "old",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12591,
                                    "src": "975:3:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 12645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "979:5:56",
                                  "memberName": "owner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12126,
                                  "src": "975:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32) view external returns (address)"
                                  }
                                },
                                "id": 12647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "975:15:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 12639,
                              "id": 12648,
                              "nodeType": "Return",
                              "src": "968:22:56"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12653,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12634,
                              "src": "1030:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 12651,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1018:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ENSRegistryWithFallback_$12719_$",
                                "typeString": "type(contract super ENSRegistryWithFallback)"
                              }
                            },
                            "id": 12652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1024:5:56",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12447,
                            "src": "1018:11:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 12654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1018:17:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 12639,
                        "id": 12655,
                        "nodeType": "Return",
                        "src": "1011:24:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12632,
                    "nodeType": "StructuredDocumentation",
                    "src": "697:149:56",
                    "text": " @dev Returns the address that owns the specified node.\n @param node The specified node.\n @return address of the owner."
                  },
                  "functionSelector": "02571be3",
                  "id": 12657,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "860:5:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12636,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "892:8:56"
                  },
                  "parameters": {
                    "id": 12635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12634,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "874:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 12657,
                        "src": "866:12:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12633,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "866:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "865:14:56"
                  },
                  "returnParameters": {
                    "id": 12639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12638,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12657,
                        "src": "910:7:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12637,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "910:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "909:9:56"
                  },
                  "scope": 12719,
                  "src": "851:191:56",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12477
                  ],
                  "body": {
                    "id": 12682,
                    "nodeType": "Block",
                    "src": "1275:119:56",
                    "statements": [
                      {
                        "condition": {
                          "id": 12669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1289:19:56",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 12667,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12660,
                                "src": "1303:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 12666,
                              "name": "recordExists",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12497,
                              "src": "1290:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                                "typeString": "function (bytes32) view returns (bool)"
                              }
                            },
                            "id": 12668,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1290:18:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12676,
                        "nodeType": "IfStatement",
                        "src": "1285:70:56",
                        "trueBody": {
                          "id": 12675,
                          "nodeType": "Block",
                          "src": "1310:45:56",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12672,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12660,
                                    "src": "1339:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 12670,
                                    "name": "old",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12591,
                                    "src": "1331:3:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 12671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1335:3:56",
                                  "memberName": "ttl",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12140,
                                  "src": "1331:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint64_$",
                                    "typeString": "function (bytes32) view external returns (uint64)"
                                  }
                                },
                                "id": 12673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1331:13:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "functionReturnParameters": 12665,
                              "id": 12674,
                              "nodeType": "Return",
                              "src": "1324:20:56"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12679,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12660,
                              "src": "1382:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 12677,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1372:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ENSRegistryWithFallback_$12719_$",
                                "typeString": "type(contract super ENSRegistryWithFallback)"
                              }
                            },
                            "id": 12678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1378:3:56",
                            "memberName": "ttl",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12477,
                            "src": "1372:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint64_$",
                              "typeString": "function (bytes32) view returns (uint64)"
                            }
                          },
                          "id": 12680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1372:15:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 12665,
                        "id": 12681,
                        "nodeType": "Return",
                        "src": "1365:22:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12658,
                    "nodeType": "StructuredDocumentation",
                    "src": "1048:157:56",
                    "text": " @dev Returns the TTL of a node, and any records associated with it.\n @param node The specified node.\n @return ttl of the node."
                  },
                  "functionSelector": "16a25cbd",
                  "id": 12683,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ttl",
                  "nameLocation": "1219:3:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12662,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1249:8:56"
                  },
                  "parameters": {
                    "id": 12661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12660,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1231:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 12683,
                        "src": "1223:12:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12659,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1223:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1222:14:56"
                  },
                  "returnParameters": {
                    "id": 12665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12664,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12683,
                        "src": "1267:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12663,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1267:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1266:8:56"
                  },
                  "scope": 12719,
                  "src": "1210:184:56",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12530
                  ],
                  "body": {
                    "id": 12717,
                    "nodeType": "Block",
                    "src": "1466:155:56",
                    "statements": [
                      {
                        "assignments": [
                          12692
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12692,
                            "mutability": "mutable",
                            "name": "addr",
                            "nameLocation": "1484:4:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 12717,
                            "src": "1476:12:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12691,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1476:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12694,
                        "initialValue": {
                          "id": 12693,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12687,
                          "src": "1491:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1476:20:56"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12695,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12692,
                            "src": "1510:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 12698,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1526:3:56",
                                "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": 12697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1518:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12696,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1518:7:56",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12699,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1518:12:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1510:20:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12709,
                        "nodeType": "IfStatement",
                        "src": "1506:71:56",
                        "trueBody": {
                          "id": 12708,
                          "nodeType": "Block",
                          "src": "1532:45:56",
                          "statements": [
                            {
                              "expression": {
                                "id": 12706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 12701,
                                  "name": "addr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12692,
                                  "src": "1546:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 12704,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1561:4:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ENSRegistryWithFallback_$12719",
                                        "typeString": "contract ENSRegistryWithFallback"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ENSRegistryWithFallback_$12719",
                                        "typeString": "contract ENSRegistryWithFallback"
                                      }
                                    ],
                                    "id": 12703,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1553:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 12702,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1553:7:56",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 12705,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1553:13:56",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1546:20:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12707,
                              "nodeType": "ExpressionStatement",
                              "src": "1546:20:56"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12713,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12685,
                              "src": "1603:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12714,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12692,
                              "src": "1609:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 12710,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1587:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ENSRegistryWithFallback_$12719_$",
                                "typeString": "type(contract super ENSRegistryWithFallback)"
                              }
                            },
                            "id": 12712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1593:9:56",
                            "memberName": "_setOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12530,
                            "src": "1587:15:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 12715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1587:27:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12716,
                        "nodeType": "ExpressionStatement",
                        "src": "1587:27:56"
                      }
                    ]
                  },
                  "id": 12718,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setOwner",
                  "nameLocation": "1409:9:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12689,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1457:8:56"
                  },
                  "parameters": {
                    "id": 12688,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12685,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1427:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 12718,
                        "src": "1419:12:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12684,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1419:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12687,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1441:5:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 12718,
                        "src": "1433:13:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12686,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1433:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1418:29:56"
                  },
                  "returnParameters": {
                    "id": 12690,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1466:0:56"
                  },
                  "scope": 12719,
                  "src": "1400:221:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 12720,
              "src": "113:1510:56",
              "usedErrors": []
            }
          ],
          "src": "0:1624:56"
        },
        "id": 56
      },
      "contracts/registry/FIFSRegistrar.sol": {
        "ast": {
          "absolutePath": "contracts/registry/FIFSRegistrar.sol",
          "exportedSymbols": {
            "ENS": [
              12157
            ],
            "FIFSRegistrar": [
              12800
            ]
          },
          "id": 12801,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12721,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:57"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "./ENS.sol",
              "id": 12722,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12801,
              "sourceUnit": 12158,
              "src": "26:19:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "FIFSRegistrar",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 12723,
                "nodeType": "StructuredDocumentation",
                "src": "47:83:57",
                "text": " A registrar that allocates subdomains to the first person to claim them."
              },
              "fullyImplemented": true,
              "id": 12800,
              "linearizedBaseContracts": [
                12800
              ],
              "name": "FIFSRegistrar",
              "nameLocation": "140:13:57",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 12726,
                  "mutability": "mutable",
                  "name": "ens",
                  "nameLocation": "164:3:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 12800,
                  "src": "160:7:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 12725,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12724,
                      "name": "ENS",
                      "nameLocations": [
                        "160:3:57"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "160:3:57"
                    },
                    "referencedDeclaration": 12157,
                    "src": "160:3:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12728,
                  "mutability": "mutable",
                  "name": "rootNode",
                  "nameLocation": "181:8:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 12800,
                  "src": "173:16:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12727,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "173:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12760,
                    "nodeType": "Block",
                    "src": "231:205:57",
                    "statements": [
                      {
                        "assignments": [
                          12733
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12733,
                            "mutability": "mutable",
                            "name": "currentOwner",
                            "nameLocation": "249:12:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 12760,
                            "src": "241:20:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12732,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "241:7:57",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12744,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 12739,
                                      "name": "rootNode",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12728,
                                      "src": "314:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 12740,
                                      "name": "label",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12730,
                                      "src": "324:5:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 12737,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "297:3:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 12738,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "301:12:57",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "297:16:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 12741,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "297:33:57",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 12736,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "287:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 12742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "287:44:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 12734,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12726,
                              "src": "264:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 12735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "268:5:57",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12126,
                            "src": "264:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 12743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "264:77:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "241:100:57"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12746,
                                  "name": "currentOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12733,
                                  "src": "359:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "307830",
                                      "id": 12749,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "383:3:57",
                                      "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": 12748,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "375:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 12747,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "375:7:57",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 12750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "375:12:57",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "359:28:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12752,
                                  "name": "currentOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12733,
                                  "src": "391:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 12753,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "407:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 12754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "411:6:57",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "407:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "391:26:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "359:58:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12745,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "351:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 12757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "351:67:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12758,
                        "nodeType": "ExpressionStatement",
                        "src": "351:67:57"
                      },
                      {
                        "id": 12759,
                        "nodeType": "PlaceholderStatement",
                        "src": "428:1:57"
                      }
                    ]
                  },
                  "id": 12761,
                  "name": "only_owner",
                  "nameLocation": "205:10:57",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 12731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12730,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "224:5:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 12761,
                        "src": "216:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12729,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "216:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "215:15:57"
                  },
                  "src": "196:240:57",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12778,
                    "nodeType": "Block",
                    "src": "640:55:57",
                    "statements": [
                      {
                        "expression": {
                          "id": 12772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12770,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12726,
                            "src": "650:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12771,
                            "name": "ensAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12765,
                            "src": "656:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "650:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 12773,
                        "nodeType": "ExpressionStatement",
                        "src": "650:13:57"
                      },
                      {
                        "expression": {
                          "id": 12776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12774,
                            "name": "rootNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12728,
                            "src": "673:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12775,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12767,
                            "src": "684:4:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "673:15:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12777,
                        "nodeType": "ExpressionStatement",
                        "src": "673:15:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12762,
                    "nodeType": "StructuredDocumentation",
                    "src": "442:147:57",
                    "text": " Constructor.\n @param ensAddr The address of the ENS registry.\n @param node The node that this registrar administers."
                  },
                  "id": 12779,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12765,
                        "mutability": "mutable",
                        "name": "ensAddr",
                        "nameLocation": "610:7:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 12779,
                        "src": "606:11:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 12764,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 12763,
                            "name": "ENS",
                            "nameLocations": [
                              "606:3:57"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "606:3:57"
                          },
                          "referencedDeclaration": 12157,
                          "src": "606:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12767,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "627:4:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 12779,
                        "src": "619:12:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12766,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "619:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "605:27:57"
                  },
                  "returnParameters": {
                    "id": 12769,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "640:0:57"
                  },
                  "scope": 12800,
                  "src": "594:101:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12798,
                    "nodeType": "Block",
                    "src": "968:60:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12793,
                              "name": "rootNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12728,
                              "src": "998:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12794,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12782,
                              "src": "1008:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12795,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12784,
                              "src": "1015:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 12790,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12726,
                              "src": "978:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 12792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "982:15:57",
                            "memberName": "setSubnodeOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12091,
                            "src": "978:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                            }
                          },
                          "id": 12796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "978:43:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12797,
                        "nodeType": "ExpressionStatement",
                        "src": "978:43:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12780,
                    "nodeType": "StructuredDocumentation",
                    "src": "701:189:57",
                    "text": " Register a name, or change the owner of an existing registration.\n @param label The hash of the label to register.\n @param owner The address of the new owner."
                  },
                  "functionSelector": "d22057a9",
                  "id": 12799,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12787,
                          "name": "label",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12782,
                          "src": "961:5:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12788,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12786,
                        "name": "only_owner",
                        "nameLocations": [
                          "950:10:57"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12761,
                        "src": "950:10:57"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "950:17:57"
                    }
                  ],
                  "name": "register",
                  "nameLocation": "904:8:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12785,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12782,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "921:5:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 12799,
                        "src": "913:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12781,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "913:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12784,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "936:5:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 12799,
                        "src": "928:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12783,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "928:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "912:30:57"
                  },
                  "returnParameters": {
                    "id": 12789,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "968:0:57"
                  },
                  "scope": 12800,
                  "src": "895:133:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 12801,
              "src": "131:899:57",
              "usedErrors": []
            }
          ],
          "src": "0:1031:57"
        },
        "id": 57
      },
      "contracts/registry/IReverseRegistrar.sol": {
        "ast": {
          "absolutePath": "contracts/registry/IReverseRegistrar.sol",
          "exportedSymbols": {
            "IReverseRegistrar": [
              12862
            ]
          },
          "id": 12863,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12802,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:58"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IReverseRegistrar",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 12862,
              "linearizedBaseContracts": [
                12862
              ],
              "name": "IReverseRegistrar",
              "nameLocation": "36:17:58",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "c66485b2",
                  "id": 12807,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDefaultResolver",
                  "nameLocation": "69:18:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12805,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12804,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "96:8:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12807,
                        "src": "88:16:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12803,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "88:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "87:18:58"
                  },
                  "returnParameters": {
                    "id": 12806,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "114:0:58"
                  },
                  "scope": 12862,
                  "src": "60:55:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "1e83409a",
                  "id": 12814,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claim",
                  "nameLocation": "130:5:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12810,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12809,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "144:5:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12814,
                        "src": "136:13:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12808,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "136:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "135:15:58"
                  },
                  "returnParameters": {
                    "id": 12813,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12812,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12814,
                        "src": "169:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12811,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "169:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "168:9:58"
                  },
                  "scope": 12862,
                  "src": "121:57:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "65669631",
                  "id": 12825,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimForAddr",
                  "nameLocation": "193:12:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12816,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "223:4:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12825,
                        "src": "215:12:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12815,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "215:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12818,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "245:5:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12825,
                        "src": "237:13:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12817,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "237:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12820,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "268:8:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12825,
                        "src": "260:16:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "260:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "205:77:58"
                  },
                  "returnParameters": {
                    "id": 12824,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12823,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12825,
                        "src": "301:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12822,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "301:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "300:9:58"
                  },
                  "scope": 12862,
                  "src": "184:126:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "0f5a5466",
                  "id": 12834,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimWithResolver",
                  "nameLocation": "325:17:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12830,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12827,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "351:5:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12834,
                        "src": "343:13:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12826,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "343:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12829,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "366:8:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12834,
                        "src": "358:16:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12828,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "358:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "342:33:58"
                  },
                  "returnParameters": {
                    "id": 12833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12832,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12834,
                        "src": "410:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12831,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "410:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "409:9:58"
                  },
                  "scope": 12862,
                  "src": "316:103:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c47f0027",
                  "id": 12841,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setName",
                  "nameLocation": "434:7:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12836,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "456:4:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12841,
                        "src": "442:18:58",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12835,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "442:6:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "441:20:58"
                  },
                  "returnParameters": {
                    "id": 12840,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12839,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12841,
                        "src": "480:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12838,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "480:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "479:9:58"
                  },
                  "scope": 12862,
                  "src": "425:64:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "7a806d6b",
                  "id": 12854,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setNameForAddr",
                  "nameLocation": "504:14:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12850,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12843,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "536:4:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12854,
                        "src": "528:12:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12842,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "528:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12845,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "558:5:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12854,
                        "src": "550:13:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12844,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "550:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12847,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "581:8:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12854,
                        "src": "573:16:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12846,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "573:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12849,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "613:4:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12854,
                        "src": "599:18:58",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12848,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "599:6:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "518:105:58"
                  },
                  "returnParameters": {
                    "id": 12853,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12852,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12854,
                        "src": "642:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12851,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "642:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "641:9:58"
                  },
                  "scope": 12862,
                  "src": "495:156:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "bffbe61c",
                  "id": 12861,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "node",
                  "nameLocation": "666:4:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12857,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12856,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "679:4:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 12861,
                        "src": "671:12:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12855,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "671:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "670:14:58"
                  },
                  "returnParameters": {
                    "id": 12860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12859,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12861,
                        "src": "708:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12858,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "708:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "707:9:58"
                  },
                  "scope": 12862,
                  "src": "657:60:58",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 12863,
              "src": "26:693:58",
              "usedErrors": []
            }
          ],
          "src": "0:720:58"
        },
        "id": 58
      },
      "contracts/registry/ReverseRegistrar.sol": {
        "ast": {
          "absolutePath": "contracts/registry/ReverseRegistrar.sol",
          "exportedSymbols": {
            "ADDR_REVERSE_NODE": [
              12882
            ],
            "Context": [
              2855
            ],
            "Controllable": [
              15668
            ],
            "ENS": [
              12157
            ],
            "IReverseRegistrar": [
              12862
            ],
            "NameResolver": [
              12876
            ],
            "Ownable": [
              642
            ],
            "ReverseRegistrar": [
              13213
            ],
            "lookup": [
              12879
            ]
          },
          "id": 13214,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12864,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:59"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "./ENS.sol",
              "id": 12865,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13214,
              "sourceUnit": 12158,
              "src": "26:19:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/registry/IReverseRegistrar.sol",
              "file": "./IReverseRegistrar.sol",
              "id": 12866,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13214,
              "sourceUnit": 12863,
              "src": "46:33:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 12867,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13214,
              "sourceUnit": 643,
              "src": "80:52:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/root/Controllable.sol",
              "file": "../root/Controllable.sol",
              "id": 12868,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13214,
              "sourceUnit": 15669,
              "src": "133:34:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "NameResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 12876,
              "linearizedBaseContracts": [
                12876
              ],
              "name": "NameResolver",
              "nameLocation": "187:12:59",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "77372213",
                  "id": 12875,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setName",
                  "nameLocation": "215:7:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12870,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "231:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 12875,
                        "src": "223:12:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12869,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "223:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12872,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "251:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 12875,
                        "src": "237:18:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12871,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "237:6:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "222:34:59"
                  },
                  "returnParameters": {
                    "id": 12874,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "271:0:59"
                  },
                  "scope": 12876,
                  "src": "206:66:59",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 13214,
              "src": "169:105:59",
              "usedErrors": []
            },
            {
              "constant": true,
              "id": 12879,
              "mutability": "constant",
              "name": "lookup",
              "nameLocation": "293:6:59",
              "nodeType": "VariableDeclaration",
              "scope": 13214,
              "src": "276:92:59",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              },
              "typeName": {
                "id": 12877,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "276:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "value": {
                "hexValue": "307833303331333233333334333533363337333833393631363236333634363536363030303030303030303030303030303030303030303030303030303030303030",
                "id": 12878,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "302:66:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_21797938705943676250364219608352299876616432895080889470814659460585888940032_by_1",
                  "typeString": "int_const 2179...(69 digits omitted)...0032"
                },
                "value": "0x3031323334353637383961626364656600000000000000000000000000000000"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12882,
              "mutability": "constant",
              "name": "ADDR_REVERSE_NODE",
              "nameLocation": "388:17:59",
              "nodeType": "VariableDeclaration",
              "scope": 13214,
              "src": "371:103:59",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              },
              "typeName": {
                "id": 12880,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "371:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "value": {
                "hexValue": "307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532",
                "id": 12881,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "408:66:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_65955458610802586644366824307633271870356699036341805474246458084352783133154_by_1",
                  "typeString": "int_const 6595...(69 digits omitted)...3154"
                },
                "value": "0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"
              },
              "visibility": "internal"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 12883,
                    "name": "Ownable",
                    "nameLocations": [
                      "535:7:59"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "535:7:59"
                  },
                  "id": 12884,
                  "nodeType": "InheritanceSpecifier",
                  "src": "535:7:59"
                },
                {
                  "baseName": {
                    "id": 12885,
                    "name": "Controllable",
                    "nameLocations": [
                      "544:12:59"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15668,
                    "src": "544:12:59"
                  },
                  "id": 12886,
                  "nodeType": "InheritanceSpecifier",
                  "src": "544:12:59"
                },
                {
                  "baseName": {
                    "id": 12887,
                    "name": "IReverseRegistrar",
                    "nameLocations": [
                      "558:17:59"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12862,
                    "src": "558:17:59"
                  },
                  "id": 12888,
                  "nodeType": "InheritanceSpecifier",
                  "src": "558:17:59"
                }
              ],
              "canonicalName": "ReverseRegistrar",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 13213,
              "linearizedBaseContracts": [
                13213,
                12862,
                15668,
                642,
                2855
              ],
              "name": "ReverseRegistrar",
              "nameLocation": "515:16:59",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 12891,
                  "mutability": "immutable",
                  "name": "ens",
                  "nameLocation": "603:3:59",
                  "nodeType": "VariableDeclaration",
                  "scope": 13213,
                  "src": "582:24:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 12890,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12889,
                      "name": "ENS",
                      "nameLocations": [
                        "582:3:59"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "582:3:59"
                    },
                    "referencedDeclaration": 12157,
                    "src": "582:3:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "828eab0e",
                  "id": 12894,
                  "mutability": "mutable",
                  "name": "defaultResolver",
                  "nameLocation": "632:15:59",
                  "nodeType": "VariableDeclaration",
                  "scope": 13213,
                  "src": "612:35:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_NameResolver_$12876",
                    "typeString": "contract NameResolver"
                  },
                  "typeName": {
                    "id": 12893,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12892,
                      "name": "NameResolver",
                      "nameLocations": [
                        "612:12:59"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12876,
                      "src": "612:12:59"
                    },
                    "referencedDeclaration": 12876,
                    "src": "612:12:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NameResolver_$12876",
                      "typeString": "contract NameResolver"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "6ada868dd3058cf77a48a74489fd7963688e5464b2b0fa957ace976243270e92",
                  "id": 12900,
                  "name": "ReverseClaimed",
                  "nameLocation": "660:14:59",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12899,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12896,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "691:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 12900,
                        "src": "675:20:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12895,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "675:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12898,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "713:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 12900,
                        "src": "697:20:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12897,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "697:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "674:44:59"
                  },
                  "src": "654:65:59"
                },
                {
                  "anonymous": false,
                  "eventSelector": "eae17a84d9eb83d8c8eb317f9e7d64857bc363fa51674d996c023f4340c577cf",
                  "id": 12905,
                  "name": "DefaultResolverChanged",
                  "nameLocation": "730:22:59",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12903,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "774:8:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 12905,
                        "src": "753:29:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_NameResolver_$12876",
                          "typeString": "contract NameResolver"
                        },
                        "typeName": {
                          "id": 12902,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 12901,
                            "name": "NameResolver",
                            "nameLocations": [
                              "753:12:59"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12876,
                            "src": "753:12:59"
                          },
                          "referencedDeclaration": 12876,
                          "src": "753:12:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_NameResolver_$12876",
                            "typeString": "contract NameResolver"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "752:31:59"
                  },
                  "src": "724:60:59"
                },
                {
                  "body": {
                    "id": 12944,
                    "nodeType": "Block",
                    "src": "910:318:59",
                    "statements": [
                      {
                        "expression": {
                          "id": 12914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12912,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12891,
                            "src": "920:3:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12913,
                            "name": "ensAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12909,
                            "src": "926:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "920:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 12915,
                        "nodeType": "ExpressionStatement",
                        "src": "920:13:59"
                      },
                      {
                        "assignments": [
                          12918
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12918,
                            "mutability": "mutable",
                            "name": "oldRegistrar",
                            "nameLocation": "1027:12:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 12944,
                            "src": "1010:29:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                              "typeString": "contract ReverseRegistrar"
                            },
                            "typeName": {
                              "id": 12917,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 12916,
                                "name": "ReverseRegistrar",
                                "nameLocations": [
                                  "1010:16:59"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 13213,
                                "src": "1010:16:59"
                              },
                              "referencedDeclaration": 13213,
                              "src": "1010:16:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                                "typeString": "contract ReverseRegistrar"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12925,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 12922,
                                  "name": "ADDR_REVERSE_NODE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12882,
                                  "src": "1086:17:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 12920,
                                  "name": "ensAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12909,
                                  "src": "1072:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ENS_$12157",
                                    "typeString": "contract ENS"
                                  }
                                },
                                "id": 12921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1080:5:59",
                                "memberName": "owner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12126,
                                "src": "1072:13:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                  "typeString": "function (bytes32) view external returns (address)"
                                }
                              },
                              "id": 12923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1072:32:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12919,
                            "name": "ReverseRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13213,
                            "src": "1042:16:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ReverseRegistrar_$13213_$",
                              "typeString": "type(contract ReverseRegistrar)"
                            }
                          },
                          "id": 12924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1042:72:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                            "typeString": "contract ReverseRegistrar"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1010:104:59"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 12928,
                                "name": "oldRegistrar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12918,
                                "src": "1136:12:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                                  "typeString": "contract ReverseRegistrar"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                                  "typeString": "contract ReverseRegistrar"
                                }
                              ],
                              "id": 12927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1128:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12926,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1128:7:59",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1128:21:59",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 12932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1161:3:59",
                                "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": 12931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1153:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12930,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1153:7:59",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1153:12:59",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1128:37:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12943,
                        "nodeType": "IfStatement",
                        "src": "1124:98:59",
                        "trueBody": {
                          "id": 12942,
                          "nodeType": "Block",
                          "src": "1167:55:59",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 12938,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "1200:3:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12939,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1204:6:59",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "1200:10:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 12935,
                                    "name": "oldRegistrar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12918,
                                    "src": "1181:12:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ReverseRegistrar_$13213",
                                      "typeString": "contract ReverseRegistrar"
                                    }
                                  },
                                  "id": 12937,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1194:5:59",
                                  "memberName": "claim",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13029,
                                  "src": "1181:18:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bytes32_$",
                                    "typeString": "function (address) external returns (bytes32)"
                                  }
                                },
                                "id": 12940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1181:30:59",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 12941,
                              "nodeType": "ExpressionStatement",
                              "src": "1181:30:59"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12906,
                    "nodeType": "StructuredDocumentation",
                    "src": "790:90:59",
                    "text": " @dev Constructor\n @param ensAddr The address of the ENS registry."
                  },
                  "id": 12945,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12909,
                        "mutability": "mutable",
                        "name": "ensAddr",
                        "nameLocation": "901:7:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 12945,
                        "src": "897:11:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 12908,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 12907,
                            "name": "ENS",
                            "nameLocations": [
                              "897:3:59"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "897:3:59"
                          },
                          "referencedDeclaration": 12157,
                          "src": "897:3:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "896:13:59"
                  },
                  "returnParameters": {
                    "id": 12911,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "910:0:59"
                  },
                  "scope": 13213,
                  "src": "885:343:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12974,
                    "nodeType": "Block",
                    "src": "1268:323:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 12965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 12958,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 12953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 12950,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12947,
                                      "src": "1299:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 12951,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "1307:3:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 12952,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "1311:6:59",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "1307:10:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "1299:18:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "baseExpression": {
                                      "id": 12954,
                                      "name": "controllers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15628,
                                      "src": "1337:11:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                        "typeString": "mapping(address => bool)"
                                      }
                                    },
                                    "id": 12957,
                                    "indexExpression": {
                                      "expression": {
                                        "id": 12955,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "1349:3:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 12956,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "1353:6:59",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "1349:10:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1337:23:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "1299:61:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 12961,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12947,
                                      "src": "1401:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 12962,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "1407:3:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 12963,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "1411:6:59",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "1407:10:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 12959,
                                      "name": "ens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12891,
                                      "src": "1380:3:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ENS_$12157",
                                        "typeString": "contract ENS"
                                      }
                                    },
                                    "id": 12960,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1384:16:59",
                                    "memberName": "isApprovedForAll",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12156,
                                    "src": "1380:20:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                      "typeString": "function (address,address) view external returns (bool)"
                                    }
                                  },
                                  "id": 12964,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1380:38:59",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1299:119:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 12967,
                                    "name": "addr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12947,
                                    "src": "1451:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 12966,
                                  "name": "ownsContract",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13212,
                                  "src": "1438:12:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 12968,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1438:18:59",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1299:157:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "526576657273655265676973747261723a2043616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617574686f72697365642062792061646472657373206f7220746865206164647265737320697473656c66",
                              "id": 12970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1470:93:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fe4e6cb0d911fbb084bbc1b17d0a5ac5b55e0dd119afa63b9e266f785db0c22d",
                                "typeString": "literal_string \"ReverseRegistrar: Caller is not a controller or authorised by address or the address itself\""
                              },
                              "value": "ReverseRegistrar: Caller is not a controller or authorised by address or the address itself"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fe4e6cb0d911fbb084bbc1b17d0a5ac5b55e0dd119afa63b9e266f785db0c22d",
                                "typeString": "literal_string \"ReverseRegistrar: Caller is not a controller or authorised by address or the address itself\""
                              }
                            ],
                            "id": 12949,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1278:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1278:295:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12972,
                        "nodeType": "ExpressionStatement",
                        "src": "1278:295:59"
                      },
                      {
                        "id": 12973,
                        "nodeType": "PlaceholderStatement",
                        "src": "1583:1:59"
                      }
                    ]
                  },
                  "id": 12975,
                  "name": "authorised",
                  "nameLocation": "1243:10:59",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 12948,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12947,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "1262:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 12975,
                        "src": "1254:12:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12946,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1254:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1253:14:59"
                  },
                  "src": "1234:357:59",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    12807
                  ],
                  "body": {
                    "id": 13008,
                    "nodeType": "Block",
                    "src": "1669:254:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 12986,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12977,
                                    "src": "1708:8:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 12985,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1700:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12984,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1700:7:59",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12987,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1700:17:59",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12990,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1729:1:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 12989,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1721:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12988,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1721:7:59",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1721:10:59",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1700:31:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "526576657273655265676973747261723a205265736f6c7665722061646472657373206d757374206e6f742062652030",
                              "id": 12993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1745:50:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb02bca886b66c8cccb8ebdd5f9e523f0cb437ea36db9ae94c35db86f94aa5fa",
                                "typeString": "literal_string \"ReverseRegistrar: Resolver address must not be 0\""
                              },
                              "value": "ReverseRegistrar: Resolver address must not be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb02bca886b66c8cccb8ebdd5f9e523f0cb437ea36db9ae94c35db86f94aa5fa",
                                "typeString": "literal_string \"ReverseRegistrar: Resolver address must not be 0\""
                              }
                            ],
                            "id": 12983,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1679:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1679:126:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12995,
                        "nodeType": "ExpressionStatement",
                        "src": "1679:126:59"
                      },
                      {
                        "expression": {
                          "id": 13000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12996,
                            "name": "defaultResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12894,
                            "src": "1815:15:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NameResolver_$12876",
                              "typeString": "contract NameResolver"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 12998,
                                "name": "resolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12977,
                                "src": "1846:8:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 12997,
                              "name": "NameResolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12876,
                              "src": "1833:12:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_NameResolver_$12876_$",
                                "typeString": "type(contract NameResolver)"
                              }
                            },
                            "id": 12999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1833:22:59",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NameResolver_$12876",
                              "typeString": "contract NameResolver"
                            }
                          },
                          "src": "1815:40:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_NameResolver_$12876",
                            "typeString": "contract NameResolver"
                          }
                        },
                        "id": 13001,
                        "nodeType": "ExpressionStatement",
                        "src": "1815:40:59"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 13004,
                                  "name": "resolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12977,
                                  "src": "1906:8:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 13003,
                                "name": "NameResolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12876,
                                "src": "1893:12:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_NameResolver_$12876_$",
                                  "typeString": "type(contract NameResolver)"
                                }
                              },
                              "id": 13005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1893:22:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_NameResolver_$12876",
                                "typeString": "contract NameResolver"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_NameResolver_$12876",
                                "typeString": "contract NameResolver"
                              }
                            ],
                            "id": 13002,
                            "name": "DefaultResolverChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12905,
                            "src": "1870:22:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_contract$_NameResolver_$12876_$returns$__$",
                              "typeString": "function (contract NameResolver)"
                            }
                          },
                          "id": 13006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1870:46:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13007,
                        "nodeType": "EmitStatement",
                        "src": "1865:51:59"
                      }
                    ]
                  },
                  "functionSelector": "c66485b2",
                  "id": 13009,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 12981,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12980,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "1659:9:59"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "1659:9:59"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1659:9:59"
                    }
                  ],
                  "name": "setDefaultResolver",
                  "nameLocation": "1606:18:59",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12979,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1650:8:59"
                  },
                  "parameters": {
                    "id": 12978,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12977,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1633:8:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13009,
                        "src": "1625:16:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12976,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1625:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1624:18:59"
                  },
                  "returnParameters": {
                    "id": 12982,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1669:0:59"
                  },
                  "scope": 13213,
                  "src": "1597:326:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12814
                  ],
                  "body": {
                    "id": 13028,
                    "nodeType": "Block",
                    "src": "2254:81:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13019,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2284:3:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2288:6:59",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2284:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13021,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13012,
                              "src": "2296:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13024,
                                  "name": "defaultResolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12894,
                                  "src": "2311:15:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameResolver_$12876",
                                    "typeString": "contract NameResolver"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameResolver_$12876",
                                    "typeString": "contract NameResolver"
                                  }
                                ],
                                "id": 13023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2303:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13022,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2303:7:59",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2303:24:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13018,
                            "name": "claimForAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13079,
                            "src": "2271:12:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (address,address,address) returns (bytes32)"
                            }
                          },
                          "id": 13026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2271:57:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 13017,
                        "id": 13027,
                        "nodeType": "Return",
                        "src": "2264:64:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13010,
                    "nodeType": "StructuredDocumentation",
                    "src": "1929:256:59",
                    "text": " @dev Transfers ownership of the reverse ENS record associated with the\n      calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @return The ENS node hash of the reverse record."
                  },
                  "functionSelector": "1e83409a",
                  "id": 13029,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claim",
                  "nameLocation": "2199:5:59",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13014,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2227:8:59"
                  },
                  "parameters": {
                    "id": 13013,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13012,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2213:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13029,
                        "src": "2205:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13011,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2205:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2204:15:59"
                  },
                  "returnParameters": {
                    "id": 13017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13016,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13029,
                        "src": "2245:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13015,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2245:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2244:9:59"
                  },
                  "scope": 13213,
                  "src": "2190:145:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12825
                  ],
                  "body": {
                    "id": 13078,
                    "nodeType": "Block",
                    "src": "2853:324:59",
                    "statements": [
                      {
                        "assignments": [
                          13046
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13046,
                            "mutability": "mutable",
                            "name": "labelHash",
                            "nameLocation": "2871:9:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 13078,
                            "src": "2863:17:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 13045,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2863:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13050,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 13048,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13032,
                              "src": "2898:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13047,
                            "name": "sha3HexAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13184,
                            "src": "2883:14:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (address) pure returns (bytes32)"
                            }
                          },
                          "id": 13049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2883:20:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2863:40:59"
                      },
                      {
                        "assignments": [
                          13052
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13052,
                            "mutability": "mutable",
                            "name": "reverseNode",
                            "nameLocation": "2921:11:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 13078,
                            "src": "2913:19:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 13051,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2913:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13060,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 13056,
                                  "name": "ADDR_REVERSE_NODE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12882,
                                  "src": "2975:17:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 13057,
                                  "name": "labelHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13046,
                                  "src": "2994:9:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 13054,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2958:3:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 13055,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2962:12:59",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "2958:16:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 13058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2958:46:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13053,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2935:9:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 13059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2935:79:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2913:101:59"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 13062,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13032,
                              "src": "3044:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13063,
                              "name": "reverseNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13052,
                              "src": "3050:11:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 13061,
                            "name": "ReverseClaimed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12900,
                            "src": "3029:14:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32)"
                            }
                          },
                          "id": 13064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3029:33:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13065,
                        "nodeType": "EmitStatement",
                        "src": "3024:38:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13069,
                              "name": "ADDR_REVERSE_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12882,
                              "src": "3093:17:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 13070,
                              "name": "labelHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13046,
                              "src": "3112:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 13071,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13034,
                              "src": "3123:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13072,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13036,
                              "src": "3130:8:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 13073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3140:1:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 13066,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12891,
                              "src": "3072:3:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 13068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3076:16:59",
                            "memberName": "setSubnodeRecord",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12080,
                            "src": "3072:20:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_address_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address,address,uint64) external"
                            }
                          },
                          "id": 13074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3072:70:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13075,
                        "nodeType": "ExpressionStatement",
                        "src": "3072:70:59"
                      },
                      {
                        "expression": {
                          "id": 13076,
                          "name": "reverseNode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13052,
                          "src": "3159:11:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 13044,
                        "id": 13077,
                        "nodeType": "Return",
                        "src": "3152:18:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13030,
                    "nodeType": "StructuredDocumentation",
                    "src": "2341:357:59",
                    "text": " @dev Transfers ownership of the reverse ENS record associated with the\n      calling account.\n @param addr The reverse record to set\n @param owner The address to set as the owner of the reverse record in ENS.\n @param resolver The resolver of the reverse node\n @return The ENS node hash of the reverse record."
                  },
                  "functionSelector": "65669631",
                  "id": 13079,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 13040,
                          "name": "addr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13032,
                          "src": "2829:4:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 13041,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 13039,
                        "name": "authorised",
                        "nameLocations": [
                          "2818:10:59"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12975,
                        "src": "2818:10:59"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2818:16:59"
                    }
                  ],
                  "name": "claimForAddr",
                  "nameLocation": "2712:12:59",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13038,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2809:8:59"
                  },
                  "parameters": {
                    "id": 13037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13032,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "2742:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13079,
                        "src": "2734:12:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13031,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2734:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13034,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2764:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13079,
                        "src": "2756:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13033,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2756:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13036,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "2787:8:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13079,
                        "src": "2779:16:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13035,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2779:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2724:77:59"
                  },
                  "returnParameters": {
                    "id": 13044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13043,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13079,
                        "src": "2844:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13042,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2844:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2843:9:59"
                  },
                  "scope": 13213,
                  "src": "2703:474:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12834
                  ],
                  "body": {
                    "id": 13097,
                    "nodeType": "Block",
                    "src": "3647:65:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13091,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3677:3:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3681:6:59",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3677:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13093,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13082,
                              "src": "3689:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13094,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13084,
                              "src": "3696:8:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13090,
                            "name": "claimForAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13079,
                            "src": "3664:12:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (address,address,address) returns (bytes32)"
                            }
                          },
                          "id": 13095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3664:41:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 13089,
                        "id": 13096,
                        "nodeType": "Return",
                        "src": "3657:48:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13080,
                    "nodeType": "StructuredDocumentation",
                    "src": "3183:337:59",
                    "text": " @dev Transfers ownership of the reverse ENS record associated with the\n      calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @param resolver The address of the resolver to set; 0 to leave unchanged.\n @return The ENS node hash of the reverse record."
                  },
                  "functionSelector": "0f5a5466",
                  "id": 13098,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimWithResolver",
                  "nameLocation": "3534:17:59",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13086,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3608:8:59"
                  },
                  "parameters": {
                    "id": 13085,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13082,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3560:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13098,
                        "src": "3552:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13081,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3552:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13084,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "3575:8:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13098,
                        "src": "3567:16:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13083,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3567:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3551:33:59"
                  },
                  "returnParameters": {
                    "id": 13089,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13088,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13098,
                        "src": "3634:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13087,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3634:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3633:9:59"
                  },
                  "scope": 13213,
                  "src": "3525:187:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12841
                  ],
                  "body": {
                    "id": 13119,
                    "nodeType": "Block",
                    "src": "4102:184:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13108,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4163:3:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4167:6:59",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4163:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 13110,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4191:3:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4195:6:59",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4191:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13114,
                                  "name": "defaultResolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12894,
                                  "src": "4227:15:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameResolver_$12876",
                                    "typeString": "contract NameResolver"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameResolver_$12876",
                                    "typeString": "contract NameResolver"
                                  }
                                ],
                                "id": 13113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4219:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13112,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4219:7:59",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4219:24:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13116,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13101,
                              "src": "4261:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13107,
                            "name": "setNameForAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13154,
                            "src": "4131:14:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_string_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (address,address,address,string memory) returns (bytes32)"
                            }
                          },
                          "id": 13117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4131:148:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 13106,
                        "id": 13118,
                        "nodeType": "Return",
                        "src": "4112:167:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13099,
                    "nodeType": "StructuredDocumentation",
                    "src": "3718:308:59",
                    "text": " @dev Sets the `name()` record for the reverse ENS record associated with\n the calling account. First updates the resolver to the default reverse\n resolver if necessary.\n @param name The name to set for this address.\n @return The ENS node hash of the reverse record."
                  },
                  "functionSelector": "c47f0027",
                  "id": 13120,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setName",
                  "nameLocation": "4040:7:59",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13103,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4075:8:59"
                  },
                  "parameters": {
                    "id": 13102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13101,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "4062:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13120,
                        "src": "4048:18:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13100,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4048:6:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4047:20:59"
                  },
                  "returnParameters": {
                    "id": 13106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13105,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13120,
                        "src": "4093:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13104,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4093:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4092:9:59"
                  },
                  "scope": 13213,
                  "src": "4031:255:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12854
                  ],
                  "body": {
                    "id": 13153,
                    "nodeType": "Block",
                    "src": "4943:140:59",
                    "statements": [
                      {
                        "assignments": [
                          13136
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13136,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "4961:4:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 13153,
                            "src": "4953:12:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 13135,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4953:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13142,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 13138,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13123,
                              "src": "4981:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13139,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13125,
                              "src": "4987:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13140,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13127,
                              "src": "4994:8:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13137,
                            "name": "claimForAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13079,
                            "src": "4968:12:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (address,address,address) returns (bytes32)"
                            }
                          },
                          "id": 13141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4968:35:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4953:50:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13147,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13136,
                              "src": "5044:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 13148,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13129,
                              "src": "5050:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 13144,
                                  "name": "resolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13127,
                                  "src": "5026:8:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 13143,
                                "name": "NameResolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12876,
                                "src": "5013:12:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_NameResolver_$12876_$",
                                  "typeString": "type(contract NameResolver)"
                                }
                              },
                              "id": 13145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5013:22:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_NameResolver_$12876",
                                "typeString": "contract NameResolver"
                              }
                            },
                            "id": 13146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5036:7:59",
                            "memberName": "setName",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12875,
                            "src": "5013:30:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,string memory) external"
                            }
                          },
                          "id": 13149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5013:42:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13150,
                        "nodeType": "ExpressionStatement",
                        "src": "5013:42:59"
                      },
                      {
                        "expression": {
                          "id": 13151,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13136,
                          "src": "5072:4:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 13134,
                        "id": 13152,
                        "nodeType": "Return",
                        "src": "5065:11:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13121,
                    "nodeType": "StructuredDocumentation",
                    "src": "4292:483:59",
                    "text": " @dev Sets the `name()` record for the reverse ENS record associated with\n the account provided. Updates the resolver to a designated resolver\n Only callable by controllers and authorised users\n @param addr The reverse record to set\n @param owner The owner of the reverse node\n @param resolver The resolver of the reverse node\n @param name The name to set for this address.\n @return The ENS node hash of the reverse record."
                  },
                  "functionSelector": "7a806d6b",
                  "id": 13154,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setNameForAddr",
                  "nameLocation": "4789:14:59",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13131,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4916:8:59"
                  },
                  "parameters": {
                    "id": 13130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13123,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "4821:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13154,
                        "src": "4813:12:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13122,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4813:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13125,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4843:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13154,
                        "src": "4835:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13124,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4835:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13127,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "4866:8:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13154,
                        "src": "4858:16:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4858:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13129,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "4898:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13154,
                        "src": "4884:18:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13128,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4884:6:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4803:105:59"
                  },
                  "returnParameters": {
                    "id": 13134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13133,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13154,
                        "src": "4934:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13132,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4934:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4933:9:59"
                  },
                  "scope": 13213,
                  "src": "4780:303:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    12861
                  ],
                  "body": {
                    "id": 13173,
                    "nodeType": "Block",
                    "src": "5318:134:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 13166,
                                  "name": "ADDR_REVERSE_NODE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12882,
                                  "src": "5391:17:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 13168,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13157,
                                      "src": "5425:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 13167,
                                    "name": "sha3HexAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13184,
                                    "src": "5410:14:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$",
                                      "typeString": "function (address) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 13169,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5410:20:59",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 13164,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5374:3:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 13165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "5378:12:59",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "5374:16:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 13170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5374:57:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13163,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "5347:9:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 13171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5347:98:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 13162,
                        "id": 13172,
                        "nodeType": "Return",
                        "src": "5328:117:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13155,
                    "nodeType": "StructuredDocumentation",
                    "src": "5089:157:59",
                    "text": " @dev Returns the node hash for a given account's reverse records.\n @param addr The address to hash\n @return The ENS node hash."
                  },
                  "functionSelector": "bffbe61c",
                  "id": 13174,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "node",
                  "nameLocation": "5260:4:59",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13159,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5291:8:59"
                  },
                  "parameters": {
                    "id": 13158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13157,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "5273:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13174,
                        "src": "5265:12:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5265:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5264:14:59"
                  },
                  "returnParameters": {
                    "id": 13162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13161,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13174,
                        "src": "5309:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13160,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5309:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5308:9:59"
                  },
                  "scope": 13213,
                  "src": "5251:201:59",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13183,
                    "nodeType": "Block",
                    "src": "5830:431:59",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5849:406:59",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5937:271:59",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5955:14:59",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5964:1:59"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5967:1:59",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "5960:3:59"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5960:9:59"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "5955:1:59"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5994:1:59"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "addr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6006:4:59"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6012:3:59",
                                                  "type": "",
                                                  "value": "0xf"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "6002:3:59"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6002:14:59"
                                            },
                                            {
                                              "name": "lookup",
                                              "nodeType": "YulIdentifier",
                                              "src": "6018:6:59"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "byte",
                                            "nodeType": "YulIdentifier",
                                            "src": "5997:4:59"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5997:28:59"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore8",
                                        "nodeType": "YulIdentifier",
                                        "src": "5986:7:59"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5986:40:59"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5986:40:59"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6043:23:59",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "addr",
                                          "nodeType": "YulIdentifier",
                                          "src": "6055:4:59"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6061:4:59",
                                          "type": "",
                                          "value": "0x10"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "6051:3:59"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6051:15:59"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "addr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6043:4:59"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6083:14:59",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6092:1:59"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6095:1:59",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "6088:3:59"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6088:9:59"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6083:1:59"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6122:1:59"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "addr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6134:4:59"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6140:3:59",
                                                  "type": "",
                                                  "value": "0xf"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "6130:3:59"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6130:14:59"
                                            },
                                            {
                                              "name": "lookup",
                                              "nodeType": "YulIdentifier",
                                              "src": "6146:6:59"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "byte",
                                            "nodeType": "YulIdentifier",
                                            "src": "6125:4:59"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6125:28:59"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore8",
                                        "nodeType": "YulIdentifier",
                                        "src": "6114:7:59"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6114:40:59"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6114:40:59"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6171:23:59",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "addr",
                                          "nodeType": "YulIdentifier",
                                          "src": "6183:4:59"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6189:4:59",
                                          "type": "",
                                          "value": "0x10"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "6179:3:59"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6179:15:59"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "addr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6171:4:59"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5914:1:59"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5917:1:59",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5911:2:59"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5911:8:59"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5920:16:59",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5867:43:59",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5885:11:59",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5894:2:59",
                                      "type": "",
                                      "value": "40"
                                    },
                                    "variables": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulTypedName",
                                        "src": "5889:1:59",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "5863:345:59"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6222:23:59",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6239:1:59",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6242:2:59",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "6229:9:59"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6229:16:59"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "6222:3:59"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 13177,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6006:4:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13177,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6043:4:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13177,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6055:4:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13177,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6134:4:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13177,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6171:4:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13177,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6183:4:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 12879,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6018:6:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 12879,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6146:6:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13180,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6222:3:59",
                            "valueSize": 1
                          }
                        ],
                        "id": 13182,
                        "nodeType": "InlineAssembly",
                        "src": "5840:415:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13175,
                    "nodeType": "StructuredDocumentation",
                    "src": "5458:294:59",
                    "text": " @dev An optimised function to compute the sha3 of the lower-case\n      hexadecimal representation of an Ethereum address.\n @param addr The address to hash\n @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\n         input address."
                  },
                  "id": 13184,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sha3HexAddress",
                  "nameLocation": "5766:14:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13177,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "5789:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13184,
                        "src": "5781:12:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13176,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5781:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5780:14:59"
                  },
                  "returnParameters": {
                    "id": 13181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13180,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "5825:3:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13184,
                        "src": "5817:11:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13179,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5817:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5816:13:59"
                  },
                  "scope": 13213,
                  "src": "5757:504:59",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 13211,
                    "nodeType": "Block",
                    "src": "6332:161:59",
                    "statements": [
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 13204,
                              "nodeType": "Block",
                              "src": "6392:51:59",
                              "statements": [
                                {
                                  "expression": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 13202,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 13199,
                                      "name": "owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13197,
                                      "src": "6413:5:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 13200,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "6422:3:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 13201,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "6426:6:59",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "6422:10:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "6413:19:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "functionReturnParameters": 13190,
                                  "id": 13203,
                                  "nodeType": "Return",
                                  "src": "6406:26:59"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 13205,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 13198,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 13197,
                                  "mutability": "mutable",
                                  "name": "owner",
                                  "nameLocation": "6385:5:59",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 13205,
                                  "src": "6377:13:59",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 13196,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6377:7:59",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "6376:15:59"
                            },
                            "src": "6368:75:59"
                          },
                          {
                            "block": {
                              "id": 13208,
                              "nodeType": "Block",
                              "src": "6450:37:59",
                              "statements": [
                                {
                                  "expression": {
                                    "hexValue": "66616c7365",
                                    "id": 13206,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6471:5:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  "functionReturnParameters": 13190,
                                  "id": 13207,
                                  "nodeType": "Return",
                                  "src": "6464:12:59"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 13209,
                            "nodeType": "TryCatchClause",
                            "src": "6444:43:59"
                          }
                        ],
                        "externalCall": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 13192,
                                  "name": "addr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13186,
                                  "src": "6354:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 13191,
                                "name": "Ownable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 642,
                                "src": "6346:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Ownable_$642_$",
                                  "typeString": "type(contract Ownable)"
                                }
                              },
                              "id": 13193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6346:13:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Ownable_$642",
                                "typeString": "contract Ownable"
                              }
                            },
                            "id": 13194,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6360:5:59",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 570,
                            "src": "6346:19:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 13195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6346:21:59",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 13210,
                        "nodeType": "TryStatement",
                        "src": "6342:145:59"
                      }
                    ]
                  },
                  "id": 13212,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownsContract",
                  "nameLocation": "6276:12:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13187,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13186,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "6297:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 13212,
                        "src": "6289:12:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6289:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6288:14:59"
                  },
                  "returnParameters": {
                    "id": 13190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13189,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13212,
                        "src": "6326:4:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13188,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6326:4:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6325:6:59"
                  },
                  "scope": 13213,
                  "src": "6267:226:59",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 13214,
              "src": "506:5989:59",
              "usedErrors": []
            }
          ],
          "src": "0:6496:59"
        },
        "id": 59
      },
      "contracts/registry/TestRegistrar.sol": {
        "ast": {
          "absolutePath": "contracts/registry/TestRegistrar.sol",
          "exportedSymbols": {
            "ENS": [
              12157
            ],
            "TestRegistrar": [
              13283
            ]
          },
          "id": 13284,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13215,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:60"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "./ENS.sol",
              "id": 13216,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13284,
              "sourceUnit": 12158,
              "src": "26:19:60",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "TestRegistrar",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 13217,
                "nodeType": "StructuredDocumentation",
                "src": "47:160:60",
                "text": " A registrar that allocates subdomains to the first person to claim them, but\n expires registrations a fixed period after they're initially claimed."
              },
              "fullyImplemented": true,
              "id": 13283,
              "linearizedBaseContracts": [
                13283
              ],
              "name": "TestRegistrar",
              "nameLocation": "217:13:60",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 13220,
                  "mutability": "constant",
                  "name": "registrationPeriod",
                  "nameLocation": "254:18:60",
                  "nodeType": "VariableDeclaration",
                  "scope": 13283,
                  "src": "237:45:60",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13218,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "237:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "34",
                    "id": 13219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "275:7:60",
                    "subdenomination": "weeks",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2419200_by_1",
                      "typeString": "int_const 2419200"
                    },
                    "value": "4"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 13223,
                  "mutability": "immutable",
                  "name": "ens",
                  "nameLocation": "310:3:60",
                  "nodeType": "VariableDeclaration",
                  "scope": 13283,
                  "src": "289:24:60",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 13222,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13221,
                      "name": "ENS",
                      "nameLocations": [
                        "289:3:60"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "289:3:60"
                    },
                    "referencedDeclaration": 12157,
                    "src": "289:3:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "faff50a8",
                  "id": 13225,
                  "mutability": "immutable",
                  "name": "rootNode",
                  "nameLocation": "344:8:60",
                  "nodeType": "VariableDeclaration",
                  "scope": 13283,
                  "src": "319:33:60",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13224,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "319:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "af9f26e4",
                  "id": 13229,
                  "mutability": "mutable",
                  "name": "expiryTimes",
                  "nameLocation": "393:11:60",
                  "nodeType": "VariableDeclaration",
                  "scope": 13283,
                  "src": "358:46:60",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "typeName": {
                    "id": 13228,
                    "keyType": {
                      "id": 13226,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "366:7:60",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "358:27:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                      "typeString": "mapping(bytes32 => uint256)"
                    },
                    "valueType": {
                      "id": 13227,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "377:7:60",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13246,
                    "nodeType": "Block",
                    "src": "602:55:60",
                    "statements": [
                      {
                        "expression": {
                          "id": 13240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13238,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13223,
                            "src": "612:3:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13239,
                            "name": "ensAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13233,
                            "src": "618:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "612:13:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 13241,
                        "nodeType": "ExpressionStatement",
                        "src": "612:13:60"
                      },
                      {
                        "expression": {
                          "id": 13244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13242,
                            "name": "rootNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13225,
                            "src": "635:8:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13243,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13235,
                            "src": "646:4:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "635:15:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 13245,
                        "nodeType": "ExpressionStatement",
                        "src": "635:15:60"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13230,
                    "nodeType": "StructuredDocumentation",
                    "src": "411:147:60",
                    "text": " Constructor.\n @param ensAddr The address of the ENS registry.\n @param node The node that this registrar administers."
                  },
                  "id": 13247,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13233,
                        "mutability": "mutable",
                        "name": "ensAddr",
                        "nameLocation": "579:7:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 13247,
                        "src": "575:11:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 13232,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 13231,
                            "name": "ENS",
                            "nameLocations": [
                              "575:3:60"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "575:3:60"
                          },
                          "referencedDeclaration": 12157,
                          "src": "575:3:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13235,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "596:4:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 13247,
                        "src": "588:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13234,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "588:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "574:27:60"
                  },
                  "returnParameters": {
                    "id": 13237,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "602:0:60"
                  },
                  "scope": 13283,
                  "src": "563:94:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13281,
                    "nodeType": "Block",
                    "src": "894:183:60",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 13256,
                                  "name": "expiryTimes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13229,
                                  "src": "912:11:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 13258,
                                "indexExpression": {
                                  "id": 13257,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13250,
                                  "src": "924:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "912:18:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 13259,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "933:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 13260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "939:9:60",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "933:15:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "912:36:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13255,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "904:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 13262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "904:45:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13263,
                        "nodeType": "ExpressionStatement",
                        "src": "904:45:60"
                      },
                      {
                        "expression": {
                          "id": 13271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 13264,
                              "name": "expiryTimes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13229,
                              "src": "960:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 13266,
                            "indexExpression": {
                              "id": 13265,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13250,
                              "src": "972:5:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "960:18:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 13267,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "981:5:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 13268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "987:9:60",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "981:15:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 13269,
                              "name": "registrationPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13220,
                              "src": "999:18:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "981:36:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "960:57:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13272,
                        "nodeType": "ExpressionStatement",
                        "src": "960:57:60"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13276,
                              "name": "rootNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13225,
                              "src": "1047:8:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 13277,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13250,
                              "src": "1057:5:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 13278,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13252,
                              "src": "1064:5:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 13273,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13223,
                              "src": "1027:3:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 13275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1031:15:60",
                            "memberName": "setSubnodeOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12091,
                            "src": "1027:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                            }
                          },
                          "id": 13279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1027:43:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 13280,
                        "nodeType": "ExpressionStatement",
                        "src": "1027:43:60"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13248,
                    "nodeType": "StructuredDocumentation",
                    "src": "663:171:60",
                    "text": " Register a name that's not currently registered\n @param label The hash of the label to register.\n @param owner The address of the new owner."
                  },
                  "functionSelector": "d22057a9",
                  "id": 13282,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "register",
                  "nameLocation": "848:8:60",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13253,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13250,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "865:5:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 13282,
                        "src": "857:13:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13249,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "857:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13252,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "880:5:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 13282,
                        "src": "872:13:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "872:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "856:30:60"
                  },
                  "returnParameters": {
                    "id": 13254,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "894:0:60"
                  },
                  "scope": 13283,
                  "src": "839:238:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 13284,
              "src": "208:871:60",
              "usedErrors": []
            }
          ],
          "src": "0:1080:60"
        },
        "id": 60
      },
      "contracts/resolvers/IMulticallable.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/IMulticallable.sol",
          "exportedSymbols": {
            "IMulticallable": [
              13306
            ]
          },
          "id": 13307,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13285,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:61"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IMulticallable",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 13306,
              "linearizedBaseContracts": [
                13306
              ],
              "name": "IMulticallable",
              "nameLocation": "67:14:61",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "ac9650d8",
                  "id": 13294,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multicall",
                  "nameLocation": "97:9:61",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13288,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "124:4:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 13294,
                        "src": "107:21:61",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13286,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "107:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13287,
                          "nodeType": "ArrayTypeName",
                          "src": "107:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "106:23:61"
                  },
                  "returnParameters": {
                    "id": 13293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13292,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "179:7:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 13294,
                        "src": "164:22:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13290,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "164:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13291,
                          "nodeType": "ArrayTypeName",
                          "src": "164:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:24:61"
                  },
                  "scope": 13306,
                  "src": "88:100:61",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "e32954eb",
                  "id": 13305,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multicallWithNodeCheck",
                  "nameLocation": "203:22:61",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13300,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13296,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13305,
                        "src": "226:7:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13295,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "226:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13299,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "252:4:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 13305,
                        "src": "235:21:61",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13297,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "235:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13298,
                          "nodeType": "ArrayTypeName",
                          "src": "235:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "225:32:61"
                  },
                  "returnParameters": {
                    "id": 13304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13303,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "307:7:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 13305,
                        "src": "292:22:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13301,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "292:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13302,
                          "nodeType": "ArrayTypeName",
                          "src": "292:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "291:24:61"
                  },
                  "scope": 13306,
                  "src": "194:122:61",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13307,
              "src": "57:261:61",
              "usedErrors": []
            }
          ],
          "src": "32:287:61"
        },
        "id": 61
      },
      "contracts/resolvers/Multicallable.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/Multicallable.sol",
          "exportedSymbols": {
            "ERC165": [
              3082
            ],
            "IERC165": [
              3094
            ],
            "IMulticallable": [
              13306
            ],
            "Multicallable": [
              13459
            ]
          },
          "id": 13460,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13308,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:62"
            },
            {
              "absolutePath": "contracts/resolvers/IMulticallable.sol",
              "file": "./IMulticallable.sol",
              "id": 13309,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13460,
              "sourceUnit": 13307,
              "src": "57:30:62",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 13310,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13460,
              "sourceUnit": 3083,
              "src": "88:64:62",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 13311,
                    "name": "IMulticallable",
                    "nameLocations": [
                      "189:14:62"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13306,
                    "src": "189:14:62"
                  },
                  "id": 13312,
                  "nodeType": "InheritanceSpecifier",
                  "src": "189:14:62"
                },
                {
                  "baseName": {
                    "id": 13313,
                    "name": "ERC165",
                    "nameLocations": [
                      "205:6:62"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3082,
                    "src": "205:6:62"
                  },
                  "id": 13314,
                  "nodeType": "InheritanceSpecifier",
                  "src": "205:6:62"
                }
              ],
              "canonicalName": "Multicallable",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 13459,
              "linearizedBaseContracts": [
                13459,
                3082,
                3094,
                13306
              ],
              "name": "Multicallable",
              "nameLocation": "172:13:62",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 13400,
                    "nodeType": "Block",
                    "src": "341:597:62",
                    "statements": [
                      {
                        "expression": {
                          "id": 13332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13325,
                            "name": "results",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13323,
                            "src": "351:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 13329,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13319,
                                  "src": "373:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                "id": 13330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "378:6:62",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "373:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "361:11:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 13326,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "365:5:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                },
                                "id": 13327,
                                "nodeType": "ArrayTypeName",
                                "src": "365:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                  "typeString": "bytes[]"
                                }
                              }
                            },
                            "id": 13331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "361:24:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "src": "351:34:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "id": 13333,
                        "nodeType": "ExpressionStatement",
                        "src": "351:34:62"
                      },
                      {
                        "body": {
                          "id": 13396,
                          "nodeType": "Block",
                          "src": "437:471:62",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 13350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13345,
                                  "name": "nodehash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13316,
                                  "src": "455:8:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 13348,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "475:1:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 13347,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "467:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 13346,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "467:7:62",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 13349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "467:10:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "455:22:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13371,
                              "nodeType": "IfStatement",
                              "src": "451:267:62",
                              "trueBody": {
                                "id": 13370,
                                "nodeType": "Block",
                                "src": "479:239:62",
                                "statements": [
                                  {
                                    "assignments": [
                                      13352
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 13352,
                                        "mutability": "mutable",
                                        "name": "txNamehash",
                                        "nameLocation": "505:10:62",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 13370,
                                        "src": "497:18:62",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 13351,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "497:7:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 13362,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "baseExpression": {
                                            "baseExpression": {
                                              "id": 13355,
                                              "name": "data",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13319,
                                              "src": "526:4:62",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "bytes calldata[] calldata"
                                              }
                                            },
                                            "id": 13357,
                                            "indexExpression": {
                                              "id": 13356,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13335,
                                              "src": "531:1:62",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "526:7:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_calldata_ptr",
                                              "typeString": "bytes calldata"
                                            }
                                          },
                                          "endExpression": {
                                            "hexValue": "3336",
                                            "id": 13359,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "536:2:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_36_by_1",
                                              "typeString": "int_const 36"
                                            },
                                            "value": "36"
                                          },
                                          "id": 13360,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexRangeAccess",
                                          "src": "526:13:62",
                                          "startExpression": {
                                            "hexValue": "34",
                                            "id": 13358,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "534:1:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                            "typeString": "bytes calldata slice"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                            "typeString": "bytes calldata slice"
                                          }
                                        ],
                                        "id": 13354,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "518:7:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes32_$",
                                          "typeString": "type(bytes32)"
                                        },
                                        "typeName": {
                                          "id": 13353,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "518:7:62",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 13361,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "518:22:62",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "497:43:62"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          "id": 13366,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 13364,
                                            "name": "txNamehash",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13352,
                                            "src": "587:10:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "id": 13365,
                                            "name": "nodehash",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13316,
                                            "src": "601:8:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "src": "587:22:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "6d756c746963616c6c3a20416c6c207265636f726473206d75737420686176652061206d61746368696e67206e616d6568617368",
                                          "id": 13367,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "631:54:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_e0f8a6e7bdab31ebf5fea1195446f6f12fddc8619df8ea22a3ed3edf179dde30",
                                            "typeString": "literal_string \"multicall: All records must have a matching namehash\""
                                          },
                                          "value": "multicall: All records must have a matching namehash"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_e0f8a6e7bdab31ebf5fea1195446f6f12fddc8619df8ea22a3ed3edf179dde30",
                                            "typeString": "literal_string \"multicall: All records must have a matching namehash\""
                                          }
                                        ],
                                        "id": 13363,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "558:7:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 13368,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "558:145:62",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13369,
                                    "nodeType": "ExpressionStatement",
                                    "src": "558:145:62"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                13373,
                                13375
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 13373,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "737:7:62",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 13396,
                                  "src": "732:12:62",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 13372,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "732:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 13375,
                                  "mutability": "mutable",
                                  "name": "result",
                                  "nameLocation": "759:6:62",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 13396,
                                  "src": "746:19:62",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 13374,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "746:5:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 13385,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 13381,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13319,
                                      "src": "813:4:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "bytes calldata[] calldata"
                                      }
                                    },
                                    "id": 13383,
                                    "indexExpression": {
                                      "id": 13382,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13335,
                                      "src": "818:1:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "813:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 13378,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "777:4:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Multicallable_$13459",
                                          "typeString": "contract Multicallable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Multicallable_$13459",
                                          "typeString": "contract Multicallable"
                                        }
                                      ],
                                      "id": 13377,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "769:7:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 13376,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "769:7:62",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "769:13:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 13380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "783:12:62",
                                  "memberName": "delegatecall",
                                  "nodeType": "MemberAccess",
                                  "src": "769:26:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                  }
                                },
                                "id": 13384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "769:65:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "731:103:62"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13387,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13373,
                                    "src": "856:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 13386,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "848:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 13388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "848:16:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13389,
                              "nodeType": "ExpressionStatement",
                              "src": "848:16:62"
                            },
                            {
                              "expression": {
                                "id": 13394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 13390,
                                    "name": "results",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13323,
                                    "src": "878:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 13392,
                                  "indexExpression": {
                                    "id": 13391,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13335,
                                    "src": "886:1:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "878:10:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 13393,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13375,
                                  "src": "891:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "878:19:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 13395,
                              "nodeType": "ExpressionStatement",
                              "src": "878:19:62"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13338,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13335,
                            "src": "415:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 13339,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13319,
                              "src": "419:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            },
                            "id": 13340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "424:6:62",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "419:11:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "415:15:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13397,
                        "initializationExpression": {
                          "assignments": [
                            13335
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 13335,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "408:1:62",
                              "nodeType": "VariableDeclaration",
                              "scope": 13397,
                              "src": "400:9:62",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 13334,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "400:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 13337,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 13336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "412:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "400:13:62"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 13343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "432:3:62",
                            "subExpression": {
                              "id": 13342,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13335,
                              "src": "432:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13344,
                          "nodeType": "ExpressionStatement",
                          "src": "432:3:62"
                        },
                        "nodeType": "ForStatement",
                        "src": "395:513:62"
                      },
                      {
                        "expression": {
                          "id": 13398,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13323,
                          "src": "924:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "functionReturnParameters": 13324,
                        "id": 13399,
                        "nodeType": "Return",
                        "src": "917:14:62"
                      }
                    ]
                  },
                  "id": 13401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_multicall",
                  "nameLocation": "227:10:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13320,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13316,
                        "mutability": "mutable",
                        "name": "nodehash",
                        "nameLocation": "246:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13401,
                        "src": "238:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13315,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13319,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "273:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13401,
                        "src": "256:21:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13317,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "256:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13318,
                          "nodeType": "ArrayTypeName",
                          "src": "256:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "237:41:62"
                  },
                  "returnParameters": {
                    "id": 13324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13323,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "328:7:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13401,
                        "src": "313:22:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13321,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "313:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13322,
                          "nodeType": "ArrayTypeName",
                          "src": "313:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "312:24:62"
                  },
                  "scope": 13459,
                  "src": "218:720:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    13305
                  ],
                  "body": {
                    "id": 13417,
                    "nodeType": "Block",
                    "src": "1269:50:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13413,
                              "name": "nodehash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13403,
                              "src": "1297:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 13414,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13406,
                              "src": "1307:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            ],
                            "id": 13412,
                            "name": "_multicall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13401,
                            "src": "1286:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (bytes32,bytes calldata[] calldata) returns (bytes memory[] memory)"
                            }
                          },
                          "id": 13415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1286:26:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "functionReturnParameters": 13411,
                        "id": 13416,
                        "nodeType": "Return",
                        "src": "1279:33:62"
                      }
                    ]
                  },
                  "functionSelector": "e32954eb",
                  "id": 13418,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multicallWithNodeCheck",
                  "nameLocation": "1143:22:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13403,
                        "mutability": "mutable",
                        "name": "nodehash",
                        "nameLocation": "1174:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13418,
                        "src": "1166:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13402,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1166:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13406,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1201:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13418,
                        "src": "1184:21:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13404,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1184:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13405,
                          "nodeType": "ArrayTypeName",
                          "src": "1184:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1165:41:62"
                  },
                  "returnParameters": {
                    "id": 13411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13410,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "1256:7:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13418,
                        "src": "1241:22:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13408,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1241:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13409,
                          "nodeType": "ArrayTypeName",
                          "src": "1241:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1240:24:62"
                  },
                  "scope": 13459,
                  "src": "1134:185:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13294
                  ],
                  "body": {
                    "id": 13436,
                    "nodeType": "Block",
                    "src": "1444:52:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 13431,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1480:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 13430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1472:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 13429,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1472:7:62",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1472:10:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 13433,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13421,
                              "src": "1484:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            ],
                            "id": 13428,
                            "name": "_multicall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13401,
                            "src": "1461:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (bytes32,bytes calldata[] calldata) returns (bytes memory[] memory)"
                            }
                          },
                          "id": 13434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1461:28:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "functionReturnParameters": 13427,
                        "id": 13435,
                        "nodeType": "Return",
                        "src": "1454:35:62"
                      }
                    ]
                  },
                  "functionSelector": "ac9650d8",
                  "id": 13437,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multicall",
                  "nameLocation": "1334:9:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13423,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1390:8:62"
                  },
                  "parameters": {
                    "id": 13422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13421,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1361:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13437,
                        "src": "1344:21:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13419,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1344:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13420,
                          "nodeType": "ArrayTypeName",
                          "src": "1344:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1343:23:62"
                  },
                  "returnParameters": {
                    "id": 13427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13426,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "1431:7:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13437,
                        "src": "1416:22:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13424,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1416:5:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13425,
                          "nodeType": "ArrayTypeName",
                          "src": "1416:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1415:24:62"
                  },
                  "scope": 13459,
                  "src": "1325:171:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3081
                  ],
                  "body": {
                    "id": 13457,
                    "nodeType": "Block",
                    "src": "1637:135:62",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 13450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13445,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13439,
                              "src": "1666:11:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13447,
                                    "name": "IMulticallable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13306,
                                    "src": "1686:14:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMulticallable_$13306_$",
                                      "typeString": "type(contract IMulticallable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IMulticallable_$13306_$",
                                      "typeString": "type(contract IMulticallable)"
                                    }
                                  ],
                                  "id": 13446,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1681:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1681:20:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IMulticallable_$13306",
                                  "typeString": "type(contract IMulticallable)"
                                }
                              },
                              "id": 13449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1702:11:62",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1681:32:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1666:47:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 13453,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13439,
                                "src": "1753:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 13451,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1729:5:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_Multicallable_$13459_$",
                                  "typeString": "type(contract super Multicallable)"
                                }
                              },
                              "id": 13452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1735:17:62",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3081,
                              "src": "1729:23:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 13454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1729:36:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1666:99:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13444,
                        "id": 13456,
                        "nodeType": "Return",
                        "src": "1647:118:62"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 13458,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1511:17:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13441,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1601:8:62"
                  },
                  "parameters": {
                    "id": 13440,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13439,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1536:11:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 13458,
                        "src": "1529:18:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 13438,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1529:6:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1528:20:62"
                  },
                  "returnParameters": {
                    "id": 13444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13443,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13458,
                        "src": "1627:4:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13442,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1627:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1626:6:62"
                  },
                  "scope": 13459,
                  "src": "1502:270:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 13460,
              "src": "154:1620:62",
              "usedErrors": []
            }
          ],
          "src": "32:1743:62"
        },
        "id": 62
      },
      "contracts/resolvers/OwnedResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/OwnedResolver.sol",
          "exportedSymbols": {
            "ABIResolver": [
              14143
            ],
            "AddrResolver": [
              14342
            ],
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "ContentHashResolver": [
              14423
            ],
            "Context": [
              2855
            ],
            "DNSResolver": [
              14899
            ],
            "ERC165": [
              3082
            ],
            "IABIResolver": [
              14922
            ],
            "IAddrResolver": [
              14940
            ],
            "IAddressResolver": [
              14961
            ],
            "IContentHashResolver": [
              14978
            ],
            "IDNSRecordResolver": [
              15011
            ],
            "IDNSZoneResolver": [
              15030
            ],
            "IERC165": [
              3094
            ],
            "IInterfaceResolver": [
              15065
            ],
            "INameResolver": [
              15082
            ],
            "IPubkeyResolver": [
              15103
            ],
            "ITextResolver": [
              15126
            ],
            "IVersionableResolver": [
              15142
            ],
            "InterfaceResolver": [
              15338
            ],
            "NameResolver": [
              15419
            ],
            "Ownable": [
              642
            ],
            "OwnedResolver": [
              13527
            ],
            "PubkeyResolver": [
              15526
            ],
            "RRUtils": [
              7059
            ],
            "ResolverBase": [
              13995
            ],
            "TextResolver": [
              15619
            ]
          },
          "id": 13528,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13461,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:63"
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 13462,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 643,
              "src": "25:52:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/ABIResolver.sol",
              "file": "./profiles/ABIResolver.sol",
              "id": 13463,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 14144,
              "src": "78:36:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/AddrResolver.sol",
              "file": "./profiles/AddrResolver.sol",
              "id": 13464,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 14343,
              "src": "115:37:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/ContentHashResolver.sol",
              "file": "./profiles/ContentHashResolver.sol",
              "id": 13465,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 14424,
              "src": "153:44:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/DNSResolver.sol",
              "file": "./profiles/DNSResolver.sol",
              "id": 13466,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 14900,
              "src": "198:36:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/InterfaceResolver.sol",
              "file": "./profiles/InterfaceResolver.sol",
              "id": 13467,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 15339,
              "src": "235:42:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/NameResolver.sol",
              "file": "./profiles/NameResolver.sol",
              "id": 13468,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 15420,
              "src": "278:37:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/PubkeyResolver.sol",
              "file": "./profiles/PubkeyResolver.sol",
              "id": 13469,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 15527,
              "src": "316:39:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/TextResolver.sol",
              "file": "./profiles/TextResolver.sol",
              "id": 13470,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13528,
              "sourceUnit": 15620,
              "src": "356:37:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 13472,
                    "name": "Ownable",
                    "nameLocations": [
                      "525:7:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "525:7:63"
                  },
                  "id": 13473,
                  "nodeType": "InheritanceSpecifier",
                  "src": "525:7:63"
                },
                {
                  "baseName": {
                    "id": 13474,
                    "name": "ABIResolver",
                    "nameLocations": [
                      "538:11:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14143,
                    "src": "538:11:63"
                  },
                  "id": 13475,
                  "nodeType": "InheritanceSpecifier",
                  "src": "538:11:63"
                },
                {
                  "baseName": {
                    "id": 13476,
                    "name": "AddrResolver",
                    "nameLocations": [
                      "555:12:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14342,
                    "src": "555:12:63"
                  },
                  "id": 13477,
                  "nodeType": "InheritanceSpecifier",
                  "src": "555:12:63"
                },
                {
                  "baseName": {
                    "id": 13478,
                    "name": "ContentHashResolver",
                    "nameLocations": [
                      "573:19:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14423,
                    "src": "573:19:63"
                  },
                  "id": 13479,
                  "nodeType": "InheritanceSpecifier",
                  "src": "573:19:63"
                },
                {
                  "baseName": {
                    "id": 13480,
                    "name": "DNSResolver",
                    "nameLocations": [
                      "598:11:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14899,
                    "src": "598:11:63"
                  },
                  "id": 13481,
                  "nodeType": "InheritanceSpecifier",
                  "src": "598:11:63"
                },
                {
                  "baseName": {
                    "id": 13482,
                    "name": "InterfaceResolver",
                    "nameLocations": [
                      "615:17:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15338,
                    "src": "615:17:63"
                  },
                  "id": 13483,
                  "nodeType": "InheritanceSpecifier",
                  "src": "615:17:63"
                },
                {
                  "baseName": {
                    "id": 13484,
                    "name": "NameResolver",
                    "nameLocations": [
                      "638:12:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15419,
                    "src": "638:12:63"
                  },
                  "id": 13485,
                  "nodeType": "InheritanceSpecifier",
                  "src": "638:12:63"
                },
                {
                  "baseName": {
                    "id": 13486,
                    "name": "PubkeyResolver",
                    "nameLocations": [
                      "656:14:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15526,
                    "src": "656:14:63"
                  },
                  "id": 13487,
                  "nodeType": "InheritanceSpecifier",
                  "src": "656:14:63"
                },
                {
                  "baseName": {
                    "id": 13488,
                    "name": "TextResolver",
                    "nameLocations": [
                      "676:12:63"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15619,
                    "src": "676:12:63"
                  },
                  "id": 13489,
                  "nodeType": "InheritanceSpecifier",
                  "src": "676:12:63"
                }
              ],
              "canonicalName": "OwnedResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 13471,
                "nodeType": "StructuredDocumentation",
                "src": "395:99:63",
                "text": " A simple resolver anyone can use; only allows the owner of a node to set its\n address."
              },
              "fullyImplemented": true,
              "id": 13527,
              "linearizedBaseContracts": [
                13527,
                15619,
                15526,
                15419,
                15338,
                14899,
                14423,
                14342,
                14143,
                13995,
                15142,
                3082,
                3094,
                15126,
                15103,
                15082,
                14961,
                14940,
                15065,
                15030,
                15011,
                14978,
                14922,
                642,
                2855
              ],
              "name": "OwnedResolver",
              "nameLocation": "504:13:63",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    13939
                  ],
                  "body": {
                    "id": 13503,
                    "nodeType": "Block",
                    "src": "764:45:63",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 13497,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "781:3:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 13498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "785:6:63",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "781:10:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 13499,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 570,
                              "src": "795:5:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 13500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "795:7:63",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "781:21:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13496,
                        "id": 13502,
                        "nodeType": "Return",
                        "src": "774:28:63"
                      }
                    ]
                  },
                  "id": 13504,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isAuthorised",
                  "nameLocation": "704:12:63",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13493,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "740:8:63"
                  },
                  "parameters": {
                    "id": 13492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13491,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13504,
                        "src": "717:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13490,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "717:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "716:9:63"
                  },
                  "returnParameters": {
                    "id": 13496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13495,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13504,
                        "src": "758:4:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13494,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "758:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "757:6:63"
                  },
                  "scope": 13527,
                  "src": "695:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    14142,
                    14309,
                    14422,
                    14777,
                    15337,
                    15418,
                    15525,
                    15618
                  ],
                  "body": {
                    "id": 13525,
                    "nodeType": "Block",
                    "src": "1180:60:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13522,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13506,
                              "src": "1221:11:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 13520,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1197:5:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_OwnedResolver_$13527_$",
                                "typeString": "type(contract super OwnedResolver)"
                              }
                            },
                            "id": 13521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1203:17:63",
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15618,
                            "src": "1197:23:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) view returns (bool)"
                            }
                          },
                          "id": 13523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1197:36:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13519,
                        "id": 13524,
                        "nodeType": "Return",
                        "src": "1190:43:63"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 13526,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "824:17:63",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13516,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 13508,
                        "name": "ABIResolver",
                        "nameLocations": [
                          "936:11:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14143,
                        "src": "936:11:63"
                      },
                      {
                        "id": 13509,
                        "name": "AddrResolver",
                        "nameLocations": [
                          "961:12:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14342,
                        "src": "961:12:63"
                      },
                      {
                        "id": 13510,
                        "name": "ContentHashResolver",
                        "nameLocations": [
                          "987:19:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14423,
                        "src": "987:19:63"
                      },
                      {
                        "id": 13511,
                        "name": "DNSResolver",
                        "nameLocations": [
                          "1020:11:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14899,
                        "src": "1020:11:63"
                      },
                      {
                        "id": 13512,
                        "name": "InterfaceResolver",
                        "nameLocations": [
                          "1045:17:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15338,
                        "src": "1045:17:63"
                      },
                      {
                        "id": 13513,
                        "name": "NameResolver",
                        "nameLocations": [
                          "1076:12:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15419,
                        "src": "1076:12:63"
                      },
                      {
                        "id": 13514,
                        "name": "PubkeyResolver",
                        "nameLocations": [
                          "1102:14:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15526,
                        "src": "1102:14:63"
                      },
                      {
                        "id": 13515,
                        "name": "TextResolver",
                        "nameLocations": [
                          "1130:12:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15619,
                        "src": "1130:12:63"
                      }
                    ],
                    "src": "914:238:63"
                  },
                  "parameters": {
                    "id": 13507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13506,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "849:11:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 13526,
                        "src": "842:18:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 13505,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "842:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "841:20:63"
                  },
                  "returnParameters": {
                    "id": 13519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13518,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13526,
                        "src": "1170:4:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13517,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1170:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1169:6:63"
                  },
                  "scope": 13527,
                  "src": "815:425:63",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 13528,
              "src": "495:747:63",
              "usedErrors": []
            }
          ],
          "src": "0:1243:63"
        },
        "id": 63
      },
      "contracts/resolvers/PublicResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/PublicResolver.sol",
          "exportedSymbols": {
            "ABIResolver": [
              14143
            ],
            "AddrResolver": [
              14342
            ],
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "ContentHashResolver": [
              14423
            ],
            "DNSResolver": [
              14899
            ],
            "ENS": [
              12157
            ],
            "ERC165": [
              3082
            ],
            "IABIResolver": [
              14922
            ],
            "IAddrResolver": [
              14940
            ],
            "IAddressResolver": [
              14961
            ],
            "IContentHashResolver": [
              14978
            ],
            "IDNSRecordResolver": [
              15011
            ],
            "IDNSZoneResolver": [
              15030
            ],
            "IERC165": [
              3094
            ],
            "IInterfaceResolver": [
              15065
            ],
            "IMulticallable": [
              13306
            ],
            "INameResolver": [
              15082
            ],
            "INameWrapper": [
              13547
            ],
            "IPubkeyResolver": [
              15103
            ],
            "ITextResolver": [
              15126
            ],
            "IVersionableResolver": [
              15142
            ],
            "InterfaceResolver": [
              15338
            ],
            "Multicallable": [
              13459
            ],
            "NameResolver": [
              15419
            ],
            "PubkeyResolver": [
              15526
            ],
            "PublicResolver": [
              13753
            ],
            "RRUtils": [
              7059
            ],
            "ResolverBase": [
              13995
            ],
            "TextResolver": [
              15619
            ]
          },
          "id": 13754,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13529,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".17",
                "<",
                "0.9",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:32:64"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../registry/ENS.sol",
              "id": 13530,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 12158,
              "src": "65:29:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/ABIResolver.sol",
              "file": "./profiles/ABIResolver.sol",
              "id": 13531,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 14144,
              "src": "95:36:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/AddrResolver.sol",
              "file": "./profiles/AddrResolver.sol",
              "id": 13532,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 14343,
              "src": "132:37:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/ContentHashResolver.sol",
              "file": "./profiles/ContentHashResolver.sol",
              "id": 13533,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 14424,
              "src": "170:44:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/DNSResolver.sol",
              "file": "./profiles/DNSResolver.sol",
              "id": 13534,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 14900,
              "src": "215:36:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/InterfaceResolver.sol",
              "file": "./profiles/InterfaceResolver.sol",
              "id": 13535,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 15339,
              "src": "252:42:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/NameResolver.sol",
              "file": "./profiles/NameResolver.sol",
              "id": 13536,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 15420,
              "src": "295:37:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/PubkeyResolver.sol",
              "file": "./profiles/PubkeyResolver.sol",
              "id": 13537,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 15527,
              "src": "333:39:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/TextResolver.sol",
              "file": "./profiles/TextResolver.sol",
              "id": 13538,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 15620,
              "src": "373:37:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/Multicallable.sol",
              "file": "./Multicallable.sol",
              "id": 13539,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13754,
              "sourceUnit": 13460,
              "src": "411:29:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "INameWrapper",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 13547,
              "linearizedBaseContracts": [
                13547
              ],
              "name": "INameWrapper",
              "nameLocation": "452:12:64",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "6352211e",
                  "id": 13546,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "480:7:64",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13541,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "496:2:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13546,
                        "src": "488:10:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13540,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "488:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "487:12:64"
                  },
                  "returnParameters": {
                    "id": 13545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13544,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13546,
                        "src": "523:7:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "523:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "522:9:64"
                  },
                  "scope": 13547,
                  "src": "471:61:64",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13754,
              "src": "442:92:64",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 13549,
                    "name": "Multicallable",
                    "nameLocations": [
                      "667:13:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13459,
                    "src": "667:13:64"
                  },
                  "id": 13550,
                  "nodeType": "InheritanceSpecifier",
                  "src": "667:13:64"
                },
                {
                  "baseName": {
                    "id": 13551,
                    "name": "ABIResolver",
                    "nameLocations": [
                      "686:11:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14143,
                    "src": "686:11:64"
                  },
                  "id": 13552,
                  "nodeType": "InheritanceSpecifier",
                  "src": "686:11:64"
                },
                {
                  "baseName": {
                    "id": 13553,
                    "name": "AddrResolver",
                    "nameLocations": [
                      "703:12:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14342,
                    "src": "703:12:64"
                  },
                  "id": 13554,
                  "nodeType": "InheritanceSpecifier",
                  "src": "703:12:64"
                },
                {
                  "baseName": {
                    "id": 13555,
                    "name": "ContentHashResolver",
                    "nameLocations": [
                      "721:19:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14423,
                    "src": "721:19:64"
                  },
                  "id": 13556,
                  "nodeType": "InheritanceSpecifier",
                  "src": "721:19:64"
                },
                {
                  "baseName": {
                    "id": 13557,
                    "name": "DNSResolver",
                    "nameLocations": [
                      "746:11:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14899,
                    "src": "746:11:64"
                  },
                  "id": 13558,
                  "nodeType": "InheritanceSpecifier",
                  "src": "746:11:64"
                },
                {
                  "baseName": {
                    "id": 13559,
                    "name": "InterfaceResolver",
                    "nameLocations": [
                      "763:17:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15338,
                    "src": "763:17:64"
                  },
                  "id": 13560,
                  "nodeType": "InheritanceSpecifier",
                  "src": "763:17:64"
                },
                {
                  "baseName": {
                    "id": 13561,
                    "name": "NameResolver",
                    "nameLocations": [
                      "786:12:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15419,
                    "src": "786:12:64"
                  },
                  "id": 13562,
                  "nodeType": "InheritanceSpecifier",
                  "src": "786:12:64"
                },
                {
                  "baseName": {
                    "id": 13563,
                    "name": "PubkeyResolver",
                    "nameLocations": [
                      "804:14:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15526,
                    "src": "804:14:64"
                  },
                  "id": 13564,
                  "nodeType": "InheritanceSpecifier",
                  "src": "804:14:64"
                },
                {
                  "baseName": {
                    "id": 13565,
                    "name": "TextResolver",
                    "nameLocations": [
                      "824:12:64"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15619,
                    "src": "824:12:64"
                  },
                  "id": 13566,
                  "nodeType": "InheritanceSpecifier",
                  "src": "824:12:64"
                }
              ],
              "canonicalName": "PublicResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 13548,
                "nodeType": "StructuredDocumentation",
                "src": "536:99:64",
                "text": " A simple resolver anyone can use; only allows the owner of a node to set its\n address."
              },
              "fullyImplemented": true,
              "id": 13753,
              "linearizedBaseContracts": [
                13753,
                15619,
                15526,
                15419,
                15338,
                14899,
                14423,
                14342,
                14143,
                13995,
                15142,
                13459,
                3082,
                3094,
                15126,
                15103,
                15082,
                14961,
                14940,
                15065,
                15030,
                15011,
                14978,
                14922,
                13306
              ],
              "name": "PublicResolver",
              "nameLocation": "645:14:64",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 13569,
                  "mutability": "immutable",
                  "name": "ens",
                  "nameLocation": "857:3:64",
                  "nodeType": "VariableDeclaration",
                  "scope": 13753,
                  "src": "843:17:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 13568,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13567,
                      "name": "ENS",
                      "nameLocations": [
                        "843:3:64"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "843:3:64"
                    },
                    "referencedDeclaration": 12157,
                    "src": "843:3:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13572,
                  "mutability": "immutable",
                  "name": "nameWrapper",
                  "nameLocation": "889:11:64",
                  "nodeType": "VariableDeclaration",
                  "scope": 13753,
                  "src": "866:34:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_INameWrapper_$13547",
                    "typeString": "contract INameWrapper"
                  },
                  "typeName": {
                    "id": 13571,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13570,
                      "name": "INameWrapper",
                      "nameLocations": [
                        "866:12:64"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 13547,
                      "src": "866:12:64"
                    },
                    "referencedDeclaration": 13547,
                    "src": "866:12:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_INameWrapper_$13547",
                      "typeString": "contract INameWrapper"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13574,
                  "mutability": "immutable",
                  "name": "trustedETHController",
                  "nameLocation": "924:20:64",
                  "nodeType": "VariableDeclaration",
                  "scope": 13753,
                  "src": "906:38:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13573,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "906:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13576,
                  "mutability": "immutable",
                  "name": "trustedReverseRegistrar",
                  "nameLocation": "968:23:64",
                  "nodeType": "VariableDeclaration",
                  "scope": 13753,
                  "src": "950:41:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13575,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "950:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 13577,
                    "nodeType": "StructuredDocumentation",
                    "src": "998:239:64",
                    "text": " A mapping of operators. An address that is authorised for an address\n may make any changes to the name that the owner could, but may not update\n the set of authorisations.\n (owner, operator) => approved"
                  },
                  "id": 13583,
                  "mutability": "mutable",
                  "name": "_operatorApprovals",
                  "nameLocation": "1295:18:64",
                  "nodeType": "VariableDeclaration",
                  "scope": 13753,
                  "src": "1242:71:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 13582,
                    "keyType": {
                      "id": 13578,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1250:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1242:44:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 13581,
                      "keyType": {
                        "id": 13579,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1269:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1261:24:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 13580,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1280:4:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
                  "id": 13591,
                  "name": "ApprovalForAll",
                  "nameLocation": "1378:14:64",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13585,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1418:5:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13591,
                        "src": "1402:21:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13584,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1402:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13587,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1449:8:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13591,
                        "src": "1433:24:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1433:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13589,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "1472:8:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13591,
                        "src": "1467:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13588,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1467:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1392:94:64"
                  },
                  "src": "1372:115:64"
                },
                {
                  "body": {
                    "id": 13620,
                    "nodeType": "Block",
                    "src": "1647:179:64",
                    "statements": [
                      {
                        "expression": {
                          "id": 13606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13604,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13569,
                            "src": "1657:3:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13605,
                            "name": "_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13594,
                            "src": "1663:4:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "1657:10:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 13607,
                        "nodeType": "ExpressionStatement",
                        "src": "1657:10:64"
                      },
                      {
                        "expression": {
                          "id": 13610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13608,
                            "name": "nameWrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13572,
                            "src": "1677:11:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapper_$13547",
                              "typeString": "contract INameWrapper"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13609,
                            "name": "wrapperAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13597,
                            "src": "1691:14:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapper_$13547",
                              "typeString": "contract INameWrapper"
                            }
                          },
                          "src": "1677:28:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapper_$13547",
                            "typeString": "contract INameWrapper"
                          }
                        },
                        "id": 13611,
                        "nodeType": "ExpressionStatement",
                        "src": "1677:28:64"
                      },
                      {
                        "expression": {
                          "id": 13614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13612,
                            "name": "trustedETHController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13574,
                            "src": "1715:20:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13613,
                            "name": "_trustedETHController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13599,
                            "src": "1738:21:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1715:44:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 13615,
                        "nodeType": "ExpressionStatement",
                        "src": "1715:44:64"
                      },
                      {
                        "expression": {
                          "id": 13618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13616,
                            "name": "trustedReverseRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13576,
                            "src": "1769:23:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13617,
                            "name": "_trustedReverseRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13601,
                            "src": "1795:24:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1769:50:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 13619,
                        "nodeType": "ExpressionStatement",
                        "src": "1769:50:64"
                      }
                    ]
                  },
                  "id": 13621,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13594,
                        "mutability": "mutable",
                        "name": "_ens",
                        "nameLocation": "1518:4:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13621,
                        "src": "1514:8:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 13593,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 13592,
                            "name": "ENS",
                            "nameLocations": [
                              "1514:3:64"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "1514:3:64"
                          },
                          "referencedDeclaration": 12157,
                          "src": "1514:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13597,
                        "mutability": "mutable",
                        "name": "wrapperAddress",
                        "nameLocation": "1545:14:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13621,
                        "src": "1532:27:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INameWrapper_$13547",
                          "typeString": "contract INameWrapper"
                        },
                        "typeName": {
                          "id": 13596,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 13595,
                            "name": "INameWrapper",
                            "nameLocations": [
                              "1532:12:64"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 13547,
                            "src": "1532:12:64"
                          },
                          "referencedDeclaration": 13547,
                          "src": "1532:12:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapper_$13547",
                            "typeString": "contract INameWrapper"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13599,
                        "mutability": "mutable",
                        "name": "_trustedETHController",
                        "nameLocation": "1577:21:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13621,
                        "src": "1569:29:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13598,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1569:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13601,
                        "mutability": "mutable",
                        "name": "_trustedReverseRegistrar",
                        "nameLocation": "1616:24:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13621,
                        "src": "1608:32:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13600,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1608:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1504:142:64"
                  },
                  "returnParameters": {
                    "id": 13603,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1647:0:64"
                  },
                  "scope": 13753,
                  "src": "1493:333:64",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13653,
                    "nodeType": "Block",
                    "src": "1963:250:64",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 13630,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1994:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 13631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1998:6:64",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "1994:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 13632,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13624,
                                "src": "2008:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1994:22:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66",
                              "id": 13634,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2030:43:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                "typeString": "literal_string \"ERC1155: setting approval status for self\""
                              },
                              "value": "ERC1155: setting approval status for self"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                "typeString": "literal_string \"ERC1155: setting approval status for self\""
                              }
                            ],
                            "id": 13629,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1973:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1973:110:64",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13636,
                        "nodeType": "ExpressionStatement",
                        "src": "1973:110:64"
                      },
                      {
                        "expression": {
                          "id": 13644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 13637,
                                "name": "_operatorApprovals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13583,
                                "src": "2094:18:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 13641,
                              "indexExpression": {
                                "expression": {
                                  "id": 13638,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2113:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 13639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2117:6:64",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2113:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2094:30:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 13642,
                            "indexExpression": {
                              "id": 13640,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13624,
                              "src": "2125:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2094:40:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13643,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13626,
                            "src": "2137:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2094:51:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13645,
                        "nodeType": "ExpressionStatement",
                        "src": "2094:51:64"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13647,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2175:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2179:6:64",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2175:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13649,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13624,
                              "src": "2187:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13650,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13626,
                              "src": "2197:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13646,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13591,
                            "src": "2160:14:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 13651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2160:46:64",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13652,
                        "nodeType": "EmitStatement",
                        "src": "2155:51:64"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13622,
                    "nodeType": "StructuredDocumentation",
                    "src": "1832:57:64",
                    "text": " @dev See {IERC1155-setApprovalForAll}."
                  },
                  "functionSelector": "a22cb465",
                  "id": 13654,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "1903:17:64",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13624,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1929:8:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13654,
                        "src": "1921:16:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13623,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1921:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13626,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "1944:8:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13654,
                        "src": "1939:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13625,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1939:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1920:33:64"
                  },
                  "returnParameters": {
                    "id": 13628,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1963:0:64"
                  },
                  "scope": 13753,
                  "src": "1894:319:64",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 13670,
                    "nodeType": "Block",
                    "src": "2396:61:64",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 13664,
                              "name": "_operatorApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13583,
                              "src": "2413:18:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 13666,
                            "indexExpression": {
                              "id": 13665,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13657,
                              "src": "2432:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2413:27:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 13668,
                          "indexExpression": {
                            "id": 13667,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13659,
                            "src": "2441:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2413:37:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13663,
                        "id": 13669,
                        "nodeType": "Return",
                        "src": "2406:44:64"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13655,
                    "nodeType": "StructuredDocumentation",
                    "src": "2219:56:64",
                    "text": " @dev See {IERC1155-isApprovedForAll}."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 13671,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "2289:16:64",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13657,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2314:7:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13671,
                        "src": "2306:15:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2306:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13659,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2331:8:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13671,
                        "src": "2323:16:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13658,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2323:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2305:35:64"
                  },
                  "returnParameters": {
                    "id": 13663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13662,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13671,
                        "src": "2386:4:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13661,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2386:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2385:6:64"
                  },
                  "scope": 13753,
                  "src": "2280:177:64",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13939
                  ],
                  "body": {
                    "id": 13728,
                    "nodeType": "Block",
                    "src": "2537:394:64",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 13682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 13679,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2564:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13680,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2568:6:64",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2564:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 13681,
                              "name": "trustedETHController",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13574,
                              "src": "2578:20:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2564:34:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 13686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 13683,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2614:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2618:6:64",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2614:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 13685,
                              "name": "trustedReverseRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13576,
                              "src": "2628:23:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2614:37:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2564:87:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13691,
                        "nodeType": "IfStatement",
                        "src": "2547:151:64",
                        "trueBody": {
                          "id": 13690,
                          "nodeType": "Block",
                          "src": "2662:36:64",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "74727565",
                                "id": 13688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2683:4:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 13678,
                              "id": 13689,
                              "nodeType": "Return",
                              "src": "2676:11:64"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          13693
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13693,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "2715:5:64",
                            "nodeType": "VariableDeclaration",
                            "scope": 13728,
                            "src": "2707:13:64",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 13692,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2707:7:64",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13698,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 13696,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13673,
                              "src": "2733:4:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 13694,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13569,
                              "src": "2723:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 13695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2727:5:64",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12126,
                            "src": "2723:9:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 13697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2723:15:64",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2707:31:64"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13699,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13693,
                            "src": "2752:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 13702,
                                "name": "nameWrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13572,
                                "src": "2769:11:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_INameWrapper_$13547",
                                  "typeString": "contract INameWrapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_INameWrapper_$13547",
                                  "typeString": "contract INameWrapper"
                                }
                              ],
                              "id": 13701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2761:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 13700,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2761:7:64",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2761:20:64",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2752:29:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13716,
                        "nodeType": "IfStatement",
                        "src": "2748:102:64",
                        "trueBody": {
                          "id": 13715,
                          "nodeType": "Block",
                          "src": "2783:67:64",
                          "statements": [
                            {
                              "expression": {
                                "id": 13713,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13705,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13693,
                                  "src": "2797:5:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 13710,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13673,
                                          "src": "2833:4:64",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 13709,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2825:7:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 13708,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2825:7:64",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 13711,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2825:13:64",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 13706,
                                      "name": "nameWrapper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13572,
                                      "src": "2805:11:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_INameWrapper_$13547",
                                        "typeString": "contract INameWrapper"
                                      }
                                    },
                                    "id": 13707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2817:7:64",
                                    "memberName": "ownerOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13546,
                                    "src": "2805:19:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view external returns (address)"
                                    }
                                  },
                                  "id": 13712,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2805:34:64",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2797:42:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13714,
                              "nodeType": "ExpressionStatement",
                              "src": "2797:42:64"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 13720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13717,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13693,
                              "src": "2866:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 13718,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2875:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2879:6:64",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2875:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2866:19:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 13722,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13693,
                                "src": "2906:5:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "expression": {
                                  "id": 13723,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2913:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 13724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2917:6:64",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2913:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 13721,
                              "name": "isApprovedForAll",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13671,
                              "src": "2889:16:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view returns (bool)"
                              }
                            },
                            "id": 13725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2889:35:64",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2866:58:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13678,
                        "id": 13727,
                        "nodeType": "Return",
                        "src": "2859:65:64"
                      }
                    ]
                  },
                  "id": 13729,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isAuthorised",
                  "nameLocation": "2472:12:64",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13675,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2513:8:64"
                  },
                  "parameters": {
                    "id": 13674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13673,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2493:4:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13729,
                        "src": "2485:12:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13672,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2485:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2484:14:64"
                  },
                  "returnParameters": {
                    "id": 13678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13677,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13729,
                        "src": "2531:4:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13676,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2531:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2530:6:64"
                  },
                  "scope": 13753,
                  "src": "2463:468:64",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    13458,
                    14142,
                    14309,
                    14422,
                    14777,
                    15337,
                    15418,
                    15525,
                    15618
                  ],
                  "body": {
                    "id": 13751,
                    "nodeType": "Block",
                    "src": "3313:60:64",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13748,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13731,
                              "src": "3354:11:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 13746,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3330:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_PublicResolver_$13753_$",
                                "typeString": "type(contract super PublicResolver)"
                              }
                            },
                            "id": 13747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3336:17:64",
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15618,
                            "src": "3330:23:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) view returns (bool)"
                            }
                          },
                          "id": 13749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3330:36:64",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13745,
                        "id": 13750,
                        "nodeType": "Return",
                        "src": "3323:43:64"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 13752,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "2946:17:64",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13742,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 13733,
                        "name": "Multicallable",
                        "nameLocations": [
                          "3042:13:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13459,
                        "src": "3042:13:64"
                      },
                      {
                        "id": 13734,
                        "name": "ABIResolver",
                        "nameLocations": [
                          "3069:11:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14143,
                        "src": "3069:11:64"
                      },
                      {
                        "id": 13735,
                        "name": "AddrResolver",
                        "nameLocations": [
                          "3094:12:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14342,
                        "src": "3094:12:64"
                      },
                      {
                        "id": 13736,
                        "name": "ContentHashResolver",
                        "nameLocations": [
                          "3120:19:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14423,
                        "src": "3120:19:64"
                      },
                      {
                        "id": 13737,
                        "name": "DNSResolver",
                        "nameLocations": [
                          "3153:11:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14899,
                        "src": "3153:11:64"
                      },
                      {
                        "id": 13738,
                        "name": "InterfaceResolver",
                        "nameLocations": [
                          "3178:17:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15338,
                        "src": "3178:17:64"
                      },
                      {
                        "id": 13739,
                        "name": "NameResolver",
                        "nameLocations": [
                          "3209:12:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15419,
                        "src": "3209:12:64"
                      },
                      {
                        "id": 13740,
                        "name": "PubkeyResolver",
                        "nameLocations": [
                          "3235:14:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15526,
                        "src": "3235:14:64"
                      },
                      {
                        "id": 13741,
                        "name": "TextResolver",
                        "nameLocations": [
                          "3263:12:64"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15619,
                        "src": "3263:12:64"
                      }
                    ],
                    "src": "3020:265:64"
                  },
                  "parameters": {
                    "id": 13732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13731,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "2971:11:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 13752,
                        "src": "2964:18:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 13730,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2964:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2963:20:64"
                  },
                  "returnParameters": {
                    "id": 13745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13744,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13752,
                        "src": "3303:4:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13743,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3303:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3302:6:64"
                  },
                  "scope": 13753,
                  "src": "2937:436:64",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 13754,
              "src": "636:2739:64",
              "usedErrors": []
            }
          ],
          "src": "31:3345:64"
        },
        "id": 64
      },
      "contracts/resolvers/Resolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/Resolver.sol",
          "exportedSymbols": {
            "ERC165": [
              3082
            ],
            "IABIResolver": [
              14922
            ],
            "IAddrResolver": [
              14940
            ],
            "IAddressResolver": [
              14961
            ],
            "IContentHashResolver": [
              14978
            ],
            "IDNSRecordResolver": [
              15011
            ],
            "IDNSZoneResolver": [
              15030
            ],
            "IERC165": [
              3094
            ],
            "IExtendedResolver": [
              15044
            ],
            "IInterfaceResolver": [
              15065
            ],
            "INameResolver": [
              15082
            ],
            "IPubkeyResolver": [
              15103
            ],
            "ITextResolver": [
              15126
            ],
            "IVersionableResolver": [
              15142
            ],
            "Resolver": [
              13920
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 13921,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13755,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:65"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "id": 13756,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 3095,
              "src": "57:65:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IABIResolver.sol",
              "file": "./profiles/IABIResolver.sol",
              "id": 13757,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 14923,
              "src": "123:37:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IAddressResolver.sol",
              "file": "./profiles/IAddressResolver.sol",
              "id": 13758,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 14962,
              "src": "161:41:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IAddrResolver.sol",
              "file": "./profiles/IAddrResolver.sol",
              "id": 13759,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 14941,
              "src": "203:38:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IContentHashResolver.sol",
              "file": "./profiles/IContentHashResolver.sol",
              "id": 13760,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 14979,
              "src": "242:45:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IDNSRecordResolver.sol",
              "file": "./profiles/IDNSRecordResolver.sol",
              "id": 13761,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 15012,
              "src": "288:43:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IDNSZoneResolver.sol",
              "file": "./profiles/IDNSZoneResolver.sol",
              "id": 13762,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 15031,
              "src": "332:41:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IInterfaceResolver.sol",
              "file": "./profiles/IInterfaceResolver.sol",
              "id": 13763,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 15066,
              "src": "374:43:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/INameResolver.sol",
              "file": "./profiles/INameResolver.sol",
              "id": 13764,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 15083,
              "src": "418:38:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IPubkeyResolver.sol",
              "file": "./profiles/IPubkeyResolver.sol",
              "id": 13765,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 15104,
              "src": "457:40:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/ITextResolver.sol",
              "file": "./profiles/ITextResolver.sol",
              "id": 13766,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 15127,
              "src": "498:38:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IExtendedResolver.sol",
              "file": "./profiles/IExtendedResolver.sol",
              "id": 13767,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13921,
              "sourceUnit": 15045,
              "src": "537:42:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 13769,
                    "name": "IERC165",
                    "nameLocations": [
                      "710:7:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3094,
                    "src": "710:7:65"
                  },
                  "id": 13770,
                  "nodeType": "InheritanceSpecifier",
                  "src": "710:7:65"
                },
                {
                  "baseName": {
                    "id": 13771,
                    "name": "IABIResolver",
                    "nameLocations": [
                      "723:12:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14922,
                    "src": "723:12:65"
                  },
                  "id": 13772,
                  "nodeType": "InheritanceSpecifier",
                  "src": "723:12:65"
                },
                {
                  "baseName": {
                    "id": 13773,
                    "name": "IAddressResolver",
                    "nameLocations": [
                      "741:16:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14961,
                    "src": "741:16:65"
                  },
                  "id": 13774,
                  "nodeType": "InheritanceSpecifier",
                  "src": "741:16:65"
                },
                {
                  "baseName": {
                    "id": 13775,
                    "name": "IAddrResolver",
                    "nameLocations": [
                      "763:13:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14940,
                    "src": "763:13:65"
                  },
                  "id": 13776,
                  "nodeType": "InheritanceSpecifier",
                  "src": "763:13:65"
                },
                {
                  "baseName": {
                    "id": 13777,
                    "name": "IContentHashResolver",
                    "nameLocations": [
                      "782:20:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14978,
                    "src": "782:20:65"
                  },
                  "id": 13778,
                  "nodeType": "InheritanceSpecifier",
                  "src": "782:20:65"
                },
                {
                  "baseName": {
                    "id": 13779,
                    "name": "IDNSRecordResolver",
                    "nameLocations": [
                      "808:18:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15011,
                    "src": "808:18:65"
                  },
                  "id": 13780,
                  "nodeType": "InheritanceSpecifier",
                  "src": "808:18:65"
                },
                {
                  "baseName": {
                    "id": 13781,
                    "name": "IDNSZoneResolver",
                    "nameLocations": [
                      "832:16:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15030,
                    "src": "832:16:65"
                  },
                  "id": 13782,
                  "nodeType": "InheritanceSpecifier",
                  "src": "832:16:65"
                },
                {
                  "baseName": {
                    "id": 13783,
                    "name": "IInterfaceResolver",
                    "nameLocations": [
                      "854:18:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15065,
                    "src": "854:18:65"
                  },
                  "id": 13784,
                  "nodeType": "InheritanceSpecifier",
                  "src": "854:18:65"
                },
                {
                  "baseName": {
                    "id": 13785,
                    "name": "INameResolver",
                    "nameLocations": [
                      "878:13:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15082,
                    "src": "878:13:65"
                  },
                  "id": 13786,
                  "nodeType": "InheritanceSpecifier",
                  "src": "878:13:65"
                },
                {
                  "baseName": {
                    "id": 13787,
                    "name": "IPubkeyResolver",
                    "nameLocations": [
                      "897:15:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15103,
                    "src": "897:15:65"
                  },
                  "id": 13788,
                  "nodeType": "InheritanceSpecifier",
                  "src": "897:15:65"
                },
                {
                  "baseName": {
                    "id": 13789,
                    "name": "ITextResolver",
                    "nameLocations": [
                      "918:13:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15126,
                    "src": "918:13:65"
                  },
                  "id": 13790,
                  "nodeType": "InheritanceSpecifier",
                  "src": "918:13:65"
                },
                {
                  "baseName": {
                    "id": 13791,
                    "name": "IExtendedResolver",
                    "nameLocations": [
                      "937:17:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15044,
                    "src": "937:17:65"
                  },
                  "id": 13792,
                  "nodeType": "InheritanceSpecifier",
                  "src": "937:17:65"
                }
              ],
              "canonicalName": "Resolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 13768,
                "nodeType": "StructuredDocumentation",
                "src": "581:102:65",
                "text": " A generic resolver interface which includes all the functions including the ones deprecated"
              },
              "fullyImplemented": false,
              "id": 13920,
              "linearizedBaseContracts": [
                13920,
                15044,
                15126,
                15103,
                15082,
                15065,
                15030,
                15011,
                14978,
                14940,
                14961,
                14922,
                3094
              ],
              "name": "Resolver",
              "nameLocation": "694:8:65",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc",
                  "id": 13798,
                  "name": "ContentChanged",
                  "nameLocation": "995:14:65",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13797,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13794,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1026:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13798,
                        "src": "1010:20:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13793,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1010:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13796,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "1040:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13798,
                        "src": "1032:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13795,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1032:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1009:36:65"
                  },
                  "src": "989:57:65"
                },
                {
                  "functionSelector": "623195b0",
                  "id": 13807,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setABI",
                  "nameLocation": "1061:6:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13805,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13800,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1085:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13807,
                        "src": "1077:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13799,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1077:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13802,
                        "mutability": "mutable",
                        "name": "contentType",
                        "nameLocation": "1107:11:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13807,
                        "src": "1099:19:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13801,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1099:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13804,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1143:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13807,
                        "src": "1128:19:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13803,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1128:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1067:86:65"
                  },
                  "returnParameters": {
                    "id": 13806,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1162:0:65"
                  },
                  "scope": 13920,
                  "src": "1052:111:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d5fa2b00",
                  "id": 13814,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAddr",
                  "nameLocation": "1178:7:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13812,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13809,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1194:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13814,
                        "src": "1186:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13808,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1186:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13811,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "1208:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13814,
                        "src": "1200:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13810,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1200:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1185:28:65"
                  },
                  "returnParameters": {
                    "id": 13813,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1222:0:65"
                  },
                  "scope": 13920,
                  "src": "1169:54:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "8b95dd71",
                  "id": 13823,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAddr",
                  "nameLocation": "1238:7:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13816,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1263:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13823,
                        "src": "1255:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13815,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1255:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13818,
                        "mutability": "mutable",
                        "name": "coinType",
                        "nameLocation": "1285:8:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13823,
                        "src": "1277:16:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13817,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1277:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13820,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1318:1:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13823,
                        "src": "1303:16:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13819,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1303:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1245:80:65"
                  },
                  "returnParameters": {
                    "id": 13822,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1334:0:65"
                  },
                  "scope": 13920,
                  "src": "1229:106:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "304e6ade",
                  "id": 13830,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setContenthash",
                  "nameLocation": "1350:14:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13825,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1373:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13830,
                        "src": "1365:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13824,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1365:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13827,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "1394:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13830,
                        "src": "1379:19:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13826,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1379:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1364:35:65"
                  },
                  "returnParameters": {
                    "id": 13829,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1408:0:65"
                  },
                  "scope": 13920,
                  "src": "1341:68:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "76196c88",
                  "id": 13837,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDnsrr",
                  "nameLocation": "1424:8:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13832,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1441:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13837,
                        "src": "1433:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13831,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1433:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13834,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1462:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13837,
                        "src": "1447:19:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13833,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1447:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1432:35:65"
                  },
                  "returnParameters": {
                    "id": 13836,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1476:0:65"
                  },
                  "scope": 13920,
                  "src": "1415:62:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "77372213",
                  "id": 13844,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setName",
                  "nameLocation": "1492:7:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13839,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1508:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13844,
                        "src": "1500:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13838,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1500:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13841,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "1530:5:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13844,
                        "src": "1514:21:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13840,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1514:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1499:37:65"
                  },
                  "returnParameters": {
                    "id": 13843,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1545:0:65"
                  },
                  "scope": 13920,
                  "src": "1483:63:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "29cd62ea",
                  "id": 13853,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPubkey",
                  "nameLocation": "1561:9:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13846,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1588:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13853,
                        "src": "1580:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13845,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1580:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13848,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "1610:1:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13853,
                        "src": "1602:9:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13847,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1602:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13850,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "1629:1:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13853,
                        "src": "1621:9:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13849,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1621:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1570:66:65"
                  },
                  "returnParameters": {
                    "id": 13852,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1645:0:65"
                  },
                  "scope": 13920,
                  "src": "1552:94:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "10f13a8c",
                  "id": 13862,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setText",
                  "nameLocation": "1661:7:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13855,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1686:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13862,
                        "src": "1678:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13854,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1678:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13857,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "1716:3:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13862,
                        "src": "1700:19:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13856,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1700:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13859,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1745:5:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13862,
                        "src": "1729:21:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13858,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1729:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1668:88:65"
                  },
                  "returnParameters": {
                    "id": 13861,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1765:0:65"
                  },
                  "scope": 13920,
                  "src": "1652:114:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "e59d895d",
                  "id": 13871,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setInterface",
                  "nameLocation": "1781:12:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13864,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1811:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13871,
                        "src": "1803:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13863,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1803:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13866,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1832:11:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13871,
                        "src": "1825:18:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 13865,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1825:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13868,
                        "mutability": "mutable",
                        "name": "implementer",
                        "nameLocation": "1861:11:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13871,
                        "src": "1853:19:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13867,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1853:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1793:85:65"
                  },
                  "returnParameters": {
                    "id": 13870,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1887:0:65"
                  },
                  "scope": 13920,
                  "src": "1772:116:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "ac9650d8",
                  "id": 13880,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multicall",
                  "nameLocation": "1903:9:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13875,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13874,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1930:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13880,
                        "src": "1913:21:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13872,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1913:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13873,
                          "nodeType": "ArrayTypeName",
                          "src": "1913:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1912:23:65"
                  },
                  "returnParameters": {
                    "id": 13879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13878,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "1985:7:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13880,
                        "src": "1970:22:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13876,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1970:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13877,
                          "nodeType": "ArrayTypeName",
                          "src": "1970:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1969:24:65"
                  },
                  "scope": 13920,
                  "src": "1894:100:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "e32954eb",
                  "id": 13891,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multicallWithNodeCheck",
                  "nameLocation": "2009:22:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13882,
                        "mutability": "mutable",
                        "name": "nodehash",
                        "nameLocation": "2040:8:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13891,
                        "src": "2032:16:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13881,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2032:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13885,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2067:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13891,
                        "src": "2050:21:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13883,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2050:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13884,
                          "nodeType": "ArrayTypeName",
                          "src": "2050:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2031:41:65"
                  },
                  "returnParameters": {
                    "id": 13890,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13889,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "2122:7:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13891,
                        "src": "2107:22:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13887,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2107:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 13888,
                          "nodeType": "ArrayTypeName",
                          "src": "2107:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2106:24:65"
                  },
                  "scope": 13920,
                  "src": "2000:131:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "2dff6941",
                  "id": 13898,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "content",
                  "nameLocation": "2177:7:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13894,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13893,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2193:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13898,
                        "src": "2185:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13892,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2185:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2184:14:65"
                  },
                  "returnParameters": {
                    "id": 13897,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13896,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13898,
                        "src": "2222:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13895,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2222:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2221:9:65"
                  },
                  "scope": 13920,
                  "src": "2168:63:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "e89401a1",
                  "id": 13905,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multihash",
                  "nameLocation": "2246:9:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13900,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2264:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13905,
                        "src": "2256:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13899,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2256:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2255:14:65"
                  },
                  "returnParameters": {
                    "id": 13904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13903,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13905,
                        "src": "2293:12:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13902,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2293:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2292:14:65"
                  },
                  "scope": 13920,
                  "src": "2237:70:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c3d014d6",
                  "id": 13912,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setContent",
                  "nameLocation": "2322:10:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13907,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2341:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13912,
                        "src": "2333:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13906,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2333:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13909,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "2355:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13912,
                        "src": "2347:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13908,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2347:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2332:28:65"
                  },
                  "returnParameters": {
                    "id": 13911,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2369:0:65"
                  },
                  "scope": 13920,
                  "src": "2313:57:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "aa4cb547",
                  "id": 13919,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMultihash",
                  "nameLocation": "2385:12:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13917,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13914,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2406:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13919,
                        "src": "2398:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13913,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2398:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13916,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "2427:4:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 13919,
                        "src": "2412:19:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13915,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2412:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2397:35:65"
                  },
                  "returnParameters": {
                    "id": 13918,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2441:0:65"
                  },
                  "scope": 13920,
                  "src": "2376:66:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13921,
              "src": "684:1760:65",
              "usedErrors": []
            }
          ],
          "src": "31:2414:65"
        },
        "id": 65
      },
      "contracts/resolvers/ResolverBase.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/ResolverBase.sol",
          "exportedSymbols": {
            "ERC165": [
              3082
            ],
            "IERC165": [
              3094
            ],
            "IVersionableResolver": [
              15142
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 13996,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13922,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:66"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 13923,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13996,
              "sourceUnit": 3083,
              "src": "58:64:66",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IVersionableResolver.sol",
              "file": "./profiles/IVersionableResolver.sol",
              "id": 13924,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13996,
              "sourceUnit": 15143,
              "src": "123:45:66",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 13925,
                    "name": "ERC165",
                    "nameLocations": [
                      "204:6:66"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3082,
                    "src": "204:6:66"
                  },
                  "id": 13926,
                  "nodeType": "InheritanceSpecifier",
                  "src": "204:6:66"
                },
                {
                  "baseName": {
                    "id": 13927,
                    "name": "IVersionableResolver",
                    "nameLocations": [
                      "212:20:66"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15142,
                    "src": "212:20:66"
                  },
                  "id": 13928,
                  "nodeType": "InheritanceSpecifier",
                  "src": "212:20:66"
                }
              ],
              "canonicalName": "ResolverBase",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 13995,
              "linearizedBaseContracts": [
                13995,
                15142,
                3082,
                3094
              ],
              "name": "ResolverBase",
              "nameLocation": "188:12:66",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    15141
                  ],
                  "constant": false,
                  "functionSelector": "d700ff33",
                  "id": 13932,
                  "mutability": "mutable",
                  "name": "recordVersions",
                  "nameLocation": "273:14:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 13995,
                  "src": "239:48:66",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                    "typeString": "mapping(bytes32 => uint64)"
                  },
                  "typeName": {
                    "id": 13931,
                    "keyType": {
                      "id": 13929,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "247:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "239:26:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                      "typeString": "mapping(bytes32 => uint64)"
                    },
                    "valueType": {
                      "id": 13930,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "258:6:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "id": 13939,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isAuthorised",
                  "nameLocation": "303:12:66",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13934,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "324:4:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 13939,
                        "src": "316:12:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13933,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "316:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "315:14:66"
                  },
                  "returnParameters": {
                    "id": 13938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13937,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13939,
                        "src": "361:4:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13936,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "361:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "360:6:66"
                  },
                  "scope": 13995,
                  "src": "294:73:66",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13950,
                    "nodeType": "Block",
                    "src": "407:55:66",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 13945,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13941,
                                  "src": "438:4:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 13944,
                                "name": "isAuthorised",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13939,
                                "src": "425:12:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (bytes32) view returns (bool)"
                                }
                              },
                              "id": 13946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "425:18:66",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13943,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "417:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 13947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "417:27:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13948,
                        "nodeType": "ExpressionStatement",
                        "src": "417:27:66"
                      },
                      {
                        "id": 13949,
                        "nodeType": "PlaceholderStatement",
                        "src": "454:1:66"
                      }
                    ]
                  },
                  "id": 13951,
                  "name": "authorised",
                  "nameLocation": "382:10:66",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 13942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13941,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "401:4:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 13951,
                        "src": "393:12:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13940,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "393:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "392:14:66"
                  },
                  "src": "373:89:66",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13972,
                    "nodeType": "Block",
                    "src": "730:96:66",
                    "statements": [
                      {
                        "expression": {
                          "id": 13963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "740:22:66",
                          "subExpression": {
                            "baseExpression": {
                              "id": 13960,
                              "name": "recordVersions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13932,
                              "src": "740:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                "typeString": "mapping(bytes32 => uint64)"
                              }
                            },
                            "id": 13962,
                            "indexExpression": {
                              "id": 13961,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13954,
                              "src": "755:4:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "740:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 13964,
                        "nodeType": "ExpressionStatement",
                        "src": "740:22:66"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 13966,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13954,
                              "src": "792:4:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13967,
                                "name": "recordVersions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13932,
                                "src": "798:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                  "typeString": "mapping(bytes32 => uint64)"
                                }
                              },
                              "id": 13969,
                              "indexExpression": {
                                "id": 13968,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13954,
                                "src": "813:4:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "798:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 13965,
                            "name": "VersionChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15134,
                            "src": "777:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,uint64)"
                            }
                          },
                          "id": 13970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "777:42:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13971,
                        "nodeType": "EmitStatement",
                        "src": "772:47:66"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13952,
                    "nodeType": "StructuredDocumentation",
                    "src": "468:189:66",
                    "text": " Increments the record version associated with an ENS node.\n May only be called by the owner of that node in the ENS registry.\n @param node The node to update."
                  },
                  "functionSelector": "3603d758",
                  "id": 13973,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 13957,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13954,
                          "src": "724:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 13958,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 13956,
                        "name": "authorised",
                        "nameLocations": [
                          "713:10:66"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "713:10:66"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "713:16:66"
                    }
                  ],
                  "name": "clearRecords",
                  "nameLocation": "671:12:66",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13954,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "692:4:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 13973,
                        "src": "684:12:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13953,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "684:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "683:14:66"
                  },
                  "returnParameters": {
                    "id": 13959,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "730:0:66"
                  },
                  "scope": 13995,
                  "src": "662:164:66",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3081
                  ],
                  "body": {
                    "id": 13993,
                    "nodeType": "Block",
                    "src": "967:141:66",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 13986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13981,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13975,
                              "src": "996:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13983,
                                    "name": "IVersionableResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15142,
                                    "src": "1016:20:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IVersionableResolver_$15142_$",
                                      "typeString": "type(contract IVersionableResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IVersionableResolver_$15142_$",
                                      "typeString": "type(contract IVersionableResolver)"
                                    }
                                  ],
                                  "id": 13982,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1011:4:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1011:26:66",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IVersionableResolver_$15142",
                                  "typeString": "type(contract IVersionableResolver)"
                                }
                              },
                              "id": 13985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1038:11:66",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1011:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "996:53:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 13989,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13975,
                                "src": "1089:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 13987,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1065:5:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ResolverBase_$13995_$",
                                  "typeString": "type(contract super ResolverBase)"
                                }
                              },
                              "id": 13988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1071:17:66",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3081,
                              "src": "1065:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 13990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1065:36:66",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "996:105:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13980,
                        "id": 13992,
                        "nodeType": "Return",
                        "src": "977:124:66"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 13994,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "841:17:66",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13977,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "931:8:66"
                  },
                  "parameters": {
                    "id": 13976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13975,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "866:11:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 13994,
                        "src": "859:18:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 13974,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "859:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "858:20:66"
                  },
                  "returnParameters": {
                    "id": 13980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13979,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13994,
                        "src": "957:4:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13978,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "957:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "956:6:66"
                  },
                  "scope": 13995,
                  "src": "832:276:66",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 13996,
              "src": "170:940:66",
              "usedErrors": []
            }
          ],
          "src": "32:1079:66"
        },
        "id": 66
      },
      "contracts/resolvers/profiles/ABIResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/ABIResolver.sol",
          "exportedSymbols": {
            "ABIResolver": [
              14143
            ],
            "ERC165": [
              3082
            ],
            "IABIResolver": [
              14922
            ],
            "IERC165": [
              3094
            ],
            "IVersionableResolver": [
              15142
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 14144,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13997,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:67"
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IABIResolver.sol",
              "file": "./IABIResolver.sol",
              "id": 13998,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14144,
              "sourceUnit": 14923,
              "src": "58:28:67",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 13999,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14144,
              "sourceUnit": 13996,
              "src": "87:29:67",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14000,
                    "name": "IABIResolver",
                    "nameLocations": [
                      "151:12:67"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14922,
                    "src": "151:12:67"
                  },
                  "id": 14001,
                  "nodeType": "InheritanceSpecifier",
                  "src": "151:12:67"
                },
                {
                  "baseName": {
                    "id": 14002,
                    "name": "ResolverBase",
                    "nameLocations": [
                      "165:12:67"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13995,
                    "src": "165:12:67"
                  },
                  "id": 14003,
                  "nodeType": "InheritanceSpecifier",
                  "src": "165:12:67"
                }
              ],
              "canonicalName": "ABIResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 14143,
              "linearizedBaseContracts": [
                14143,
                13995,
                15142,
                3082,
                3094,
                14922
              ],
              "name": "ABIResolver",
              "nameLocation": "136:11:67",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 14011,
                  "mutability": "mutable",
                  "name": "versionable_abis",
                  "nameLocation": "249:16:67",
                  "nodeType": "VariableDeclaration",
                  "scope": 14143,
                  "src": "184:81:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))"
                  },
                  "typeName": {
                    "id": 14010,
                    "keyType": {
                      "id": 14004,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "192:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "184:64:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))"
                    },
                    "valueType": {
                      "id": 14009,
                      "keyType": {
                        "id": 14005,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "210:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "202:45:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$",
                        "typeString": "mapping(bytes32 => mapping(uint256 => bytes))"
                      },
                      "valueType": {
                        "id": 14008,
                        "keyType": {
                          "id": 14006,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "229:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "221:25:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                          "typeString": "mapping(uint256 => bytes)"
                        },
                        "valueType": {
                          "id": 14007,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "240:5:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14053,
                    "nodeType": "Block",
                    "src": "704:228:67",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14030,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 14027,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 14025,
                                            "name": "contentType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14016,
                                            "src": "769:11:67",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "hexValue": "31",
                                            "id": 14026,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "783:1:67",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "769:15:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 14028,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "768:17:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "id": 14029,
                                      "name": "contentType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14016,
                                      "src": "788:11:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "768:31:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 14031,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "767:33:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 14032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "804:1:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "767:38:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14024,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "759:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 14034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "759:47:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14035,
                        "nodeType": "ExpressionStatement",
                        "src": "759:47:67"
                      },
                      {
                        "expression": {
                          "id": 14046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 14036,
                                  "name": "versionable_abis",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14011,
                                  "src": "817:16:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$_$",
                                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes storage ref)))"
                                  }
                                },
                                "id": 14042,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 14037,
                                    "name": "recordVersions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13932,
                                    "src": "834:14:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                      "typeString": "mapping(bytes32 => uint64)"
                                    }
                                  },
                                  "id": 14039,
                                  "indexExpression": {
                                    "id": 14038,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14014,
                                    "src": "849:4:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "834:20:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "817:38:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint256 => bytes storage ref))"
                                }
                              },
                              "id": 14043,
                              "indexExpression": {
                                "id": 14040,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14014,
                                "src": "856:4:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "817:44:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                "typeString": "mapping(uint256 => bytes storage ref)"
                              }
                            },
                            "id": 14044,
                            "indexExpression": {
                              "id": 14041,
                              "name": "contentType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14016,
                              "src": "862:11:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "817:57:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14045,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14018,
                            "src": "877:4:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "src": "817:64:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 14047,
                        "nodeType": "ExpressionStatement",
                        "src": "817:64:67"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 14049,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14014,
                              "src": "907:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 14050,
                              "name": "contentType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14016,
                              "src": "913:11:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14048,
                            "name": "ABIChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14909,
                            "src": "896:10:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 14051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "896:29:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14052,
                        "nodeType": "EmitStatement",
                        "src": "891:34:67"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14012,
                    "nodeType": "StructuredDocumentation",
                    "src": "272:291:67",
                    "text": " Sets the ABI associated with an ENS node.\n Nodes may have one ABI of each content type. To remove an ABI, set it to\n the empty string.\n @param node The node to update.\n @param contentType The content type of the ABI\n @param data The ABI data."
                  },
                  "functionSelector": "623195b0",
                  "id": 14054,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14021,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14014,
                          "src": "698:4:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 14022,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14020,
                        "name": "authorised",
                        "nameLocations": [
                          "687:10:67"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "687:10:67"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "687:16:67"
                    }
                  ],
                  "name": "setABI",
                  "nameLocation": "577:6:67",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14014,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "601:4:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 14054,
                        "src": "593:12:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14013,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "593:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14016,
                        "mutability": "mutable",
                        "name": "contentType",
                        "nameLocation": "623:11:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 14054,
                        "src": "615:19:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14015,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "615:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14018,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "659:4:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 14054,
                        "src": "644:19:67",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14017,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "644:5:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "583:86:67"
                  },
                  "returnParameters": {
                    "id": 14023,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "704:0:67"
                  },
                  "scope": 14143,
                  "src": "568:364:67",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    14921
                  ],
                  "body": {
                    "id": 14120,
                    "nodeType": "Block",
                    "src": "1409:509:67",
                    "statements": [
                      {
                        "assignments": [
                          14070
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14070,
                            "mutability": "mutable",
                            "name": "abiset",
                            "nameLocation": "1453:6:67",
                            "nodeType": "VariableDeclaration",
                            "scope": 14120,
                            "src": "1419:40:67",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                              "typeString": "mapping(uint256 => bytes)"
                            },
                            "typeName": {
                              "id": 14069,
                              "keyType": {
                                "id": 14067,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1427:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Mapping",
                              "src": "1419:25:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                "typeString": "mapping(uint256 => bytes)"
                              },
                              "valueType": {
                                "id": 14068,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "1438:5:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14078,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 14071,
                              "name": "versionable_abis",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14011,
                              "src": "1462:16:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$_$",
                                "typeString": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes storage ref)))"
                              }
                            },
                            "id": 14075,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 14072,
                                "name": "recordVersions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13932,
                                "src": "1492:14:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                  "typeString": "mapping(bytes32 => uint64)"
                                }
                              },
                              "id": 14074,
                              "indexExpression": {
                                "id": 14073,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14057,
                                "src": "1507:4:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1492:20:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1462:60:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$",
                              "typeString": "mapping(bytes32 => mapping(uint256 => bytes storage ref))"
                            }
                          },
                          "id": 14077,
                          "indexExpression": {
                            "id": 14076,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14057,
                            "src": "1523:4:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1462:66:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                            "typeString": "mapping(uint256 => bytes storage ref)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1419:109:67"
                      },
                      {
                        "body": {
                          "id": 14111,
                          "nodeType": "Block",
                          "src": "1663:217:67",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14092,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 14090,
                                          "name": "contentType",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14080,
                                          "src": "1699:11:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&",
                                        "rightExpression": {
                                          "id": 14091,
                                          "name": "contentTypes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14059,
                                          "src": "1713:12:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1699:26:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 14093,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1698:28:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 14094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1730:1:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "1698:33:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14101,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 14096,
                                        "name": "abiset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14070,
                                        "src": "1751:6:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                          "typeString": "mapping(uint256 => bytes storage ref)"
                                        }
                                      },
                                      "id": 14098,
                                      "indexExpression": {
                                        "id": 14097,
                                        "name": "contentType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14080,
                                        "src": "1758:11:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1751:19:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage",
                                        "typeString": "bytes storage ref"
                                      }
                                    },
                                    "id": 14099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1771:6:67",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "1751:26:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 14100,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1780:1:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "1751:30:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1698:83:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 14110,
                              "nodeType": "IfStatement",
                              "src": "1677:193:67",
                              "trueBody": {
                                "id": 14109,
                                "nodeType": "Block",
                                "src": "1796:74:67",
                                "statements": [
                                  {
                                    "expression": {
                                      "components": [
                                        {
                                          "id": 14103,
                                          "name": "contentType",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14080,
                                          "src": "1822:11:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "baseExpression": {
                                            "id": 14104,
                                            "name": "abiset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14070,
                                            "src": "1835:6:67",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                              "typeString": "mapping(uint256 => bytes storage ref)"
                                            }
                                          },
                                          "id": 14106,
                                          "indexExpression": {
                                            "id": 14105,
                                            "name": "contentType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14080,
                                            "src": "1842:11:67",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "1835:19:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage",
                                            "typeString": "bytes storage ref"
                                          }
                                        }
                                      ],
                                      "id": 14107,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1821:34:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_storage_$",
                                        "typeString": "tuple(uint256,bytes storage ref)"
                                      }
                                    },
                                    "functionReturnParameters": 14066,
                                    "id": 14108,
                                    "nodeType": "Return",
                                    "src": "1814:41:67"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14083,
                            "name": "contentType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14080,
                            "src": "1594:11:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 14084,
                            "name": "contentTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14059,
                            "src": "1609:12:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1594:27:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14112,
                        "initializationExpression": {
                          "assignments": [
                            14080
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14080,
                              "mutability": "mutable",
                              "name": "contentType",
                              "nameLocation": "1565:11:67",
                              "nodeType": "VariableDeclaration",
                              "scope": 14112,
                              "src": "1557:19:67",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 14079,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1557:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 14082,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 14081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1579:1:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1557:23:67"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 14088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 14086,
                              "name": "contentType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14080,
                              "src": "1635:11:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "<<=",
                            "rightHandSide": {
                              "hexValue": "31",
                              "id": 14087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1651:1:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1635:17:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14089,
                          "nodeType": "ExpressionStatement",
                          "src": "1635:17:67"
                        },
                        "nodeType": "ForStatement",
                        "src": "1539:341:67"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "30",
                              "id": 14113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1898:1:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "",
                                  "id": 14116,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1907:2:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  }
                                ],
                                "id": 14115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1901:5:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 14114,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1901:5:67",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 14117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1901:9:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 14118,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1897:14:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 14066,
                        "id": 14119,
                        "nodeType": "Return",
                        "src": "1890:21:67"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14055,
                    "nodeType": "StructuredDocumentation",
                    "src": "938:310:67",
                    "text": " Returns the ABI associated with an ENS node.\n Defined in EIP205.\n @param node The ENS node to query\n @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n @return contentType The content type of the return value\n @return data The ABI data"
                  },
                  "functionSelector": "2203ab56",
                  "id": 14121,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ABI",
                  "nameLocation": "1262:3:67",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14061,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1356:8:67"
                  },
                  "parameters": {
                    "id": 14060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14057,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1274:4:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 14121,
                        "src": "1266:12:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14056,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1266:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14059,
                        "mutability": "mutable",
                        "name": "contentTypes",
                        "nameLocation": "1288:12:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 14121,
                        "src": "1280:20:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14058,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1280:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1265:36:67"
                  },
                  "returnParameters": {
                    "id": 14066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14063,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14121,
                        "src": "1382:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14062,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1382:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14065,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14121,
                        "src": "1391:12:67",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14064,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1391:5:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1381:23:67"
                  },
                  "scope": 14143,
                  "src": "1253:665:67",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13994
                  ],
                  "body": {
                    "id": 14141,
                    "nodeType": "Block",
                    "src": "2059:133:67",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 14134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 14129,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14123,
                              "src": "2088:11:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14131,
                                    "name": "IABIResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14922,
                                    "src": "2108:12:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IABIResolver_$14922_$",
                                      "typeString": "type(contract IABIResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IABIResolver_$14922_$",
                                      "typeString": "type(contract IABIResolver)"
                                    }
                                  ],
                                  "id": 14130,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2103:4:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 14132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2103:18:67",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IABIResolver_$14922",
                                  "typeString": "type(contract IABIResolver)"
                                }
                              },
                              "id": 14133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2122:11:67",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "2103:30:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2088:45:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 14137,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14123,
                                "src": "2173:11:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 14135,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2149:5:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ABIResolver_$14143_$",
                                  "typeString": "type(contract super ABIResolver)"
                                }
                              },
                              "id": 14136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2155:17:67",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13994,
                              "src": "2149:23:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 14138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2149:36:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2088:97:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 14128,
                        "id": 14140,
                        "nodeType": "Return",
                        "src": "2069:116:67"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 14142,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1933:17:67",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14125,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2023:8:67"
                  },
                  "parameters": {
                    "id": 14124,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14123,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1958:11:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 14142,
                        "src": "1951:18:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 14122,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1951:6:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1950:20:67"
                  },
                  "returnParameters": {
                    "id": 14128,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14127,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14142,
                        "src": "2049:4:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14126,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2049:4:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2048:6:67"
                  },
                  "scope": 14143,
                  "src": "1924:268:67",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 14144,
              "src": "118:2076:67",
              "usedErrors": []
            }
          ],
          "src": "32:2163:67"
        },
        "id": 67
      },
      "contracts/resolvers/profiles/AddrResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/AddrResolver.sol",
          "exportedSymbols": {
            "AddrResolver": [
              14342
            ],
            "ERC165": [
              3082
            ],
            "IAddrResolver": [
              14940
            ],
            "IAddressResolver": [
              14961
            ],
            "IERC165": [
              3094
            ],
            "IVersionableResolver": [
              15142
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 14343,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14145,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:68"
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 14146,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14343,
              "sourceUnit": 13996,
              "src": "58:29:68",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IAddrResolver.sol",
              "file": "./IAddrResolver.sol",
              "id": 14147,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14343,
              "sourceUnit": 14941,
              "src": "88:29:68",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IAddressResolver.sol",
              "file": "./IAddressResolver.sol",
              "id": 14148,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14343,
              "sourceUnit": 14962,
              "src": "118:32:68",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14149,
                    "name": "IAddrResolver",
                    "nameLocations": [
                      "190:13:68"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14940,
                    "src": "190:13:68"
                  },
                  "id": 14150,
                  "nodeType": "InheritanceSpecifier",
                  "src": "190:13:68"
                },
                {
                  "baseName": {
                    "id": 14151,
                    "name": "IAddressResolver",
                    "nameLocations": [
                      "209:16:68"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14961,
                    "src": "209:16:68"
                  },
                  "id": 14152,
                  "nodeType": "InheritanceSpecifier",
                  "src": "209:16:68"
                },
                {
                  "baseName": {
                    "id": 14153,
                    "name": "ResolverBase",
                    "nameLocations": [
                      "231:12:68"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13995,
                    "src": "231:12:68"
                  },
                  "id": 14154,
                  "nodeType": "InheritanceSpecifier",
                  "src": "231:12:68"
                }
              ],
              "canonicalName": "AddrResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 14342,
              "linearizedBaseContracts": [
                14342,
                13995,
                15142,
                3082,
                3094,
                14961,
                14940
              ],
              "name": "AddrResolver",
              "nameLocation": "170:12:68",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 14157,
                  "mutability": "constant",
                  "name": "COIN_TYPE_ETH",
                  "nameLocation": "275:13:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 14342,
                  "src": "250:43:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14155,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "250:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3630",
                    "id": 14156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "291:2:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_60_by_1",
                      "typeString": "int_const 60"
                    },
                    "value": "60"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 14165,
                  "mutability": "mutable",
                  "name": "versionable_addresses",
                  "nameLocation": "365:21:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 14342,
                  "src": "300:86:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))"
                  },
                  "typeName": {
                    "id": 14164,
                    "keyType": {
                      "id": 14158,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "308:6:68",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "300:64:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes)))"
                    },
                    "valueType": {
                      "id": 14163,
                      "keyType": {
                        "id": 14159,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "326:7:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "318:45:68",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$",
                        "typeString": "mapping(bytes32 => mapping(uint256 => bytes))"
                      },
                      "valueType": {
                        "id": 14162,
                        "keyType": {
                          "id": 14160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "345:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "337:25:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                          "typeString": "mapping(uint256 => bytes)"
                        },
                        "valueType": {
                          "id": 14161,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "356:5:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14184,
                    "nodeType": "Block",
                    "src": "714:64:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14177,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14168,
                              "src": "732:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 14178,
                              "name": "COIN_TYPE_ETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14157,
                              "src": "738:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 14180,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14170,
                                  "src": "768:1:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 14179,
                                "name": "addressToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14341,
                                "src": "753:14:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (address) pure returns (bytes memory)"
                                }
                              },
                              "id": 14181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "753:17:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14176,
                            "name": "setAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14260,
                            "src": "724:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,uint256,bytes memory)"
                            }
                          },
                          "id": 14182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "724:47:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14183,
                        "nodeType": "ExpressionStatement",
                        "src": "724:47:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14166,
                    "nodeType": "StructuredDocumentation",
                    "src": "393:212:68",
                    "text": " Sets the address associated with an ENS node.\n May only be called by the owner of that node in the ENS registry.\n @param node The node to update.\n @param a The address to set."
                  },
                  "functionSelector": "d5fa2b00",
                  "id": 14185,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14173,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14168,
                          "src": "704:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 14174,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14172,
                        "name": "authorised",
                        "nameLocations": [
                          "693:10:68"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "693:10:68"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "693:16:68"
                    }
                  ],
                  "name": "setAddr",
                  "nameLocation": "619:7:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14168,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "635:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14185,
                        "src": "627:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14167,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "627:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14170,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "649:1:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14185,
                        "src": "641:9:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "641:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "626:25:68"
                  },
                  "returnParameters": {
                    "id": 14175,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "714:0:68"
                  },
                  "scope": 14342,
                  "src": "610:168:68",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    14939
                  ],
                  "body": {
                    "id": 14216,
                    "nodeType": "Block",
                    "src": "1064:163:68",
                    "statements": [
                      {
                        "assignments": [
                          14195
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14195,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "1087:1:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 14216,
                            "src": "1074:14:68",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 14194,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1074:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14200,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14197,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14188,
                              "src": "1096:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 14198,
                              "name": "COIN_TYPE_ETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14157,
                              "src": "1102:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14196,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              14217,
                              14281
                            ],
                            "referencedDeclaration": 14281,
                            "src": "1091:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes32,uint256) view returns (bytes memory)"
                            }
                          },
                          "id": 14199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1091:25:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1074:42:68"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 14201,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14195,
                              "src": "1130:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 14202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1132:6:68",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1130:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 14203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1142:1:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1130:13:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14211,
                        "nodeType": "IfStatement",
                        "src": "1126:61:68",
                        "trueBody": {
                          "id": 14210,
                          "nodeType": "Block",
                          "src": "1145:42:68",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 14207,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1174:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 14206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1166:8:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_payable_$",
                                    "typeString": "type(address payable)"
                                  },
                                  "typeName": {
                                    "id": 14205,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1166:8:68",
                                    "stateMutability": "payable",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 14208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1166:10:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 14193,
                              "id": 14209,
                              "nodeType": "Return",
                              "src": "1159:17:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14213,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14195,
                              "src": "1218:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14212,
                            "name": "bytesToAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14325,
                            "src": "1203:14:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_payable_$",
                              "typeString": "function (bytes memory) pure returns (address payable)"
                            }
                          },
                          "id": 14214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1203:17:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 14193,
                        "id": 14215,
                        "nodeType": "Return",
                        "src": "1196:24:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14186,
                    "nodeType": "StructuredDocumentation",
                    "src": "784:148:68",
                    "text": " Returns the address associated with an ENS node.\n @param node The ENS node to query.\n @return The associated address."
                  },
                  "functionSelector": "3b3b57de",
                  "id": 14217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addr",
                  "nameLocation": "946:4:68",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14190,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1017:8:68"
                  },
                  "parameters": {
                    "id": 14189,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14188,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "959:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14217,
                        "src": "951:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14187,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "951:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "950:14:68"
                  },
                  "returnParameters": {
                    "id": 14193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14192,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14217,
                        "src": "1043:15:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 14191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1043:15:68",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1042:17:68"
                  },
                  "scope": 14342,
                  "src": "937:290:68",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14259,
                    "nodeType": "Block",
                    "src": "1360:234:68",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 14230,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14219,
                              "src": "1390:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 14231,
                              "name": "coinType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14221,
                              "src": "1396:8:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 14232,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14223,
                              "src": "1406:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14229,
                            "name": "AddressChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14951,
                            "src": "1375:14:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,uint256,bytes memory)"
                            }
                          },
                          "id": 14233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1375:33:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14234,
                        "nodeType": "EmitStatement",
                        "src": "1370:38:68"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14235,
                            "name": "coinType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14221,
                            "src": "1422:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 14236,
                            "name": "COIN_TYPE_ETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14157,
                            "src": "1434:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1422:25:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14246,
                        "nodeType": "IfStatement",
                        "src": "1418:97:68",
                        "trueBody": {
                          "id": 14245,
                          "nodeType": "Block",
                          "src": "1449:66:68",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 14239,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14219,
                                    "src": "1480:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 14241,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14223,
                                        "src": "1501:1:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 14240,
                                      "name": "bytesToAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14325,
                                      "src": "1486:14:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_payable_$",
                                        "typeString": "function (bytes memory) pure returns (address payable)"
                                      }
                                    },
                                    "id": 14242,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1486:17:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 14238,
                                  "name": "AddrChanged",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14931,
                                  "src": "1468:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address)"
                                  }
                                },
                                "id": 14243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1468:36:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14244,
                              "nodeType": "EmitStatement",
                              "src": "1463:41:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 14257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 14247,
                                  "name": "versionable_addresses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14165,
                                  "src": "1524:21:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$_$",
                                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes storage ref)))"
                                  }
                                },
                                "id": 14253,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 14248,
                                    "name": "recordVersions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13932,
                                    "src": "1546:14:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                      "typeString": "mapping(bytes32 => uint64)"
                                    }
                                  },
                                  "id": 14250,
                                  "indexExpression": {
                                    "id": 14249,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14219,
                                    "src": "1561:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1546:20:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1524:43:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint256 => bytes storage ref))"
                                }
                              },
                              "id": 14254,
                              "indexExpression": {
                                "id": 14251,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14219,
                                "src": "1568:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1524:49:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                "typeString": "mapping(uint256 => bytes storage ref)"
                              }
                            },
                            "id": 14255,
                            "indexExpression": {
                              "id": 14252,
                              "name": "coinType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14221,
                              "src": "1574:8:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1524:59:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14256,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14223,
                            "src": "1586:1:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "1524:63:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 14258,
                        "nodeType": "ExpressionStatement",
                        "src": "1524:63:68"
                      }
                    ]
                  },
                  "functionSelector": "8b95dd71",
                  "id": 14260,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14226,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14219,
                          "src": "1354:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 14227,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14225,
                        "name": "authorised",
                        "nameLocations": [
                          "1343:10:68"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "1343:10:68"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1343:16:68"
                    }
                  ],
                  "name": "setAddr",
                  "nameLocation": "1242:7:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14224,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14219,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1267:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14260,
                        "src": "1259:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14218,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1259:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14221,
                        "mutability": "mutable",
                        "name": "coinType",
                        "nameLocation": "1289:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14260,
                        "src": "1281:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1281:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14223,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1320:1:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14260,
                        "src": "1307:14:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14222,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1307:5:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1249:78:68"
                  },
                  "returnParameters": {
                    "id": 14228,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1360:0:68"
                  },
                  "scope": 14342,
                  "src": "1233:361:68",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    14960
                  ],
                  "body": {
                    "id": 14280,
                    "nodeType": "Block",
                    "src": "1742:83:68",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 14270,
                                "name": "versionable_addresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14165,
                                "src": "1759:21:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$_$",
                                  "typeString": "mapping(uint64 => mapping(bytes32 => mapping(uint256 => bytes storage ref)))"
                                }
                              },
                              "id": 14274,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 14271,
                                  "name": "recordVersions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13932,
                                  "src": "1781:14:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                    "typeString": "mapping(bytes32 => uint64)"
                                  }
                                },
                                "id": 14273,
                                "indexExpression": {
                                  "id": 14272,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14262,
                                  "src": "1796:4:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1781:20:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1759:43:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_bytes_storage_$_$",
                                "typeString": "mapping(bytes32 => mapping(uint256 => bytes storage ref))"
                              }
                            },
                            "id": 14276,
                            "indexExpression": {
                              "id": 14275,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14262,
                              "src": "1803:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1759:49:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                              "typeString": "mapping(uint256 => bytes storage ref)"
                            }
                          },
                          "id": 14278,
                          "indexExpression": {
                            "id": 14277,
                            "name": "coinType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14264,
                            "src": "1809:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1759:59:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "functionReturnParameters": 14269,
                        "id": 14279,
                        "nodeType": "Return",
                        "src": "1752:66:68"
                      }
                    ]
                  },
                  "functionSelector": "f1cb7e06",
                  "id": 14281,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addr",
                  "nameLocation": "1609:4:68",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14266,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1698:8:68"
                  },
                  "parameters": {
                    "id": 14265,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14262,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1622:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14281,
                        "src": "1614:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14261,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1614:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14264,
                        "mutability": "mutable",
                        "name": "coinType",
                        "nameLocation": "1636:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14281,
                        "src": "1628:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14263,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1628:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1613:32:68"
                  },
                  "returnParameters": {
                    "id": 14269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14268,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14281,
                        "src": "1724:12:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14267,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1724:5:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1723:14:68"
                  },
                  "scope": 14342,
                  "src": "1600:225:68",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    13994
                  ],
                  "body": {
                    "id": 14308,
                    "nodeType": "Block",
                    "src": "1966:199:68",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 14301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 14294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 14289,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14283,
                                "src": "1995:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 14291,
                                      "name": "IAddrResolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14940,
                                      "src": "2015:13:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IAddrResolver_$14940_$",
                                        "typeString": "type(contract IAddrResolver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IAddrResolver_$14940_$",
                                        "typeString": "type(contract IAddrResolver)"
                                      }
                                    ],
                                    "id": 14290,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2010:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 14292,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2010:19:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IAddrResolver_$14940",
                                    "typeString": "type(contract IAddrResolver)"
                                  }
                                },
                                "id": 14293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2030:11:68",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2010:31:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "1995:46:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 14300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 14295,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14283,
                                "src": "2057:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 14297,
                                      "name": "IAddressResolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14961,
                                      "src": "2077:16:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IAddressResolver_$14961_$",
                                        "typeString": "type(contract IAddressResolver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IAddressResolver_$14961_$",
                                        "typeString": "type(contract IAddressResolver)"
                                      }
                                    ],
                                    "id": 14296,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2072:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 14298,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2072:22:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IAddressResolver_$14961",
                                    "typeString": "type(contract IAddressResolver)"
                                  }
                                },
                                "id": 14299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2095:11:68",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2072:34:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2057:49:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1995:111:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 14304,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14283,
                                "src": "2146:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 14302,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2122:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_AddrResolver_$14342_$",
                                  "typeString": "type(contract super AddrResolver)"
                                }
                              },
                              "id": 14303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2128:17:68",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13994,
                              "src": "2122:23:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 14305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2122:36:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1995:163:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 14288,
                        "id": 14307,
                        "nodeType": "Return",
                        "src": "1976:182:68"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 14309,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1840:17:68",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14285,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1930:8:68"
                  },
                  "parameters": {
                    "id": 14284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14283,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1865:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14309,
                        "src": "1858:18:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 14282,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1858:6:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1857:20:68"
                  },
                  "returnParameters": {
                    "id": 14288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14287,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14309,
                        "src": "1956:4:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14286,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1956:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1955:6:68"
                  },
                  "scope": 14342,
                  "src": "1831:334:68",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14324,
                    "nodeType": "Block",
                    "src": "2281:123:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 14317,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14311,
                                  "src": "2299:1:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 14318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2301:6:68",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2299:8:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3230",
                                "id": 14319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2311:2:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              },
                              "src": "2299:14:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14316,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2291:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 14321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2291:23:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14322,
                        "nodeType": "ExpressionStatement",
                        "src": "2291:23:68"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2333:65:68",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2347:41:68",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "b",
                                            "nodeType": "YulIdentifier",
                                            "src": "2366:1:68"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2369:2:68",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2362:3:68"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2362:10:68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "2356:5:68"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2356:17:68"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2379:3:68",
                                        "type": "",
                                        "value": "256"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2384:2:68",
                                        "type": "",
                                        "value": "12"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "exp",
                                      "nodeType": "YulIdentifier",
                                      "src": "2375:3:68"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2375:12:68"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "2352:3:68"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2352:36:68"
                              },
                              "variableNames": [
                                {
                                  "name": "a",
                                  "nodeType": "YulIdentifier",
                                  "src": "2347:1:68"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 14314,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2347:1:68",
                            "valueSize": 1
                          },
                          {
                            "declaration": 14311,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2366:1:68",
                            "valueSize": 1
                          }
                        ],
                        "id": 14323,
                        "nodeType": "InlineAssembly",
                        "src": "2324:74:68"
                      }
                    ]
                  },
                  "id": 14325,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bytesToAddress",
                  "nameLocation": "2180:14:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14312,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14311,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "2208:1:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14325,
                        "src": "2195:14:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14310,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2195:5:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2194:16:68"
                  },
                  "returnParameters": {
                    "id": 14315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14314,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "2274:1:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14325,
                        "src": "2258:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 14313,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2258:15:68",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2257:19:68"
                  },
                  "scope": 14342,
                  "src": "2171:233:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14340,
                    "nodeType": "Block",
                    "src": "2484:116:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 14337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14332,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14330,
                            "src": "2494:1:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "3230",
                                "id": 14335,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2508:2:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                }
                              ],
                              "id": 14334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "2498:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 14333,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "2502:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 14336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2498:13:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "2494:17:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 14338,
                        "nodeType": "ExpressionStatement",
                        "src": "2494:17:68"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2530:64:68",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "2555:1:68"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2558:2:68",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2551:3:68"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2551:10:68"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "a",
                                        "nodeType": "YulIdentifier",
                                        "src": "2567:1:68"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2574:3:68",
                                            "type": "",
                                            "value": "256"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2579:2:68",
                                            "type": "",
                                            "value": "12"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "exp",
                                          "nodeType": "YulIdentifier",
                                          "src": "2570:3:68"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2570:12:68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "2563:3:68"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2563:20:68"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2544:6:68"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2544:40:68"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2544:40:68"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 14327,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2567:1:68",
                            "valueSize": 1
                          },
                          {
                            "declaration": 14330,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2555:1:68",
                            "valueSize": 1
                          }
                        ],
                        "id": 14339,
                        "nodeType": "InlineAssembly",
                        "src": "2521:73:68"
                      }
                    ]
                  },
                  "id": 14341,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addressToBytes",
                  "nameLocation": "2419:14:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14327,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "2442:1:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14341,
                        "src": "2434:9:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14326,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2434:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2433:11:68"
                  },
                  "returnParameters": {
                    "id": 14331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14330,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "2481:1:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 14341,
                        "src": "2468:14:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14329,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2468:5:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2467:16:68"
                  },
                  "scope": 14342,
                  "src": "2410:190:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 14343,
              "src": "152:2450:68",
              "usedErrors": []
            }
          ],
          "src": "32:2571:68"
        },
        "id": 68
      },
      "contracts/resolvers/profiles/ContentHashResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/ContentHashResolver.sol",
          "exportedSymbols": {
            "ContentHashResolver": [
              14423
            ],
            "ERC165": [
              3082
            ],
            "IContentHashResolver": [
              14978
            ],
            "IERC165": [
              3094
            ],
            "IVersionableResolver": [
              15142
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 14424,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14344,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:69"
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 14345,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14424,
              "sourceUnit": 13996,
              "src": "58:29:69",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IContentHashResolver.sol",
              "file": "./IContentHashResolver.sol",
              "id": 14346,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14424,
              "sourceUnit": 14979,
              "src": "88:36:69",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14347,
                    "name": "IContentHashResolver",
                    "nameLocations": [
                      "167:20:69"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14978,
                    "src": "167:20:69"
                  },
                  "id": 14348,
                  "nodeType": "InheritanceSpecifier",
                  "src": "167:20:69"
                },
                {
                  "baseName": {
                    "id": 14349,
                    "name": "ResolverBase",
                    "nameLocations": [
                      "189:12:69"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13995,
                    "src": "189:12:69"
                  },
                  "id": 14350,
                  "nodeType": "InheritanceSpecifier",
                  "src": "189:12:69"
                }
              ],
              "canonicalName": "ContentHashResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 14423,
              "linearizedBaseContracts": [
                14423,
                13995,
                15142,
                3082,
                3094,
                14978
              ],
              "name": "ContentHashResolver",
              "nameLocation": "144:19:69",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 14356,
                  "mutability": "mutable",
                  "name": "versionable_hashes",
                  "nameLocation": "253:18:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 14423,
                  "src": "208:63:69",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => bytes))"
                  },
                  "typeName": {
                    "id": 14355,
                    "keyType": {
                      "id": 14351,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "216:6:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "208:44:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => bytes))"
                    },
                    "valueType": {
                      "id": 14354,
                      "keyType": {
                        "id": 14352,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "234:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "226:25:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                        "typeString": "mapping(bytes32 => bytes)"
                      },
                      "valueType": {
                        "id": 14353,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "245:5:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14382,
                    "nodeType": "Block",
                    "src": "626:115:69",
                    "statements": [
                      {
                        "expression": {
                          "id": 14375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 14367,
                                "name": "versionable_hashes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14356,
                                "src": "636:18:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                                  "typeString": "mapping(uint64 => mapping(bytes32 => bytes storage ref))"
                                }
                              },
                              "id": 14372,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 14368,
                                  "name": "recordVersions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13932,
                                  "src": "655:14:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                    "typeString": "mapping(bytes32 => uint64)"
                                  }
                                },
                                "id": 14370,
                                "indexExpression": {
                                  "id": 14369,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14359,
                                  "src": "670:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "655:20:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "636:40:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 14373,
                            "indexExpression": {
                              "id": 14371,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14359,
                              "src": "677:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "636:46:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14374,
                            "name": "hash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14361,
                            "src": "685:4:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "src": "636:53:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 14376,
                        "nodeType": "ExpressionStatement",
                        "src": "636:53:69"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 14378,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14359,
                              "src": "723:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 14379,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14361,
                              "src": "729:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 14377,
                            "name": "ContenthashChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14969,
                            "src": "704:18:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory)"
                            }
                          },
                          "id": 14380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "704:30:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14381,
                        "nodeType": "EmitStatement",
                        "src": "699:35:69"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14357,
                    "nodeType": "StructuredDocumentation",
                    "src": "278:222:69",
                    "text": " Sets the contenthash associated with an ENS node.\n May only be called by the owner of that node in the ENS registry.\n @param node The node to update.\n @param hash The contenthash to set"
                  },
                  "functionSelector": "304e6ade",
                  "id": 14383,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14364,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14359,
                          "src": "616:4:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 14365,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14363,
                        "name": "authorised",
                        "nameLocations": [
                          "605:10:69"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "605:10:69"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "605:16:69"
                    }
                  ],
                  "name": "setContenthash",
                  "nameLocation": "514:14:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14359,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "537:4:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 14383,
                        "src": "529:12:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14358,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "529:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14361,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "558:4:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 14383,
                        "src": "543:19:69",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14360,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "543:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "528:35:69"
                  },
                  "returnParameters": {
                    "id": 14366,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "626:0:69"
                  },
                  "scope": 14423,
                  "src": "505:236:69",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    14977
                  ],
                  "body": {
                    "id": 14400,
                    "nodeType": "Block",
                    "src": "1041:70:69",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 14392,
                              "name": "versionable_hashes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14356,
                              "src": "1058:18:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                                "typeString": "mapping(uint64 => mapping(bytes32 => bytes storage ref))"
                              }
                            },
                            "id": 14396,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 14393,
                                "name": "recordVersions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13932,
                                "src": "1077:14:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                  "typeString": "mapping(bytes32 => uint64)"
                                }
                              },
                              "id": 14395,
                              "indexExpression": {
                                "id": 14394,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14386,
                                "src": "1092:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1077:20:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1058:40:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 14398,
                          "indexExpression": {
                            "id": 14397,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14386,
                            "src": "1099:4:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1058:46:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "functionReturnParameters": 14391,
                        "id": 14399,
                        "nodeType": "Return",
                        "src": "1051:53:69"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14384,
                    "nodeType": "StructuredDocumentation",
                    "src": "747:156:69",
                    "text": " Returns the contenthash associated with an ENS node.\n @param node The ENS node to query.\n @return The associated contenthash."
                  },
                  "functionSelector": "bc1c58d1",
                  "id": 14401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contenthash",
                  "nameLocation": "917:11:69",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14388,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "997:8:69"
                  },
                  "parameters": {
                    "id": 14387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14386,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "937:4:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 14401,
                        "src": "929:12:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14385,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "929:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "928:14:69"
                  },
                  "returnParameters": {
                    "id": 14391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14390,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14401,
                        "src": "1023:12:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14389,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1023:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1022:14:69"
                  },
                  "scope": 14423,
                  "src": "908:203:69",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13994
                  ],
                  "body": {
                    "id": 14421,
                    "nodeType": "Block",
                    "src": "1252:141:69",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 14414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 14409,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14403,
                              "src": "1281:11:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14411,
                                    "name": "IContentHashResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14978,
                                    "src": "1301:20:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IContentHashResolver_$14978_$",
                                      "typeString": "type(contract IContentHashResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IContentHashResolver_$14978_$",
                                      "typeString": "type(contract IContentHashResolver)"
                                    }
                                  ],
                                  "id": 14410,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1296:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 14412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1296:26:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IContentHashResolver_$14978",
                                  "typeString": "type(contract IContentHashResolver)"
                                }
                              },
                              "id": 14413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1323:11:69",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1296:38:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1281:53:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 14417,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14403,
                                "src": "1374:11:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 14415,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1350:5:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ContentHashResolver_$14423_$",
                                  "typeString": "type(contract super ContentHashResolver)"
                                }
                              },
                              "id": 14416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1356:17:69",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13994,
                              "src": "1350:23:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 14418,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1350:36:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1281:105:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 14408,
                        "id": 14420,
                        "nodeType": "Return",
                        "src": "1262:124:69"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 14422,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1126:17:69",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14405,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1216:8:69"
                  },
                  "parameters": {
                    "id": 14404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14403,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1151:11:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 14422,
                        "src": "1144:18:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 14402,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1144:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1143:20:69"
                  },
                  "returnParameters": {
                    "id": 14408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14407,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14422,
                        "src": "1242:4:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14406,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1242:4:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1241:6:69"
                  },
                  "scope": 14423,
                  "src": "1117:276:69",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 14424,
              "src": "126:1269:69",
              "usedErrors": []
            }
          ],
          "src": "32:1364:69"
        },
        "id": 69
      },
      "contracts/resolvers/profiles/DNSResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/DNSResolver.sol",
          "exportedSymbols": {
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "DNSResolver": [
              14899
            ],
            "ERC165": [
              3082
            ],
            "IDNSRecordResolver": [
              15011
            ],
            "IDNSZoneResolver": [
              15030
            ],
            "IERC165": [
              3094
            ],
            "IVersionableResolver": [
              15142
            ],
            "RRUtils": [
              7059
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 14900,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14425,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:70"
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 14426,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14900,
              "sourceUnit": 13996,
              "src": "58:29:70",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/RRUtils.sol",
              "file": "../../dnssec-oracle/RRUtils.sol",
              "id": 14427,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14900,
              "sourceUnit": 7060,
              "src": "88:41:70",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IDNSRecordResolver.sol",
              "file": "./IDNSRecordResolver.sol",
              "id": 14428,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14900,
              "sourceUnit": 15012,
              "src": "130:34:70",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IDNSZoneResolver.sol",
              "file": "./IDNSZoneResolver.sol",
              "id": 14429,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14900,
              "sourceUnit": 15031,
              "src": "165:32:70",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14430,
                    "name": "IDNSRecordResolver",
                    "nameLocations": [
                      "236:18:70"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15011,
                    "src": "236:18:70"
                  },
                  "id": 14431,
                  "nodeType": "InheritanceSpecifier",
                  "src": "236:18:70"
                },
                {
                  "baseName": {
                    "id": 14432,
                    "name": "IDNSZoneResolver",
                    "nameLocations": [
                      "260:16:70"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15030,
                    "src": "260:16:70"
                  },
                  "id": 14433,
                  "nodeType": "InheritanceSpecifier",
                  "src": "260:16:70"
                },
                {
                  "baseName": {
                    "id": 14434,
                    "name": "ResolverBase",
                    "nameLocations": [
                      "282:12:70"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13995,
                    "src": "282:12:70"
                  },
                  "id": 14435,
                  "nodeType": "InheritanceSpecifier",
                  "src": "282:12:70"
                }
              ],
              "canonicalName": "DNSResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 14899,
              "linearizedBaseContracts": [
                14899,
                13995,
                15142,
                3082,
                3094,
                15030,
                15011
              ],
              "name": "DNSResolver",
              "nameLocation": "217:11:70",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 14437,
                  "libraryName": {
                    "id": 14436,
                    "name": "RRUtils",
                    "nameLocations": [
                      "307:7:70"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7059,
                    "src": "307:7:70"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "301:20:70"
                },
                {
                  "global": false,
                  "id": 14440,
                  "libraryName": {
                    "id": 14438,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "332:10:70"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "332:10:70"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "326:27:70",
                  "typeName": {
                    "id": 14439,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "347:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 14446,
                  "mutability": "mutable",
                  "name": "versionable_zonehashes",
                  "nameLocation": "608:22:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 14899,
                  "src": "555:75:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => bytes))"
                  },
                  "typeName": {
                    "id": 14445,
                    "keyType": {
                      "id": 14441,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "563:6:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "555:44:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => bytes))"
                    },
                    "valueType": {
                      "id": 14444,
                      "keyType": {
                        "id": 14442,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "581:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "573:25:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                        "typeString": "mapping(bytes32 => bytes)"
                      },
                      "valueType": {
                        "id": 14443,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "592:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 14456,
                  "mutability": "mutable",
                  "name": "versionable_records",
                  "nameLocation": "844:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 14899,
                  "src": "744:119:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))"
                  },
                  "typeName": {
                    "id": 14455,
                    "keyType": {
                      "id": 14447,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "752:6:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "744:83:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes))))"
                    },
                    "valueType": {
                      "id": 14454,
                      "keyType": {
                        "id": 14448,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "770:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "762:64:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                        "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes)))"
                      },
                      "valueType": {
                        "id": 14453,
                        "keyType": {
                          "id": 14449,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "789:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "781:44:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                          "typeString": "mapping(bytes32 => mapping(uint16 => bytes))"
                        },
                        "valueType": {
                          "id": 14452,
                          "keyType": {
                            "id": 14450,
                            "name": "uint16",
                            "nodeType": "ElementaryTypeName",
                            "src": "808:6:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "800:24:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                            "typeString": "mapping(uint16 => bytes)"
                          },
                          "valueType": {
                            "id": 14451,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "818:5:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 14464,
                  "mutability": "mutable",
                  "name": "versionable_nameEntriesCount",
                  "nameLocation": "1117:28:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 14899,
                  "src": "1035:110:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))"
                  },
                  "typeName": {
                    "id": 14463,
                    "keyType": {
                      "id": 14457,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "1043:6:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1035:65:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))"
                    },
                    "valueType": {
                      "id": 14462,
                      "keyType": {
                        "id": 14458,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1061:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1053:46:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                        "typeString": "mapping(bytes32 => mapping(bytes32 => uint16))"
                      },
                      "valueType": {
                        "id": 14461,
                        "keyType": {
                          "id": 14459,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1080:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "1072:26:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                          "typeString": "mapping(bytes32 => uint16)"
                        },
                        "valueType": {
                          "id": 14460,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1091:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 14640,
                    "nodeType": "Block",
                    "src": "2189:1646:70",
                    "statements": [
                      {
                        "assignments": [
                          14476
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14476,
                            "mutability": "mutable",
                            "name": "resource",
                            "nameLocation": "2206:8:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14640,
                            "src": "2199:15:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 14475,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "2199:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14478,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 14477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2217:1:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2199:19:70"
                      },
                      {
                        "assignments": [
                          14480
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14480,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "2236:6:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14640,
                            "src": "2228:14:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14479,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2228:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14482,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 14481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2245:1:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2228:18:70"
                      },
                      {
                        "assignments": [
                          14484
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14484,
                            "mutability": "mutable",
                            "name": "name",
                            "nameLocation": "2269:4:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14640,
                            "src": "2256:17:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 14483,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2256:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14485,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2256:17:70"
                      },
                      {
                        "assignments": [
                          14487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14487,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "2296:5:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14640,
                            "src": "2283:18:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 14486,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2283:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14488,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2283:18:70"
                      },
                      {
                        "assignments": [
                          14490
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14490,
                            "mutability": "mutable",
                            "name": "nameHash",
                            "nameLocation": "2319:8:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14640,
                            "src": "2311:16:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 14489,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2311:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14491,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2311:16:70"
                      },
                      {
                        "assignments": [
                          14493
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14493,
                            "mutability": "mutable",
                            "name": "version",
                            "nameLocation": "2344:7:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14640,
                            "src": "2337:14:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 14492,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "2337:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14497,
                        "initialValue": {
                          "baseExpression": {
                            "id": 14494,
                            "name": "recordVersions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13932,
                            "src": "2354:14:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                              "typeString": "mapping(bytes32 => uint64)"
                            }
                          },
                          "id": 14496,
                          "indexExpression": {
                            "id": 14495,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14467,
                            "src": "2369:4:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2354:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2337:37:70"
                      },
                      {
                        "body": {
                          "id": 14615,
                          "nodeType": "Block",
                          "src": "2576:959:70",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 14518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14516,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14476,
                                  "src": "2594:8:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 14517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2606:1:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2594:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 14613,
                                "nodeType": "Block",
                                "src": "2814:711:70",
                                "statements": [
                                  {
                                    "assignments": [
                                      14550
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 14550,
                                        "mutability": "mutable",
                                        "name": "newName",
                                        "nameLocation": "2845:7:70",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 14613,
                                        "src": "2832:20:70",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 14549,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2832:5:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 14554,
                                    "initialValue": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "id": 14551,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14502,
                                          "src": "2855:4:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 14552,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2860:4:70",
                                        "memberName": "name",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6493,
                                        "src": "2855:9:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 14553,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2855:11:70",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2832:34:70"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 14564,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        },
                                        "id": 14558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 14555,
                                          "name": "resource",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14476,
                                          "src": "2888:8:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 14556,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14502,
                                            "src": "2900:4:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 14557,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "2905:7:70",
                                          "memberName": "dnstype",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6312,
                                          "src": "2900:12:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        "src": "2888:24:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "id": 14563,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "!",
                                        "prefix": true,
                                        "src": "2916:21:70",
                                        "subExpression": {
                                          "arguments": [
                                            {
                                              "id": 14561,
                                              "name": "newName",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14550,
                                              "src": "2929:7:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "expression": {
                                              "id": 14559,
                                              "name": "name",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14484,
                                              "src": "2917:4:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 14560,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "2922:6:70",
                                            "memberName": "equals",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4535,
                                            "src": "2917:11:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                              "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                            }
                                          },
                                          "id": 14562,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2917:20:70",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "2888:49:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 14612,
                                    "nodeType": "IfStatement",
                                    "src": "2884:627:70",
                                    "trueBody": {
                                      "id": 14611,
                                      "nodeType": "Block",
                                      "src": "2939:572:70",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 14566,
                                                "name": "node",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14467,
                                                "src": "2998:4:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              {
                                                "id": 14567,
                                                "name": "name",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14484,
                                                "src": "3028:4:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              {
                                                "id": 14568,
                                                "name": "resource",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14476,
                                                "src": "3058:8:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint16",
                                                  "typeString": "uint16"
                                                }
                                              },
                                              {
                                                "id": 14569,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14469,
                                                "src": "3092:4:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                }
                                              },
                                              {
                                                "id": 14570,
                                                "name": "offset",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14480,
                                                "src": "3122:6:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 14574,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "expression": {
                                                    "id": 14571,
                                                    "name": "iter",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14502,
                                                    "src": "3154:4:70",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                      "typeString": "struct RRUtils.RRIterator memory"
                                                    }
                                                  },
                                                  "id": 14572,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "3159:6:70",
                                                  "memberName": "offset",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 6310,
                                                  "src": "3154:11:70",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "id": 14573,
                                                  "name": "offset",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14480,
                                                  "src": "3168:6:70",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "3154:20:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 14578,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "expression": {
                                                    "id": 14575,
                                                    "name": "value",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14487,
                                                    "src": "3200:5:70",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  },
                                                  "id": 14576,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "3206:6:70",
                                                  "memberName": "length",
                                                  "nodeType": "MemberAccess",
                                                  "src": "3200:12:70",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                  "hexValue": "30",
                                                  "id": 14577,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "3216:1:70",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "src": "3200:17:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              {
                                                "id": 14579,
                                                "name": "version",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14493,
                                                "src": "3243:7:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint16",
                                                  "typeString": "uint16"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                }
                                              ],
                                              "id": 14565,
                                              "name": "setDNSRRSet",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14898,
                                              "src": "2961:11:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint64_$returns$__$",
                                                "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool,uint64)"
                                              }
                                            },
                                            "id": 14580,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2961:311:70",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 14581,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2961:311:70"
                                        },
                                        {
                                          "expression": {
                                            "id": 14585,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 14582,
                                              "name": "resource",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14476,
                                              "src": "3294:8:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "expression": {
                                                "id": 14583,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14502,
                                                "src": "3305:4:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 14584,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "3310:7:70",
                                              "memberName": "dnstype",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6312,
                                              "src": "3305:12:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              }
                                            },
                                            "src": "3294:23:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint16",
                                              "typeString": "uint16"
                                            }
                                          },
                                          "id": 14586,
                                          "nodeType": "ExpressionStatement",
                                          "src": "3294:23:70"
                                        },
                                        {
                                          "expression": {
                                            "id": 14590,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 14587,
                                              "name": "offset",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14480,
                                              "src": "3339:6:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "expression": {
                                                "id": 14588,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14502,
                                                "src": "3348:4:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 14589,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "3353:6:70",
                                              "memberName": "offset",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6310,
                                              "src": "3348:11:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "3339:20:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14591,
                                          "nodeType": "ExpressionStatement",
                                          "src": "3339:20:70"
                                        },
                                        {
                                          "expression": {
                                            "id": 14594,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 14592,
                                              "name": "name",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14484,
                                              "src": "3381:4:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 14593,
                                              "name": "newName",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14550,
                                              "src": "3388:7:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "src": "3381:14:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 14595,
                                          "nodeType": "ExpressionStatement",
                                          "src": "3381:14:70"
                                        },
                                        {
                                          "expression": {
                                            "id": 14600,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 14596,
                                              "name": "nameHash",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14490,
                                              "src": "3417:8:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "id": 14598,
                                                  "name": "name",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14484,
                                                  "src": "3438:4:70",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                ],
                                                "id": 14597,
                                                "name": "keccak256",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -8,
                                                "src": "3428:9:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                                }
                                              },
                                              "id": 14599,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "3428:15:70",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "src": "3417:26:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "id": 14601,
                                          "nodeType": "ExpressionStatement",
                                          "src": "3417:26:70"
                                        },
                                        {
                                          "expression": {
                                            "id": 14609,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 14602,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14487,
                                              "src": "3465:5:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "arguments": [],
                                                  "expression": {
                                                    "argumentTypes": [],
                                                    "expression": {
                                                      "id": 14605,
                                                      "name": "iter",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14502,
                                                      "src": "3479:4:70",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                        "typeString": "struct RRUtils.RRIterator memory"
                                                      }
                                                    },
                                                    "id": 14606,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "3484:5:70",
                                                    "memberName": "rdata",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 6515,
                                                    "src": "3479:10:70",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                                      "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                                    }
                                                  },
                                                  "id": 14607,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "3479:12:70",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                ],
                                                "id": 14604,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3473:5:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                  "typeString": "type(bytes storage pointer)"
                                                },
                                                "typeName": {
                                                  "id": 14603,
                                                  "name": "bytes",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "3473:5:70",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 14608,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "3473:19:70",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "src": "3465:27:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 14610,
                                          "nodeType": "ExpressionStatement",
                                          "src": "3465:27:70"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 14614,
                              "nodeType": "IfStatement",
                              "src": "2590:935:70",
                              "trueBody": {
                                "id": 14548,
                                "nodeType": "Block",
                                "src": "2609:199:70",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 14522,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 14519,
                                        "name": "resource",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14476,
                                        "src": "2627:8:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "expression": {
                                          "id": 14520,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14502,
                                          "src": "2638:4:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 14521,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2643:7:70",
                                        "memberName": "dnstype",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6312,
                                        "src": "2638:12:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "2627:23:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 14523,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2627:23:70"
                                  },
                                  {
                                    "expression": {
                                      "id": 14528,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 14524,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14484,
                                        "src": "2668:4:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "id": 14525,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14502,
                                            "src": "2675:4:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 14526,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "2680:4:70",
                                          "memberName": "name",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6493,
                                          "src": "2675:9:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                            "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 14527,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2675:11:70",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "2668:18:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 14529,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2668:18:70"
                                  },
                                  {
                                    "expression": {
                                      "id": 14537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 14530,
                                        "name": "nameHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14490,
                                        "src": "2704:8:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 14534,
                                                "name": "name",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14484,
                                                "src": "2742:4:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "expression": {
                                                "id": 14532,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -1,
                                                "src": "2725:3:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 14533,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "2729:12:70",
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "src": "2725:16:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 14535,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2725:22:70",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 14531,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -8,
                                          "src": "2715:9:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 14536,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2715:33:70",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "2704:44:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 14538,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2704:44:70"
                                  },
                                  {
                                    "expression": {
                                      "id": 14546,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 14539,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14487,
                                        "src": "2766:5:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "id": 14542,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14502,
                                                "src": "2780:4:70",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 14543,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "2785:5:70",
                                              "memberName": "rdata",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6515,
                                              "src": "2780:10:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 14544,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2780:12:70",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 14541,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2774:5:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 14540,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2774:5:70",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 14545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2774:19:70",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "2766:27:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 14547,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2766:27:70"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "id": 14511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2528:12:70",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 14508,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14502,
                                "src": "2529:4:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 14509,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2534:4:70",
                              "memberName": "done",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6366,
                              "src": "2529:9:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                              }
                            },
                            "id": 14510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2529:11:70",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14616,
                        "initializationExpression": {
                          "assignments": [
                            14502
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14502,
                              "mutability": "mutable",
                              "name": "iter",
                              "nameLocation": "2489:4:70",
                              "nodeType": "VariableDeclaration",
                              "scope": 14616,
                              "src": "2463:30:70",
                              "stateVariable": false,
                              "storageLocation": "memory",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator"
                              },
                              "typeName": {
                                "id": 14501,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 14500,
                                  "name": "RRUtils.RRIterator",
                                  "nameLocations": [
                                    "2463:7:70",
                                    "2471:10:70"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 6321,
                                  "src": "2463:18:70"
                                },
                                "referencedDeclaration": 6321,
                                "src": "2463:18:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                                  "typeString": "struct RRUtils.RRIterator"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 14507,
                          "initialValue": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 14505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2512:1:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 14503,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14469,
                                "src": "2496:4:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "id": 14504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2501:10:70",
                              "memberName": "iterateRRs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6349,
                              "src": "2496:15:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$6321_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                              }
                            },
                            "id": 14506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2496:18:70",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2463:51:70"
                        },
                        "loopExpression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 14512,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14502,
                                "src": "2554:4:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 14513,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2559:4:70",
                              "memberName": "next",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6470,
                              "src": "2554:9:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure"
                              }
                            },
                            "id": 14514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2554:11:70",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 14515,
                          "nodeType": "ExpressionStatement",
                          "src": "2554:11:70"
                        },
                        "nodeType": "ForStatement",
                        "src": "2445:1090:70"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 14617,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14484,
                              "src": "3548:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 14618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3553:6:70",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3548:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 14619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3562:1:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3548:15:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14639,
                        "nodeType": "IfStatement",
                        "src": "3544:285:70",
                        "trueBody": {
                          "id": 14638,
                          "nodeType": "Block",
                          "src": "3565:264:70",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14622,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14467,
                                    "src": "3608:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 14623,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14484,
                                    "src": "3630:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 14624,
                                    "name": "resource",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14476,
                                    "src": "3652:8:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "id": 14625,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14469,
                                    "src": "3678:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  {
                                    "id": 14626,
                                    "name": "offset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14480,
                                    "src": "3700:6:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14630,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 14627,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14469,
                                        "src": "3724:4:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      },
                                      "id": 14628,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3729:6:70",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "3724:11:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 14629,
                                      "name": "offset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14480,
                                      "src": "3738:6:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3724:20:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14634,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 14631,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14487,
                                        "src": "3762:5:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 14632,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3768:6:70",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "3762:12:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 14633,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3778:1:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "3762:17:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "id": 14635,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14493,
                                    "src": "3797:7:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 14621,
                                  "name": "setDNSRRSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14898,
                                  "src": "3579:11:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool,uint64)"
                                  }
                                },
                                "id": 14636,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3579:239:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14637,
                              "nodeType": "ExpressionStatement",
                              "src": "3579:239:70"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14465,
                    "nodeType": "StructuredDocumentation",
                    "src": "1152:912:70",
                    "text": " Set one or more DNS records.  Records are supplied in wire-format.\n Records with the same node/name/resource must be supplied one after the\n other to ensure the data is updated correctly. For example, if the data\n was supplied:\n     a.example.com IN A 1.2.3.4\n     a.example.com IN A 5.6.7.8\n     www.example.com IN CNAME a.example.com.\n then this would store the two A records for a.example.com correctly as a\n single RRSET, however if the data was supplied:\n     a.example.com IN A 1.2.3.4\n     www.example.com IN CNAME a.example.com.\n     a.example.com IN A 5.6.7.8\n then this would store the first A record, the CNAME, then the second A\n record which would overwrite the first.\n @param node the namehash of the node for which to set the records\n @param data the DNS wire format records to set"
                  },
                  "functionSelector": "0af179d7",
                  "id": 14641,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14472,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14467,
                          "src": "2179:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 14473,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14471,
                        "name": "authorised",
                        "nameLocations": [
                          "2168:10:70"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "2168:10:70"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2168:16:70"
                    }
                  ],
                  "name": "setDNSRecords",
                  "nameLocation": "2078:13:70",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14467,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2100:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14641,
                        "src": "2092:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14466,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2092:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14469,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2121:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14641,
                        "src": "2106:19:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14468,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2106:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2091:35:70"
                  },
                  "returnParameters": {
                    "id": 14474,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2189:0:70"
                  },
                  "scope": 14899,
                  "src": "2069:1766:70",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    15010
                  ],
                  "body": {
                    "id": 14666,
                    "nodeType": "Block",
                    "src": "4383:87:70",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 14654,
                                  "name": "versionable_records",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14456,
                                  "src": "4400:19:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                  }
                                },
                                "id": 14658,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 14655,
                                    "name": "recordVersions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13932,
                                    "src": "4420:14:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                      "typeString": "mapping(bytes32 => uint64)"
                                    }
                                  },
                                  "id": 14657,
                                  "indexExpression": {
                                    "id": 14656,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14644,
                                    "src": "4435:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4420:20:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4400:41:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                  "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                }
                              },
                              "id": 14660,
                              "indexExpression": {
                                "id": 14659,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14644,
                                "src": "4442:4:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4400:47:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                              }
                            },
                            "id": 14662,
                            "indexExpression": {
                              "id": 14661,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14646,
                              "src": "4448:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4400:53:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                              "typeString": "mapping(uint16 => bytes storage ref)"
                            }
                          },
                          "id": 14664,
                          "indexExpression": {
                            "id": 14663,
                            "name": "resource",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14648,
                            "src": "4454:8:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4400:63:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "functionReturnParameters": 14653,
                        "id": 14665,
                        "nodeType": "Return",
                        "src": "4393:70:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14642,
                    "nodeType": "StructuredDocumentation",
                    "src": "3841:391:70",
                    "text": " Obtain a DNS record.\n @param node the namehash of the node for which to fetch the record\n @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n @return the DNS record in wire format if present, otherwise empty"
                  },
                  "functionSelector": "a8fa5682",
                  "id": 14667,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dnsRecord",
                  "nameLocation": "4246:9:70",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14650,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4351:8:70"
                  },
                  "parameters": {
                    "id": 14649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14644,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "4273:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14667,
                        "src": "4265:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14643,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4265:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14646,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "4295:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14667,
                        "src": "4287:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14645,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4287:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14648,
                        "mutability": "mutable",
                        "name": "resource",
                        "nameLocation": "4316:8:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14667,
                        "src": "4309:15:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 14647,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "4309:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4255:75:70"
                  },
                  "returnParameters": {
                    "id": 14653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14652,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14667,
                        "src": "4369:12:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14651,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4369:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4368:14:70"
                  },
                  "scope": 14899,
                  "src": "4237:233:70",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14690,
                    "nodeType": "Block",
                    "src": "4806:115:70",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "id": 14687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 14677,
                                      "name": "versionable_nameEntriesCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14464,
                                      "src": "4824:28:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                        "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))"
                                      }
                                    },
                                    "id": 14681,
                                    "indexExpression": {
                                      "baseExpression": {
                                        "id": 14678,
                                        "name": "recordVersions",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13932,
                                        "src": "4853:14:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                          "typeString": "mapping(bytes32 => uint64)"
                                        }
                                      },
                                      "id": 14680,
                                      "indexExpression": {
                                        "id": 14679,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14670,
                                        "src": "4868:4:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4853:20:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4824:50:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                      "typeString": "mapping(bytes32 => mapping(bytes32 => uint16))"
                                    }
                                  },
                                  "id": 14683,
                                  "indexExpression": {
                                    "id": 14682,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14670,
                                    "src": "4875:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4824:56:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                    "typeString": "mapping(bytes32 => uint16)"
                                  }
                                },
                                "id": 14685,
                                "indexExpression": {
                                  "id": 14684,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14672,
                                  "src": "4894:4:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4824:84:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 14686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4912:1:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4824:89:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14688,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4823:91:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 14676,
                        "id": 14689,
                        "nodeType": "Return",
                        "src": "4816:98:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14668,
                    "nodeType": "StructuredDocumentation",
                    "src": "4476:203:70",
                    "text": " Check if a given node has records.\n @param node the namehash of the node for which to check the records\n @param name the namehash of the node for which to check the records"
                  },
                  "functionSelector": "4cbf6ba4",
                  "id": 14691,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hasDNSRecords",
                  "nameLocation": "4693:13:70",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14670,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "4715:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14691,
                        "src": "4707:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14669,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4707:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14672,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "4729:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14691,
                        "src": "4721:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14671,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4721:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4706:28:70"
                  },
                  "returnParameters": {
                    "id": 14676,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14675,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14691,
                        "src": "4796:4:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14674,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4796:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4795:6:70"
                  },
                  "scope": 14899,
                  "src": "4684:237:70",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14730,
                    "nodeType": "Block",
                    "src": "5259:293:70",
                    "statements": [
                      {
                        "assignments": [
                          14703
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14703,
                            "mutability": "mutable",
                            "name": "currentRecordVersion",
                            "nameLocation": "5276:20:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14730,
                            "src": "5269:27:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 14702,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "5269:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14707,
                        "initialValue": {
                          "baseExpression": {
                            "id": 14704,
                            "name": "recordVersions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13932,
                            "src": "5299:14:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                              "typeString": "mapping(bytes32 => uint64)"
                            }
                          },
                          "id": 14706,
                          "indexExpression": {
                            "id": 14705,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14694,
                            "src": "5314:4:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5299:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5269:50:70"
                      },
                      {
                        "assignments": [
                          14709
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14709,
                            "mutability": "mutable",
                            "name": "oldhash",
                            "nameLocation": "5342:7:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14730,
                            "src": "5329:20:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 14708,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5329:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14715,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 14710,
                              "name": "versionable_zonehashes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14446,
                              "src": "5352:22:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                                "typeString": "mapping(uint64 => mapping(bytes32 => bytes storage ref))"
                              }
                            },
                            "id": 14712,
                            "indexExpression": {
                              "id": 14711,
                              "name": "currentRecordVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14703,
                              "src": "5375:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5352:44:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 14714,
                          "indexExpression": {
                            "id": 14713,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14694,
                            "src": "5410:4:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5352:72:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5329:95:70"
                      },
                      {
                        "expression": {
                          "id": 14722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 14716,
                                "name": "versionable_zonehashes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14446,
                                "src": "5434:22:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                                  "typeString": "mapping(uint64 => mapping(bytes32 => bytes storage ref))"
                                }
                              },
                              "id": 14719,
                              "indexExpression": {
                                "id": 14717,
                                "name": "currentRecordVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14703,
                                "src": "5457:20:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5434:44:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 14720,
                            "indexExpression": {
                              "id": 14718,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14694,
                              "src": "5479:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5434:50:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14721,
                            "name": "hash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14696,
                            "src": "5487:4:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "src": "5434:57:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 14723,
                        "nodeType": "ExpressionStatement",
                        "src": "5434:57:70"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 14725,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14694,
                              "src": "5525:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 14726,
                              "name": "oldhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14709,
                              "src": "5531:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 14727,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14696,
                              "src": "5540:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 14724,
                            "name": "DNSZonehashChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15021,
                            "src": "5506:18:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,bytes memory)"
                            }
                          },
                          "id": 14728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5506:39:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14729,
                        "nodeType": "EmitStatement",
                        "src": "5501:44:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14692,
                    "nodeType": "StructuredDocumentation",
                    "src": "4927:209:70",
                    "text": " setZonehash sets the hash for the zone.\n May only be called by the owner of that node in the ENS registry.\n @param node The node to update.\n @param hash The zonehash to set"
                  },
                  "functionSelector": "ce3decdc",
                  "id": 14731,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14699,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14694,
                          "src": "5249:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 14700,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14698,
                        "name": "authorised",
                        "nameLocations": [
                          "5238:10:70"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "5238:10:70"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5238:16:70"
                    }
                  ],
                  "name": "setZonehash",
                  "nameLocation": "5150:11:70",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14697,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14694,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "5170:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14731,
                        "src": "5162:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14693,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5162:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14696,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "5191:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14731,
                        "src": "5176:19:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14695,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5176:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5161:35:70"
                  },
                  "returnParameters": {
                    "id": 14701,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5259:0:70"
                  },
                  "scope": 14899,
                  "src": "5141:411:70",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    15029
                  ],
                  "body": {
                    "id": 14748,
                    "nodeType": "Block",
                    "src": "5836:74:70",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 14740,
                              "name": "versionable_zonehashes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14446,
                              "src": "5853:22:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_bytes_storage_$_$",
                                "typeString": "mapping(uint64 => mapping(bytes32 => bytes storage ref))"
                              }
                            },
                            "id": 14744,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 14741,
                                "name": "recordVersions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13932,
                                "src": "5876:14:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                  "typeString": "mapping(bytes32 => uint64)"
                                }
                              },
                              "id": 14743,
                              "indexExpression": {
                                "id": 14742,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14734,
                                "src": "5891:4:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5876:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5853:44:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 14746,
                          "indexExpression": {
                            "id": 14745,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14734,
                            "src": "5898:4:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5853:50:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "functionReturnParameters": 14739,
                        "id": 14747,
                        "nodeType": "Return",
                        "src": "5846:57:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14732,
                    "nodeType": "StructuredDocumentation",
                    "src": "5558:143:70",
                    "text": " zonehash obtains the hash for the zone.\n @param node The ENS node to query.\n @return The associated contenthash."
                  },
                  "functionSelector": "5c98042b",
                  "id": 14749,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "zonehash",
                  "nameLocation": "5715:8:70",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14736,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5792:8:70"
                  },
                  "parameters": {
                    "id": 14735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14734,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "5732:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14749,
                        "src": "5724:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14733,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5724:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5723:14:70"
                  },
                  "returnParameters": {
                    "id": 14739,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14738,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14749,
                        "src": "5818:12:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14737,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5818:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5817:14:70"
                  },
                  "scope": 14899,
                  "src": "5706:204:70",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13994
                  ],
                  "body": {
                    "id": 14776,
                    "nodeType": "Block",
                    "src": "6051:204:70",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 14769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 14762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 14757,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14751,
                                "src": "6080:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 14759,
                                      "name": "IDNSRecordResolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15011,
                                      "src": "6100:18:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IDNSRecordResolver_$15011_$",
                                        "typeString": "type(contract IDNSRecordResolver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IDNSRecordResolver_$15011_$",
                                        "typeString": "type(contract IDNSRecordResolver)"
                                      }
                                    ],
                                    "id": 14758,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "6095:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 14760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6095:24:70",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IDNSRecordResolver_$15011",
                                    "typeString": "type(contract IDNSRecordResolver)"
                                  }
                                },
                                "id": 14761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "6120:11:70",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "6095:36:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "6080:51:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 14768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 14763,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14751,
                                "src": "6147:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 14765,
                                      "name": "IDNSZoneResolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15030,
                                      "src": "6167:16:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IDNSZoneResolver_$15030_$",
                                        "typeString": "type(contract IDNSZoneResolver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IDNSZoneResolver_$15030_$",
                                        "typeString": "type(contract IDNSZoneResolver)"
                                      }
                                    ],
                                    "id": 14764,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "6162:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 14766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6162:22:70",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IDNSZoneResolver_$15030",
                                    "typeString": "type(contract IDNSZoneResolver)"
                                  }
                                },
                                "id": 14767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "6185:11:70",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "6162:34:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "6147:49:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "6080:116:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 14772,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14751,
                                "src": "6236:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 14770,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "6212:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_DNSResolver_$14899_$",
                                  "typeString": "type(contract super DNSResolver)"
                                }
                              },
                              "id": 14771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6218:17:70",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13994,
                              "src": "6212:23:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 14773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6212:36:70",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6080:168:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 14756,
                        "id": 14775,
                        "nodeType": "Return",
                        "src": "6061:187:70"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 14777,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "5925:17:70",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14753,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6015:8:70"
                  },
                  "parameters": {
                    "id": 14752,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14751,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "5950:11:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14777,
                        "src": "5943:18:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 14750,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "5943:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5942:20:70"
                  },
                  "returnParameters": {
                    "id": 14756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14755,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14777,
                        "src": "6041:4:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14754,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6041:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6040:6:70"
                  },
                  "scope": 14899,
                  "src": "5916:339:70",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14897,
                    "nodeType": "Block",
                    "src": "6494:880:70",
                    "statements": [
                      {
                        "assignments": [
                          14797
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14797,
                            "mutability": "mutable",
                            "name": "nameHash",
                            "nameLocation": "6512:8:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14897,
                            "src": "6504:16:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 14796,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6504:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14801,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14799,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14781,
                              "src": "6533:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14798,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "6523:9:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 14800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6523:15:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6504:34:70"
                      },
                      {
                        "assignments": [
                          14803
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14803,
                            "mutability": "mutable",
                            "name": "rrData",
                            "nameLocation": "6561:6:70",
                            "nodeType": "VariableDeclaration",
                            "scope": 14897,
                            "src": "6548:19:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 14802,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6548:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14809,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14806,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14787,
                              "src": "6585:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 14807,
                              "name": "size",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14789,
                              "src": "6593:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 14804,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14785,
                              "src": "6570:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 14805,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6575:9:70",
                            "memberName": "substring",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4745,
                            "src": "6570:14:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 14808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6570:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6548:50:70"
                      },
                      {
                        "condition": {
                          "id": 14810,
                          "name": "deleteRecord",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14791,
                          "src": "6612:12:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14895,
                          "nodeType": "Block",
                          "src": "6996:372:70",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14864,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "baseExpression": {
                                            "id": 14853,
                                            "name": "versionable_records",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14456,
                                            "src": "7031:19:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                              "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                            }
                                          },
                                          "id": 14855,
                                          "indexExpression": {
                                            "id": 14854,
                                            "name": "version",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14793,
                                            "src": "7051:7:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7031:28:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                            "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                          }
                                        },
                                        "id": 14857,
                                        "indexExpression": {
                                          "id": 14856,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14779,
                                          "src": "7060:4:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7031:34:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                        }
                                      },
                                      "id": 14859,
                                      "indexExpression": {
                                        "id": 14858,
                                        "name": "nameHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14797,
                                        "src": "7066:8:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7031:44:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                        "typeString": "mapping(uint16 => bytes storage ref)"
                                      }
                                    },
                                    "id": 14861,
                                    "indexExpression": {
                                      "id": 14860,
                                      "name": "resource",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14783,
                                      "src": "7076:8:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7031:54:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  },
                                  "id": 14862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7086:6:70",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "7031:61:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 14863,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7112:1:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7031:82:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 14875,
                              "nodeType": "IfStatement",
                              "src": "7010:206:70",
                              "trueBody": {
                                "id": 14874,
                                "nodeType": "Block",
                                "src": "7128:88:70",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 14872,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7146:55:70",
                                      "subExpression": {
                                        "baseExpression": {
                                          "baseExpression": {
                                            "baseExpression": {
                                              "id": 14865,
                                              "name": "versionable_nameEntriesCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14464,
                                              "src": "7146:28:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                                "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))"
                                              }
                                            },
                                            "id": 14869,
                                            "indexExpression": {
                                              "id": 14866,
                                              "name": "version",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14793,
                                              "src": "7175:7:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7146:37:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                              "typeString": "mapping(bytes32 => mapping(bytes32 => uint16))"
                                            }
                                          },
                                          "id": 14870,
                                          "indexExpression": {
                                            "id": 14867,
                                            "name": "node",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14779,
                                            "src": "7184:4:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7146:43:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                            "typeString": "mapping(bytes32 => uint16)"
                                          }
                                        },
                                        "id": 14871,
                                        "indexExpression": {
                                          "id": 14868,
                                          "name": "nameHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14797,
                                          "src": "7190:8:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7146:53:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 14873,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7146:55:70"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 14886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 14876,
                                          "name": "versionable_records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14456,
                                          "src": "7229:19:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                            "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                          }
                                        },
                                        "id": 14881,
                                        "indexExpression": {
                                          "id": 14877,
                                          "name": "version",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14793,
                                          "src": "7249:7:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7229:28:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                        }
                                      },
                                      "id": 14882,
                                      "indexExpression": {
                                        "id": 14878,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14779,
                                        "src": "7258:4:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7229:34:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                      }
                                    },
                                    "id": 14883,
                                    "indexExpression": {
                                      "id": 14879,
                                      "name": "nameHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14797,
                                      "src": "7264:8:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7229:44:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                      "typeString": "mapping(uint16 => bytes storage ref)"
                                    }
                                  },
                                  "id": 14884,
                                  "indexExpression": {
                                    "id": 14880,
                                    "name": "resource",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14783,
                                    "src": "7274:8:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7229:54:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 14885,
                                  "name": "rrData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14803,
                                  "src": "7286:6:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "7229:63:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 14887,
                              "nodeType": "ExpressionStatement",
                              "src": "7229:63:70"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 14889,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14779,
                                    "src": "7328:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 14890,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14781,
                                    "src": "7334:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 14891,
                                    "name": "resource",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14783,
                                    "src": "7340:8:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "id": 14892,
                                    "name": "rrData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14803,
                                    "src": "7350:6:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 14888,
                                  "name": "DNSRecordChanged",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14990,
                                  "src": "7311:16:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes32,bytes memory,uint16,bytes memory)"
                                  }
                                },
                                "id": 14893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7311:46:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14894,
                              "nodeType": "EmitStatement",
                              "src": "7306:51:70"
                            }
                          ]
                        },
                        "id": 14896,
                        "nodeType": "IfStatement",
                        "src": "6608:760:70",
                        "trueBody": {
                          "id": 14852,
                          "nodeType": "Block",
                          "src": "6626:364:70",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14822,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "baseExpression": {
                                            "id": 14811,
                                            "name": "versionable_records",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14456,
                                            "src": "6661:19:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                              "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                            }
                                          },
                                          "id": 14813,
                                          "indexExpression": {
                                            "id": 14812,
                                            "name": "version",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14793,
                                            "src": "6681:7:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "6661:28:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                            "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                          }
                                        },
                                        "id": 14815,
                                        "indexExpression": {
                                          "id": 14814,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14779,
                                          "src": "6690:4:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6661:34:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                        }
                                      },
                                      "id": 14817,
                                      "indexExpression": {
                                        "id": 14816,
                                        "name": "nameHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14797,
                                        "src": "6696:8:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6661:44:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                        "typeString": "mapping(uint16 => bytes storage ref)"
                                      }
                                    },
                                    "id": 14819,
                                    "indexExpression": {
                                      "id": 14818,
                                      "name": "resource",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14783,
                                      "src": "6706:8:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6661:54:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  },
                                  "id": 14820,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6716:6:70",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "6661:61:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 14821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6742:1:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6661:82:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 14833,
                              "nodeType": "IfStatement",
                              "src": "6640:206:70",
                              "trueBody": {
                                "id": 14832,
                                "nodeType": "Block",
                                "src": "6758:88:70",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 14830,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "--",
                                      "prefix": false,
                                      "src": "6776:55:70",
                                      "subExpression": {
                                        "baseExpression": {
                                          "baseExpression": {
                                            "baseExpression": {
                                              "id": 14823,
                                              "name": "versionable_nameEntriesCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14464,
                                              "src": "6776:28:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                                "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => uint16)))"
                                              }
                                            },
                                            "id": 14827,
                                            "indexExpression": {
                                              "id": 14824,
                                              "name": "version",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14793,
                                              "src": "6805:7:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6776:37:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                              "typeString": "mapping(bytes32 => mapping(bytes32 => uint16))"
                                            }
                                          },
                                          "id": 14828,
                                          "indexExpression": {
                                            "id": 14825,
                                            "name": "node",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14779,
                                            "src": "6814:4:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "6776:43:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                            "typeString": "mapping(bytes32 => uint16)"
                                          }
                                        },
                                        "id": 14829,
                                        "indexExpression": {
                                          "id": 14826,
                                          "name": "nameHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14797,
                                          "src": "6820:8:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "6776:53:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 14831,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6776:55:70"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 14844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "6859:63:70",
                                "subExpression": {
                                  "components": [
                                    {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "baseExpression": {
                                            "baseExpression": {
                                              "id": 14834,
                                              "name": "versionable_records",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14456,
                                              "src": "6867:19:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                                "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                              }
                                            },
                                            "id": 14836,
                                            "indexExpression": {
                                              "id": 14835,
                                              "name": "version",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14793,
                                              "src": "6887:7:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6867:28:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                              "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                            }
                                          },
                                          "id": 14838,
                                          "indexExpression": {
                                            "id": 14837,
                                            "name": "node",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14779,
                                            "src": "6896:4:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "6867:34:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                            "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                          }
                                        },
                                        "id": 14840,
                                        "indexExpression": {
                                          "id": 14839,
                                          "name": "nameHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14797,
                                          "src": "6902:8:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6867:44:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                          "typeString": "mapping(uint16 => bytes storage ref)"
                                        }
                                      },
                                      "id": 14842,
                                      "indexExpression": {
                                        "id": 14841,
                                        "name": "resource",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14783,
                                        "src": "6912:8:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "6867:54:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage",
                                        "typeString": "bytes storage ref"
                                      }
                                    }
                                  ],
                                  "id": 14843,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "6866:56:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14845,
                              "nodeType": "ExpressionStatement",
                              "src": "6859:63:70"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 14847,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14779,
                                    "src": "6958:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 14848,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14781,
                                    "src": "6964:4:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 14849,
                                    "name": "resource",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14783,
                                    "src": "6970:8:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "id": 14846,
                                  "name": "DNSRecordDeleted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14998,
                                  "src": "6941:16:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$returns$__$",
                                    "typeString": "function (bytes32,bytes memory,uint16)"
                                  }
                                },
                                "id": 14850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6941:38:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14851,
                              "nodeType": "EmitStatement",
                              "src": "6936:43:70"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 14898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDNSRRSet",
                  "nameLocation": "6270:11:70",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14794,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14779,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "6299:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14898,
                        "src": "6291:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14778,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6291:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14781,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "6326:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14898,
                        "src": "6313:17:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14780,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6313:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14783,
                        "mutability": "mutable",
                        "name": "resource",
                        "nameLocation": "6347:8:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14898,
                        "src": "6340:15:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 14782,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "6340:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14785,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6378:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14898,
                        "src": "6365:17:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14784,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6365:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14787,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "6400:6:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14898,
                        "src": "6392:14:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14786,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6392:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14789,
                        "mutability": "mutable",
                        "name": "size",
                        "nameLocation": "6424:4:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14898,
                        "src": "6416:12:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6416:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14791,
                        "mutability": "mutable",
                        "name": "deleteRecord",
                        "nameLocation": "6443:12:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14898,
                        "src": "6438:17:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14790,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6438:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14793,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "6472:7:70",
                        "nodeType": "VariableDeclaration",
                        "scope": 14898,
                        "src": "6465:14:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 14792,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "6465:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6281:204:70"
                  },
                  "returnParameters": {
                    "id": 14795,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6494:0:70"
                  },
                  "scope": 14899,
                  "src": "6261:1113:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 14900,
              "src": "199:7177:70",
              "usedErrors": []
            }
          ],
          "src": "32:7345:70"
        },
        "id": 70
      },
      "contracts/resolvers/profiles/IABIResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IABIResolver.sol",
          "exportedSymbols": {
            "ERC165": [
              3082
            ],
            "IABIResolver": [
              14922
            ],
            "IERC165": [
              3094
            ],
            "IVersionableResolver": [
              15142
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 14923,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14901,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:71"
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IABIResolver.sol",
              "file": "./IABIResolver.sol",
              "id": 14902,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14923,
              "sourceUnit": 14923,
              "src": "58:28:71",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 14903,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14923,
              "sourceUnit": 13996,
              "src": "87:29:71",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IABIResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 14922,
              "linearizedBaseContracts": [
                14922
              ],
              "name": "IABIResolver",
              "nameLocation": "128:12:71",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "aa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3",
                  "id": 14909,
                  "name": "ABIChanged",
                  "nameLocation": "153:10:71",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14908,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14905,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "180:4:71",
                        "nodeType": "VariableDeclaration",
                        "scope": 14909,
                        "src": "164:20:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14904,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "164:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14907,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "contentType",
                        "nameLocation": "202:11:71",
                        "nodeType": "VariableDeclaration",
                        "scope": 14909,
                        "src": "186:27:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14906,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "186:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:51:71"
                  },
                  "src": "147:68:71"
                },
                {
                  "documentation": {
                    "id": 14910,
                    "nodeType": "StructuredDocumentation",
                    "src": "221:310:71",
                    "text": " Returns the ABI associated with an ENS node.\n Defined in EIP205.\n @param node The ENS node to query\n @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n @return contentType The content type of the return value\n @return data The ABI data"
                  },
                  "functionSelector": "2203ab56",
                  "id": 14921,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ABI",
                  "nameLocation": "545:3:71",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14912,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "557:4:71",
                        "nodeType": "VariableDeclaration",
                        "scope": 14921,
                        "src": "549:12:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14911,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "549:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14914,
                        "mutability": "mutable",
                        "name": "contentTypes",
                        "nameLocation": "571:12:71",
                        "nodeType": "VariableDeclaration",
                        "scope": 14921,
                        "src": "563:20:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14913,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "563:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "548:36:71"
                  },
                  "returnParameters": {
                    "id": 14920,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14917,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14921,
                        "src": "632:7:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "632:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14919,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14921,
                        "src": "641:12:71",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14918,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "641:5:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "631:23:71"
                  },
                  "scope": 14922,
                  "src": "536:119:71",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14923,
              "src": "118:539:71",
              "usedErrors": []
            }
          ],
          "src": "32:626:71"
        },
        "id": 71
      },
      "contracts/resolvers/profiles/IAddrResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IAddrResolver.sol",
          "exportedSymbols": {
            "IAddrResolver": [
              14940
            ]
          },
          "id": 14941,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14924,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:72"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IAddrResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 14925,
                "nodeType": "StructuredDocumentation",
                "src": "58:61:72",
                "text": " Interface for the legacy (ETH-only) addr function."
              },
              "fullyImplemented": false,
              "id": 14940,
              "linearizedBaseContracts": [
                14940
              ],
              "name": "IAddrResolver",
              "nameLocation": "130:13:72",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2",
                  "id": 14931,
                  "name": "AddrChanged",
                  "nameLocation": "156:11:72",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14927,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "184:4:72",
                        "nodeType": "VariableDeclaration",
                        "scope": 14931,
                        "src": "168:20:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14926,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "168:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14929,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "198:1:72",
                        "nodeType": "VariableDeclaration",
                        "scope": 14931,
                        "src": "190:9:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14928,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "190:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "167:33:72"
                  },
                  "src": "150:51:72"
                },
                {
                  "documentation": {
                    "id": 14932,
                    "nodeType": "StructuredDocumentation",
                    "src": "207:148:72",
                    "text": " Returns the address associated with an ENS node.\n @param node The ENS node to query.\n @return The associated address."
                  },
                  "functionSelector": "3b3b57de",
                  "id": 14939,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addr",
                  "nameLocation": "369:4:72",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14934,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "382:4:72",
                        "nodeType": "VariableDeclaration",
                        "scope": 14939,
                        "src": "374:12:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14933,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "374:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "373:14:72"
                  },
                  "returnParameters": {
                    "id": 14938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14937,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14939,
                        "src": "411:15:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 14936,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "411:15:72",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "410:17:72"
                  },
                  "scope": 14940,
                  "src": "360:68:72",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14941,
              "src": "120:310:72",
              "usedErrors": []
            }
          ],
          "src": "32:399:72"
        },
        "id": 72
      },
      "contracts/resolvers/profiles/IAddressResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IAddressResolver.sol",
          "exportedSymbols": {
            "IAddressResolver": [
              14961
            ]
          },
          "id": 14962,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14942,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:73"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IAddressResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 14943,
                "nodeType": "StructuredDocumentation",
                "src": "58:59:73",
                "text": " Interface for the new (multicoin) addr function."
              },
              "fullyImplemented": false,
              "id": 14961,
              "linearizedBaseContracts": [
                14961
              ],
              "name": "IAddressResolver",
              "nameLocation": "128:16:73",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752",
                  "id": 14951,
                  "name": "AddressChanged",
                  "nameLocation": "157:14:73",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14945,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "197:4:73",
                        "nodeType": "VariableDeclaration",
                        "scope": 14951,
                        "src": "181:20:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14944,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "181:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14947,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "coinType",
                        "nameLocation": "219:8:73",
                        "nodeType": "VariableDeclaration",
                        "scope": 14951,
                        "src": "211:16:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14946,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "211:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14949,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nameLocation": "243:10:73",
                        "nodeType": "VariableDeclaration",
                        "scope": 14951,
                        "src": "237:16:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14948,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "237:5:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "171:88:73"
                  },
                  "src": "151:109:73"
                },
                {
                  "functionSelector": "f1cb7e06",
                  "id": 14960,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addr",
                  "nameLocation": "275:4:73",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14953,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "288:4:73",
                        "nodeType": "VariableDeclaration",
                        "scope": 14960,
                        "src": "280:12:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14952,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "280:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14955,
                        "mutability": "mutable",
                        "name": "coinType",
                        "nameLocation": "302:8:73",
                        "nodeType": "VariableDeclaration",
                        "scope": 14960,
                        "src": "294:16:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14954,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "294:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "279:32:73"
                  },
                  "returnParameters": {
                    "id": 14959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14958,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14960,
                        "src": "359:12:73",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14957,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "359:5:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "358:14:73"
                  },
                  "scope": 14961,
                  "src": "266:107:73",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14962,
              "src": "118:257:73",
              "usedErrors": []
            }
          ],
          "src": "32:344:73"
        },
        "id": 73
      },
      "contracts/resolvers/profiles/IContentHashResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IContentHashResolver.sol",
          "exportedSymbols": {
            "IContentHashResolver": [
              14978
            ]
          },
          "id": 14979,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14963,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:74"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IContentHashResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 14978,
              "linearizedBaseContracts": [
                14978
              ],
              "name": "IContentHashResolver",
              "nameLocation": "68:20:74",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "e379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d7578",
                  "id": 14969,
                  "name": "ContenthashChanged",
                  "nameLocation": "101:18:74",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14968,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14965,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "136:4:74",
                        "nodeType": "VariableDeclaration",
                        "scope": 14969,
                        "src": "120:20:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14964,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "120:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14967,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "148:4:74",
                        "nodeType": "VariableDeclaration",
                        "scope": 14969,
                        "src": "142:10:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14966,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "142:5:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "119:34:74"
                  },
                  "src": "95:59:74"
                },
                {
                  "documentation": {
                    "id": 14970,
                    "nodeType": "StructuredDocumentation",
                    "src": "160:156:74",
                    "text": " Returns the contenthash associated with an ENS node.\n @param node The ENS node to query.\n @return The associated contenthash."
                  },
                  "functionSelector": "bc1c58d1",
                  "id": 14977,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contenthash",
                  "nameLocation": "330:11:74",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14972,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "350:4:74",
                        "nodeType": "VariableDeclaration",
                        "scope": 14977,
                        "src": "342:12:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14971,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "341:14:74"
                  },
                  "returnParameters": {
                    "id": 14976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14975,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14977,
                        "src": "379:12:74",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14974,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "379:5:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "378:14:74"
                  },
                  "scope": 14978,
                  "src": "321:72:74",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14979,
              "src": "58:337:74",
              "usedErrors": []
            }
          ],
          "src": "32:364:74"
        },
        "id": 74
      },
      "contracts/resolvers/profiles/IDNSRecordResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IDNSRecordResolver.sol",
          "exportedSymbols": {
            "IDNSRecordResolver": [
              15011
            ]
          },
          "id": 15012,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14980,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:75"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IDNSRecordResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15011,
              "linearizedBaseContracts": [
                15011
              ],
              "name": "IDNSRecordResolver",
              "nameLocation": "68:18:75",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b",
                  "id": 14990,
                  "name": "DNSRecordChanged",
                  "nameLocation": "190:16:75",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14982,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "232:4:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 14990,
                        "src": "216:20:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14981,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "216:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14984,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "252:4:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 14990,
                        "src": "246:10:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14983,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "246:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14986,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "resource",
                        "nameLocation": "273:8:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 14990,
                        "src": "266:15:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 14985,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "266:6:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14988,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "record",
                        "nameLocation": "297:6:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 14990,
                        "src": "291:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14987,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "291:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "206:103:75"
                  },
                  "src": "184:126:75"
                },
                {
                  "anonymous": false,
                  "eventSelector": "03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a1207",
                  "id": 14998,
                  "name": "DNSRecordDeleted",
                  "nameLocation": "412:16:75",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14997,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14992,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "445:4:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 14998,
                        "src": "429:20:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14991,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "429:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14994,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "457:4:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 14998,
                        "src": "451:10:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14993,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "451:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14996,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "resource",
                        "nameLocation": "470:8:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 14998,
                        "src": "463:15:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 14995,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "463:6:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "428:51:75"
                  },
                  "src": "406:74:75"
                },
                {
                  "documentation": {
                    "id": 14999,
                    "nodeType": "StructuredDocumentation",
                    "src": "486:391:75",
                    "text": " Obtain a DNS record.\n @param node the namehash of the node for which to fetch the record\n @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n @return the DNS record in wire format if present, otherwise empty"
                  },
                  "functionSelector": "a8fa5682",
                  "id": 15010,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dnsRecord",
                  "nameLocation": "891:9:75",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15006,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15001,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "918:4:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 15010,
                        "src": "910:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15000,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "910:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15003,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "940:4:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 15010,
                        "src": "932:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15002,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "932:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15005,
                        "mutability": "mutable",
                        "name": "resource",
                        "nameLocation": "961:8:75",
                        "nodeType": "VariableDeclaration",
                        "scope": 15010,
                        "src": "954:15:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 15004,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "954:6:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "900:75:75"
                  },
                  "returnParameters": {
                    "id": 15009,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15008,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15010,
                        "src": "999:12:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15007,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "999:5:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "998:14:75"
                  },
                  "scope": 15011,
                  "src": "882:131:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15012,
              "src": "58:957:75",
              "usedErrors": []
            }
          ],
          "src": "32:984:75"
        },
        "id": 75
      },
      "contracts/resolvers/profiles/IDNSZoneResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IDNSZoneResolver.sol",
          "exportedSymbols": {
            "IDNSZoneResolver": [
              15030
            ]
          },
          "id": 15031,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15013,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:76"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IDNSZoneResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15030,
              "linearizedBaseContracts": [
                15030
              ],
              "name": "IDNSZoneResolver",
              "nameLocation": "68:16:76",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f85",
                  "id": 15021,
                  "name": "DNSZonehashChanged",
                  "nameLocation": "180:18:76",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15020,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15015,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "224:4:76",
                        "nodeType": "VariableDeclaration",
                        "scope": 15021,
                        "src": "208:20:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15014,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "208:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15017,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastzonehash",
                        "nameLocation": "244:12:76",
                        "nodeType": "VariableDeclaration",
                        "scope": 15021,
                        "src": "238:18:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15016,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:5:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15019,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "zonehash",
                        "nameLocation": "272:8:76",
                        "nodeType": "VariableDeclaration",
                        "scope": 15021,
                        "src": "266:14:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15018,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "266:5:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "198:88:76"
                  },
                  "src": "174:113:76"
                },
                {
                  "documentation": {
                    "id": 15022,
                    "nodeType": "StructuredDocumentation",
                    "src": "293:143:76",
                    "text": " zonehash obtains the hash for the zone.\n @param node The ENS node to query.\n @return The associated contenthash."
                  },
                  "functionSelector": "5c98042b",
                  "id": 15029,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "zonehash",
                  "nameLocation": "450:8:76",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15024,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "467:4:76",
                        "nodeType": "VariableDeclaration",
                        "scope": 15029,
                        "src": "459:12:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15023,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "459:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "458:14:76"
                  },
                  "returnParameters": {
                    "id": 15028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15027,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15029,
                        "src": "496:12:76",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15026,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "496:5:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "495:14:76"
                  },
                  "scope": 15030,
                  "src": "441:69:76",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15031,
              "src": "58:454:76",
              "usedErrors": []
            }
          ],
          "src": "32:481:76"
        },
        "id": 76
      },
      "contracts/resolvers/profiles/IExtendedResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IExtendedResolver.sol",
          "exportedSymbols": {
            "IExtendedResolver": [
              15044
            ]
          },
          "id": 15045,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15032,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:77"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IExtendedResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15044,
              "linearizedBaseContracts": [
                15044
              ],
              "name": "IExtendedResolver",
              "nameLocation": "67:17:77",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "9061b923",
                  "id": 15043,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resolve",
                  "nameLocation": "100:7:77",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15034,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "121:4:77",
                        "nodeType": "VariableDeclaration",
                        "scope": 15043,
                        "src": "108:17:77",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15033,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "108:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15036,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "140:4:77",
                        "nodeType": "VariableDeclaration",
                        "scope": 15043,
                        "src": "127:17:77",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15035,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "127:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "107:38:77"
                  },
                  "returnParameters": {
                    "id": 15042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15039,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15043,
                        "src": "193:12:77",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15038,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "193:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15041,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15043,
                        "src": "207:7:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "207:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "192:23:77"
                  },
                  "scope": 15044,
                  "src": "91:125:77",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15045,
              "src": "57:161:77",
              "usedErrors": []
            }
          ],
          "src": "32:187:77"
        },
        "id": 77
      },
      "contracts/resolvers/profiles/IInterfaceResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IInterfaceResolver.sol",
          "exportedSymbols": {
            "IInterfaceResolver": [
              15065
            ]
          },
          "id": 15066,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15046,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:78"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IInterfaceResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15065,
              "linearizedBaseContracts": [
                15065
              ],
              "name": "IInterfaceResolver",
              "nameLocation": "68:18:78",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa",
                  "id": 15054,
                  "name": "InterfaceChanged",
                  "nameLocation": "99:16:78",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15048,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "141:4:78",
                        "nodeType": "VariableDeclaration",
                        "scope": 15054,
                        "src": "125:20:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15047,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "125:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15050,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "170:11:78",
                        "nodeType": "VariableDeclaration",
                        "scope": 15054,
                        "src": "155:26:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15049,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "155:6:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15052,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "implementer",
                        "nameLocation": "199:11:78",
                        "nodeType": "VariableDeclaration",
                        "scope": 15054,
                        "src": "191:19:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15051,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "191:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "115:101:78"
                  },
                  "src": "93:124:78"
                },
                {
                  "documentation": {
                    "id": 15055,
                    "nodeType": "StructuredDocumentation",
                    "src": "223:626:78",
                    "text": " Returns the address of a contract that implements the specified interface for this name.\n If an implementer has not been set for this interfaceID and name, the resolver will query\n the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\n contract implements EIP165 and returns `true` for the specified interfaceID, its address\n will be returned.\n @param node The ENS node to query.\n @param interfaceID The EIP 165 interface ID to check for.\n @return The address that implements this interface, or 0 if the interface is unsupported."
                  },
                  "functionSelector": "124a319c",
                  "id": 15064,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "interfaceImplementer",
                  "nameLocation": "863:20:78",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15057,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "892:4:78",
                        "nodeType": "VariableDeclaration",
                        "scope": 15064,
                        "src": "884:12:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15056,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "884:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15059,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "905:11:78",
                        "nodeType": "VariableDeclaration",
                        "scope": 15064,
                        "src": "898:18:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15058,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:6:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "883:34:78"
                  },
                  "returnParameters": {
                    "id": 15063,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15062,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15064,
                        "src": "965:7:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15061,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "965:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "964:9:78"
                  },
                  "scope": 15065,
                  "src": "854:120:78",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15066,
              "src": "58:918:78",
              "usedErrors": []
            }
          ],
          "src": "32:945:78"
        },
        "id": 78
      },
      "contracts/resolvers/profiles/INameResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/INameResolver.sol",
          "exportedSymbols": {
            "INameResolver": [
              15082
            ]
          },
          "id": 15083,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15067,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:79"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "INameResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15082,
              "linearizedBaseContracts": [
                15082
              ],
              "name": "INameResolver",
              "nameLocation": "68:13:79",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "b7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7",
                  "id": 15073,
                  "name": "NameChanged",
                  "nameLocation": "94:11:79",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15072,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15069,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "122:4:79",
                        "nodeType": "VariableDeclaration",
                        "scope": 15073,
                        "src": "106:20:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15068,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "106:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15071,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "135:4:79",
                        "nodeType": "VariableDeclaration",
                        "scope": 15073,
                        "src": "128:11:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15070,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "128:6:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "105:35:79"
                  },
                  "src": "88:53:79"
                },
                {
                  "documentation": {
                    "id": 15074,
                    "nodeType": "StructuredDocumentation",
                    "src": "147:189:79",
                    "text": " Returns the name associated with an ENS node, for reverse records.\n Defined in EIP181.\n @param node The ENS node to query.\n @return The associated name."
                  },
                  "functionSelector": "691f3431",
                  "id": 15081,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "350:4:79",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15077,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15076,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "363:4:79",
                        "nodeType": "VariableDeclaration",
                        "scope": 15081,
                        "src": "355:12:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15075,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "355:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "354:14:79"
                  },
                  "returnParameters": {
                    "id": 15080,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15079,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15081,
                        "src": "392:13:79",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15078,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "392:6:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "391:15:79"
                  },
                  "scope": 15082,
                  "src": "341:66:79",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15083,
              "src": "58:351:79",
              "usedErrors": []
            }
          ],
          "src": "32:378:79"
        },
        "id": 79
      },
      "contracts/resolvers/profiles/IPubkeyResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IPubkeyResolver.sol",
          "exportedSymbols": {
            "IPubkeyResolver": [
              15103
            ]
          },
          "id": 15104,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15084,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:80"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IPubkeyResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15103,
              "linearizedBaseContracts": [
                15103
              ],
              "name": "IPubkeyResolver",
              "nameLocation": "68:15:80",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46",
                  "id": 15092,
                  "name": "PubkeyChanged",
                  "nameLocation": "96:13:80",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15091,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15086,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "126:4:80",
                        "nodeType": "VariableDeclaration",
                        "scope": 15092,
                        "src": "110:20:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15085,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "110:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15088,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "140:1:80",
                        "nodeType": "VariableDeclaration",
                        "scope": 15092,
                        "src": "132:9:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15087,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "132:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15090,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "151:1:80",
                        "nodeType": "VariableDeclaration",
                        "scope": 15092,
                        "src": "143:9:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15089,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "143:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "109:44:80"
                  },
                  "src": "90:64:80"
                },
                {
                  "documentation": {
                    "id": 15093,
                    "nodeType": "StructuredDocumentation",
                    "src": "160:294:80",
                    "text": " Returns the SECP256k1 public key associated with an ENS node.\n Defined in EIP 619.\n @param node The ENS node to query\n @return x The X coordinate of the curve point for the public key.\n @return y The Y coordinate of the curve point for the public key."
                  },
                  "functionSelector": "c8690233",
                  "id": 15102,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pubkey",
                  "nameLocation": "468:6:80",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15096,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15095,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "483:4:80",
                        "nodeType": "VariableDeclaration",
                        "scope": 15102,
                        "src": "475:12:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15094,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "475:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "474:14:80"
                  },
                  "returnParameters": {
                    "id": 15101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15098,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "520:1:80",
                        "nodeType": "VariableDeclaration",
                        "scope": 15102,
                        "src": "512:9:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15097,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "512:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15100,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "531:1:80",
                        "nodeType": "VariableDeclaration",
                        "scope": 15102,
                        "src": "523:9:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15099,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "523:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "511:22:80"
                  },
                  "scope": 15103,
                  "src": "459:75:80",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15104,
              "src": "58:478:80",
              "usedErrors": []
            }
          ],
          "src": "32:505:80"
        },
        "id": 80
      },
      "contracts/resolvers/profiles/ITextResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/ITextResolver.sol",
          "exportedSymbols": {
            "ITextResolver": [
              15126
            ]
          },
          "id": 15127,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15105,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:81"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ITextResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15126,
              "linearizedBaseContracts": [
                15126
              ],
              "name": "ITextResolver",
              "nameLocation": "68:13:81",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
                  "id": 15115,
                  "name": "TextChanged",
                  "nameLocation": "94:11:81",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15114,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15107,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "131:4:81",
                        "nodeType": "VariableDeclaration",
                        "scope": 15115,
                        "src": "115:20:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15106,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "115:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15109,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "indexedKey",
                        "nameLocation": "160:10:81",
                        "nodeType": "VariableDeclaration",
                        "scope": 15115,
                        "src": "145:25:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15108,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "145:6:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15111,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "187:3:81",
                        "nodeType": "VariableDeclaration",
                        "scope": 15115,
                        "src": "180:10:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15110,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "180:6:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15113,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "207:5:81",
                        "nodeType": "VariableDeclaration",
                        "scope": 15115,
                        "src": "200:12:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15112,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "200:6:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "105:113:81"
                  },
                  "src": "88:131:81"
                },
                {
                  "documentation": {
                    "id": 15116,
                    "nodeType": "StructuredDocumentation",
                    "src": "225:206:81",
                    "text": " Returns the text data associated with an ENS node and key.\n @param node The ENS node to query.\n @param key The text data key to query.\n @return The associated text data."
                  },
                  "functionSelector": "59d1d43c",
                  "id": 15125,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "text",
                  "nameLocation": "445:4:81",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15121,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15118,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "458:4:81",
                        "nodeType": "VariableDeclaration",
                        "scope": 15125,
                        "src": "450:12:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15117,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "450:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15120,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "480:3:81",
                        "nodeType": "VariableDeclaration",
                        "scope": 15125,
                        "src": "464:19:81",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15119,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "464:6:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "449:35:81"
                  },
                  "returnParameters": {
                    "id": 15124,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15123,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15125,
                        "src": "532:13:81",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15122,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "532:6:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "531:15:81"
                  },
                  "scope": 15126,
                  "src": "436:111:81",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15127,
              "src": "58:491:81",
              "usedErrors": []
            }
          ],
          "src": "32:518:81"
        },
        "id": 81
      },
      "contracts/resolvers/profiles/IVersionableResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/IVersionableResolver.sol",
          "exportedSymbols": {
            "IVersionableResolver": [
              15142
            ]
          },
          "id": 15143,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15128,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:82"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IVersionableResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 15142,
              "linearizedBaseContracts": [
                15142
              ],
              "name": "IVersionableResolver",
              "nameLocation": "68:20:82",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "c6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444",
                  "id": 15134,
                  "name": "VersionChanged",
                  "nameLocation": "101:14:82",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15133,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15130,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "132:4:82",
                        "nodeType": "VariableDeclaration",
                        "scope": 15134,
                        "src": "116:20:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15129,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "116:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15132,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newVersion",
                        "nameLocation": "145:10:82",
                        "nodeType": "VariableDeclaration",
                        "scope": 15134,
                        "src": "138:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 15131,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "138:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "115:41:82"
                  },
                  "src": "95:62:82"
                },
                {
                  "functionSelector": "d700ff33",
                  "id": 15141,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recordVersions",
                  "nameLocation": "172:14:82",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15137,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15136,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "195:4:82",
                        "nodeType": "VariableDeclaration",
                        "scope": 15141,
                        "src": "187:12:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15135,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "187:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "186:14:82"
                  },
                  "returnParameters": {
                    "id": 15140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15139,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15141,
                        "src": "224:6:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 15138,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "224:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "223:8:82"
                  },
                  "scope": 15142,
                  "src": "163:69:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15143,
              "src": "58:176:82",
              "usedErrors": []
            }
          ],
          "src": "32:203:82"
        },
        "id": 82
      },
      "contracts/resolvers/profiles/InterfaceResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/InterfaceResolver.sol",
          "exportedSymbols": {
            "AddrResolver": [
              14342
            ],
            "ERC165": [
              3082
            ],
            "IAddrResolver": [
              14940
            ],
            "IAddressResolver": [
              14961
            ],
            "IERC165": [
              3094
            ],
            "IInterfaceResolver": [
              15065
            ],
            "IVersionableResolver": [
              15142
            ],
            "InterfaceResolver": [
              15338
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 15339,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15144,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:83"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "id": 15145,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15339,
              "sourceUnit": 3095,
              "src": "58:65:83",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 15146,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15339,
              "sourceUnit": 13996,
              "src": "124:29:83",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/AddrResolver.sol",
              "file": "./AddrResolver.sol",
              "id": 15147,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15339,
              "sourceUnit": 14343,
              "src": "154:28:83",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IInterfaceResolver.sol",
              "file": "./IInterfaceResolver.sol",
              "id": 15148,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15339,
              "sourceUnit": 15066,
              "src": "183:34:83",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 15149,
                    "name": "IInterfaceResolver",
                    "nameLocations": [
                      "258:18:83"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15065,
                    "src": "258:18:83"
                  },
                  "id": 15150,
                  "nodeType": "InheritanceSpecifier",
                  "src": "258:18:83"
                },
                {
                  "baseName": {
                    "id": 15151,
                    "name": "AddrResolver",
                    "nameLocations": [
                      "278:12:83"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14342,
                    "src": "278:12:83"
                  },
                  "id": 15152,
                  "nodeType": "InheritanceSpecifier",
                  "src": "278:12:83"
                }
              ],
              "canonicalName": "InterfaceResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 15338,
              "linearizedBaseContracts": [
                15338,
                14342,
                13995,
                15142,
                3082,
                3094,
                14961,
                14940,
                15065
              ],
              "name": "InterfaceResolver",
              "nameLocation": "237:17:83",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 15160,
                  "mutability": "mutable",
                  "name": "versionable_interfaces",
                  "nameLocation": "363:22:83",
                  "nodeType": "VariableDeclaration",
                  "scope": 15338,
                  "src": "297:88:83",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes4_$_t_address_$_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address)))"
                  },
                  "typeName": {
                    "id": 15159,
                    "keyType": {
                      "id": 15153,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "305:6:83",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "297:65:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes4_$_t_address_$_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address)))"
                    },
                    "valueType": {
                      "id": 15158,
                      "keyType": {
                        "id": 15154,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "323:7:83",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "315:46:83",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes4_$_t_address_$_$",
                        "typeString": "mapping(bytes32 => mapping(bytes4 => address))"
                      },
                      "valueType": {
                        "id": 15157,
                        "keyType": {
                          "id": 15155,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:6:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "334:26:83",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                          "typeString": "mapping(bytes4 => address)"
                        },
                        "valueType": {
                          "id": 15156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "352:7:83",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15191,
                    "nodeType": "Block",
                    "src": "910:157:83",
                    "statements": [
                      {
                        "expression": {
                          "id": 15183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 15173,
                                  "name": "versionable_interfaces",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15160,
                                  "src": "920:22:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes4_$_t_address_$_$_$",
                                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address)))"
                                  }
                                },
                                "id": 15179,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 15174,
                                    "name": "recordVersions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13932,
                                    "src": "943:14:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                      "typeString": "mapping(bytes32 => uint64)"
                                    }
                                  },
                                  "id": 15176,
                                  "indexExpression": {
                                    "id": 15175,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15163,
                                    "src": "958:4:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "943:20:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "920:44:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes4_$_t_address_$_$",
                                  "typeString": "mapping(bytes32 => mapping(bytes4 => address))"
                                }
                              },
                              "id": 15180,
                              "indexExpression": {
                                "id": 15177,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15163,
                                "src": "965:4:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "920:50:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                                "typeString": "mapping(bytes4 => address)"
                              }
                            },
                            "id": 15181,
                            "indexExpression": {
                              "id": 15178,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15165,
                              "src": "971:11:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "920:63:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15182,
                            "name": "implementer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15167,
                            "src": "986:11:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "920:77:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15184,
                        "nodeType": "ExpressionStatement",
                        "src": "920:77:83"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15186,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15163,
                              "src": "1029:4:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15187,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15165,
                              "src": "1035:11:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "id": 15188,
                              "name": "implementer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15167,
                              "src": "1048:11:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15185,
                            "name": "InterfaceChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15054,
                            "src": "1012:16:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes4,address)"
                            }
                          },
                          "id": 15189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1012:48:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15190,
                        "nodeType": "EmitStatement",
                        "src": "1007:53:83"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15161,
                    "nodeType": "StructuredDocumentation",
                    "src": "392:372:83",
                    "text": " Sets an interface associated with a name.\n Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n @param node The node to update.\n @param interfaceID The EIP 165 interface ID.\n @param implementer The address of a contract that implements this interface for this node."
                  },
                  "functionSelector": "e59d895d",
                  "id": 15192,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 15170,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15163,
                          "src": "904:4:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 15171,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15169,
                        "name": "authorised",
                        "nameLocations": [
                          "893:10:83"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "893:10:83"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "893:16:83"
                    }
                  ],
                  "name": "setInterface",
                  "nameLocation": "778:12:83",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15163,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "808:4:83",
                        "nodeType": "VariableDeclaration",
                        "scope": 15192,
                        "src": "800:12:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15162,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "800:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15165,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "829:11:83",
                        "nodeType": "VariableDeclaration",
                        "scope": 15192,
                        "src": "822:18:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15164,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:6:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15167,
                        "mutability": "mutable",
                        "name": "implementer",
                        "nameLocation": "858:11:83",
                        "nodeType": "VariableDeclaration",
                        "scope": 15192,
                        "src": "850:19:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15166,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "850:7:83",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "790:85:83"
                  },
                  "returnParameters": {
                    "id": 15172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "910:0:83"
                  },
                  "scope": 15338,
                  "src": "769:298:83",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    15064
                  ],
                  "body": {
                    "id": 15315,
                    "nodeType": "Block",
                    "src": "1861:993:83",
                    "statements": [
                      {
                        "assignments": [
                          15204
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15204,
                            "mutability": "mutable",
                            "name": "implementer",
                            "nameLocation": "1879:11:83",
                            "nodeType": "VariableDeclaration",
                            "scope": 15315,
                            "src": "1871:19:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 15203,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1871:7:83",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15214,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 15205,
                                "name": "versionable_interfaces",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15160,
                                "src": "1893:22:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_bytes4_$_t_address_$_$_$",
                                  "typeString": "mapping(uint64 => mapping(bytes32 => mapping(bytes4 => address)))"
                                }
                              },
                              "id": 15209,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 15206,
                                  "name": "recordVersions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13932,
                                  "src": "1916:14:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                    "typeString": "mapping(bytes32 => uint64)"
                                  }
                                },
                                "id": 15208,
                                "indexExpression": {
                                  "id": 15207,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15195,
                                  "src": "1931:4:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1916:20:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1893:44:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes4_$_t_address_$_$",
                                "typeString": "mapping(bytes32 => mapping(bytes4 => address))"
                              }
                            },
                            "id": 15211,
                            "indexExpression": {
                              "id": 15210,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15195,
                              "src": "1938:4:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1893:50:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 15213,
                          "indexExpression": {
                            "id": 15212,
                            "name": "interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15197,
                            "src": "1944:11:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1893:63:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1871:85:83"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 15220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15215,
                            "name": "implementer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15204,
                            "src": "1970:11:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 15218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1993:1:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 15217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1985:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 15216,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1985:7:83",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 15219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1985:10:83",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1970:25:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15224,
                        "nodeType": "IfStatement",
                        "src": "1966:74:83",
                        "trueBody": {
                          "id": 15223,
                          "nodeType": "Block",
                          "src": "1997:43:83",
                          "statements": [
                            {
                              "expression": {
                                "id": 15221,
                                "name": "implementer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15204,
                                "src": "2018:11:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 15202,
                              "id": 15222,
                              "nodeType": "Return",
                              "src": "2011:18:83"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          15226
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15226,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "2058:1:83",
                            "nodeType": "VariableDeclaration",
                            "scope": 15315,
                            "src": "2050:9:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 15225,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2050:7:83",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15230,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 15228,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15195,
                              "src": "2067:4:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 15227,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              14217,
                              14281
                            ],
                            "referencedDeclaration": 14217,
                            "src": "2062:4:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_payable_$",
                              "typeString": "function (bytes32) view returns (address payable)"
                            }
                          },
                          "id": 15229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2062:10:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2050:22:83"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 15236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15231,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15226,
                            "src": "2086:1:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 15234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2099:1:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 15233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2091:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 15232,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2091:7:83",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 15235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2091:10:83",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2086:15:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15243,
                        "nodeType": "IfStatement",
                        "src": "2082:63:83",
                        "trueBody": {
                          "id": 15242,
                          "nodeType": "Block",
                          "src": "2103:42:83",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 15239,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2132:1:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 15238,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2124:7:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 15237,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2124:7:83",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 15240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2124:10:83",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 15202,
                              "id": 15241,
                              "nodeType": "Return",
                              "src": "2117:17:83"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          15245,
                          15247
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15245,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2161:7:83",
                            "nodeType": "VariableDeclaration",
                            "scope": 15315,
                            "src": "2156:12:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 15244,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2156:4:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 15247,
                            "mutability": "mutable",
                            "name": "returnData",
                            "nameLocation": "2183:10:83",
                            "nodeType": "VariableDeclaration",
                            "scope": 15315,
                            "src": "2170:23:83",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 15246,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2170:5:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15259,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "737570706f727473496e746572666163652862797465733429",
                                  "id": 15252,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2264:27:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                                    "typeString": "literal_string \"supportsInterface(bytes4)\""
                                  },
                                  "value": "supportsInterface(bytes4)"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 15254,
                                        "name": "IERC165",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3094,
                                        "src": "2314:7:83",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                          "typeString": "type(contract IERC165)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC165_$3094_$",
                                          "typeString": "type(contract IERC165)"
                                        }
                                      ],
                                      "id": 15253,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2309:4:83",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 15255,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2309:13:83",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3094",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  },
                                  "id": 15256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "2323:11:83",
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2309:25:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                                    "typeString": "literal_string \"supportsInterface(bytes4)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 15250,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2223:3:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 15251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2227:19:83",
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2223:23:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 15257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2223:125:83",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 15248,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15226,
                              "src": "2197:1:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 15249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2199:10:83",
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "2197:12:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 15258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2197:161:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2155:203:83"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 15266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2372:8:83",
                              "subExpression": {
                                "id": 15260,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15245,
                                "src": "2373:7:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15262,
                                  "name": "returnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15247,
                                  "src": "2384:10:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 15263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2395:6:83",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2384:17:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "3332",
                                "id": 15264,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2404:2:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "2384:22:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2372:34:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            },
                            "id": 15271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 15267,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15247,
                                "src": "2410:10:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 15269,
                              "indexExpression": {
                                "hexValue": "3331",
                                "id": 15268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2421:2:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_31_by_1",
                                  "typeString": "int_const 31"
                                },
                                "value": "31"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2410:14:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 15270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2428:1:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2410:19:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2372:57:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15279,
                        "nodeType": "IfStatement",
                        "src": "2368:152:83",
                        "trueBody": {
                          "id": 15278,
                          "nodeType": "Block",
                          "src": "2431:89:83",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 15275,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2507:1:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 15274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2499:7:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 15273,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2499:7:83",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 15276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2499:10:83",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 15202,
                              "id": 15277,
                              "nodeType": "Return",
                              "src": "2492:17:83"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 15291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 15280,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15245,
                                "src": "2531:7:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "id": 15281,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15247,
                                "src": "2540:10:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 15282,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "2530:21:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "737570706f727473496e746572666163652862797465733429",
                                    "id": 15287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2604:27:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                                      "typeString": "literal_string \"supportsInterface(bytes4)\""
                                    },
                                    "value": "supportsInterface(bytes4)"
                                  },
                                  {
                                    "id": 15288,
                                    "name": "interfaceID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15197,
                                    "src": "2633:11:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                                      "typeString": "literal_string \"supportsInterface(bytes4)\""
                                    },
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "expression": {
                                    "id": 15285,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2580:3:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 15286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "2584:19:83",
                                  "memberName": "encodeWithSignature",
                                  "nodeType": "MemberAccess",
                                  "src": "2580:23:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 15289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2580:65:83",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 15283,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15226,
                                "src": "2554:1:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 15284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2556:10:83",
                              "memberName": "staticcall",
                              "nodeType": "MemberAccess",
                              "src": "2554:12:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                              }
                            },
                            "id": 15290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2554:101:83",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "2530:125:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15292,
                        "nodeType": "ExpressionStatement",
                        "src": "2530:125:83"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 15299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2669:8:83",
                              "subExpression": {
                                "id": 15293,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15245,
                                "src": "2670:7:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15295,
                                  "name": "returnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15247,
                                  "src": "2681:10:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 15296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2692:6:83",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2681:17:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "3332",
                                "id": 15297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2701:2:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "2681:22:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2669:34:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            },
                            "id": 15304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 15300,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15247,
                                "src": "2707:10:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 15302,
                              "indexExpression": {
                                "hexValue": "3331",
                                "id": 15301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2718:2:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_31_by_1",
                                  "typeString": "int_const 31"
                                },
                                "value": "31"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2707:14:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 15303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2725:1:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2707:19:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2669:57:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15312,
                        "nodeType": "IfStatement",
                        "src": "2665:164:83",
                        "trueBody": {
                          "id": 15311,
                          "nodeType": "Block",
                          "src": "2728:101:83",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 15308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2816:1:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 15307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2808:7:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 15306,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2808:7:83",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 15309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2808:10:83",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 15202,
                              "id": 15310,
                              "nodeType": "Return",
                              "src": "2801:17:83"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 15313,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15226,
                          "src": "2846:1:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 15202,
                        "id": 15314,
                        "nodeType": "Return",
                        "src": "2839:8:83"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15193,
                    "nodeType": "StructuredDocumentation",
                    "src": "1073:626:83",
                    "text": " Returns the address of a contract that implements the specified interface for this name.\n If an implementer has not been set for this interfaceID and name, the resolver will query\n the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\n contract implements EIP165 and returns `true` for the specified interfaceID, its address\n will be returned.\n @param node The ENS node to query.\n @param interfaceID The EIP 165 interface ID to check for.\n @return The address that implements this interface, or 0 if the interface is unsupported."
                  },
                  "functionSelector": "124a319c",
                  "id": 15316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "interfaceImplementer",
                  "nameLocation": "1713:20:83",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15199,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1822:8:83"
                  },
                  "parameters": {
                    "id": 15198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15195,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1742:4:83",
                        "nodeType": "VariableDeclaration",
                        "scope": 15316,
                        "src": "1734:12:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15194,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1734:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15197,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1755:11:83",
                        "nodeType": "VariableDeclaration",
                        "scope": 15316,
                        "src": "1748:18:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15196,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1748:6:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1733:34:83"
                  },
                  "returnParameters": {
                    "id": 15202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15201,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15316,
                        "src": "1848:7:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15200,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1848:7:83",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1847:9:83"
                  },
                  "scope": 15338,
                  "src": "1704:1150:83",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    14309
                  ],
                  "body": {
                    "id": 15336,
                    "nodeType": "Block",
                    "src": "2995:139:83",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 15329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15324,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15318,
                              "src": "3024:11:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15326,
                                    "name": "IInterfaceResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15065,
                                    "src": "3044:18:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IInterfaceResolver_$15065_$",
                                      "typeString": "type(contract IInterfaceResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IInterfaceResolver_$15065_$",
                                      "typeString": "type(contract IInterfaceResolver)"
                                    }
                                  ],
                                  "id": 15325,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3039:4:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 15327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3039:24:83",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IInterfaceResolver_$15065",
                                  "typeString": "type(contract IInterfaceResolver)"
                                }
                              },
                              "id": 15328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3064:11:83",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "3039:36:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "3024:51:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 15332,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15318,
                                "src": "3115:11:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 15330,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "3091:5:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_InterfaceResolver_$15338_$",
                                  "typeString": "type(contract super InterfaceResolver)"
                                }
                              },
                              "id": 15331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3097:17:83",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14309,
                              "src": "3091:23:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 15333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3091:36:83",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3024:103:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 15323,
                        "id": 15335,
                        "nodeType": "Return",
                        "src": "3005:122:83"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 15337,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "2869:17:83",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15320,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2959:8:83"
                  },
                  "parameters": {
                    "id": 15319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15318,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "2894:11:83",
                        "nodeType": "VariableDeclaration",
                        "scope": 15337,
                        "src": "2887:18:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15317,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2887:6:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2886:20:83"
                  },
                  "returnParameters": {
                    "id": 15323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15322,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15337,
                        "src": "2985:4:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15321,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2985:4:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2984:6:83"
                  },
                  "scope": 15338,
                  "src": "2860:274:83",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 15339,
              "src": "219:2917:83",
              "usedErrors": []
            }
          ],
          "src": "32:3105:83"
        },
        "id": 83
      },
      "contracts/resolvers/profiles/NameResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/NameResolver.sol",
          "exportedSymbols": {
            "ERC165": [
              3082
            ],
            "IERC165": [
              3094
            ],
            "INameResolver": [
              15082
            ],
            "IVersionableResolver": [
              15142
            ],
            "NameResolver": [
              15419
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 15420,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15340,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:84"
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 15341,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15420,
              "sourceUnit": 13996,
              "src": "58:29:84",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/INameResolver.sol",
              "file": "./INameResolver.sol",
              "id": 15342,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15420,
              "sourceUnit": 15083,
              "src": "88:29:84",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 15343,
                    "name": "INameResolver",
                    "nameLocations": [
                      "153:13:84"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15082,
                    "src": "153:13:84"
                  },
                  "id": 15344,
                  "nodeType": "InheritanceSpecifier",
                  "src": "153:13:84"
                },
                {
                  "baseName": {
                    "id": 15345,
                    "name": "ResolverBase",
                    "nameLocations": [
                      "168:12:84"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13995,
                    "src": "168:12:84"
                  },
                  "id": 15346,
                  "nodeType": "InheritanceSpecifier",
                  "src": "168:12:84"
                }
              ],
              "canonicalName": "NameResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 15419,
              "linearizedBaseContracts": [
                15419,
                13995,
                15142,
                3082,
                3094,
                15082
              ],
              "name": "NameResolver",
              "nameLocation": "137:12:84",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 15352,
                  "mutability": "mutable",
                  "name": "versionable_names",
                  "nameLocation": "233:17:84",
                  "nodeType": "VariableDeclaration",
                  "scope": 15419,
                  "src": "187:63:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_string_storage_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => string))"
                  },
                  "typeName": {
                    "id": 15351,
                    "keyType": {
                      "id": 15347,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "195:6:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "187:45:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_string_storage_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => string))"
                    },
                    "valueType": {
                      "id": 15350,
                      "keyType": {
                        "id": 15348,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "213:7:84",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "205:26:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                        "typeString": "mapping(bytes32 => string)"
                      },
                      "valueType": {
                        "id": 15349,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "224:6:84",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15378,
                    "nodeType": "Block",
                    "src": "574:113:84",
                    "statements": [
                      {
                        "expression": {
                          "id": 15371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 15363,
                                "name": "versionable_names",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15352,
                                "src": "584:17:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_string_storage_$_$",
                                  "typeString": "mapping(uint64 => mapping(bytes32 => string storage ref))"
                                }
                              },
                              "id": 15368,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 15364,
                                  "name": "recordVersions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13932,
                                  "src": "602:14:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                    "typeString": "mapping(bytes32 => uint64)"
                                  }
                                },
                                "id": 15366,
                                "indexExpression": {
                                  "id": 15365,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15355,
                                  "src": "617:4:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "602:20:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "584:39:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                                "typeString": "mapping(bytes32 => string storage ref)"
                              }
                            },
                            "id": 15369,
                            "indexExpression": {
                              "id": 15367,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15355,
                              "src": "624:4:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "584:45:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15370,
                            "name": "newName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15357,
                            "src": "632:7:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "584:55:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 15372,
                        "nodeType": "ExpressionStatement",
                        "src": "584:55:84"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15374,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15355,
                              "src": "666:4:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15375,
                              "name": "newName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15357,
                              "src": "672:7:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 15373,
                            "name": "NameChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15073,
                            "src": "654:11:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,string memory)"
                            }
                          },
                          "id": 15376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "654:26:84",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15377,
                        "nodeType": "EmitStatement",
                        "src": "649:31:84"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15353,
                    "nodeType": "StructuredDocumentation",
                    "src": "257:194:84",
                    "text": " Sets the name associated with an ENS node, for reverse records.\n May only be called by the owner of that node in the ENS registry.\n @param node The node to update."
                  },
                  "functionSelector": "77372213",
                  "id": 15379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 15360,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15355,
                          "src": "564:4:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 15361,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15359,
                        "name": "authorised",
                        "nameLocations": [
                          "553:10:84"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "553:10:84"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "553:16:84"
                    }
                  ],
                  "name": "setName",
                  "nameLocation": "465:7:84",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15355,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "481:4:84",
                        "nodeType": "VariableDeclaration",
                        "scope": 15379,
                        "src": "473:12:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15354,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "473:7:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15357,
                        "mutability": "mutable",
                        "name": "newName",
                        "nameLocation": "503:7:84",
                        "nodeType": "VariableDeclaration",
                        "scope": 15379,
                        "src": "487:23:84",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15356,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "487:6:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "472:39:84"
                  },
                  "returnParameters": {
                    "id": 15362,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "574:0:84"
                  },
                  "scope": 15419,
                  "src": "456:231:84",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    15081
                  ],
                  "body": {
                    "id": 15396,
                    "nodeType": "Block",
                    "src": "1014:69:84",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 15388,
                              "name": "versionable_names",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15352,
                              "src": "1031:17:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_string_storage_$_$",
                                "typeString": "mapping(uint64 => mapping(bytes32 => string storage ref))"
                              }
                            },
                            "id": 15392,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 15389,
                                "name": "recordVersions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13932,
                                "src": "1049:14:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                  "typeString": "mapping(bytes32 => uint64)"
                                }
                              },
                              "id": 15391,
                              "indexExpression": {
                                "id": 15390,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15382,
                                "src": "1064:4:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1049:20:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1031:39:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                              "typeString": "mapping(bytes32 => string storage ref)"
                            }
                          },
                          "id": 15394,
                          "indexExpression": {
                            "id": 15393,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15382,
                            "src": "1071:4:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1031:45:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 15387,
                        "id": 15395,
                        "nodeType": "Return",
                        "src": "1024:52:84"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15380,
                    "nodeType": "StructuredDocumentation",
                    "src": "693:189:84",
                    "text": " Returns the name associated with an ENS node, for reverse records.\n Defined in EIP181.\n @param node The ENS node to query.\n @return The associated name."
                  },
                  "functionSelector": "691f3431",
                  "id": 15397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "896:4:84",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15384,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "969:8:84"
                  },
                  "parameters": {
                    "id": 15383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15382,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "909:4:84",
                        "nodeType": "VariableDeclaration",
                        "scope": 15397,
                        "src": "901:12:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15381,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "901:7:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "900:14:84"
                  },
                  "returnParameters": {
                    "id": 15387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15386,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15397,
                        "src": "995:13:84",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15385,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "995:6:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "994:15:84"
                  },
                  "scope": 15419,
                  "src": "887:196:84",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13994
                  ],
                  "body": {
                    "id": 15417,
                    "nodeType": "Block",
                    "src": "1224:134:84",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 15410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15405,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15399,
                              "src": "1253:11:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15407,
                                    "name": "INameResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15082,
                                    "src": "1273:13:84",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_INameResolver_$15082_$",
                                      "typeString": "type(contract INameResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_INameResolver_$15082_$",
                                      "typeString": "type(contract INameResolver)"
                                    }
                                  ],
                                  "id": 15406,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1268:4:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 15408,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1268:19:84",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_INameResolver_$15082",
                                  "typeString": "type(contract INameResolver)"
                                }
                              },
                              "id": 15409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1288:11:84",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1268:31:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1253:46:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 15413,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15399,
                                "src": "1339:11:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 15411,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1315:5:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_NameResolver_$15419_$",
                                  "typeString": "type(contract super NameResolver)"
                                }
                              },
                              "id": 15412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1321:17:84",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13994,
                              "src": "1315:23:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 15414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1315:36:84",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1253:98:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 15404,
                        "id": 15416,
                        "nodeType": "Return",
                        "src": "1234:117:84"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 15418,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1098:17:84",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15401,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1188:8:84"
                  },
                  "parameters": {
                    "id": 15400,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15399,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1123:11:84",
                        "nodeType": "VariableDeclaration",
                        "scope": 15418,
                        "src": "1116:18:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15398,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1116:6:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1115:20:84"
                  },
                  "returnParameters": {
                    "id": 15404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15403,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15418,
                        "src": "1214:4:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15402,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1214:4:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1213:6:84"
                  },
                  "scope": 15419,
                  "src": "1089:269:84",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 15420,
              "src": "119:1241:84",
              "usedErrors": []
            }
          ],
          "src": "32:1329:84"
        },
        "id": 84
      },
      "contracts/resolvers/profiles/PubkeyResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/PubkeyResolver.sol",
          "exportedSymbols": {
            "ERC165": [
              3082
            ],
            "IERC165": [
              3094
            ],
            "IPubkeyResolver": [
              15103
            ],
            "IVersionableResolver": [
              15142
            ],
            "PubkeyResolver": [
              15526
            ],
            "ResolverBase": [
              13995
            ]
          },
          "id": 15527,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15421,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:85"
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 15422,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15527,
              "sourceUnit": 13996,
              "src": "58:29:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IPubkeyResolver.sol",
              "file": "./IPubkeyResolver.sol",
              "id": 15423,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15527,
              "sourceUnit": 15104,
              "src": "88:31:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 15424,
                    "name": "IPubkeyResolver",
                    "nameLocations": [
                      "157:15:85"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15103,
                    "src": "157:15:85"
                  },
                  "id": 15425,
                  "nodeType": "InheritanceSpecifier",
                  "src": "157:15:85"
                },
                {
                  "baseName": {
                    "id": 15426,
                    "name": "ResolverBase",
                    "nameLocations": [
                      "174:12:85"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13995,
                    "src": "174:12:85"
                  },
                  "id": 15427,
                  "nodeType": "InheritanceSpecifier",
                  "src": "174:12:85"
                }
              ],
              "canonicalName": "PubkeyResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 15526,
              "linearizedBaseContracts": [
                15526,
                13995,
                15142,
                3082,
                3094,
                15103
              ],
              "name": "PubkeyResolver",
              "nameLocation": "139:14:85",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "PubkeyResolver.PublicKey",
                  "id": 15432,
                  "members": [
                    {
                      "constant": false,
                      "id": 15429,
                      "mutability": "mutable",
                      "name": "x",
                      "nameLocation": "228:1:85",
                      "nodeType": "VariableDeclaration",
                      "scope": 15432,
                      "src": "220:9:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 15428,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "220:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15431,
                      "mutability": "mutable",
                      "name": "y",
                      "nameLocation": "247:1:85",
                      "nodeType": "VariableDeclaration",
                      "scope": 15432,
                      "src": "239:9:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 15430,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "239:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "PublicKey",
                  "nameLocation": "200:9:85",
                  "nodeType": "StructDefinition",
                  "scope": 15526,
                  "src": "193:62:85",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15439,
                  "mutability": "mutable",
                  "name": "versionable_pubkeys",
                  "nameLocation": "310:19:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 15526,
                  "src": "261:68:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => struct PubkeyResolver.PublicKey))"
                  },
                  "typeName": {
                    "id": 15438,
                    "keyType": {
                      "id": 15433,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "269:6:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "261:48:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => struct PubkeyResolver.PublicKey))"
                    },
                    "valueType": {
                      "id": 15437,
                      "keyType": {
                        "id": 15434,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "287:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "279:29:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$",
                        "typeString": "mapping(bytes32 => struct PubkeyResolver.PublicKey)"
                      },
                      "valueType": {
                        "id": 15436,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 15435,
                          "name": "PublicKey",
                          "nameLocations": [
                            "298:9:85"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 15432,
                          "src": "298:9:85"
                        },
                        "referencedDeclaration": 15432,
                        "src": "298:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PublicKey_$15432_storage_ptr",
                          "typeString": "struct PubkeyResolver.PublicKey"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15471,
                    "nodeType": "Block",
                    "src": "722:122:85",
                    "statements": [
                      {
                        "expression": {
                          "id": 15463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 15452,
                                "name": "versionable_pubkeys",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15439,
                                "src": "732:19:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$_$",
                                  "typeString": "mapping(uint64 => mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref))"
                                }
                              },
                              "id": 15457,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 15453,
                                  "name": "recordVersions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13932,
                                  "src": "752:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                    "typeString": "mapping(bytes32 => uint64)"
                                  }
                                },
                                "id": 15455,
                                "indexExpression": {
                                  "id": 15454,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15442,
                                  "src": "767:4:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "752:20:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "732:41:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$",
                                "typeString": "mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)"
                              }
                            },
                            "id": 15458,
                            "indexExpression": {
                              "id": 15456,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15442,
                              "src": "774:4:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "732:47:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PublicKey_$15432_storage",
                              "typeString": "struct PubkeyResolver.PublicKey storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 15460,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15444,
                                "src": "792:1:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 15461,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15446,
                                "src": "795:1:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 15459,
                              "name": "PublicKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15432,
                              "src": "782:9:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_PublicKey_$15432_storage_ptr_$",
                                "typeString": "type(struct PubkeyResolver.PublicKey storage pointer)"
                              }
                            },
                            "id": 15462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "782:15:85",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PublicKey_$15432_memory_ptr",
                              "typeString": "struct PubkeyResolver.PublicKey memory"
                            }
                          },
                          "src": "732:65:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$15432_storage",
                            "typeString": "struct PubkeyResolver.PublicKey storage ref"
                          }
                        },
                        "id": 15464,
                        "nodeType": "ExpressionStatement",
                        "src": "732:65:85"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15466,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15442,
                              "src": "826:4:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15467,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15444,
                              "src": "832:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15468,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15446,
                              "src": "835:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 15465,
                            "name": "PubkeyChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15092,
                            "src": "812:13:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 15469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "812:25:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15470,
                        "nodeType": "EmitStatement",
                        "src": "807:30:85"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15440,
                    "nodeType": "StructuredDocumentation",
                    "src": "336:262:85",
                    "text": " Sets the SECP256k1 public key associated with an ENS node.\n @param node The ENS node to query\n @param x the X coordinate of the curve point for the public key.\n @param y the Y coordinate of the curve point for the public key."
                  },
                  "functionSelector": "29cd62ea",
                  "id": 15472,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 15449,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15442,
                          "src": "716:4:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 15450,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15448,
                        "name": "authorised",
                        "nameLocations": [
                          "705:10:85"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "705:10:85"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "705:16:85"
                    }
                  ],
                  "name": "setPubkey",
                  "nameLocation": "612:9:85",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15442,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "639:4:85",
                        "nodeType": "VariableDeclaration",
                        "scope": 15472,
                        "src": "631:12:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15441,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "631:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15444,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "661:1:85",
                        "nodeType": "VariableDeclaration",
                        "scope": 15472,
                        "src": "653:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15443,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "653:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15446,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "680:1:85",
                        "nodeType": "VariableDeclaration",
                        "scope": 15472,
                        "src": "672:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15445,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "672:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "621:66:85"
                  },
                  "returnParameters": {
                    "id": 15451,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "722:0:85"
                  },
                  "scope": 15526,
                  "src": "603:241:85",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    15102
                  ],
                  "body": {
                    "id": 15503,
                    "nodeType": "Block",
                    "src": "1285:220:85",
                    "statements": [
                      {
                        "assignments": [
                          15484
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15484,
                            "mutability": "mutable",
                            "name": "currentRecordVersion",
                            "nameLocation": "1302:20:85",
                            "nodeType": "VariableDeclaration",
                            "scope": 15503,
                            "src": "1295:27:85",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 15483,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "1295:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15488,
                        "initialValue": {
                          "baseExpression": {
                            "id": 15485,
                            "name": "recordVersions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13932,
                            "src": "1325:14:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                              "typeString": "mapping(bytes32 => uint64)"
                            }
                          },
                          "id": 15487,
                          "indexExpression": {
                            "id": 15486,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15475,
                            "src": "1340:4:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1325:20:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1295:50:85"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 15489,
                                    "name": "versionable_pubkeys",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15439,
                                    "src": "1376:19:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$_$",
                                      "typeString": "mapping(uint64 => mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref))"
                                    }
                                  },
                                  "id": 15491,
                                  "indexExpression": {
                                    "id": 15490,
                                    "name": "currentRecordVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15484,
                                    "src": "1396:20:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1376:41:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$",
                                    "typeString": "mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)"
                                  }
                                },
                                "id": 15493,
                                "indexExpression": {
                                  "id": 15492,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15475,
                                  "src": "1418:4:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1376:47:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PublicKey_$15432_storage",
                                  "typeString": "struct PubkeyResolver.PublicKey storage ref"
                                }
                              },
                              "id": 15494,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1424:1:85",
                              "memberName": "x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15429,
                              "src": "1376:49:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 15495,
                                    "name": "versionable_pubkeys",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15439,
                                    "src": "1439:19:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$_$",
                                      "typeString": "mapping(uint64 => mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref))"
                                    }
                                  },
                                  "id": 15497,
                                  "indexExpression": {
                                    "id": 15496,
                                    "name": "currentRecordVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15484,
                                    "src": "1459:20:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1439:41:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$15432_storage_$",
                                    "typeString": "mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)"
                                  }
                                },
                                "id": 15499,
                                "indexExpression": {
                                  "id": 15498,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15475,
                                  "src": "1481:4:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1439:47:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PublicKey_$15432_storage",
                                  "typeString": "struct PubkeyResolver.PublicKey storage ref"
                                }
                              },
                              "id": 15500,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1487:1:85",
                              "memberName": "y",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15431,
                              "src": "1439:49:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "id": 15501,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1362:136:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                            "typeString": "tuple(bytes32,bytes32)"
                          }
                        },
                        "functionReturnParameters": 15482,
                        "id": 15502,
                        "nodeType": "Return",
                        "src": "1355:143:85"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15473,
                    "nodeType": "StructuredDocumentation",
                    "src": "850:294:85",
                    "text": " Returns the SECP256k1 public key associated with an ENS node.\n Defined in EIP 619.\n @param node The ENS node to query\n @return x The X coordinate of the curve point for the public key.\n @return y The Y coordinate of the curve point for the public key."
                  },
                  "functionSelector": "c8690233",
                  "id": 15504,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pubkey",
                  "nameLocation": "1158:6:85",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15477,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1233:8:85"
                  },
                  "parameters": {
                    "id": 15476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15475,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1173:4:85",
                        "nodeType": "VariableDeclaration",
                        "scope": 15504,
                        "src": "1165:12:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15474,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1165:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1164:14:85"
                  },
                  "returnParameters": {
                    "id": 15482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15479,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "1267:1:85",
                        "nodeType": "VariableDeclaration",
                        "scope": 15504,
                        "src": "1259:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15478,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1259:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15481,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "1278:1:85",
                        "nodeType": "VariableDeclaration",
                        "scope": 15504,
                        "src": "1270:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15480,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1270:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1258:22:85"
                  },
                  "scope": 15526,
                  "src": "1149:356:85",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13994
                  ],
                  "body": {
                    "id": 15524,
                    "nodeType": "Block",
                    "src": "1646:136:85",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 15517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15512,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15506,
                              "src": "1675:11:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15514,
                                    "name": "IPubkeyResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15103,
                                    "src": "1695:15:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IPubkeyResolver_$15103_$",
                                      "typeString": "type(contract IPubkeyResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IPubkeyResolver_$15103_$",
                                      "typeString": "type(contract IPubkeyResolver)"
                                    }
                                  ],
                                  "id": 15513,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1690:4:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 15515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1690:21:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IPubkeyResolver_$15103",
                                  "typeString": "type(contract IPubkeyResolver)"
                                }
                              },
                              "id": 15516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1712:11:85",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1690:33:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1675:48:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 15520,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15506,
                                "src": "1763:11:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 15518,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1739:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_PubkeyResolver_$15526_$",
                                  "typeString": "type(contract super PubkeyResolver)"
                                }
                              },
                              "id": 15519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1745:17:85",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13994,
                              "src": "1739:23:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 15521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1739:36:85",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1675:100:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 15511,
                        "id": 15523,
                        "nodeType": "Return",
                        "src": "1656:119:85"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 15525,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1520:17:85",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15508,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1610:8:85"
                  },
                  "parameters": {
                    "id": 15507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15506,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1545:11:85",
                        "nodeType": "VariableDeclaration",
                        "scope": 15525,
                        "src": "1538:18:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15505,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1538:6:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1537:20:85"
                  },
                  "returnParameters": {
                    "id": 15511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15510,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15525,
                        "src": "1636:4:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15509,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1636:4:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1635:6:85"
                  },
                  "scope": 15526,
                  "src": "1511:271:85",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 15527,
              "src": "121:1663:85",
              "usedErrors": []
            }
          ],
          "src": "32:1753:85"
        },
        "id": 85
      },
      "contracts/resolvers/profiles/TextResolver.sol": {
        "ast": {
          "absolutePath": "contracts/resolvers/profiles/TextResolver.sol",
          "exportedSymbols": {
            "ERC165": [
              3082
            ],
            "IERC165": [
              3094
            ],
            "ITextResolver": [
              15126
            ],
            "IVersionableResolver": [
              15142
            ],
            "ResolverBase": [
              13995
            ],
            "TextResolver": [
              15619
            ]
          },
          "id": 15620,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15528,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:86"
            },
            {
              "absolutePath": "contracts/resolvers/ResolverBase.sol",
              "file": "../ResolverBase.sol",
              "id": 15529,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15620,
              "sourceUnit": 13996,
              "src": "58:29:86",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/ITextResolver.sol",
              "file": "./ITextResolver.sol",
              "id": 15530,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15620,
              "sourceUnit": 15127,
              "src": "88:29:86",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 15531,
                    "name": "ITextResolver",
                    "nameLocations": [
                      "153:13:86"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15126,
                    "src": "153:13:86"
                  },
                  "id": 15532,
                  "nodeType": "InheritanceSpecifier",
                  "src": "153:13:86"
                },
                {
                  "baseName": {
                    "id": 15533,
                    "name": "ResolverBase",
                    "nameLocations": [
                      "168:12:86"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13995,
                    "src": "168:12:86"
                  },
                  "id": 15534,
                  "nodeType": "InheritanceSpecifier",
                  "src": "168:12:86"
                }
              ],
              "canonicalName": "TextResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 15619,
              "linearizedBaseContracts": [
                15619,
                13995,
                15142,
                3082,
                3094,
                15126
              ],
              "name": "TextResolver",
              "nameLocation": "137:12:86",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 15542,
                  "mutability": "mutable",
                  "name": "versionable_texts",
                  "nameLocation": "252:17:86",
                  "nodeType": "VariableDeclaration",
                  "scope": 15619,
                  "src": "187:82:86",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_string_memory_ptr_$_t_string_storage_$_$_$",
                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(string => string)))"
                  },
                  "typeName": {
                    "id": 15541,
                    "keyType": {
                      "id": 15535,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "195:6:86",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "187:64:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_string_memory_ptr_$_t_string_storage_$_$_$",
                      "typeString": "mapping(uint64 => mapping(bytes32 => mapping(string => string)))"
                    },
                    "valueType": {
                      "id": 15540,
                      "keyType": {
                        "id": 15536,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "213:7:86",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "205:45:86",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_string_memory_ptr_$_t_string_storage_$_$",
                        "typeString": "mapping(bytes32 => mapping(string => string))"
                      },
                      "valueType": {
                        "id": 15539,
                        "keyType": {
                          "id": 15537,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "232:6:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "224:25:86",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_string_storage_$",
                          "typeString": "mapping(string => string)"
                        },
                        "valueType": {
                          "id": 15538,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "242:6:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15574,
                    "nodeType": "Block",
                    "src": "688:124:86",
                    "statements": [
                      {
                        "expression": {
                          "id": 15565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 15555,
                                  "name": "versionable_texts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15542,
                                  "src": "698:17:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_string_memory_ptr_$_t_string_storage_$_$_$",
                                    "typeString": "mapping(uint64 => mapping(bytes32 => mapping(string memory => string storage ref)))"
                                  }
                                },
                                "id": 15561,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 15556,
                                    "name": "recordVersions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13932,
                                    "src": "716:14:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                      "typeString": "mapping(bytes32 => uint64)"
                                    }
                                  },
                                  "id": 15558,
                                  "indexExpression": {
                                    "id": 15557,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15545,
                                    "src": "731:4:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "716:20:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "698:39:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_string_memory_ptr_$_t_string_storage_$_$",
                                  "typeString": "mapping(bytes32 => mapping(string memory => string storage ref))"
                                }
                              },
                              "id": 15562,
                              "indexExpression": {
                                "id": 15559,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15545,
                                "src": "738:4:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "698:45:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_string_storage_$",
                                "typeString": "mapping(string memory => string storage ref)"
                              }
                            },
                            "id": 15563,
                            "indexExpression": {
                              "id": 15560,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15547,
                              "src": "744:3:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "698:50:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15564,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15549,
                            "src": "751:5:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "698:58:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 15566,
                        "nodeType": "ExpressionStatement",
                        "src": "698:58:86"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15568,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15545,
                              "src": "783:4:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15569,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15547,
                              "src": "789:3:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 15570,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15547,
                              "src": "794:3:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 15571,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15549,
                              "src": "799:5:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 15567,
                            "name": "TextChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15115,
                            "src": "771:11:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,string memory,string memory,string memory)"
                            }
                          },
                          "id": 15572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "771:34:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15573,
                        "nodeType": "EmitStatement",
                        "src": "766:39:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15543,
                    "nodeType": "StructuredDocumentation",
                    "src": "276:268:86",
                    "text": " Sets the text data associated with an ENS node and key.\n May only be called by the owner of that node in the ENS registry.\n @param node The node to update.\n @param key The key to set.\n @param value The text data value to set."
                  },
                  "functionSelector": "10f13a8c",
                  "id": 15575,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 15552,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15545,
                          "src": "682:4:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 15553,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15551,
                        "name": "authorised",
                        "nameLocations": [
                          "671:10:86"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 13951,
                        "src": "671:10:86"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "671:16:86"
                    }
                  ],
                  "name": "setText",
                  "nameLocation": "558:7:86",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15545,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "583:4:86",
                        "nodeType": "VariableDeclaration",
                        "scope": 15575,
                        "src": "575:12:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15544,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "575:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15547,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "613:3:86",
                        "nodeType": "VariableDeclaration",
                        "scope": 15575,
                        "src": "597:19:86",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15546,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "597:6:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15549,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "642:5:86",
                        "nodeType": "VariableDeclaration",
                        "scope": 15575,
                        "src": "626:21:86",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15548,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "626:6:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "565:88:86"
                  },
                  "returnParameters": {
                    "id": 15554,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "688:0:86"
                  },
                  "scope": 15619,
                  "src": "549:263:86",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    15125
                  ],
                  "body": {
                    "id": 15596,
                    "nodeType": "Block",
                    "src": "1177:74:86",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 15586,
                                "name": "versionable_texts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15542,
                                "src": "1194:17:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_bytes32_$_t_mapping$_t_string_memory_ptr_$_t_string_storage_$_$_$",
                                  "typeString": "mapping(uint64 => mapping(bytes32 => mapping(string memory => string storage ref)))"
                                }
                              },
                              "id": 15590,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 15587,
                                  "name": "recordVersions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13932,
                                  "src": "1212:14:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                    "typeString": "mapping(bytes32 => uint64)"
                                  }
                                },
                                "id": 15589,
                                "indexExpression": {
                                  "id": 15588,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15578,
                                  "src": "1227:4:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1212:20:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1194:39:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_string_memory_ptr_$_t_string_storage_$_$",
                                "typeString": "mapping(bytes32 => mapping(string memory => string storage ref))"
                              }
                            },
                            "id": 15592,
                            "indexExpression": {
                              "id": 15591,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15578,
                              "src": "1234:4:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1194:45:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_string_storage_$",
                              "typeString": "mapping(string memory => string storage ref)"
                            }
                          },
                          "id": 15594,
                          "indexExpression": {
                            "id": 15593,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15580,
                            "src": "1240:3:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1194:50:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 15585,
                        "id": 15595,
                        "nodeType": "Return",
                        "src": "1187:57:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15576,
                    "nodeType": "StructuredDocumentation",
                    "src": "818:206:86",
                    "text": " Returns the text data associated with an ENS node and key.\n @param node The ENS node to query.\n @param key The text data key to query.\n @return The associated text data."
                  },
                  "functionSelector": "59d1d43c",
                  "id": 15597,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "text",
                  "nameLocation": "1038:4:86",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15582,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1132:8:86"
                  },
                  "parameters": {
                    "id": 15581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15578,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1051:4:86",
                        "nodeType": "VariableDeclaration",
                        "scope": 15597,
                        "src": "1043:12:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15577,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1043:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15580,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "1073:3:86",
                        "nodeType": "VariableDeclaration",
                        "scope": 15597,
                        "src": "1057:19:86",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15579,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1057:6:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1042:35:86"
                  },
                  "returnParameters": {
                    "id": 15585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15584,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15597,
                        "src": "1158:13:86",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15583,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1158:6:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1157:15:86"
                  },
                  "scope": 15619,
                  "src": "1029:222:86",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    13994
                  ],
                  "body": {
                    "id": 15617,
                    "nodeType": "Block",
                    "src": "1392:134:86",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 15610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15605,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15599,
                              "src": "1421:11:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15607,
                                    "name": "ITextResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15126,
                                    "src": "1441:13:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ITextResolver_$15126_$",
                                      "typeString": "type(contract ITextResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_ITextResolver_$15126_$",
                                      "typeString": "type(contract ITextResolver)"
                                    }
                                  ],
                                  "id": 15606,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1436:4:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 15608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1436:19:86",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_ITextResolver_$15126",
                                  "typeString": "type(contract ITextResolver)"
                                }
                              },
                              "id": 15609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1456:11:86",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1436:31:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1421:46:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 15613,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15599,
                                "src": "1507:11:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 15611,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1483:5:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_TextResolver_$15619_$",
                                  "typeString": "type(contract super TextResolver)"
                                }
                              },
                              "id": 15612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1489:17:86",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13994,
                              "src": "1483:23:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 15614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1483:36:86",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1421:98:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 15604,
                        "id": 15616,
                        "nodeType": "Return",
                        "src": "1402:117:86"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 15618,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1266:17:86",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15601,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1356:8:86"
                  },
                  "parameters": {
                    "id": 15600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15599,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1291:11:86",
                        "nodeType": "VariableDeclaration",
                        "scope": 15618,
                        "src": "1284:18:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15598,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1284:6:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1283:20:86"
                  },
                  "returnParameters": {
                    "id": 15604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15603,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15618,
                        "src": "1382:4:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15602,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1382:4:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1381:6:86"
                  },
                  "scope": 15619,
                  "src": "1257:269:86",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 15620,
              "src": "119:1409:86",
              "usedErrors": []
            }
          ],
          "src": "32:1497:86"
        },
        "id": 86
      },
      "contracts/root/Controllable.sol": {
        "ast": {
          "absolutePath": "contracts/root/Controllable.sol",
          "exportedSymbols": {
            "Context": [
              2855
            ],
            "Controllable": [
              15668
            ],
            "Ownable": [
              642
            ]
          },
          "id": 15669,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15621,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:87"
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 15622,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15669,
              "sourceUnit": 643,
              "src": "25:52:87",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 15623,
                    "name": "Ownable",
                    "nameLocations": [
                      "104:7:87"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "104:7:87"
                  },
                  "id": 15624,
                  "nodeType": "InheritanceSpecifier",
                  "src": "104:7:87"
                }
              ],
              "canonicalName": "Controllable",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 15668,
              "linearizedBaseContracts": [
                15668,
                642,
                2855
              ],
              "name": "Controllable",
              "nameLocation": "88:12:87",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "da8c229e",
                  "id": 15628,
                  "mutability": "mutable",
                  "name": "controllers",
                  "nameLocation": "150:11:87",
                  "nodeType": "VariableDeclaration",
                  "scope": 15668,
                  "src": "118:43:87",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 15627,
                    "keyType": {
                      "id": 15625,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "126:7:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "118:24:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 15626,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "137:4:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87",
                  "id": 15634,
                  "name": "ControllerChanged",
                  "nameLocation": "174:17:87",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15630,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "208:10:87",
                        "nodeType": "VariableDeclaration",
                        "scope": 15634,
                        "src": "192:26:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15629,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "192:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15632,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "enabled",
                        "nameLocation": "225:7:87",
                        "nodeType": "VariableDeclaration",
                        "scope": 15634,
                        "src": "220:12:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15631,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "220:4:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "191:42:87"
                  },
                  "src": "168:66:87"
                },
                {
                  "body": {
                    "id": 15645,
                    "nodeType": "Block",
                    "src": "266:138:87",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 15637,
                                "name": "controllers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15628,
                                "src": "297:11:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 15640,
                              "indexExpression": {
                                "expression": {
                                  "id": 15638,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "309:3:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 15639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "313:6:87",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "309:10:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "297:23:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f6e74726f6c6c6572",
                              "id": 15641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "334:42:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b",
                                "typeString": "literal_string \"Controllable: Caller is not a controller\""
                              },
                              "value": "Controllable: Caller is not a controller"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b",
                                "typeString": "literal_string \"Controllable: Caller is not a controller\""
                              }
                            ],
                            "id": 15636,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "276:7:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "276:110:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15643,
                        "nodeType": "ExpressionStatement",
                        "src": "276:110:87"
                      },
                      {
                        "id": 15644,
                        "nodeType": "PlaceholderStatement",
                        "src": "396:1:87"
                      }
                    ]
                  },
                  "id": 15646,
                  "name": "onlyController",
                  "nameLocation": "249:14:87",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 15635,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "263:2:87"
                  },
                  "src": "240:164:87",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15666,
                    "nodeType": "Block",
                    "src": "484:103:87",
                    "statements": [
                      {
                        "expression": {
                          "id": 15659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 15655,
                              "name": "controllers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15628,
                              "src": "494:11:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 15657,
                            "indexExpression": {
                              "id": 15656,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15648,
                              "src": "506:10:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "494:23:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15658,
                            "name": "enabled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15650,
                            "src": "520:7:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "494:33:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15660,
                        "nodeType": "ExpressionStatement",
                        "src": "494:33:87"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15662,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15648,
                              "src": "560:10:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15663,
                              "name": "enabled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15650,
                              "src": "572:7:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15661,
                            "name": "ControllerChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15634,
                            "src": "542:17:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 15664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "542:38:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15665,
                        "nodeType": "EmitStatement",
                        "src": "537:43:87"
                      }
                    ]
                  },
                  "functionSelector": "e0dba60f",
                  "id": 15667,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 15653,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15652,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "474:9:87"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "474:9:87"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "474:9:87"
                    }
                  ],
                  "name": "setController",
                  "nameLocation": "419:13:87",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15651,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15648,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "441:10:87",
                        "nodeType": "VariableDeclaration",
                        "scope": 15667,
                        "src": "433:18:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15647,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "433:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15650,
                        "mutability": "mutable",
                        "name": "enabled",
                        "nameLocation": "458:7:87",
                        "nodeType": "VariableDeclaration",
                        "scope": 15667,
                        "src": "453:12:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15649,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "453:4:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "432:34:87"
                  },
                  "returnParameters": {
                    "id": 15654,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "484:0:87"
                  },
                  "scope": 15668,
                  "src": "410:177:87",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 15669,
              "src": "79:510:87",
              "usedErrors": []
            }
          ],
          "src": "0:590:87"
        },
        "id": 87
      },
      "contracts/root/Ownable.sol": {
        "ast": {
          "absolutePath": "contracts/root/Ownable.sol",
          "exportedSymbols": {
            "Ownable": [
              15728
            ]
          },
          "id": 15729,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15670,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:88"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Ownable",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 15728,
              "linearizedBaseContracts": [
                15728
              ],
              "name": "Ownable",
              "nameLocation": "34:7:88",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "8da5cb5b",
                  "id": 15672,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "63:5:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 15728,
                  "src": "48:20:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15671,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "48:7:88",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
                  "id": 15678,
                  "name": "OwnershipTransferred",
                  "nameLocation": "81:20:88",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15674,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "127:13:88",
                        "nodeType": "VariableDeclaration",
                        "scope": 15678,
                        "src": "111:29:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15673,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "111:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15676,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "166:8:88",
                        "nodeType": "VariableDeclaration",
                        "scope": 15678,
                        "src": "150:24:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15675,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "150:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "101:79:88"
                  },
                  "src": "75:106:88"
                },
                {
                  "body": {
                    "id": 15688,
                    "nodeType": "Block",
                    "src": "208:56:88",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 15682,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "234:3:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 15683,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "238:6:88",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "234:10:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 15681,
                                "name": "isOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15727,
                                "src": "226:7:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 15684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "226:19:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15680,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "218:7:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 15685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "218:28:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15686,
                        "nodeType": "ExpressionStatement",
                        "src": "218:28:88"
                      },
                      {
                        "id": 15687,
                        "nodeType": "PlaceholderStatement",
                        "src": "256:1:88"
                      }
                    ]
                  },
                  "id": 15689,
                  "name": "onlyOwner",
                  "nameLocation": "196:9:88",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 15679,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "205:2:88"
                  },
                  "src": "187:77:88",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15697,
                    "nodeType": "Block",
                    "src": "291:35:88",
                    "statements": [
                      {
                        "expression": {
                          "id": 15695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15692,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15672,
                            "src": "301:5:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 15693,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "309:3:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 15694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "313:6:88",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "309:10:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "301:18:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15696,
                        "nodeType": "ExpressionStatement",
                        "src": "301:18:88"
                      }
                    ]
                  },
                  "id": 15698,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15690,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "281:2:88"
                  },
                  "returnParameters": {
                    "id": 15691,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "291:0:88"
                  },
                  "scope": 15728,
                  "src": "270:56:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15714,
                    "nodeType": "Block",
                    "src": "394:85:88",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15706,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15672,
                              "src": "430:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15707,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15700,
                              "src": "437:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15705,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15678,
                            "src": "409:20:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 15708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "409:37:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15709,
                        "nodeType": "EmitStatement",
                        "src": "404:42:88"
                      },
                      {
                        "expression": {
                          "id": 15712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15710,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15672,
                            "src": "456:5:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15711,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15700,
                            "src": "464:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "456:16:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15713,
                        "nodeType": "ExpressionStatement",
                        "src": "456:16:88"
                      }
                    ]
                  },
                  "functionSelector": "f2fde38b",
                  "id": 15715,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 15703,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15702,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "384:9:88"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15689,
                        "src": "384:9:88"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "384:9:88"
                    }
                  ],
                  "name": "transferOwnership",
                  "nameLocation": "341:17:88",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15700,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "367:8:88",
                        "nodeType": "VariableDeclaration",
                        "scope": 15715,
                        "src": "359:16:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15699,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "359:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "358:18:88"
                  },
                  "returnParameters": {
                    "id": 15704,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "394:0:88"
                  },
                  "scope": 15728,
                  "src": "332:147:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15726,
                    "nodeType": "Block",
                    "src": "543:37:88",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 15724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15722,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15672,
                            "src": "560:5:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 15723,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15717,
                            "src": "569:4:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "560:13:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 15721,
                        "id": 15725,
                        "nodeType": "Return",
                        "src": "553:20:88"
                      }
                    ]
                  },
                  "functionSelector": "2f54bf6e",
                  "id": 15727,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isOwner",
                  "nameLocation": "494:7:88",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15718,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15717,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "510:4:88",
                        "nodeType": "VariableDeclaration",
                        "scope": 15727,
                        "src": "502:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15716,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "502:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "501:14:88"
                  },
                  "returnParameters": {
                    "id": 15721,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15720,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15727,
                        "src": "537:4:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15719,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "537:4:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "536:6:88"
                  },
                  "scope": 15728,
                  "src": "485:95:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 15729,
              "src": "25:557:88",
              "usedErrors": []
            }
          ],
          "src": "0:583:88"
        },
        "id": 88
      },
      "contracts/root/Root.sol": {
        "ast": {
          "absolutePath": "contracts/root/Root.sol",
          "exportedSymbols": {
            "Context": [
              2855
            ],
            "Controllable": [
              15668
            ],
            "ENS": [
              12157
            ],
            "Ownable": [
              642
            ],
            "Root": [
              15844
            ]
          },
          "id": 15845,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15730,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:89"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../registry/ENS.sol",
              "id": 15731,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15845,
              "sourceUnit": 12158,
              "src": "25:29:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 15732,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15845,
              "sourceUnit": 643,
              "src": "55:52:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/root/Controllable.sol",
              "file": "./Controllable.sol",
              "id": 15733,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15845,
              "sourceUnit": 15669,
              "src": "108:28:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 15734,
                    "name": "Ownable",
                    "nameLocations": [
                      "155:7:89"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "155:7:89"
                  },
                  "id": 15735,
                  "nodeType": "InheritanceSpecifier",
                  "src": "155:7:89"
                },
                {
                  "baseName": {
                    "id": 15736,
                    "name": "Controllable",
                    "nameLocations": [
                      "164:12:89"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15668,
                    "src": "164:12:89"
                  },
                  "id": 15737,
                  "nodeType": "InheritanceSpecifier",
                  "src": "164:12:89"
                }
              ],
              "canonicalName": "Root",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 15844,
              "linearizedBaseContracts": [
                15844,
                15668,
                642,
                2855
              ],
              "name": "Root",
              "nameLocation": "147:4:89",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 15743,
                  "mutability": "constant",
                  "name": "ROOT_NODE",
                  "nameLocation": "208:9:89",
                  "nodeType": "VariableDeclaration",
                  "scope": 15844,
                  "src": "183:47:89",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15738,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "183:7:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 15741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "228:1:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 15740,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "220:7:89",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 15739,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "220:7:89",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 15742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "220:10:89",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 15751,
                  "mutability": "constant",
                  "name": "INTERFACE_META_ID",
                  "nameLocation": "261:17:89",
                  "nodeType": "VariableDeclaration",
                  "scope": 15844,
                  "src": "237:98:89",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 15744,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "237:6:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "737570706f727473496e746572666163652862797465733429",
                            "id": 15748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "306:27:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                              "typeString": "literal_string \"supportsInterface(bytes4)\""
                            },
                            "value": "supportsInterface(bytes4)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                              "typeString": "literal_string \"supportsInterface(bytes4)\""
                            }
                          ],
                          "id": 15747,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "296:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 15749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "296:38:89",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 15746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "289:6:89",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 15745,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "289:6:89",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 15750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "289:46:89",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1764176cfa565853ba1ded547a830a9f9bff95231ef6fd228b3ddd6175777569",
                  "id": 15755,
                  "name": "TLDLocked",
                  "nameLocation": "348:9:89",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15753,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "374:5:89",
                        "nodeType": "VariableDeclaration",
                        "scope": 15755,
                        "src": "358:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15752,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "358:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "357:23:89"
                  },
                  "src": "342:39:89"
                },
                {
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 15758,
                  "mutability": "mutable",
                  "name": "ens",
                  "nameLocation": "398:3:89",
                  "nodeType": "VariableDeclaration",
                  "scope": 15844,
                  "src": "387:14:89",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 15757,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15756,
                      "name": "ENS",
                      "nameLocations": [
                        "387:3:89"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "387:3:89"
                    },
                    "referencedDeclaration": 12157,
                    "src": "387:3:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cbe9e764",
                  "id": 15762,
                  "mutability": "mutable",
                  "name": "locked",
                  "nameLocation": "439:6:89",
                  "nodeType": "VariableDeclaration",
                  "scope": 15844,
                  "src": "407:38:89",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                    "typeString": "mapping(bytes32 => bool)"
                  },
                  "typeName": {
                    "id": 15761,
                    "keyType": {
                      "id": 15759,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "415:7:89",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "407:24:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                      "typeString": "mapping(bytes32 => bool)"
                    },
                    "valueType": {
                      "id": 15760,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "426:4:89",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15772,
                    "nodeType": "Block",
                    "src": "481:27:89",
                    "statements": [
                      {
                        "expression": {
                          "id": 15770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15768,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15758,
                            "src": "491:3:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15769,
                            "name": "_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15765,
                            "src": "497:4:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "491:10:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 15771,
                        "nodeType": "ExpressionStatement",
                        "src": "491:10:89"
                      }
                    ]
                  },
                  "id": 15773,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15765,
                        "mutability": "mutable",
                        "name": "_ens",
                        "nameLocation": "468:4:89",
                        "nodeType": "VariableDeclaration",
                        "scope": 15773,
                        "src": "464:8:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 15764,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 15763,
                            "name": "ENS",
                            "nameLocations": [
                              "464:3:89"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "464:3:89"
                          },
                          "referencedDeclaration": 12157,
                          "src": "464:3:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "463:10:89"
                  },
                  "returnParameters": {
                    "id": 15767,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "481:0:89"
                  },
                  "scope": 15844,
                  "src": "452:56:89",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15797,
                    "nodeType": "Block",
                    "src": "613:94:89",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "631:14:89",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 15783,
                                  "name": "locked",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15762,
                                  "src": "632:6:89",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                    "typeString": "mapping(bytes32 => bool)"
                                  }
                                },
                                "id": 15785,
                                "indexExpression": {
                                  "id": 15784,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15775,
                                  "src": "639:5:89",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "632:13:89",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15782,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "623:7:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 15787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "623:23:89",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15788,
                        "nodeType": "ExpressionStatement",
                        "src": "623:23:89"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15792,
                              "name": "ROOT_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15743,
                              "src": "676:9:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15793,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15775,
                              "src": "687:5:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15794,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15777,
                              "src": "694:5:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 15789,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15758,
                              "src": "656:3:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 15791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "660:15:89",
                            "memberName": "setSubnodeOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12091,
                            "src": "656:19:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                            }
                          },
                          "id": 15795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "656:44:89",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 15796,
                        "nodeType": "ExpressionStatement",
                        "src": "656:44:89"
                      }
                    ]
                  },
                  "functionSelector": "8cb8ecec",
                  "id": 15798,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 15780,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15779,
                        "name": "onlyController",
                        "nameLocations": [
                          "594:14:89"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 15646,
                        "src": "594:14:89"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "594:14:89"
                    }
                  ],
                  "name": "setSubnodeOwner",
                  "nameLocation": "523:15:89",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15775,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "547:5:89",
                        "nodeType": "VariableDeclaration",
                        "scope": 15798,
                        "src": "539:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15774,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "539:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15777,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "562:5:89",
                        "nodeType": "VariableDeclaration",
                        "scope": 15798,
                        "src": "554:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "554:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "538:30:89"
                  },
                  "returnParameters": {
                    "id": 15781,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "613:0:89"
                  },
                  "scope": 15844,
                  "src": "514:193:89",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15812,
                    "nodeType": "Block",
                    "src": "771:53:89",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15808,
                              "name": "ROOT_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15743,
                              "src": "797:9:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15809,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15800,
                              "src": "808:8:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 15805,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15758,
                              "src": "781:3:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 15807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "785:11:89",
                            "memberName": "setResolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12098,
                            "src": "781:15:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 15810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "781:36:89",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15811,
                        "nodeType": "ExpressionStatement",
                        "src": "781:36:89"
                      }
                    ]
                  },
                  "functionSelector": "4e543b26",
                  "id": 15813,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 15803,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15802,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "761:9:89"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "761:9:89"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "761:9:89"
                    }
                  ],
                  "name": "setResolver",
                  "nameLocation": "722:11:89",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15800,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "742:8:89",
                        "nodeType": "VariableDeclaration",
                        "scope": 15813,
                        "src": "734:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15799,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "734:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "733:18:89"
                  },
                  "returnParameters": {
                    "id": 15804,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "771:0:89"
                  },
                  "scope": 15844,
                  "src": "713:111:89",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15830,
                    "nodeType": "Block",
                    "src": "878:68:89",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15821,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15815,
                              "src": "903:5:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 15820,
                            "name": "TLDLocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15755,
                            "src": "893:9:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 15822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "893:16:89",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15823,
                        "nodeType": "EmitStatement",
                        "src": "888:21:89"
                      },
                      {
                        "expression": {
                          "id": 15828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 15824,
                              "name": "locked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15762,
                              "src": "919:6:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                "typeString": "mapping(bytes32 => bool)"
                              }
                            },
                            "id": 15826,
                            "indexExpression": {
                              "id": 15825,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15815,
                              "src": "926:5:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "919:13:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 15827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "935:4:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "919:20:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15829,
                        "nodeType": "ExpressionStatement",
                        "src": "919:20:89"
                      }
                    ]
                  },
                  "functionSelector": "01670ba9",
                  "id": 15831,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 15818,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15817,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "868:9:89"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "868:9:89"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "868:9:89"
                    }
                  ],
                  "name": "lock",
                  "nameLocation": "839:4:89",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15815,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "852:5:89",
                        "nodeType": "VariableDeclaration",
                        "scope": 15831,
                        "src": "844:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15814,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:15:89"
                  },
                  "returnParameters": {
                    "id": 15819,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "878:0:89"
                  },
                  "scope": 15844,
                  "src": "830:116:89",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15842,
                    "nodeType": "Block",
                    "src": "1056:56:89",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 15840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15838,
                            "name": "interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15833,
                            "src": "1073:11:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 15839,
                            "name": "INTERFACE_META_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15751,
                            "src": "1088:17:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1073:32:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 15837,
                        "id": 15841,
                        "nodeType": "Return",
                        "src": "1066:39:89"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 15843,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "961:17:89",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15833,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "986:11:89",
                        "nodeType": "VariableDeclaration",
                        "scope": 15843,
                        "src": "979:18:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 15832,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "979:6:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "978:20:89"
                  },
                  "returnParameters": {
                    "id": 15837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15836,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 15843,
                        "src": "1046:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15835,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1046:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1045:6:89"
                  },
                  "scope": 15844,
                  "src": "952:160:89",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15845,
              "src": "138:976:89",
              "usedErrors": []
            }
          ],
          "src": "0:1115:89"
        },
        "id": 89
      },
      "contracts/utils/ERC20Recoverable.sol": {
        "ast": {
          "absolutePath": "contracts/utils/ERC20Recoverable.sol",
          "exportedSymbols": {
            "Context": [
              2855
            ],
            "ERC20Recoverable": [
              15873
            ],
            "IERC20": [
              1486
            ],
            "Ownable": [
              642
            ]
          },
          "id": 15874,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15846,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".17",
                "<",
                "0.9",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:32:90"
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 15847,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15874,
              "sourceUnit": 643,
              "src": "65:52:90",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "id": 15848,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15874,
              "sourceUnit": 1487,
              "src": "118:56:90",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 15850,
                    "name": "Ownable",
                    "nameLocations": [
                      "300:7:90"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "300:7:90"
                  },
                  "id": 15851,
                  "nodeType": "InheritanceSpecifier",
                  "src": "300:7:90"
                }
              ],
              "canonicalName": "ERC20Recoverable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 15849,
                "nodeType": "StructuredDocumentation",
                "src": "176:93:90",
                "text": "@notice Contract is used to recover ERC20 tokens sent to the contract by mistake."
              },
              "fullyImplemented": true,
              "id": 15873,
              "linearizedBaseContracts": [
                15873,
                642,
                2855
              ],
              "name": "ERC20Recoverable",
              "nameLocation": "280:16:90",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 15871,
                    "nodeType": "Block",
                    "src": "750:54:90",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15867,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15856,
                              "src": "784:3:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15868,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15858,
                              "src": "789:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 15864,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15854,
                                  "src": "767:6:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 15863,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1486,
                                "src": "760:6:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$1486_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 15865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "760:14:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$1486",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 15866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "775:8:90",
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1435,
                            "src": "760:23:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 15869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "760:37:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15870,
                        "nodeType": "ExpressionStatement",
                        "src": "760:37:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15852,
                    "nodeType": "StructuredDocumentation",
                    "src": "314:314:90",
                    "text": "@notice Recover ERC20 tokens sent to the contract by mistake.\n@dev The contract is Ownable and only the owner can call the recover function.\n@param _to The address to send the tokens to.\n@param _token The address of the ERC20 token to recover\n@param _amount The amount of tokens to recover."
                  },
                  "functionSelector": "5d3590d5",
                  "id": 15872,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 15861,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 15860,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "740:9:90"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "740:9:90"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "740:9:90"
                    }
                  ],
                  "name": "recoverFunds",
                  "nameLocation": "642:12:90",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15854,
                        "mutability": "mutable",
                        "name": "_token",
                        "nameLocation": "672:6:90",
                        "nodeType": "VariableDeclaration",
                        "scope": 15872,
                        "src": "664:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15853,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "664:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15856,
                        "mutability": "mutable",
                        "name": "_to",
                        "nameLocation": "696:3:90",
                        "nodeType": "VariableDeclaration",
                        "scope": 15872,
                        "src": "688:11:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15855,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "688:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15858,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "717:7:90",
                        "nodeType": "VariableDeclaration",
                        "scope": 15872,
                        "src": "709:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15857,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "654:76:90"
                  },
                  "returnParameters": {
                    "id": 15862,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "750:0:90"
                  },
                  "scope": 15873,
                  "src": "633:171:90",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 15874,
              "src": "271:535:90",
              "usedErrors": []
            }
          ],
          "src": "31:776:90"
        },
        "id": 90
      },
      "contracts/utils/LowLevelCallUtils.sol": {
        "ast": {
          "absolutePath": "contracts/utils/LowLevelCallUtils.sol",
          "exportedSymbols": {
            "Address": [
              2833
            ],
            "LowLevelCallUtils": [
              15933
            ]
          },
          "id": 15934,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15875,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:24:91"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "@openzeppelin/contracts/utils/Address.sol",
              "id": 15877,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15934,
              "sourceUnit": 2834,
              "src": "59:66:91",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 15876,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2833,
                    "src": "67:7:91",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "LowLevelCallUtils",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 15933,
              "linearizedBaseContracts": [
                15933
              ],
              "name": "LowLevelCallUtils",
              "nameLocation": "135:17:91",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 15880,
                  "libraryName": {
                    "id": 15878,
                    "name": "Address",
                    "nameLocations": [
                      "165:7:91"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2833,
                    "src": "165:7:91"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "159:26:91",
                  "typeName": {
                    "id": 15879,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "177:7:91",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "body": {
                    "id": 15898,
                    "nodeType": "Block",
                    "src": "661:351:91",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 15891,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15883,
                                  "src": "692:6:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 15892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "699:10:91",
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2556,
                                "src": "692:17:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 15893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "692:19:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c6f774c6576656c43616c6c5574696c733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 15894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "725:48:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0ac203751bc6c539988299c5b94d9ac70ecc8c84eb3b7e4104b8b4017125eb31",
                                "typeString": "literal_string \"LowLevelCallUtils: static call to non-contract\""
                              },
                              "value": "LowLevelCallUtils: static call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0ac203751bc6c539988299c5b94d9ac70ecc8c84eb3b7e4104b8b4017125eb31",
                                "typeString": "literal_string \"LowLevelCallUtils: static call to non-contract\""
                              }
                            ],
                            "id": 15890,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "671:7:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "671:112:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15896,
                        "nodeType": "ExpressionStatement",
                        "src": "671:112:91"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "802:204:91",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "816:180:91",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "855:3:91"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "855:5:91"
                                  },
                                  {
                                    "name": "target",
                                    "nodeType": "YulIdentifier",
                                    "src": "878:6:91"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "906:4:91"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "912:2:91",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "902:3:91"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "902:13:91"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:4:91"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "933:5:91"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "933:11:91"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "962:1:91",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "981:1:91",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nodeType": "YulIdentifier",
                                  "src": "827:10:91"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "827:169:91"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nodeType": "YulIdentifier",
                                  "src": "816:7:91"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 15885,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "906:4:91",
                            "valueSize": 1
                          },
                          {
                            "declaration": 15885,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "939:4:91",
                            "valueSize": 1
                          },
                          {
                            "declaration": 15888,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "816:7:91",
                            "valueSize": 1
                          },
                          {
                            "declaration": 15883,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "878:6:91",
                            "valueSize": 1
                          }
                        ],
                        "id": 15897,
                        "nodeType": "InlineAssembly",
                        "src": "793:213:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15881,
                    "nodeType": "StructuredDocumentation",
                    "src": "191:337:91",
                    "text": " @dev Makes a static call to the specified `target` with `data`. Return data can be fetched with\n      `returnDataSize` and `readReturnData`.\n @param target The address to staticcall.\n @param data The data to pass to the call.\n @return success True if the call succeeded, or false if it reverts."
                  },
                  "id": 15899,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "542:18:91",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15883,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "569:6:91",
                        "nodeType": "VariableDeclaration",
                        "scope": 15899,
                        "src": "561:14:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15882,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "561:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15885,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "590:4:91",
                        "nodeType": "VariableDeclaration",
                        "scope": 15899,
                        "src": "577:17:91",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15884,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "577:5:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "560:35:91"
                  },
                  "returnParameters": {
                    "id": 15889,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15888,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "648:7:91",
                        "nodeType": "VariableDeclaration",
                        "scope": 15899,
                        "src": "643:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15887,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "643:4:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "642:14:91"
                  },
                  "scope": 15933,
                  "src": "533:479:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15906,
                    "nodeType": "Block",
                    "src": "1178:72:91",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1197:47:91",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1211:23:91",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "1218:14:91"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1218:16:91"
                              },
                              "variableNames": [
                                {
                                  "name": "len",
                                  "nodeType": "YulIdentifier",
                                  "src": "1211:3:91"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 15903,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1211:3:91",
                            "valueSize": 1
                          }
                        ],
                        "id": 15905,
                        "nodeType": "InlineAssembly",
                        "src": "1188:56:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15900,
                    "nodeType": "StructuredDocumentation",
                    "src": "1018:93:91",
                    "text": " @dev Returns the size of the return data of the most recent external call."
                  },
                  "id": 15907,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "returnDataSize",
                  "nameLocation": "1125:14:91",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15901,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1139:2:91"
                  },
                  "returnParameters": {
                    "id": 15904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15903,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "1173:3:91",
                        "nodeType": "VariableDeclaration",
                        "scope": 15907,
                        "src": "1165:11:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15902,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1165:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1164:13:91"
                  },
                  "scope": 15933,
                  "src": "1116:134:91",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15925,
                    "nodeType": "Block",
                    "src": "1562:128:91",
                    "statements": [
                      {
                        "expression": {
                          "id": 15922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15917,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15915,
                            "src": "1572:4:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 15920,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15912,
                                "src": "1589:6:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 15919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1579:9:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 15918,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "1583:5:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 15921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1579:17:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "1572:24:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 15923,
                        "nodeType": "ExpressionStatement",
                        "src": "1572:24:91"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1615:69:91",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "1648:4:91"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1654:2:91",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1644:3:91"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1644:13:91"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1659:6:91"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1667:6:91"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1629:14:91"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1629:45:91"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1629:45:91"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 15915,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1648:4:91",
                            "valueSize": 1
                          },
                          {
                            "declaration": 15912,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1667:6:91",
                            "valueSize": 1
                          },
                          {
                            "declaration": 15910,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1659:6:91",
                            "valueSize": 1
                          }
                        ],
                        "id": 15924,
                        "nodeType": "InlineAssembly",
                        "src": "1606:78:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15908,
                    "nodeType": "StructuredDocumentation",
                    "src": "1256:175:91",
                    "text": " @dev Reads return data from the most recent external call.\n @param offset Offset into the return data.\n @param length Number of bytes to return."
                  },
                  "id": 15926,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readReturnData",
                  "nameLocation": "1445:14:91",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15910,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "1468:6:91",
                        "nodeType": "VariableDeclaration",
                        "scope": 15926,
                        "src": "1460:14:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15909,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1460:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15912,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "1484:6:91",
                        "nodeType": "VariableDeclaration",
                        "scope": 15926,
                        "src": "1476:14:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15911,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1476:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1459:32:91"
                  },
                  "returnParameters": {
                    "id": 15916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15915,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1552:4:91",
                        "nodeType": "VariableDeclaration",
                        "scope": 15926,
                        "src": "1539:17:91",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15914,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1539:5:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1538:19:91"
                  },
                  "scope": 15933,
                  "src": "1436:254:91",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15931,
                    "nodeType": "Block",
                    "src": "1830:127:91",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1849:102:91",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1878:1:91",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1881:1:91",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1884:14:91"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1884:16:91"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1863:14:91"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1863:38:91"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1863:38:91"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1921:1:91",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1924:14:91"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1924:16:91"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1914:6:91"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1914:27:91"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1914:27:91"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [],
                        "id": 15930,
                        "nodeType": "InlineAssembly",
                        "src": "1840:111:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15927,
                    "nodeType": "StructuredDocumentation",
                    "src": "1696:88:91",
                    "text": " @dev Reverts with the return data from the most recent external call."
                  },
                  "id": 15932,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "propagateRevert",
                  "nameLocation": "1798:15:91",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15928,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1813:2:91"
                  },
                  "returnParameters": {
                    "id": 15929,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1830:0:91"
                  },
                  "scope": 15933,
                  "src": "1789:168:91",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 15934,
              "src": "127:1832:91",
              "usedErrors": []
            }
          ],
          "src": "33:1927:91"
        },
        "id": 91
      },
      "contracts/utils/NameEncoder.sol": {
        "ast": {
          "absolutePath": "contracts/utils/NameEncoder.sol",
          "exportedSymbols": {
            "BytesUtils": [
              16817
            ],
            "NameEncoder": [
              16096
            ]
          },
          "id": 16097,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15935,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:92"
            },
            {
              "absolutePath": "contracts/wrapper/BytesUtils.sol",
              "file": "../wrapper/BytesUtils.sol",
              "id": 15937,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16097,
              "sourceUnit": 16818,
              "src": "58:53:92",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 15936,
                    "name": "BytesUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16817,
                    "src": "66:10:92",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "NameEncoder",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 16096,
              "linearizedBaseContracts": [
                16096
              ],
              "name": "NameEncoder",
              "nameLocation": "121:11:92",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 15940,
                  "libraryName": {
                    "id": 15938,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "145:10:92"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16817,
                    "src": "145:10:92"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "139:27:92",
                  "typeName": {
                    "id": 15939,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "160:5:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "body": {
                    "id": 16094,
                    "nodeType": "Block",
                    "src": "302:1267:92",
                    "statements": [
                      {
                        "assignments": [
                          15950
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15950,
                            "mutability": "mutable",
                            "name": "labelLength",
                            "nameLocation": "318:11:92",
                            "nodeType": "VariableDeclaration",
                            "scope": 16094,
                            "src": "312:17:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 15949,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "312:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15952,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 15951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "332:1:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "312:21:92"
                      },
                      {
                        "assignments": [
                          15954
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15954,
                            "mutability": "mutable",
                            "name": "bytesName",
                            "nameLocation": "356:9:92",
                            "nodeType": "VariableDeclaration",
                            "scope": 16094,
                            "src": "343:22:92",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 15953,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "343:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15959,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 15957,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15942,
                              "src": "374:4:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 15956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "368:5:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 15955,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "368:5:92",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "368:11:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "343:36:92"
                      },
                      {
                        "assignments": [
                          15961
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15961,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "397:6:92",
                            "nodeType": "VariableDeclaration",
                            "scope": 16094,
                            "src": "389:14:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15960,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "389:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15964,
                        "initialValue": {
                          "expression": {
                            "id": 15962,
                            "name": "bytesName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15954,
                            "src": "406:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 15963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "416:6:92",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "406:16:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "389:33:92"
                      },
                      {
                        "expression": {
                          "id": 15972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15965,
                            "name": "dnsName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15945,
                            "src": "432:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15968,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15961,
                                  "src": "452:6:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 15969,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "461:1:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "452:10:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 15967,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "442:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 15966,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "446:5:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 15971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "442:21:92",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "432:31:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 15973,
                        "nodeType": "ExpressionStatement",
                        "src": "432:31:92"
                      },
                      {
                        "expression": {
                          "id": 15976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15974,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15947,
                            "src": "473:4:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 15975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "480:1:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "473:8:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 15977,
                        "nodeType": "ExpressionStatement",
                        "src": "473:8:92"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15978,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15961,
                            "src": "495:6:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 15979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "505:1:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "495:11:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15992,
                        "nodeType": "IfStatement",
                        "src": "491:92:92",
                        "trueBody": {
                          "id": 15991,
                          "nodeType": "Block",
                          "src": "508:75:92",
                          "statements": [
                            {
                              "expression": {
                                "id": 15985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 15981,
                                    "name": "dnsName",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15945,
                                    "src": "522:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 15983,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 15982,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "530:1:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "522:10:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 15984,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "535:1:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "522:14:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 15986,
                              "nodeType": "ExpressionStatement",
                              "src": "522:14:92"
                            },
                            {
                              "expression": {
                                "components": [
                                  {
                                    "id": 15987,
                                    "name": "dnsName",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15945,
                                    "src": "558:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 15988,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15947,
                                    "src": "567:4:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "id": 15989,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "557:15:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$",
                                  "typeString": "tuple(bytes memory,bytes32)"
                                }
                              },
                              "functionReturnParameters": 15948,
                              "id": 15990,
                              "nodeType": "Return",
                              "src": "550:22:92"
                            }
                          ]
                        }
                      },
                      {
                        "id": 16066,
                        "nodeType": "UncheckedBlock",
                        "src": "717:664:92",
                        "statements": [
                          {
                            "body": {
                              "id": 16064,
                              "nodeType": "Block",
                              "src": "783:588:92",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 16009,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 16005,
                                        "name": "bytesName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15954,
                                        "src": "805:9:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 16007,
                                      "indexExpression": {
                                        "id": 16006,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15994,
                                        "src": "815:1:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "805:12:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "2e",
                                      "id": 16008,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "821:3:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
                                        "typeString": "literal_string \".\""
                                      },
                                      "value": "."
                                    },
                                    "src": "805:19:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 16056,
                                    "nodeType": "Block",
                                    "src": "1174:108:92",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 16044,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 16042,
                                            "name": "labelLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15950,
                                            "src": "1196:11:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "hexValue": "31",
                                            "id": 16043,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1211:1:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "1196:16:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "id": 16045,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1196:16:92"
                                      },
                                      {
                                        "expression": {
                                          "id": 16054,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 16046,
                                              "name": "dnsName",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15945,
                                              "src": "1234:7:92",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 16050,
                                            "indexExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 16049,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 16047,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15994,
                                                "src": "1242:1:92",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "+",
                                              "rightExpression": {
                                                "hexValue": "31",
                                                "id": 16048,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1246:1:92",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "1242:5:92",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "1234:14:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "baseExpression": {
                                              "id": 16051,
                                              "name": "bytesName",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15954,
                                              "src": "1251:9:92",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 16053,
                                            "indexExpression": {
                                              "id": 16052,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15994,
                                              "src": "1261:1:92",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1251:12:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "src": "1234:29:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "id": 16055,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1234:29:92"
                                      }
                                    ]
                                  },
                                  "id": 16057,
                                  "nodeType": "IfStatement",
                                  "src": "801:481:92",
                                  "trueBody": {
                                    "id": 16041,
                                    "nodeType": "Block",
                                    "src": "826:342:92",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 16019,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 16010,
                                              "name": "dnsName",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15945,
                                              "src": "848:7:92",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 16014,
                                            "indexExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 16013,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 16011,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15994,
                                                "src": "856:1:92",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "+",
                                              "rightExpression": {
                                                "hexValue": "31",
                                                "id": 16012,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "860:1:92",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "856:5:92",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "848:14:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "id": 16017,
                                                "name": "labelLength",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15950,
                                                "src": "872:11:92",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "id": 16016,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "865:6:92",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes1_$",
                                                "typeString": "type(bytes1)"
                                              },
                                              "typeName": {
                                                "id": 16015,
                                                "name": "bytes1",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "865:6:92",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 16018,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "865:19:92",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "src": "848:36:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "id": 16020,
                                        "nodeType": "ExpressionStatement",
                                        "src": "848:36:92"
                                      },
                                      {
                                        "expression": {
                                          "id": 16035,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 16021,
                                            "name": "node",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15947,
                                            "src": "906:4:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 16025,
                                                    "name": "node",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15947,
                                                    "src": "994:4:92",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 16030,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 16028,
                                                          "name": "i",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15994,
                                                          "src": "1045:1:92",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                          "hexValue": "31",
                                                          "id": 16029,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "1049:1:92",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                          },
                                                          "value": "1"
                                                        },
                                                        "src": "1045:5:92",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 16031,
                                                        "name": "labelLength",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15950,
                                                        "src": "1052:11:92",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "id": 16026,
                                                        "name": "bytesName",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15954,
                                                        "src": "1028:9:92",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes_memory_ptr",
                                                          "typeString": "bytes memory"
                                                        }
                                                      },
                                                      "id": 16027,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "1038:6:92",
                                                      "memberName": "keccak",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 16698,
                                                      "src": "1028:16:92",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                                      }
                                                    },
                                                    "id": 16032,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1028:36:92",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 16023,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "948:3:92",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 16024,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "952:12:92",
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "src": "948:16:92",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 16033,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "948:142:92",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 16022,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -8,
                                              "src": "913:9:92",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 16034,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "913:199:92",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "src": "906:206:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "id": 16036,
                                        "nodeType": "ExpressionStatement",
                                        "src": "906:206:92"
                                      },
                                      {
                                        "expression": {
                                          "id": 16039,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 16037,
                                            "name": "labelLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15950,
                                            "src": "1134:11:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "hexValue": "30",
                                            "id": 16038,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1148:1:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "1134:15:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "id": 16040,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1134:15:92"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16060,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 16058,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15994,
                                      "src": "1303:1:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 16059,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1308:1:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1303:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 16063,
                                  "nodeType": "IfStatement",
                                  "src": "1299:58:92",
                                  "trueBody": {
                                    "id": 16062,
                                    "nodeType": "Block",
                                    "src": "1311:46:92",
                                    "statements": [
                                      {
                                        "id": 16061,
                                        "nodeType": "Break",
                                        "src": "1333:5:92"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 15999,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15994,
                                "src": "770:1:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 16000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "775:1:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "770:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 16065,
                            "initializationExpression": {
                              "assignments": [
                                15994
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15994,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "754:1:92",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16065,
                                  "src": "746:9:92",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15993,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "746:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15998,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15995,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15961,
                                  "src": "758:6:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 15996,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "767:1:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "758:10:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "746:22:92"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 16003,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "778:3:92",
                                "subExpression": {
                                  "id": 16002,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15994,
                                  "src": "778:1:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16004,
                              "nodeType": "ExpressionStatement",
                              "src": "778:3:92"
                            },
                            "nodeType": "ForStatement",
                            "src": "741:630:92"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 16079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16067,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15947,
                            "src": "1391:4:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 16071,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15947,
                                    "src": "1438:4:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 16074,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1461:1:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      {
                                        "id": 16075,
                                        "name": "labelLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15950,
                                        "src": "1464:11:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "expression": {
                                        "id": 16072,
                                        "name": "bytesName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15954,
                                        "src": "1444:9:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 16073,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "1454:6:92",
                                      "memberName": "keccak",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 16698,
                                      "src": "1444:16:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 16076,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1444:32:92",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16069,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "1421:3:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 16070,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "1425:12:92",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "1421:16:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 16077,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1421:56:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 16068,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1398:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 16078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1398:89:92",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1391:96:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 16080,
                        "nodeType": "ExpressionStatement",
                        "src": "1391:96:92"
                      },
                      {
                        "expression": {
                          "id": 16088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 16081,
                              "name": "dnsName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15945,
                              "src": "1498:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 16083,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 16082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1506:1:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1498:10:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 16086,
                                "name": "labelLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15950,
                                "src": "1518:11:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "id": 16085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1511:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 16084,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "1511:6:92",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1511:19:92",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "1498:32:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 16089,
                        "nodeType": "ExpressionStatement",
                        "src": "1498:32:92"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 16090,
                              "name": "dnsName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15945,
                              "src": "1548:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 16091,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15947,
                              "src": "1557:4:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "id": 16092,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1547:15:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$",
                            "typeString": "tuple(bytes memory,bytes32)"
                          }
                        },
                        "functionReturnParameters": 15948,
                        "id": 16093,
                        "nodeType": "Return",
                        "src": "1540:22:92"
                      }
                    ]
                  },
                  "id": 16095,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dnsEncodeName",
                  "nameLocation": "181:13:92",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15942,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "209:4:92",
                        "nodeType": "VariableDeclaration",
                        "scope": 16095,
                        "src": "195:18:92",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 15941,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "195:6:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "194:20:92"
                  },
                  "returnParameters": {
                    "id": 15948,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15945,
                        "mutability": "mutable",
                        "name": "dnsName",
                        "nameLocation": "275:7:92",
                        "nodeType": "VariableDeclaration",
                        "scope": 16095,
                        "src": "262:20:92",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15944,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "262:5:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15947,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "292:4:92",
                        "nodeType": "VariableDeclaration",
                        "scope": 16095,
                        "src": "284:12:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15946,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "284:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "261:36:92"
                  },
                  "scope": 16096,
                  "src": "172:1397:92",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 16097,
              "src": "113:1458:92",
              "usedErrors": []
            }
          ],
          "src": "32:1540:92"
        },
        "id": 92
      },
      "contracts/utils/TestNameEncoder.sol": {
        "ast": {
          "absolutePath": "contracts/utils/TestNameEncoder.sol",
          "exportedSymbols": {
            "NameEncoder": [
              16096
            ],
            "TestNameEncoder": [
              16118
            ]
          },
          "id": 16119,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16098,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:93"
            },
            {
              "absolutePath": "contracts/utils/NameEncoder.sol",
              "file": "./NameEncoder.sol",
              "id": 16100,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16119,
              "sourceUnit": 16097,
              "src": "58:46:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16099,
                    "name": "NameEncoder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16096,
                    "src": "66:11:93",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "TestNameEncoder",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 16118,
              "linearizedBaseContracts": [
                16118
              ],
              "name": "TestNameEncoder",
              "nameLocation": "115:15:93",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 16103,
                  "libraryName": {
                    "id": 16101,
                    "name": "NameEncoder",
                    "nameLocations": [
                      "143:11:93"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16096,
                    "src": "143:11:93"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "137:29:93",
                  "typeName": {
                    "id": 16102,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "159:6:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  }
                },
                {
                  "body": {
                    "id": 16116,
                    "nodeType": "Block",
                    "src": "284:44:93",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 16112,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16105,
                              "src": "301:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "id": 16113,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "306:13:93",
                            "memberName": "dnsEncodeName",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16095,
                            "src": "301:18:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$bound_to$_t_string_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory,bytes32)"
                            }
                          },
                          "id": 16114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "301:20:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$",
                            "typeString": "tuple(bytes memory,bytes32)"
                          }
                        },
                        "functionReturnParameters": 16111,
                        "id": 16115,
                        "nodeType": "Return",
                        "src": "294:27:93"
                      }
                    ]
                  },
                  "functionSelector": "18d321ca",
                  "id": 16117,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "encodeName",
                  "nameLocation": "181:10:93",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16105,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "206:4:93",
                        "nodeType": "VariableDeclaration",
                        "scope": 16117,
                        "src": "192:18:93",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 16104,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "192:6:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "191:20:93"
                  },
                  "returnParameters": {
                    "id": 16111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16108,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16117,
                        "src": "257:12:93",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16107,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "257:5:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16110,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16117,
                        "src": "271:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16109,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "271:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "256:23:93"
                  },
                  "scope": 16118,
                  "src": "172:156:93",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 16119,
              "src": "106:224:93",
              "usedErrors": []
            }
          ],
          "src": "32:299:93"
        },
        "id": 93
      },
      "contracts/utils/UniversalResolver.sol": {
        "ast": {
          "absolutePath": "contracts/utils/UniversalResolver.sol",
          "exportedSymbols": {
            "Address": [
              2833
            ],
            "BytesUtils": [
              16817
            ],
            "ENS": [
              12157
            ],
            "ERC165": [
              3082
            ],
            "IAddrResolver": [
              14940
            ],
            "IExtendedResolver": [
              15044
            ],
            "INameResolver": [
              15082
            ],
            "LowLevelCallUtils": [
              15933
            ],
            "NameEncoder": [
              16096
            ],
            "OffchainLookup": [
              16151
            ],
            "Resolver": [
              13920
            ],
            "UniversalResolver": [
              16674
            ]
          },
          "id": 16675,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16120,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".17",
                "<",
                "0.9",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:32:94"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 16122,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16675,
              "sourceUnit": 3083,
              "src": "66:78:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16121,
                    "name": "ERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3082,
                    "src": "74:6:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "@openzeppelin/contracts/utils/Address.sol",
              "id": 16124,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16675,
              "sourceUnit": 2834,
              "src": "145:66:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16123,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2833,
                    "src": "153:7:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/LowLevelCallUtils.sol",
              "file": "./LowLevelCallUtils.sol",
              "id": 16126,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16675,
              "sourceUnit": 15934,
              "src": "212:58:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16125,
                    "name": "LowLevelCallUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15933,
                    "src": "220:17:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../registry/ENS.sol",
              "id": 16128,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16675,
              "sourceUnit": 12158,
              "src": "271:40:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16127,
                    "name": "ENS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12157,
                    "src": "279:3:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IExtendedResolver.sol",
              "file": "../resolvers/profiles/IExtendedResolver.sol",
              "id": 16130,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16675,
              "sourceUnit": 15045,
              "src": "312:78:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16129,
                    "name": "IExtendedResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15044,
                    "src": "320:17:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/Resolver.sol",
              "file": "../resolvers/Resolver.sol",
              "id": 16134,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16675,
              "sourceUnit": 13921,
              "src": "391:81:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16131,
                    "name": "Resolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13920,
                    "src": "399:8:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 16132,
                    "name": "INameResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15082,
                    "src": "409:13:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 16133,
                    "name": "IAddrResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14940,
                    "src": "424:13:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/NameEncoder.sol",
              "file": "./NameEncoder.sol",
              "id": 16136,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16675,
              "sourceUnit": 16097,
              "src": "473:46:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16135,
                    "name": "NameEncoder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16096,
                    "src": "481:11:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/BytesUtils.sol",
              "file": "../wrapper/BytesUtils.sol",
              "id": 16138,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16675,
              "sourceUnit": 16818,
              "src": "520:53:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 16137,
                    "name": "BytesUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16817,
                    "src": "528:10:94",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "errorSelector": "556f1830",
              "id": 16151,
              "name": "OffchainLookup",
              "nameLocation": "581:14:94",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 16150,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 16140,
                    "mutability": "mutable",
                    "name": "sender",
                    "nameLocation": "609:6:94",
                    "nodeType": "VariableDeclaration",
                    "scope": 16151,
                    "src": "601:14:94",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 16139,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "601:7:94",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 16143,
                    "mutability": "mutable",
                    "name": "urls",
                    "nameLocation": "630:4:94",
                    "nodeType": "VariableDeclaration",
                    "scope": 16151,
                    "src": "621:13:94",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                      "typeString": "string[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 16141,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "621:6:94",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "id": 16142,
                      "nodeType": "ArrayTypeName",
                      "src": "621:8:94",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                        "typeString": "string[]"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 16145,
                    "mutability": "mutable",
                    "name": "callData",
                    "nameLocation": "646:8:94",
                    "nodeType": "VariableDeclaration",
                    "scope": 16151,
                    "src": "640:14:94",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 16144,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "640:5:94",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 16147,
                    "mutability": "mutable",
                    "name": "callbackFunction",
                    "nameLocation": "667:16:94",
                    "nodeType": "VariableDeclaration",
                    "scope": 16151,
                    "src": "660:23:94",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 16146,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "660:6:94",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 16149,
                    "mutability": "mutable",
                    "name": "extraData",
                    "nameLocation": "695:9:94",
                    "nodeType": "VariableDeclaration",
                    "scope": 16151,
                    "src": "689:15:94",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 16148,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "689:5:94",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "595:111:94"
              },
              "src": "575:132:94"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 16153,
                    "name": "IExtendedResolver",
                    "nameLocations": [
                      "930:17:94"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15044,
                    "src": "930:17:94"
                  },
                  "id": 16154,
                  "nodeType": "InheritanceSpecifier",
                  "src": "930:17:94"
                },
                {
                  "baseName": {
                    "id": 16155,
                    "name": "ERC165",
                    "nameLocations": [
                      "949:6:94"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3082,
                    "src": "949:6:94"
                  },
                  "id": 16156,
                  "nodeType": "InheritanceSpecifier",
                  "src": "949:6:94"
                }
              ],
              "canonicalName": "UniversalResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 16152,
                "nodeType": "StructuredDocumentation",
                "src": "709:190:94",
                "text": " The Universal Resolver is a contract that handles the work of resolving a name entirely onchain,\n making it possible to make a single smart contract call to resolve an ENS name."
              },
              "fullyImplemented": true,
              "id": 16674,
              "linearizedBaseContracts": [
                16674,
                3082,
                3094,
                15044
              ],
              "name": "UniversalResolver",
              "nameLocation": "909:17:94",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 16159,
                  "libraryName": {
                    "id": 16157,
                    "name": "Address",
                    "nameLocations": [
                      "968:7:94"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2833,
                    "src": "968:7:94"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "962:26:94",
                  "typeName": {
                    "id": 16158,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:7:94",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 16162,
                  "libraryName": {
                    "id": 16160,
                    "name": "NameEncoder",
                    "nameLocations": [
                      "999:11:94"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16096,
                    "src": "999:11:94"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "993:29:94",
                  "typeName": {
                    "id": 16161,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1015:6:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 16165,
                  "libraryName": {
                    "id": 16163,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "1033:10:94"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16817,
                    "src": "1033:10:94"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1027:27:94",
                  "typeName": {
                    "id": 16164,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1048:5:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "constant": false,
                  "functionSelector": "7b103999",
                  "id": 16168,
                  "mutability": "immutable",
                  "name": "registry",
                  "nameLocation": "1081:8:94",
                  "nodeType": "VariableDeclaration",
                  "scope": 16674,
                  "src": "1060:29:94",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 16167,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 16166,
                      "name": "ENS",
                      "nameLocations": [
                        "1060:3:94"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "1060:3:94"
                    },
                    "referencedDeclaration": 12157,
                    "src": "1060:3:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16179,
                    "nodeType": "Block",
                    "src": "1127:42:94",
                    "statements": [
                      {
                        "expression": {
                          "id": 16177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16173,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16168,
                            "src": "1137:8:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 16175,
                                "name": "_registry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16170,
                                "src": "1152:9:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 16174,
                              "name": "ENS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12157,
                              "src": "1148:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ENS_$12157_$",
                                "typeString": "type(contract ENS)"
                              }
                            },
                            "id": 16176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1148:14:94",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "1137:25:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 16178,
                        "nodeType": "ExpressionStatement",
                        "src": "1137:25:94"
                      }
                    ]
                  },
                  "id": 16180,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16170,
                        "mutability": "mutable",
                        "name": "_registry",
                        "nameLocation": "1116:9:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16180,
                        "src": "1108:17:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1108:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1107:19:94"
                  },
                  "returnParameters": {
                    "id": 16172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1127:0:94"
                  },
                  "scope": 16674,
                  "src": "1096:73:94",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    15043
                  ],
                  "body": {
                    "id": 16275,
                    "nodeType": "Block",
                    "src": "1614:926:94",
                    "statements": [
                      {
                        "assignments": [
                          16195,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16195,
                            "mutability": "mutable",
                            "name": "resolver",
                            "nameLocation": "1634:8:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16275,
                            "src": "1625:17:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Resolver_$13920",
                              "typeString": "contract Resolver"
                            },
                            "typeName": {
                              "id": 16194,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16193,
                                "name": "Resolver",
                                "nameLocations": [
                                  "1625:8:94"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 13920,
                                "src": "1625:8:94"
                              },
                              "referencedDeclaration": 13920,
                              "src": "1625:8:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Resolver_$13920",
                                "typeString": "contract Resolver"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 16199,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16197,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16183,
                              "src": "1661:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 16196,
                            "name": "findResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16573,
                              16673
                            ],
                            "referencedDeclaration": 16573,
                            "src": "1648:12:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_contract$_Resolver_$13920_$_t_bytes32_$",
                              "typeString": "function (bytes calldata) view returns (contract Resolver,bytes32)"
                            }
                          },
                          "id": 16198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1648:18:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_Resolver_$13920_$_t_bytes32_$",
                            "typeString": "tuple(contract Resolver,bytes32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1624:42:94"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 16208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 16202,
                                "name": "resolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16195,
                                "src": "1688:8:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Resolver_$13920",
                                  "typeString": "contract Resolver"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Resolver_$13920",
                                  "typeString": "contract Resolver"
                                }
                              ],
                              "id": 16201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1680:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 16200,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1680:7:94",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1680:17:94",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 16206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1709:1:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 16205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1701:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 16204,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1701:7:94",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1701:10:94",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1680:31:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16217,
                        "nodeType": "IfStatement",
                        "src": "1676:85:94",
                        "trueBody": {
                          "id": 16216,
                          "nodeType": "Block",
                          "src": "1713:48:94",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "hexValue": "",
                                    "id": 16209,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1735:2:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 16212,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1747:1:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 16211,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1739:7:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 16210,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1739:7:94",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1739:10:94",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 16214,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1734:16:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_$_t_address_$",
                                  "typeString": "tuple(literal_string \"\",address)"
                                }
                              },
                              "functionReturnParameters": 16192,
                              "id": 16215,
                              "nodeType": "Return",
                              "src": "1727:23:94"
                            }
                          ]
                        }
                      },
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 16254,
                              "nodeType": "Block",
                              "src": "1884:405:94",
                              "statements": [
                                {
                                  "condition": {
                                    "id": 16228,
                                    "name": "supported",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16226,
                                    "src": "1902:9:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 16253,
                                  "nodeType": "IfStatement",
                                  "src": "1898:381:94",
                                  "trueBody": {
                                    "id": 16252,
                                    "nodeType": "Block",
                                    "src": "1913:366:94",
                                    "statements": [
                                      {
                                        "expression": {
                                          "components": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "id": 16232,
                                                      "name": "resolver",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 16195,
                                                      "src": "2027:8:94",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_Resolver_$13920",
                                                        "typeString": "contract Resolver"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_contract$_Resolver_$13920",
                                                        "typeString": "contract Resolver"
                                                      }
                                                    ],
                                                    "id": 16231,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "2019:7:94",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_address_$",
                                                      "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                      "id": 16230,
                                                      "name": "address",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "2019:7:94",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 16233,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "2019:17:94",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "expression": {
                                                        "id": 16236,
                                                        "name": "IExtendedResolver",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15044,
                                                        "src": "2077:17:94",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_contract$_IExtendedResolver_$15044_$",
                                                          "typeString": "type(contract IExtendedResolver)"
                                                        }
                                                      },
                                                      "id": 16237,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "memberLocation": "2095:7:94",
                                                      "memberName": "resolve",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 15043,
                                                      "src": "2077:25:94",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_declaration_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_address_$",
                                                        "typeString": "function IExtendedResolver.resolve(bytes memory,bytes memory) view returns (bytes memory,address)"
                                                      }
                                                    },
                                                    {
                                                      "components": [
                                                        {
                                                          "id": 16238,
                                                          "name": "name",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 16183,
                                                          "src": "2105:4:94",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                          }
                                                        },
                                                        {
                                                          "id": 16239,
                                                          "name": "data",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 16185,
                                                          "src": "2111:4:94",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                          }
                                                        }
                                                      ],
                                                      "id": 16240,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "TupleExpression",
                                                      "src": "2104:12:94",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bytes_calldata_ptr_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bytes calldata,bytes memory)"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_function_declaration_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_address_$",
                                                        "typeString": "function IExtendedResolver.resolve(bytes memory,bytes memory) view returns (bytes memory,address)"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_tuple$_t_bytes_calldata_ptr_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bytes calldata,bytes memory)"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "id": 16234,
                                                      "name": "abi",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": -1,
                                                      "src": "2062:3:94",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_abi",
                                                        "typeString": "abi"
                                                      }
                                                    },
                                                    "id": 16235,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "2066:10:94",
                                                    "memberName": "encodeCall",
                                                    "nodeType": "MemberAccess",
                                                    "src": "2062:14:94",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$",
                                                      "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                  },
                                                  "id": 16241,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "2062:55:94",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "expression": {
                                                      "id": 16242,
                                                      "name": "UniversalResolver",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 16674,
                                                      "src": "2143:17:94",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_UniversalResolver_$16674_$",
                                                        "typeString": "type(contract UniversalResolver)"
                                                      }
                                                    },
                                                    "id": 16243,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "2161:15:94",
                                                    "memberName": "resolveCallback",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 16546,
                                                    "src": "2143:33:94",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_declaration_view$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$",
                                                      "typeString": "function UniversalResolver.resolveCallback(bytes calldata,bytes calldata) view returns (bytes memory)"
                                                    }
                                                  },
                                                  "id": 16244,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "2177:8:94",
                                                  "memberName": "selector",
                                                  "nodeType": "MemberAccess",
                                                  "src": "2143:42:94",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                  }
                                                ],
                                                "id": 16229,
                                                "name": "callWithOffchainLookupPropagation",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16501,
                                                "src": "1960:33:94",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                  "typeString": "function (address,bytes memory,bytes4) view returns (bytes memory)"
                                                }
                                              },
                                              "id": 16245,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "1960:247:94",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "id": 16248,
                                                  "name": "resolver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16195,
                                                  "src": "2237:8:94",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Resolver_$13920",
                                                    "typeString": "contract Resolver"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_contract$_Resolver_$13920",
                                                    "typeString": "contract Resolver"
                                                  }
                                                ],
                                                "id": 16247,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "2229:7:94",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_address_$",
                                                  "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                  "id": 16246,
                                                  "name": "address",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "2229:7:94",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 16249,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "2229:17:94",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "id": 16250,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1938:326:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_address_$",
                                            "typeString": "tuple(bytes memory,address)"
                                          }
                                        },
                                        "functionReturnParameters": 16192,
                                        "id": 16251,
                                        "nodeType": "Return",
                                        "src": "1931:333:94"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 16255,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 16227,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 16226,
                                  "mutability": "mutable",
                                  "name": "supported",
                                  "nameLocation": "1873:9:94",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16255,
                                  "src": "1868:14:94",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 16225,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1868:4:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "1867:16:94"
                            },
                            "src": "1859:430:94"
                          },
                          {
                            "block": {
                              "id": 16256,
                              "nodeType": "Block",
                              "src": "2296:2:94",
                              "statements": []
                            },
                            "errorName": "",
                            "id": 16257,
                            "nodeType": "TryCatchClause",
                            "src": "2290:8:94"
                          }
                        ],
                        "externalCall": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 16221,
                                    "name": "IExtendedResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15044,
                                    "src": "1819:17:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IExtendedResolver_$15044_$",
                                      "typeString": "type(contract IExtendedResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IExtendedResolver_$15044_$",
                                      "typeString": "type(contract IExtendedResolver)"
                                    }
                                  ],
                                  "id": 16220,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1814:4:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 16222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1814:23:94",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IExtendedResolver_$15044",
                                  "typeString": "type(contract IExtendedResolver)"
                                }
                              },
                              "id": 16223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1838:11:94",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1814:35:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 16218,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16195,
                              "src": "1787:8:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Resolver_$13920",
                                "typeString": "contract Resolver"
                              }
                            },
                            "id": 16219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1796:17:94",
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3093,
                            "src": "1787:26:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) view external returns (bool)"
                            }
                          },
                          "id": 16224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1787:63:94",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16258,
                        "nodeType": "TryStatement",
                        "src": "1771:527:94"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 16262,
                                      "name": "resolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16195,
                                      "src": "2387:8:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Resolver_$13920",
                                        "typeString": "contract Resolver"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Resolver_$13920",
                                        "typeString": "contract Resolver"
                                      }
                                    ],
                                    "id": 16261,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2379:7:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 16260,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2379:7:94",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 16263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2379:17:94",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 16264,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16185,
                                  "src": "2414:4:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 16265,
                                      "name": "UniversalResolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16674,
                                      "src": "2436:17:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_UniversalResolver_$16674_$",
                                        "typeString": "type(contract UniversalResolver)"
                                      }
                                    },
                                    "id": 16266,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2454:15:94",
                                    "memberName": "resolveCallback",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16546,
                                    "src": "2436:33:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function UniversalResolver.resolveCallback(bytes calldata,bytes calldata) view returns (bytes memory)"
                                    }
                                  },
                                  "id": 16267,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "2470:8:94",
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "2436:42:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "id": 16259,
                                "name": "callWithOffchainLookupPropagation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16501,
                                "src": "2328:33:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (address,bytes memory,bytes4) view returns (bytes memory)"
                                }
                              },
                              "id": 16268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2328:164:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 16271,
                                  "name": "resolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16195,
                                  "src": "2514:8:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Resolver_$13920",
                                    "typeString": "contract Resolver"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Resolver_$13920",
                                    "typeString": "contract Resolver"
                                  }
                                ],
                                "id": 16270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2506:7:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 16269,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2506:7:94",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 16272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2506:17:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 16273,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2314:219:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_address_$",
                            "typeString": "tuple(bytes memory,address)"
                          }
                        },
                        "functionReturnParameters": 16192,
                        "id": 16274,
                        "nodeType": "Return",
                        "src": "2307:226:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16181,
                    "nodeType": "StructuredDocumentation",
                    "src": "1175:286:94",
                    "text": " @dev Performs ENS name resolution for the supplied name and resolution data.\n @param name The name to resolve, in normalised and DNS-encoded form.\n @param data The resolution data, as specified in ENSIP-10.\n @return The result of resolving the name."
                  },
                  "functionSelector": "9061b923",
                  "id": 16276,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resolve",
                  "nameLocation": "1475:7:94",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 16187,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1561:8:94"
                  },
                  "parameters": {
                    "id": 16186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16183,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "1498:4:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16276,
                        "src": "1483:19:94",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16182,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1483:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16185,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1517:4:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16276,
                        "src": "1504:17:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16184,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1504:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1482:40:94"
                  },
                  "returnParameters": {
                    "id": 16192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16189,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16276,
                        "src": "1587:12:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16188,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1587:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16191,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16276,
                        "src": "1601:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16190,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1601:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1586:23:94"
                  },
                  "scope": 16674,
                  "src": "1466:1074:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16357,
                    "nodeType": "Block",
                    "src": "3100:823:94",
                    "statements": [
                      {
                        "assignments": [
                          16291,
                          16293
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16291,
                            "mutability": "mutable",
                            "name": "resolvedReverseData",
                            "nameLocation": "3137:19:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16357,
                            "src": "3124:32:94",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 16290,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3124:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 16293,
                            "mutability": "mutable",
                            "name": "reverseResolverAddress",
                            "nameLocation": "3178:22:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16357,
                            "src": "3170:30:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16292,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3170:7:94",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16307,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16296,
                              "name": "reverseName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16279,
                              "src": "3243:11:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 16299,
                                    "name": "INameResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15082,
                                    "src": "3287:13:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_INameResolver_$15082_$",
                                      "typeString": "type(contract INameResolver)"
                                    }
                                  },
                                  "id": 16300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3301:4:94",
                                  "memberName": "name",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15081,
                                  "src": "3287:18:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_declaration_view$_t_bytes32_$returns$_t_string_memory_ptr_$",
                                    "typeString": "function INameResolver.name(bytes32) view returns (string memory)"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 16303,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3328:1:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "expression": {
                                      "id": 16301,
                                      "name": "reverseName",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16279,
                                      "src": "3307:11:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "id": 16302,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3319:8:94",
                                    "memberName": "namehash",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16752,
                                    "src": "3307:20:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 16304,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3307:23:94",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_function_declaration_view$_t_bytes32_$returns$_t_string_memory_ptr_$",
                                    "typeString": "function INameResolver.name(bytes32) view returns (string memory)"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 16297,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3272:3:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 16298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "3276:10:94",
                                "memberName": "encodeCall",
                                "nodeType": "MemberAccess",
                                "src": "3272:14:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 16305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3272:59:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 16294,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "3213:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UniversalResolver_$16674",
                                "typeString": "contract UniversalResolver"
                              }
                            },
                            "id": 16295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3218:7:94",
                            "memberName": "resolve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16276,
                            "src": "3213:12:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_address_$",
                              "typeString": "function (bytes memory,bytes memory) view external returns (bytes memory,address)"
                            }
                          },
                          "id": 16306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3213:132:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_address_$",
                            "typeString": "tuple(bytes memory,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3110:235:94"
                      },
                      {
                        "assignments": [
                          16309
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16309,
                            "mutability": "mutable",
                            "name": "resolvedName",
                            "nameLocation": "3370:12:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16357,
                            "src": "3356:26:94",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 16308,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "3356:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16317,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16312,
                              "name": "resolvedReverseData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16291,
                              "src": "3396:19:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 16314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3418:6:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 16313,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3418:6:94",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 16315,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3417:8:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              }
                            ],
                            "expression": {
                              "id": 16310,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3385:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 16311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3389:6:94",
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "3385:10:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 16316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3385:41:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3356:70:94"
                      },
                      {
                        "assignments": [
                          16319,
                          16321
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16319,
                            "mutability": "mutable",
                            "name": "encodedName",
                            "nameLocation": "3451:11:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16357,
                            "src": "3438:24:94",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 16318,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3438:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 16321,
                            "mutability": "mutable",
                            "name": "namehash",
                            "nameLocation": "3472:8:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16357,
                            "src": "3464:16:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 16320,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3464:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16325,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 16322,
                              "name": "resolvedName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16309,
                              "src": "3484:12:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "id": 16323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3510:13:94",
                            "memberName": "dnsEncodeName",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16095,
                            "src": "3484:39:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes32_$bound_to$_t_string_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory,bytes32)"
                            }
                          },
                          "id": 16324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3484:41:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$",
                            "typeString": "tuple(bytes memory,bytes32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3437:88:94"
                      },
                      {
                        "assignments": [
                          16327,
                          16329
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16327,
                            "mutability": "mutable",
                            "name": "resolvedData",
                            "nameLocation": "3550:12:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16357,
                            "src": "3537:25:94",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 16326,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3537:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 16329,
                            "mutability": "mutable",
                            "name": "resolverAddress",
                            "nameLocation": "3572:15:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16357,
                            "src": "3564:23:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16328,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3564:7:94",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16340,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16332,
                              "name": "encodedName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16319,
                              "src": "3617:11:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 16335,
                                    "name": "IAddrResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14940,
                                    "src": "3657:13:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IAddrResolver_$14940_$",
                                      "typeString": "type(contract IAddrResolver)"
                                    }
                                  },
                                  "id": 16336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3671:4:94",
                                  "memberName": "addr",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14939,
                                  "src": "3657:18:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_declaration_view$_t_bytes32_$returns$_t_address_payable_$",
                                    "typeString": "function IAddrResolver.addr(bytes32) view returns (address payable)"
                                  }
                                },
                                {
                                  "id": 16337,
                                  "name": "namehash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16321,
                                  "src": "3677:8:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_function_declaration_view$_t_bytes32_$returns$_t_address_payable_$",
                                    "typeString": "function IAddrResolver.addr(bytes32) view returns (address payable)"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 16333,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3642:3:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 16334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "3646:10:94",
                                "memberName": "encodeCall",
                                "nodeType": "MemberAccess",
                                "src": "3642:14:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 16338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3642:44:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 16330,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "3591:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UniversalResolver_$16674",
                                "typeString": "contract UniversalResolver"
                              }
                            },
                            "id": 16331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3596:7:94",
                            "memberName": "resolve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16276,
                            "src": "3591:12:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_address_$",
                              "typeString": "function (bytes memory,bytes memory) view external returns (bytes memory,address)"
                            }
                          },
                          "id": 16339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3591:105:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_address_$",
                            "typeString": "tuple(bytes memory,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3536:160:94"
                      },
                      {
                        "assignments": [
                          16342
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16342,
                            "mutability": "mutable",
                            "name": "resolvedAddress",
                            "nameLocation": "3715:15:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16357,
                            "src": "3707:23:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16341,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3707:7:94",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16350,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16345,
                              "name": "resolvedData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16327,
                              "src": "3744:12:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 16347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3759:7:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 16346,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3759:7:94",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 16348,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3758:9:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            ],
                            "expression": {
                              "id": 16343,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3733:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 16344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3737:6:94",
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "3733:10:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 16349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3733:35:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3707:61:94"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 16351,
                              "name": "resolvedName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16309,
                              "src": "3800:12:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 16352,
                              "name": "resolvedAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16342,
                              "src": "3826:15:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16353,
                              "name": "reverseResolverAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16293,
                              "src": "3855:22:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16354,
                              "name": "resolverAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16329,
                              "src": "3891:15:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 16355,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3786:130:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_address_$_t_address_$_t_address_$",
                            "typeString": "tuple(string memory,address,address,address)"
                          }
                        },
                        "functionReturnParameters": 16289,
                        "id": 16356,
                        "nodeType": "Return",
                        "src": "3779:137:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16277,
                    "nodeType": "StructuredDocumentation",
                    "src": "2546:353:94",
                    "text": " @dev Performs ENS name reverse resolution for the supplied reverse name.\n @param reverseName The reverse name to resolve, in normalised and DNS-encoded form. e.g. b6E040C9ECAaE172a89bD561c5F73e1C48d28cd9.addr.reverse\n @return The resolved name, the resolved address, the reverse resolver address, and the resolver address."
                  },
                  "functionSelector": "ec11c823",
                  "id": 16358,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reverse",
                  "nameLocation": "2913:7:94",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16279,
                        "mutability": "mutable",
                        "name": "reverseName",
                        "nameLocation": "2936:11:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16358,
                        "src": "2921:26:94",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16278,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2921:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2920:28:94"
                  },
                  "returnParameters": {
                    "id": 16289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16282,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16358,
                        "src": "3009:13:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 16281,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3009:6:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16284,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16358,
                        "src": "3036:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16283,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3036:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16286,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16358,
                        "src": "3057:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3057:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16288,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16358,
                        "src": "3078:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3078:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2995:100:94"
                  },
                  "scope": 16674,
                  "src": "2904:1019:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3081
                  ],
                  "body": {
                    "id": 16378,
                    "nodeType": "Block",
                    "src": "4064:138:94",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 16376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 16371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 16366,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16360,
                              "src": "4093:11:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 16368,
                                    "name": "IExtendedResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15044,
                                    "src": "4113:17:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IExtendedResolver_$15044_$",
                                      "typeString": "type(contract IExtendedResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IExtendedResolver_$15044_$",
                                      "typeString": "type(contract IExtendedResolver)"
                                    }
                                  ],
                                  "id": 16367,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "4108:4:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 16369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4108:23:94",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IExtendedResolver_$15044",
                                  "typeString": "type(contract IExtendedResolver)"
                                }
                              },
                              "id": 16370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4132:11:94",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "4108:35:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "4093:50:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 16374,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16360,
                                "src": "4183:11:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 16372,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "4159:5:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_UniversalResolver_$16674_$",
                                  "typeString": "type(contract super UniversalResolver)"
                                }
                              },
                              "id": 16373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4165:17:94",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3081,
                              "src": "4159:23:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 16375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4159:36:94",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4093:102:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16365,
                        "id": 16377,
                        "nodeType": "Return",
                        "src": "4074:121:94"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 16379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "3938:17:94",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 16362,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4028:8:94"
                  },
                  "parameters": {
                    "id": 16361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16360,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "3963:11:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16379,
                        "src": "3956:18:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 16359,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3956:6:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3955:20:94"
                  },
                  "returnParameters": {
                    "id": 16365,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16364,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16379,
                        "src": "4054:4:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16363,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4054:4:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4053:6:94"
                  },
                  "scope": 16674,
                  "src": "3929:273:94",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16500,
                    "nodeType": "Block",
                    "src": "5027:1465:94",
                    "statements": [
                      {
                        "assignments": [
                          16392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16392,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "5042:6:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16500,
                            "src": "5037:11:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 16391,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5037:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16398,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16395,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16382,
                              "src": "5088:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16396,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16384,
                              "src": "5096:4:94",
                              "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": 16393,
                              "name": "LowLevelCallUtils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15933,
                              "src": "5051:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LowLevelCallUtils_$15933_$",
                                "typeString": "type(library LowLevelCallUtils)"
                              }
                            },
                            "id": 16394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5069:18:94",
                            "memberName": "functionStaticCall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15899,
                            "src": "5051:36:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (address,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 16397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5051:50:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5037:64:94"
                      },
                      {
                        "assignments": [
                          16400
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16400,
                            "mutability": "mutable",
                            "name": "size",
                            "nameLocation": "5119:4:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16500,
                            "src": "5111:12:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16399,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5111:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16404,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 16401,
                              "name": "LowLevelCallUtils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15933,
                              "src": "5126:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LowLevelCallUtils_$15933_$",
                                "typeString": "type(library LowLevelCallUtils)"
                              }
                            },
                            "id": 16402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5144:14:94",
                            "memberName": "returnDataSize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15907,
                            "src": "5126:32:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                              "typeString": "function () pure returns (uint256)"
                            }
                          },
                          "id": 16403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5126:34:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5111:49:94"
                      },
                      {
                        "condition": {
                          "id": 16405,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16392,
                          "src": "5175:6:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16413,
                        "nodeType": "IfStatement",
                        "src": "5171:85:94",
                        "trueBody": {
                          "id": 16412,
                          "nodeType": "Block",
                          "src": "5183:73:94",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 16408,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5237:1:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 16409,
                                    "name": "size",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16400,
                                    "src": "5240:4:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16406,
                                    "name": "LowLevelCallUtils",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15933,
                                    "src": "5204:17:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_LowLevelCallUtils_$15933_$",
                                      "typeString": "type(library LowLevelCallUtils)"
                                    }
                                  },
                                  "id": 16407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5222:14:94",
                                  "memberName": "readReturnData",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15926,
                                  "src": "5204:32:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (uint256,uint256) pure returns (bytes memory)"
                                  }
                                },
                                "id": 16410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5204:41:94",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 16390,
                              "id": 16411,
                              "nodeType": "Return",
                              "src": "5197:48:94"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16414,
                            "name": "size",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16400,
                            "src": "5289:4:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "34",
                            "id": 16415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5297:1:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "5289:9:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16494,
                        "nodeType": "IfStatement",
                        "src": "5285:1155:94",
                        "trueBody": {
                          "id": 16493,
                          "nodeType": "Block",
                          "src": "5300:1140:94",
                          "statements": [
                            {
                              "assignments": [
                                16418
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16418,
                                  "mutability": "mutable",
                                  "name": "errorId",
                                  "nameLocation": "5327:7:94",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16493,
                                  "src": "5314:20:94",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 16417,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5314:5:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16424,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 16421,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5370:1:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "34",
                                    "id": 16422,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5373:1:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16419,
                                    "name": "LowLevelCallUtils",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15933,
                                    "src": "5337:17:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_LowLevelCallUtils_$15933_$",
                                      "typeString": "type(library LowLevelCallUtils)"
                                    }
                                  },
                                  "id": 16420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5355:14:94",
                                  "memberName": "readReturnData",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15926,
                                  "src": "5337:32:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (uint256,uint256) pure returns (bytes memory)"
                                  }
                                },
                                "id": 16423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5337:38:94",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5314:61:94"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 16431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 16427,
                                      "name": "errorId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16418,
                                      "src": "5400:7:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 16426,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5393:6:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes4_$",
                                      "typeString": "type(bytes4)"
                                    },
                                    "typeName": {
                                      "id": 16425,
                                      "name": "bytes4",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5393:6:94",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 16428,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5393:15:94",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 16429,
                                    "name": "OffchainLookup",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16151,
                                    "src": "5412:14:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$_t_address_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes4_$_t_bytes_memory_ptr_$returns$__$",
                                      "typeString": "function (address,string memory[] memory,bytes memory,bytes4,bytes memory) pure"
                                    }
                                  },
                                  "id": 16430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5427:8:94",
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "5412:23:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "5393:42:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 16492,
                              "nodeType": "IfStatement",
                              "src": "5389:1041:94",
                              "trueBody": {
                                "id": 16491,
                                "nodeType": "Block",
                                "src": "5437:993:94",
                                "statements": [
                                  {
                                    "assignments": [
                                      16433
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 16433,
                                        "mutability": "mutable",
                                        "name": "revertData",
                                        "nameLocation": "5564:10:94",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 16491,
                                        "src": "5551:23:94",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 16432,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5551:5:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 16441,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "hexValue": "34",
                                          "id": 16436,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5631:1:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_4_by_1",
                                            "typeString": "int_const 4"
                                          },
                                          "value": "4"
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 16439,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 16437,
                                            "name": "size",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16400,
                                            "src": "5654:4:94",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "hexValue": "34",
                                            "id": 16438,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5661:1:94",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          },
                                          "src": "5654:8:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_4_by_1",
                                            "typeString": "int_const 4"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 16434,
                                          "name": "LowLevelCallUtils",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15933,
                                          "src": "5577:17:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_LowLevelCallUtils_$15933_$",
                                            "typeString": "type(library LowLevelCallUtils)"
                                          }
                                        },
                                        "id": 16435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "5595:14:94",
                                        "memberName": "readReturnData",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15926,
                                        "src": "5577:32:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function (uint256,uint256) pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 16440,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5577:103:94",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5551:129:94"
                                  },
                                  {
                                    "assignments": [
                                      16443,
                                      16446,
                                      16448,
                                      16450,
                                      16452
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 16443,
                                        "mutability": "mutable",
                                        "name": "sender",
                                        "nameLocation": "5728:6:94",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 16491,
                                        "src": "5720:14:94",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "typeName": {
                                          "id": 16442,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5720:7:94",
                                          "stateMutability": "nonpayable",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 16446,
                                        "mutability": "mutable",
                                        "name": "urls",
                                        "nameLocation": "5772:4:94",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 16491,
                                        "src": "5756:20:94",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "string[]"
                                        },
                                        "typeName": {
                                          "baseType": {
                                            "id": 16444,
                                            "name": "string",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5756:6:94",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_storage_ptr",
                                              "typeString": "string"
                                            }
                                          },
                                          "id": 16445,
                                          "nodeType": "ArrayTypeName",
                                          "src": "5756:8:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                            "typeString": "string[]"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 16448,
                                        "mutability": "mutable",
                                        "name": "callData",
                                        "nameLocation": "5811:8:94",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 16491,
                                        "src": "5798:21:94",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 16447,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5798:5:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 16450,
                                        "mutability": "mutable",
                                        "name": "innerCallbackFunction",
                                        "nameLocation": "5848:21:94",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 16491,
                                        "src": "5841:28:94",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 16449,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5841:6:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 16452,
                                        "mutability": "mutable",
                                        "name": "extraData",
                                        "nameLocation": "5904:9:94",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 16491,
                                        "src": "5891:22:94",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 16451,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5891:5:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 16469,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "id": 16455,
                                          "name": "revertData",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16433,
                                          "src": "5970:10:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "components": [
                                            {
                                              "id": 16457,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "6007:7:94",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 16456,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6007:7:94",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            {
                                              "baseExpression": {
                                                "id": 16459,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "6016:6:94",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                  "typeString": "type(string storage pointer)"
                                                },
                                                "typeName": {
                                                  "id": 16458,
                                                  "name": "string",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "6016:6:94",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 16460,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "6016:8:94",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                                                "typeString": "type(string memory[] memory)"
                                              }
                                            },
                                            {
                                              "id": 16462,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "6026:5:94",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                "typeString": "type(bytes storage pointer)"
                                              },
                                              "typeName": {
                                                "id": 16461,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6026:5:94",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            {
                                              "id": 16464,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "6033:6:94",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes4_$",
                                                "typeString": "type(bytes4)"
                                              },
                                              "typeName": {
                                                "id": 16463,
                                                "name": "bytes4",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6033:6:94",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            {
                                              "id": 16466,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "6041:5:94",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                "typeString": "type(bytes storage pointer)"
                                              },
                                              "typeName": {
                                                "id": 16465,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6041:5:94",
                                                "typeDescriptions": {}
                                              }
                                            }
                                          ],
                                          "id": 16467,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6006:41:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes4_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                            "typeString": "tuple(type(address),type(string memory[] memory),type(bytes storage pointer),type(bytes4),type(bytes storage pointer))"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes4_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                            "typeString": "tuple(type(address),type(string memory[] memory),type(bytes storage pointer),type(bytes4),type(bytes storage pointer))"
                                          }
                                        ],
                                        "expression": {
                                          "id": 16453,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "5934:3:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 16454,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "5938:6:94",
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "src": "5934:10:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 16468,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5934:135:94",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_address_payable_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes4_$_t_bytes_memory_ptr_$",
                                        "typeString": "tuple(address payable,string memory[] memory,bytes memory,bytes4,bytes memory)"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5698:371:94"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 16472,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 16470,
                                        "name": "sender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16443,
                                        "src": "6091:6:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "id": 16471,
                                        "name": "target",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16382,
                                        "src": "6101:6:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "6091:16:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 16490,
                                    "nodeType": "IfStatement",
                                    "src": "6087:329:94",
                                    "trueBody": {
                                      "id": 16489,
                                      "nodeType": "Block",
                                      "src": "6109:307:94",
                                      "statements": [
                                        {
                                          "errorCall": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 16476,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -28,
                                                    "src": "6186:4:94",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_UniversalResolver_$16674",
                                                      "typeString": "contract UniversalResolver"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_UniversalResolver_$16674",
                                                      "typeString": "contract UniversalResolver"
                                                    }
                                                  ],
                                                  "id": 16475,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "6178:7:94",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 16474,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6178:7:94",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 16477,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6178:13:94",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 16478,
                                                "name": "urls",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16446,
                                                "src": "6217:4:94",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                                  "typeString": "string memory[] memory"
                                                }
                                              },
                                              {
                                                "id": 16479,
                                                "name": "callData",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16448,
                                                "src": "6247:8:94",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              {
                                                "id": 16480,
                                                "name": "callbackFunction",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16386,
                                                "src": "6281:16:94",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes4",
                                                  "typeString": "bytes4"
                                                }
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 16483,
                                                    "name": "sender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16443,
                                                    "src": "6334:6:94",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "id": 16484,
                                                    "name": "innerCallbackFunction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16450,
                                                    "src": "6342:21:94",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes4",
                                                      "typeString": "bytes4"
                                                    }
                                                  },
                                                  {
                                                    "id": 16485,
                                                    "name": "extraData",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16452,
                                                    "src": "6365:9:94",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_bytes4",
                                                      "typeString": "bytes4"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 16481,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "6323:3:94",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 16482,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "6327:6:94",
                                                  "memberName": "encode",
                                                  "nodeType": "MemberAccess",
                                                  "src": "6323:10:94",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 16486,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6323:52:94",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                                  "typeString": "string memory[] memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes4",
                                                  "typeString": "bytes4"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 16473,
                                              "name": "OffchainLookup",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16151,
                                              "src": "6138:14:94",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_error_pure$_t_address_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes4_$_t_bytes_memory_ptr_$returns$__$",
                                                "typeString": "function (address,string memory[] memory,bytes memory,bytes4,bytes memory) pure"
                                              }
                                            },
                                            "id": 16487,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6138:259:94",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 16488,
                                          "nodeType": "RevertStatement",
                                          "src": "6131:266:94"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 16495,
                              "name": "LowLevelCallUtils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15933,
                              "src": "6450:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LowLevelCallUtils_$15933_$",
                                "typeString": "type(library LowLevelCallUtils)"
                              }
                            },
                            "id": 16497,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6468:15:94",
                            "memberName": "propagateRevert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15932,
                            "src": "6450:33:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 16498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6450:35:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16499,
                        "nodeType": "ExpressionStatement",
                        "src": "6450:35:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16380,
                    "nodeType": "StructuredDocumentation",
                    "src": "4208:640:94",
                    "text": " @dev Makes a call to `target` with `data`. If the call reverts with an `OffchainLookup` error, wraps\n      the error with the data necessary to continue the request where it left off.\n @param target The address to call.\n @param data The data to call `target` with.\n @param callbackFunction The function ID of a function on this contract to use as an EIP 3668 callback.\n        This function's `extraData` argument will be passed `(address target, bytes4 innerCallback, bytes innerExtraData)`.\n @return ret If `target` did not revert, contains the return data from the call to `target`."
                  },
                  "id": 16501,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "callWithOffchainLookupPropagation",
                  "nameLocation": "4862:33:94",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16382,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4913:6:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16501,
                        "src": "4905:14:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16381,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4905:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16384,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4942:4:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16501,
                        "src": "4929:17:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16383,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4929:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16386,
                        "mutability": "mutable",
                        "name": "callbackFunction",
                        "nameLocation": "4963:16:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16501,
                        "src": "4956:23:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 16385,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4956:6:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4895:90:94"
                  },
                  "returnParameters": {
                    "id": 16390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16389,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "5022:3:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16501,
                        "src": "5009:16:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16388,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5009:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5008:18:94"
                  },
                  "scope": 16674,
                  "src": "4853:1639:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16545,
                    "nodeType": "Block",
                    "src": "6929:514:94",
                    "statements": [
                      {
                        "assignments": [
                          16512,
                          16514,
                          16516
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16512,
                            "mutability": "mutable",
                            "name": "target",
                            "nameLocation": "6961:6:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16545,
                            "src": "6953:14:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16511,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6953:7:94",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 16514,
                            "mutability": "mutable",
                            "name": "innerCallbackFunction",
                            "nameLocation": "6988:21:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16545,
                            "src": "6981:28:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 16513,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "6981:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 16516,
                            "mutability": "mutable",
                            "name": "innerExtraData",
                            "nameLocation": "7036:14:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16545,
                            "src": "7023:27:94",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 16515,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7023:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16528,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16519,
                              "name": "extraData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16506,
                              "src": "7074:9:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 16521,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7086:7:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 16520,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7086:7:94",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 16523,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7095:6:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes4_$",
                                    "typeString": "type(bytes4)"
                                  },
                                  "typeName": {
                                    "id": 16522,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7095:6:94",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 16525,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7103:5:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 16524,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7103:5:94",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 16526,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7085:24:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes4_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(bytes4),type(bytes storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes4_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(bytes4),type(bytes storage pointer))"
                              }
                            ],
                            "expression": {
                              "id": 16517,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7063:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 16518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7067:6:94",
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "7063:10:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 16527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7063:47:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_bytes4_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address payable,bytes4,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6939:171:94"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 16535,
                                      "name": "innerCallbackFunction",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16514,
                                      "src": "7262:21:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    {
                                      "id": 16536,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16504,
                                      "src": "7309:8:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    {
                                      "id": 16537,
                                      "name": "innerExtraData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16516,
                                      "src": "7343:14:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 16533,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "7214:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 16534,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "7218:18:94",
                                    "memberName": "encodeWithSelector",
                                    "nodeType": "MemberAccess",
                                    "src": "7214:22:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes4) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 16538,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7214:165:94",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 16531,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16512,
                                  "src": "7167:6:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 16532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7174:18:94",
                                "memberName": "functionStaticCall",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2714,
                                "src": "7167:25:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$",
                                  "typeString": "function (address,bytes memory) view returns (bytes memory)"
                                }
                              },
                              "id": 16539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7167:230:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 16541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7416:5:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 16540,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7416:5:94",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 16542,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7415:7:94",
                              "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": 16529,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7139:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 16530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7143:6:94",
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "7139:10:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 16543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7139:297:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 16510,
                        "id": 16544,
                        "nodeType": "Return",
                        "src": "7120:316:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16502,
                    "nodeType": "StructuredDocumentation",
                    "src": "6498:285:94",
                    "text": " @dev Callback function for `resolve`.\n @param response Response data returned by the target address that invoked the inner `OffchainData` revert.\n @param extraData Extra data encoded by `callWithOffchainLookupPropagation` to allow completing the request."
                  },
                  "functionSelector": "b4a85801",
                  "id": 16546,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resolveCallback",
                  "nameLocation": "6797:15:94",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16504,
                        "mutability": "mutable",
                        "name": "response",
                        "nameLocation": "6828:8:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16546,
                        "src": "6813:23:94",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16503,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6813:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16506,
                        "mutability": "mutable",
                        "name": "extraData",
                        "nameLocation": "6853:9:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16546,
                        "src": "6838:24:94",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16505,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6838:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6812:51:94"
                  },
                  "returnParameters": {
                    "id": 16510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16509,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16546,
                        "src": "6911:12:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16508,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6911:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6910:14:94"
                  },
                  "scope": 16674,
                  "src": "6788:655:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16572,
                    "nodeType": "Block",
                    "src": "7909:126:94",
                    "statements": [
                      {
                        "assignments": [
                          16558,
                          16560
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16558,
                            "mutability": "mutable",
                            "name": "resolver",
                            "nameLocation": "7928:8:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16572,
                            "src": "7920:16:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16557,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7920:7:94",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 16560,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "7946:9:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16572,
                            "src": "7938:17:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 16559,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7938:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16565,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16562,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16549,
                              "src": "7972:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 16563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7978:1:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 16561,
                            "name": "findResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16573,
                              16673
                            ],
                            "referencedDeclaration": 16673,
                            "src": "7959:12:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_bytes32_$",
                              "typeString": "function (bytes calldata,uint256) view returns (address,bytes32)"
                            }
                          },
                          "id": 16564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7959:21:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bytes32_$",
                            "typeString": "tuple(address,bytes32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7919:61:94"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "id": 16567,
                                  "name": "resolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16558,
                                  "src": "8007:8:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 16566,
                                "name": "Resolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13920,
                                "src": "7998:8:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Resolver_$13920_$",
                                  "typeString": "type(contract Resolver)"
                                }
                              },
                              "id": 16568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7998:18:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Resolver_$13920",
                                "typeString": "contract Resolver"
                              }
                            },
                            {
                              "id": 16569,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16560,
                              "src": "8018:9:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "id": 16570,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7997:31:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_Resolver_$13920_$_t_bytes32_$",
                            "typeString": "tuple(contract Resolver,bytes32)"
                          }
                        },
                        "functionReturnParameters": 16556,
                        "id": 16571,
                        "nodeType": "Return",
                        "src": "7990:38:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16547,
                    "nodeType": "StructuredDocumentation",
                    "src": "7449:344:94",
                    "text": " @dev Finds a resolver by recursively querying the registry, starting at the longest name and progressively\n      removing labels until it finds a result.\n @param name The name to resolve, in DNS-encoded and normalised form.\n @return The Resolver responsible for this name, and the namehash of the full name."
                  },
                  "functionSelector": "a1cbcbaf",
                  "id": 16573,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "findResolver",
                  "nameLocation": "7807:12:94",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16549,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "7835:4:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16573,
                        "src": "7820:19:94",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16548,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7820:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7819:21:94"
                  },
                  "returnParameters": {
                    "id": 16556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16553,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16573,
                        "src": "7886:8:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Resolver_$13920",
                          "typeString": "contract Resolver"
                        },
                        "typeName": {
                          "id": 16552,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 16551,
                            "name": "Resolver",
                            "nameLocations": [
                              "7886:8:94"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 13920,
                            "src": "7886:8:94"
                          },
                          "referencedDeclaration": 13920,
                          "src": "7886:8:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Resolver_$13920",
                            "typeString": "contract Resolver"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16555,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16573,
                        "src": "7896:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16554,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7896:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7885:19:94"
                  },
                  "scope": 16674,
                  "src": "7798:237:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16672,
                    "nodeType": "Block",
                    "src": "8169:646:94",
                    "statements": [
                      {
                        "assignments": [
                          16585
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16585,
                            "mutability": "mutable",
                            "name": "labelLength",
                            "nameLocation": "8187:11:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16672,
                            "src": "8179:19:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16584,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8179:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16595,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 16590,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16575,
                                    "src": "8215:4:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  "id": 16592,
                                  "indexExpression": {
                                    "id": 16591,
                                    "name": "offset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16577,
                                    "src": "8220:6:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8215:12:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 16589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8209:5:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 16588,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8209:5:94",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 16593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8209:19:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 16587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8201:7:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 16586,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8201:7:94",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 16594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8201:28:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8179:50:94"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16596,
                            "name": "labelLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16585,
                            "src": "8243:11:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 16597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8258:1:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8243:16:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16610,
                        "nodeType": "IfStatement",
                        "src": "8239:78:94",
                        "trueBody": {
                          "id": 16609,
                          "nodeType": "Block",
                          "src": "8261:56:94",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 16601,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8291:1:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 16600,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8283:7:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 16599,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8283:7:94",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8283:10:94",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 16605,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8303:1:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 16604,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8295:7:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 16603,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8295:7:94",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8295:10:94",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "id": 16607,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8282:24:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_bytes32_$",
                                  "typeString": "tuple(address,bytes32)"
                                }
                              },
                              "functionReturnParameters": 16583,
                              "id": 16608,
                              "nodeType": "Return",
                              "src": "8275:31:94"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          16612
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16612,
                            "mutability": "mutable",
                            "name": "nextLabel",
                            "nameLocation": "8334:9:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16672,
                            "src": "8326:17:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16611,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8326:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16618,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 16613,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16577,
                              "src": "8346:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 16614,
                              "name": "labelLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16585,
                              "src": "8355:11:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8346:20:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 16616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8369:1:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "8346:24:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8326:44:94"
                      },
                      {
                        "assignments": [
                          16620
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16620,
                            "mutability": "mutable",
                            "name": "labelHash",
                            "nameLocation": "8388:9:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16672,
                            "src": "8380:17:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 16619,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8380:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16629,
                        "initialValue": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 16622,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16575,
                                "src": "8410:4:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "endExpression": {
                                "id": 16626,
                                "name": "nextLabel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16612,
                                "src": "8426:9:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexRangeAccess",
                              "src": "8410:26:94",
                              "startExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 16623,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16577,
                                  "src": "8415:6:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 16624,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8424:1:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8415:10:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr_slice",
                                "typeString": "bytes calldata slice"
                              }
                            ],
                            "id": 16621,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8400:9:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 16628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8400:37:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8380:57:94"
                      },
                      {
                        "assignments": [
                          16631,
                          16633
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16631,
                            "mutability": "mutable",
                            "name": "parentresolver",
                            "nameLocation": "8456:14:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16672,
                            "src": "8448:22:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16630,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8448:7:94",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 16633,
                            "mutability": "mutable",
                            "name": "parentnode",
                            "nameLocation": "8480:10:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16672,
                            "src": "8472:18:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 16632,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8472:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16638,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16635,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16575,
                              "src": "8520:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "id": 16636,
                              "name": "nextLabel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16612,
                              "src": "8538:9:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16634,
                            "name": "findResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16573,
                              16673
                            ],
                            "referencedDeclaration": 16673,
                            "src": "8494:12:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_bytes32_$",
                              "typeString": "function (bytes calldata,uint256) view returns (address,bytes32)"
                            }
                          },
                          "id": 16637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8494:63:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bytes32_$",
                            "typeString": "tuple(address,bytes32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8447:110:94"
                      },
                      {
                        "assignments": [
                          16640
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16640,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "8575:4:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16672,
                            "src": "8567:12:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 16639,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8567:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16648,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 16644,
                                  "name": "parentnode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16633,
                                  "src": "8609:10:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 16645,
                                  "name": "labelHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16620,
                                  "src": "8621:9:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 16642,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8592:3:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 16643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "8596:12:94",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8592:16:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 16646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8592:39:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 16641,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8582:9:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 16647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8582:50:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8567:65:94"
                      },
                      {
                        "assignments": [
                          16650
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16650,
                            "mutability": "mutable",
                            "name": "resolver",
                            "nameLocation": "8650:8:94",
                            "nodeType": "VariableDeclaration",
                            "scope": 16672,
                            "src": "8642:16:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16649,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8642:7:94",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16655,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16653,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16640,
                              "src": "8679:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 16651,
                              "name": "registry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16168,
                              "src": "8661:8:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 16652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8670:8:94",
                            "memberName": "resolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12133,
                            "src": "8661:17:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 16654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8661:23:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8642:42:94"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 16661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16656,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16650,
                            "src": "8698:8:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 16659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8718:1:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 16658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8710:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 16657,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8710:7:94",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8710:10:94",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8698:22:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16667,
                        "nodeType": "IfStatement",
                        "src": "8694:76:94",
                        "trueBody": {
                          "id": 16666,
                          "nodeType": "Block",
                          "src": "8722:48:94",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "id": 16662,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16650,
                                    "src": "8744:8:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 16663,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16640,
                                    "src": "8754:4:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "id": 16664,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8743:16:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_bytes32_$",
                                  "typeString": "tuple(address,bytes32)"
                                }
                              },
                              "functionReturnParameters": 16583,
                              "id": 16665,
                              "nodeType": "Return",
                              "src": "8736:23:94"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 16668,
                              "name": "parentresolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16631,
                              "src": "8787:14:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16669,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16640,
                              "src": "8803:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "id": 16670,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8786:22:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bytes32_$",
                            "typeString": "tuple(address,bytes32)"
                          }
                        },
                        "functionReturnParameters": 16583,
                        "id": 16671,
                        "nodeType": "Return",
                        "src": "8779:29:94"
                      }
                    ]
                  },
                  "id": 16673,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "findResolver",
                  "nameLocation": "8050:12:94",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16575,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "8078:4:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16673,
                        "src": "8063:19:94",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16574,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8063:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16577,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "8092:6:94",
                        "nodeType": "VariableDeclaration",
                        "scope": 16673,
                        "src": "8084:14:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8084:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8062:37:94"
                  },
                  "returnParameters": {
                    "id": 16583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16580,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16673,
                        "src": "8147:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16579,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8147:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16582,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16673,
                        "src": "8156:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16581,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8156:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8146:18:94"
                  },
                  "scope": 16674,
                  "src": "8041:774:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 16675,
              "src": "900:7917:94",
              "usedErrors": [
                16151
              ]
            }
          ],
          "src": "32:8786:94"
        },
        "id": 94
      },
      "contracts/wrapper/BytesUtils.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/BytesUtils.sol",
          "exportedSymbols": {
            "BytesUtils": [
              16817
            ]
          },
          "id": 16818,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16676,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:95"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "BytesUtils",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 16817,
              "linearizedBaseContracts": [
                16817
              ],
              "name": "BytesUtils",
              "nameLocation": "65:10:95",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 16697,
                    "nodeType": "Block",
                    "src": "473:144:95",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 16688,
                                  "name": "offset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16680,
                                  "src": "491:6:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 16689,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16682,
                                  "src": "500:3:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "491:12:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 16691,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16678,
                                  "src": "507:4:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 16692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "512:6:95",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "507:11:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "491:27:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 16687,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "483:7:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 16694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "483:36:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16695,
                        "nodeType": "ExpressionStatement",
                        "src": "483:36:95"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "538:73:95",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "552:49:95",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "self",
                                            "nodeType": "YulIdentifier",
                                            "src": "577:4:95"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "583:2:95",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "573:3:95"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "573:13:95"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "588:6:95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "569:3:95"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "569:26:95"
                                  },
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "597:3:95"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "559:9:95"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "559:42:95"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "552:3:95"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 16682,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "597:3:95",
                            "valueSize": 1
                          },
                          {
                            "declaration": 16680,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "588:6:95",
                            "valueSize": 1
                          },
                          {
                            "declaration": 16685,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "552:3:95",
                            "valueSize": 1
                          },
                          {
                            "declaration": 16678,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "577:4:95",
                            "valueSize": 1
                          }
                        ],
                        "id": 16696,
                        "nodeType": "InlineAssembly",
                        "src": "529:82:95"
                      }
                    ]
                  },
                  "id": 16698,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "keccak",
                  "nameLocation": "352:6:95",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16678,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "381:4:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16698,
                        "src": "368:17:95",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16677,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "368:5:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16680,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "403:6:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16698,
                        "src": "395:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "395:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16682,
                        "mutability": "mutable",
                        "name": "len",
                        "nameLocation": "427:3:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16698,
                        "src": "419:11:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "419:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "358:78:95"
                  },
                  "returnParameters": {
                    "id": 16686,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16685,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "468:3:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16698,
                        "src": "460:11:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16684,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "460:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "459:13:95"
                  },
                  "scope": 16817,
                  "src": "343:274:95",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16751,
                    "nodeType": "Block",
                    "src": "961:336:95",
                    "statements": [
                      {
                        "assignments": [
                          16709,
                          16711
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16709,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "980:9:95",
                            "nodeType": "VariableDeclaration",
                            "scope": 16751,
                            "src": "972:17:95",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 16708,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "972:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 16711,
                            "mutability": "mutable",
                            "name": "newOffset",
                            "nameLocation": "999:9:95",
                            "nodeType": "VariableDeclaration",
                            "scope": 16751,
                            "src": "991:17:95",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16710,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "991:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16716,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16713,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16701,
                              "src": "1022:4:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 16714,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16703,
                              "src": "1028:6:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16712,
                            "name": "readLabel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16816,
                            "src": "1012:9:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32,uint256)"
                            }
                          },
                          "id": 16715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1012:23:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$",
                            "typeString": "tuple(bytes32,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "971:64:95"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 16722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16717,
                            "name": "labelhash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16709,
                            "src": "1049:9:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 16720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1070:1:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 16719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1062:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 16718,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1062:7:95",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1062:10:95",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1049:23:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16739,
                        "nodeType": "IfStatement",
                        "src": "1045:152:95",
                        "trueBody": {
                          "id": 16738,
                          "nodeType": "Block",
                          "src": "1074:123:95",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16729,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 16724,
                                      "name": "offset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16703,
                                      "src": "1096:6:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 16725,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16701,
                                          "src": "1106:4:95",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 16726,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "1111:6:95",
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "src": "1106:11:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 16727,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1120:1:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1106:15:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1096:25:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "6e616d65686173683a204a756e6b20617420656e64206f66206e616d65",
                                    "id": 16730,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1123:31:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142",
                                      "typeString": "literal_string \"namehash: Junk at end of name\""
                                    },
                                    "value": "namehash: Junk at end of name"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_912cb3202b125350fc41f3ab0d7246878642a776f73877d55ca2cfbcec1f2142",
                                      "typeString": "literal_string \"namehash: Junk at end of name\""
                                    }
                                  ],
                                  "id": 16723,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1088:7:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 16731,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1088:67:95",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16732,
                              "nodeType": "ExpressionStatement",
                              "src": "1088:67:95"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 16735,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1184:1:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 16734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1176:7:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 16733,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1176:7:95",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 16736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1176:10:95",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 16707,
                              "id": 16737,
                              "nodeType": "Return",
                              "src": "1169:17:95"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 16744,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16701,
                                      "src": "1261:4:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 16745,
                                      "name": "newOffset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16711,
                                      "src": "1267:9:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 16743,
                                    "name": "namehash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16752,
                                    "src": "1252:8:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 16746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1252:25:95",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 16747,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16709,
                                  "src": "1279:9:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 16741,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1235:3:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 16742,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1239:12:95",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "1235:16:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 16748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1235:54:95",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 16740,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1225:9:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 16749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1225:65:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 16707,
                        "id": 16750,
                        "nodeType": "Return",
                        "src": "1206:84:95"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16699,
                    "nodeType": "StructuredDocumentation",
                    "src": "623:220:95",
                    "text": " @dev Returns the ENS namehash of a DNS-encoded name.\n @param self The DNS-encoded name to hash.\n @param offset The offset at which to start hashing.\n @return The namehash of the name."
                  },
                  "id": 16752,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "namehash",
                  "nameLocation": "857:8:95",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16701,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "879:4:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16752,
                        "src": "866:17:95",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16700,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "866:5:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16703,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "893:6:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16752,
                        "src": "885:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16702,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "885:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "865:35:95"
                  },
                  "returnParameters": {
                    "id": 16707,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16706,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16752,
                        "src": "948:7:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16705,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "948:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "947:9:95"
                  },
                  "scope": 16817,
                  "src": "848:449:95",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16815,
                    "nodeType": "Block",
                    "src": "1837:296:95",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16765,
                                "name": "idx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16757,
                                "src": "1855:3:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 16766,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16755,
                                  "src": "1861:4:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 16767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1866:6:95",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1861:11:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1855:17:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "726561644c6162656c3a20496e646578206f7574206f6620626f756e6473",
                              "id": 16769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1874:32:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535",
                                "typeString": "literal_string \"readLabel: Index out of bounds\""
                              },
                              "value": "readLabel: Index out of bounds"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_723ef06cf58e92d84b8ad4ad83db034cb099b69c213da6595a1e7ca6ebe51535",
                                "typeString": "literal_string \"readLabel: Index out of bounds\""
                              }
                            ],
                            "id": 16764,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1847:7:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1847:60:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16771,
                        "nodeType": "ExpressionStatement",
                        "src": "1847:60:95"
                      },
                      {
                        "assignments": [
                          16773
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16773,
                            "mutability": "mutable",
                            "name": "len",
                            "nameLocation": "1925:3:95",
                            "nodeType": "VariableDeclaration",
                            "scope": 16815,
                            "src": "1917:11:95",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16772,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1917:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16783,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 16778,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16755,
                                    "src": "1945:4:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 16780,
                                  "indexExpression": {
                                    "id": 16779,
                                    "name": "idx",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16757,
                                    "src": "1950:3:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1945:9:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 16777,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1939:5:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 16776,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1939:5:95",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 16781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1939:16:95",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 16775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1931:7:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 16774,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1931:7:95",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 16782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1931:25:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1917:39:95"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16784,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16773,
                            "src": "1970:3:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 16785,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1976:1:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1970:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 16805,
                          "nodeType": "Block",
                          "src": "2048:47:95",
                          "statements": [
                            {
                              "expression": {
                                "id": 16803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 16798,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16760,
                                  "src": "2062:9:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 16801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2082:1:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 16800,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2074:7:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 16799,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2074:7:95",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 16802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2074:10:95",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2062:22:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 16804,
                              "nodeType": "ExpressionStatement",
                              "src": "2062:22:95"
                            }
                          ]
                        },
                        "id": 16806,
                        "nodeType": "IfStatement",
                        "src": "1966:129:95",
                        "trueBody": {
                          "id": 16797,
                          "nodeType": "Block",
                          "src": "1979:63:95",
                          "statements": [
                            {
                              "expression": {
                                "id": 16795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 16787,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16760,
                                  "src": "1993:9:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 16789,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16755,
                                      "src": "2012:4:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16792,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 16790,
                                        "name": "idx",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16757,
                                        "src": "2018:3:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 16791,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2024:1:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "2018:7:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 16793,
                                      "name": "len",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16773,
                                      "src": "2027:3:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 16788,
                                    "name": "keccak",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16698,
                                    "src": "2005:6:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 16794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2005:26:95",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "1993:38:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 16796,
                              "nodeType": "ExpressionStatement",
                              "src": "1993:38:95"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 16813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16807,
                            "name": "newIdx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16762,
                            "src": "2104:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16808,
                                "name": "idx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16757,
                                "src": "2113:3:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 16809,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16773,
                                "src": "2119:3:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2113:9:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 16811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2125:1:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2113:13:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2104:22:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16814,
                        "nodeType": "ExpressionStatement",
                        "src": "2104:22:95"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16753,
                    "nodeType": "StructuredDocumentation",
                    "src": "1303:392:95",
                    "text": " @dev Returns the keccak-256 hash of a DNS-encoded label, and the offset to the start of the next label.\n @param self The byte string to read a label from.\n @param idx The index to read a label at.\n @return labelhash The hash of the label at the specified index, or 0 if it is the last label.\n @return newIdx The index of the start of the next label."
                  },
                  "id": 16816,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readLabel",
                  "nameLocation": "1709:9:95",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16755,
                        "mutability": "mutable",
                        "name": "self",
                        "nameLocation": "1732:4:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16816,
                        "src": "1719:17:95",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16754,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1719:5:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16757,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "1746:3:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16816,
                        "src": "1738:11:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16756,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1738:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1718:32:95"
                  },
                  "returnParameters": {
                    "id": 16763,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16760,
                        "mutability": "mutable",
                        "name": "labelhash",
                        "nameLocation": "1806:9:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16816,
                        "src": "1798:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16759,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1798:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16762,
                        "mutability": "mutable",
                        "name": "newIdx",
                        "nameLocation": "1825:6:95",
                        "nodeType": "VariableDeclaration",
                        "scope": 16816,
                        "src": "1817:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16761,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1817:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1797:35:95"
                  },
                  "scope": 16817,
                  "src": "1700:433:95",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 16818,
              "src": "57:2078:95",
              "usedErrors": []
            }
          ],
          "src": "31:2105:95"
        },
        "id": 95
      },
      "contracts/wrapper/Controllable.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/Controllable.sol",
          "exportedSymbols": {
            "Context": [
              2855
            ],
            "Controllable": [
              16866
            ],
            "Ownable": [
              642
            ]
          },
          "id": 16867,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16819,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:96"
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 16820,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16867,
              "sourceUnit": 643,
              "src": "57:52:96",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 16821,
                    "name": "Ownable",
                    "nameLocations": [
                      "136:7:96"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "136:7:96"
                  },
                  "id": 16822,
                  "nodeType": "InheritanceSpecifier",
                  "src": "136:7:96"
                }
              ],
              "canonicalName": "Controllable",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 16866,
              "linearizedBaseContracts": [
                16866,
                642,
                2855
              ],
              "name": "Controllable",
              "nameLocation": "120:12:96",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "da8c229e",
                  "id": 16826,
                  "mutability": "mutable",
                  "name": "controllers",
                  "nameLocation": "182:11:96",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "150:43:96",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 16825,
                    "keyType": {
                      "id": 16823,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "158:7:96",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "150:24:96",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 16824,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "169:4:96",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87",
                  "id": 16832,
                  "name": "ControllerChanged",
                  "nameLocation": "206:17:96",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 16831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16828,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "240:10:96",
                        "nodeType": "VariableDeclaration",
                        "scope": 16832,
                        "src": "224:26:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16827,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "224:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16830,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "active",
                        "nameLocation": "257:6:96",
                        "nodeType": "VariableDeclaration",
                        "scope": 16832,
                        "src": "252:11:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16829,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "252:4:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "223:41:96"
                  },
                  "src": "200:65:96"
                },
                {
                  "body": {
                    "id": 16852,
                    "nodeType": "Block",
                    "src": "344:101:96",
                    "statements": [
                      {
                        "expression": {
                          "id": 16845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 16841,
                              "name": "controllers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16826,
                              "src": "354:11:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 16843,
                            "indexExpression": {
                              "id": 16842,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16834,
                              "src": "366:10:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "354:23:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 16844,
                            "name": "active",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16836,
                            "src": "380:6:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "354:32:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16846,
                        "nodeType": "ExpressionStatement",
                        "src": "354:32:96"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 16848,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16834,
                              "src": "419:10:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16849,
                              "name": "active",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16836,
                              "src": "431:6:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 16847,
                            "name": "ControllerChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16832,
                            "src": "401:17:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 16850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "401:37:96",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16851,
                        "nodeType": "EmitStatement",
                        "src": "396:42:96"
                      }
                    ]
                  },
                  "functionSelector": "e0dba60f",
                  "id": 16853,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 16839,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 16838,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "334:9:96"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "334:9:96"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "334:9:96"
                    }
                  ],
                  "name": "setController",
                  "nameLocation": "280:13:96",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16834,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "302:10:96",
                        "nodeType": "VariableDeclaration",
                        "scope": 16853,
                        "src": "294:18:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16833,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "294:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16836,
                        "mutability": "mutable",
                        "name": "active",
                        "nameLocation": "319:6:96",
                        "nodeType": "VariableDeclaration",
                        "scope": 16853,
                        "src": "314:11:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16835,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "314:4:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "293:33:96"
                  },
                  "returnParameters": {
                    "id": 16840,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "344:0:96"
                  },
                  "scope": 16866,
                  "src": "271:174:96",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16864,
                    "nodeType": "Block",
                    "src": "477:138:96",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 16856,
                                "name": "controllers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16826,
                                "src": "508:11:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 16859,
                              "indexExpression": {
                                "expression": {
                                  "id": 16857,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "520:3:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 16858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "524:6:96",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "520:10:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "508:23:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f6e74726f6c6c6572",
                              "id": 16860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "545:42:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b",
                                "typeString": "literal_string \"Controllable: Caller is not a controller\""
                              },
                              "value": "Controllable: Caller is not a controller"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3a494915be969f0305371ebdb09944c6f39346fa8227994f38a7231f6aafbd7b",
                                "typeString": "literal_string \"Controllable: Caller is not a controller\""
                              }
                            ],
                            "id": 16855,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "487:7:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "487:110:96",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16862,
                        "nodeType": "ExpressionStatement",
                        "src": "487:110:96"
                      },
                      {
                        "id": 16863,
                        "nodeType": "PlaceholderStatement",
                        "src": "607:1:96"
                      }
                    ]
                  },
                  "id": 16865,
                  "name": "onlyController",
                  "nameLocation": "460:14:96",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 16854,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "474:2:96"
                  },
                  "src": "451:164:96",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 16867,
              "src": "111:506:96",
              "usedErrors": []
            }
          ],
          "src": "31:587:96"
        },
        "id": 96
      },
      "contracts/wrapper/ERC1155Fuse.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/ERC1155Fuse.sol",
          "exportedSymbols": {
            "Address": [
              2833
            ],
            "ERC1155Fuse": [
              17742
            ],
            "ERC165": [
              3082
            ],
            "IERC1155": [
              764
            ],
            "IERC1155MetadataURI": [
              820
            ],
            "IERC1155Receiver": [
              805
            ],
            "IERC165": [
              3094
            ],
            "OperationProhibited": [
              16877
            ]
          },
          "id": 17743,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16868,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:97"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 16869,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 17743,
              "sourceUnit": 3083,
              "src": "57:64:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "id": 16870,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 17743,
              "sourceUnit": 806,
              "src": "122:68:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "id": 16871,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 17743,
              "sourceUnit": 765,
              "src": "191:60:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
              "id": 16872,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 17743,
              "sourceUnit": 821,
              "src": "252:82:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "@openzeppelin/contracts/utils/Address.sol",
              "id": 16873,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 17743,
              "sourceUnit": 2834,
              "src": "335:51:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "errorSelector": "a2a72013",
              "id": 16877,
              "name": "OperationProhibited",
              "nameLocation": "841:19:97",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 16876,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 16875,
                    "mutability": "mutable",
                    "name": "node",
                    "nameLocation": "869:4:97",
                    "nodeType": "VariableDeclaration",
                    "scope": 16877,
                    "src": "861:12:97",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 16874,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "861:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "860:14:97"
              },
              "src": "835:40:97"
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 16878,
                    "name": "ERC165",
                    "nameLocations": [
                      "910:6:97"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3082,
                    "src": "910:6:97"
                  },
                  "id": 16879,
                  "nodeType": "InheritanceSpecifier",
                  "src": "910:6:97"
                },
                {
                  "baseName": {
                    "id": 16880,
                    "name": "IERC1155",
                    "nameLocations": [
                      "918:8:97"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 764,
                    "src": "918:8:97"
                  },
                  "id": 16881,
                  "nodeType": "InheritanceSpecifier",
                  "src": "918:8:97"
                },
                {
                  "baseName": {
                    "id": 16882,
                    "name": "IERC1155MetadataURI",
                    "nameLocations": [
                      "928:19:97"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 820,
                    "src": "928:19:97"
                  },
                  "id": 16883,
                  "nodeType": "InheritanceSpecifier",
                  "src": "928:19:97"
                }
              ],
              "canonicalName": "ERC1155Fuse",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 17742,
              "linearizedBaseContracts": [
                17742,
                820,
                764,
                3082,
                3094
              ],
              "name": "ERC1155Fuse",
              "nameLocation": "895:11:97",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 16886,
                  "libraryName": {
                    "id": 16884,
                    "name": "Address",
                    "nameLocations": [
                      "960:7:97"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2833,
                    "src": "960:7:97"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "954:26:97",
                  "typeName": {
                    "id": 16885,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "972:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": false,
                  "functionSelector": "ed70554d",
                  "id": 16890,
                  "mutability": "mutable",
                  "name": "_tokens",
                  "nameLocation": "1020:7:97",
                  "nodeType": "VariableDeclaration",
                  "scope": 17742,
                  "src": "985:42:97",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 16889,
                    "keyType": {
                      "id": 16887,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "993:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "985:27:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 16888,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1004:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 16896,
                  "mutability": "mutable",
                  "name": "_operatorApprovals",
                  "nameLocation": "1135:18:97",
                  "nodeType": "VariableDeclaration",
                  "scope": 17742,
                  "src": "1082:71:97",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 16895,
                    "keyType": {
                      "id": 16891,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1090:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1082:44:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 16894,
                      "keyType": {
                        "id": 16892,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1109:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1101:24:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 16893,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1120:4:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 16911,
                    "nodeType": "Block",
                    "src": "1410:72:97",
                    "statements": [
                      {
                        "assignments": [
                          16904,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16904,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "1429:5:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 16911,
                            "src": "1421:13:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16903,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1421:7:97",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 16908,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16906,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16898,
                              "src": "1450:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16905,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17154,
                            "src": "1442:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 16907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1442:11:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1420:33:97"
                      },
                      {
                        "expression": {
                          "id": 16909,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16904,
                          "src": "1470:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 16902,
                        "id": 16910,
                        "nodeType": "Return",
                        "src": "1463:12:97"
                      }
                    ]
                  },
                  "functionSelector": "6352211e",
                  "id": 16912,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "1352:7:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16899,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16898,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1368:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 16912,
                        "src": "1360:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16897,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1360:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1359:12:97"
                  },
                  "returnParameters": {
                    "id": 16902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16901,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16912,
                        "src": "1401:7:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16900,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1401:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1400:9:97"
                  },
                  "scope": 17742,
                  "src": "1343:139:97",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3081,
                    3093
                  ],
                  "body": {
                    "id": 16942,
                    "nodeType": "Block",
                    "src": "1701:197:97",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 16940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 16935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 16928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16923,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16915,
                                "src": "1730:11:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 16925,
                                      "name": "IERC1155",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 764,
                                      "src": "1750:8:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155_$764_$",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155_$764_$",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    ],
                                    "id": 16924,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "1745:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 16926,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1745:14:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$764",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                },
                                "id": 16927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1760:11:97",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "1745:26:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "1730:41:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 16934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16929,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16915,
                                "src": "1787:11:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 16931,
                                      "name": "IERC1155MetadataURI",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 820,
                                      "src": "1807:19:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$820_$",
                                        "typeString": "type(contract IERC1155MetadataURI)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$820_$",
                                        "typeString": "type(contract IERC1155MetadataURI)"
                                      }
                                    ],
                                    "id": 16930,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "1802:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 16932,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1802:25:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155MetadataURI_$820",
                                    "typeString": "type(contract IERC1155MetadataURI)"
                                  }
                                },
                                "id": 16933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1828:11:97",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "1802:37:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "1787:52:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1730:109:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 16938,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16915,
                                "src": "1879:11:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 16936,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1855:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ERC1155Fuse_$17742_$",
                                  "typeString": "type(contract super ERC1155Fuse)"
                                }
                              },
                              "id": 16937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1861:17:97",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3081,
                              "src": "1855:23:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 16939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1855:36:97",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1730:161:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16922,
                        "id": 16941,
                        "nodeType": "Return",
                        "src": "1711:180:97"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16913,
                    "nodeType": "StructuredDocumentation",
                    "src": "1488:56:97",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 16943,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1558:17:97",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 16919,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 16917,
                        "name": "ERC165",
                        "nameLocations": [
                          "1657:6:97"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3082,
                        "src": "1657:6:97"
                      },
                      {
                        "id": 16918,
                        "name": "IERC165",
                        "nameLocations": [
                          "1665:7:97"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3094,
                        "src": "1665:7:97"
                      }
                    ],
                    "src": "1648:25:97"
                  },
                  "parameters": {
                    "id": 16916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16915,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "1583:11:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 16943,
                        "src": "1576:18:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 16914,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1576:6:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1575:20:97"
                  },
                  "returnParameters": {
                    "id": 16922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16921,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16943,
                        "src": "1691:4:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16920,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1691:4:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1690:6:97"
                  },
                  "scope": 17742,
                  "src": "1549:349:97",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    702
                  ],
                  "body": {
                    "id": 16979,
                    "nodeType": "Block",
                    "src": "2179:253:97",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 16960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16955,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16946,
                                "src": "2210:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 16958,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2229:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 16957,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2221:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 16956,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2221:7:97",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 16959,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2221:10:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2210:21:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                              "id": 16961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2245:45:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9",
                                "typeString": "literal_string \"ERC1155: balance query for the zero address\""
                              },
                              "value": "ERC1155: balance query for the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9",
                                "typeString": "literal_string \"ERC1155: balance query for the zero address\""
                              }
                            ],
                            "id": 16954,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2189:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2189:111:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16963,
                        "nodeType": "ExpressionStatement",
                        "src": "2189:111:97"
                      },
                      {
                        "assignments": [
                          16965,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16965,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "2319:5:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 16979,
                            "src": "2311:13:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16964,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2311:7:97",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 16969,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16967,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16948,
                              "src": "2340:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16966,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17154,
                            "src": "2332:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 16968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2332:11:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2310:33:97"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 16972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16970,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16965,
                            "src": "2357:5:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 16971,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16946,
                            "src": "2366:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2357:16:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16976,
                        "nodeType": "IfStatement",
                        "src": "2353:55:97",
                        "trueBody": {
                          "id": 16975,
                          "nodeType": "Block",
                          "src": "2375:33:97",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "31",
                                "id": 16973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2396:1:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "functionReturnParameters": 16953,
                              "id": 16974,
                              "nodeType": "Return",
                              "src": "2389:8:97"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 16977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2424:1:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 16953,
                        "id": 16978,
                        "nodeType": "Return",
                        "src": "2417:8:97"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16944,
                    "nodeType": "StructuredDocumentation",
                    "src": "1904:131:97",
                    "text": " @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 16980,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "2049:9:97",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 16950,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2140:8:97"
                  },
                  "parameters": {
                    "id": 16949,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16946,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2067:7:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 16980,
                        "src": "2059:15:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16945,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2059:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16948,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2084:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 16980,
                        "src": "2076:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16947,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2076:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2058:29:97"
                  },
                  "returnParameters": {
                    "id": 16953,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16952,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16980,
                        "src": "2166:7:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16951,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2166:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2165:9:97"
                  },
                  "scope": 17742,
                  "src": "2040:392:97",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    715
                  ],
                  "body": {
                    "id": 17043,
                    "nodeType": "Block",
                    "src": "2762:369:97",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 16995,
                                  "name": "accounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16984,
                                  "src": "2793:8:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 16996,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2802:6:97",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2793:15:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 16997,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16987,
                                  "src": "2812:3:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 16998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2816:6:97",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2812:10:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2793:29:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368",
                              "id": 17000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2836:43:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                                "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                              },
                              "value": "ERC1155: accounts and ids length mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                                "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                              }
                            ],
                            "id": 16994,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2772:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2772:117:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17002,
                        "nodeType": "ExpressionStatement",
                        "src": "2772:117:97"
                      },
                      {
                        "assignments": [
                          17007
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17007,
                            "mutability": "mutable",
                            "name": "batchBalances",
                            "nameLocation": "2917:13:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17043,
                            "src": "2900:30:97",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 17005,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2900:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17006,
                              "nodeType": "ArrayTypeName",
                              "src": "2900:9:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17014,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17011,
                                "name": "accounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16984,
                                "src": "2947:8:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 17012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2956:6:97",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2947:15:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2933:13:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 17008,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2937:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17009,
                              "nodeType": "ArrayTypeName",
                              "src": "2937:9:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 17013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2933:30:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2900:63:97"
                      },
                      {
                        "body": {
                          "id": 17039,
                          "nodeType": "Block",
                          "src": "3020:74:97",
                          "statements": [
                            {
                              "expression": {
                                "id": 17037,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 17026,
                                    "name": "batchBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17007,
                                    "src": "3034:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 17028,
                                  "indexExpression": {
                                    "id": 17027,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17016,
                                    "src": "3048:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3034:16:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 17030,
                                        "name": "accounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16984,
                                        "src": "3063:8:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 17032,
                                      "indexExpression": {
                                        "id": 17031,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17016,
                                        "src": "3072:1:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3063:11:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 17033,
                                        "name": "ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16987,
                                        "src": "3076:3:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 17035,
                                      "indexExpression": {
                                        "id": 17034,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17016,
                                        "src": "3080:1:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3076:6:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 17029,
                                    "name": "balanceOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16980,
                                    "src": "3053:9:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 17036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3053:30:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3034:49:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17038,
                              "nodeType": "ExpressionStatement",
                              "src": "3034:49:97"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17019,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17016,
                            "src": "2994:1:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 17020,
                              "name": "accounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16984,
                              "src": "2998:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 17021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3007:6:97",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2998:15:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2994:19:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17040,
                        "initializationExpression": {
                          "assignments": [
                            17016
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 17016,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2987:1:97",
                              "nodeType": "VariableDeclaration",
                              "scope": 17040,
                              "src": "2979:9:97",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 17015,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2979:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 17018,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 17017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2991:1:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2979:13:97"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 17024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "3015:3:97",
                            "subExpression": {
                              "id": 17023,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17016,
                              "src": "3017:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17025,
                          "nodeType": "ExpressionStatement",
                          "src": "3015:3:97"
                        },
                        "nodeType": "ForStatement",
                        "src": "2974:120:97"
                      },
                      {
                        "expression": {
                          "id": 17041,
                          "name": "batchBalances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17007,
                          "src": "3111:13:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 16993,
                        "id": 17042,
                        "nodeType": "Return",
                        "src": "3104:20:97"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16981,
                    "nodeType": "StructuredDocumentation",
                    "src": "2438:146:97",
                    "text": " @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 17044,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nameLocation": "2598:14:97",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 16989,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2714:8:97"
                  },
                  "parameters": {
                    "id": 16988,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16984,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nameLocation": "2630:8:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17044,
                        "src": "2613:25:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 16982,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2613:7:97",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 16983,
                          "nodeType": "ArrayTypeName",
                          "src": "2613:9:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16987,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2657:3:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17044,
                        "src": "2640:20:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 16985,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2640:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 16986,
                          "nodeType": "ArrayTypeName",
                          "src": "2640:9:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2612:49:97"
                  },
                  "returnParameters": {
                    "id": 16993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16992,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17044,
                        "src": "2740:16:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 16990,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2740:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 16991,
                          "nodeType": "ArrayTypeName",
                          "src": "2740:9:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2739:18:97"
                  },
                  "scope": 17742,
                  "src": "2589:542:97",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    723
                  ],
                  "body": {
                    "id": 17077,
                    "nodeType": "Block",
                    "src": "3311:250:97",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 17054,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3342:3:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17055,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3346:6:97",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3342:10:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 17056,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17047,
                                "src": "3356:8:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3342:22:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66",
                              "id": 17058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3378:43:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                "typeString": "literal_string \"ERC1155: setting approval status for self\""
                              },
                              "value": "ERC1155: setting approval status for self"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                "typeString": "literal_string \"ERC1155: setting approval status for self\""
                              }
                            ],
                            "id": 17053,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3321:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3321:110:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17060,
                        "nodeType": "ExpressionStatement",
                        "src": "3321:110:97"
                      },
                      {
                        "expression": {
                          "id": 17068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 17061,
                                "name": "_operatorApprovals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16896,
                                "src": "3442:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 17065,
                              "indexExpression": {
                                "expression": {
                                  "id": 17062,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3461:3:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3465:6:97",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3461:10:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3442:30:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 17066,
                            "indexExpression": {
                              "id": 17064,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17047,
                              "src": "3473:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3442:40:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17067,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17049,
                            "src": "3485:8:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3442:51:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17069,
                        "nodeType": "ExpressionStatement",
                        "src": "3442:51:97"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17071,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3523:3:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3527:6:97",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3523:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17073,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17047,
                              "src": "3535:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17074,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17049,
                              "src": "3545:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17070,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 685,
                            "src": "3508:14:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 17075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3508:46:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17076,
                        "nodeType": "EmitStatement",
                        "src": "3503:51:97"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17045,
                    "nodeType": "StructuredDocumentation",
                    "src": "3137:57:97",
                    "text": " @dev See {IERC1155-setApprovalForAll}."
                  },
                  "functionSelector": "a22cb465",
                  "id": 17078,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "3208:17:97",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 17051,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3298:8:97"
                  },
                  "parameters": {
                    "id": 17050,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17047,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3234:8:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17078,
                        "src": "3226:16:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17046,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3226:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17049,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "3249:8:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17078,
                        "src": "3244:13:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 17048,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3244:4:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3225:33:97"
                  },
                  "returnParameters": {
                    "id": 17052,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3311:0:97"
                  },
                  "scope": 17742,
                  "src": "3199:362:97",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    733
                  ],
                  "body": {
                    "id": 17095,
                    "nodeType": "Block",
                    "src": "3777:61:97",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 17089,
                              "name": "_operatorApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16896,
                              "src": "3794:18:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 17091,
                            "indexExpression": {
                              "id": 17090,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17081,
                              "src": "3813:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3794:27:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 17093,
                          "indexExpression": {
                            "id": 17092,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17083,
                            "src": "3822:8:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3794:37:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 17088,
                        "id": 17094,
                        "nodeType": "Return",
                        "src": "3787:44:97"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17079,
                    "nodeType": "StructuredDocumentation",
                    "src": "3567:56:97",
                    "text": " @dev See {IERC1155-isApprovedForAll}."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 17096,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "3637:16:97",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 17085,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3741:8:97"
                  },
                  "parameters": {
                    "id": 17084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17081,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3662:7:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17096,
                        "src": "3654:15:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17080,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3654:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17083,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3679:8:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17096,
                        "src": "3671:16:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17082,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3671:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3653:35:97"
                  },
                  "returnParameters": {
                    "id": 17088,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17087,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17096,
                        "src": "3767:4:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 17086,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3767:4:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3766:6:97"
                  },
                  "scope": 17742,
                  "src": "3628:210:97",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17153,
                    "nodeType": "Block",
                    "src": "4104:245:97",
                    "statements": [
                      {
                        "assignments": [
                          17109
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17109,
                            "mutability": "mutable",
                            "name": "t",
                            "nameLocation": "4122:1:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17153,
                            "src": "4114:9:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17108,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4114:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17113,
                        "initialValue": {
                          "baseExpression": {
                            "id": 17110,
                            "name": "_tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16890,
                            "src": "4126:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 17112,
                          "indexExpression": {
                            "id": 17111,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17099,
                            "src": "4134:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4126:16:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4114:28:97"
                      },
                      {
                        "expression": {
                          "id": 17122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17114,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17102,
                            "src": "4152:5:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 17119,
                                    "name": "t",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17109,
                                    "src": "4176:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4168:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 17117,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4168:7:97",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4168:10:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 17116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4160:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17115,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4160:7:97",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4160:19:97",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4152:27:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17123,
                        "nodeType": "ExpressionStatement",
                        "src": "4152:27:97"
                      },
                      {
                        "expression": {
                          "id": 17131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17124,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17106,
                            "src": "4189:6:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17127,
                                  "name": "t",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17109,
                                  "src": "4205:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "313932",
                                  "id": 17128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4210:3:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_192_by_1",
                                    "typeString": "int_const 192"
                                  },
                                  "value": "192"
                                },
                                "src": "4205:8:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 17126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4198:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 17125,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "4198:6:97",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4198:16:97",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "4189:25:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 17132,
                        "nodeType": "ExpressionStatement",
                        "src": "4189:25:97"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 17133,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "4228:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 17134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4234:9:97",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "4228:15:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 17135,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17106,
                            "src": "4246:6:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "4228:24:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 17151,
                          "nodeType": "Block",
                          "src": "4294:49:97",
                          "statements": [
                            {
                              "expression": {
                                "id": 17149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17142,
                                  "name": "fuses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17104,
                                  "src": "4308:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 17147,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 17145,
                                        "name": "t",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17109,
                                        "src": "4323:1:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "313630",
                                        "id": 17146,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4328:3:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_160_by_1",
                                          "typeString": "int_const 160"
                                        },
                                        "value": "160"
                                      },
                                      "src": "4323:8:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 17144,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4316:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint32_$",
                                      "typeString": "type(uint32)"
                                    },
                                    "typeName": {
                                      "id": 17143,
                                      "name": "uint32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4316:6:97",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 17148,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4316:16:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "4308:24:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 17150,
                              "nodeType": "ExpressionStatement",
                              "src": "4308:24:97"
                            }
                          ]
                        },
                        "id": 17152,
                        "nodeType": "IfStatement",
                        "src": "4224:119:97",
                        "trueBody": {
                          "id": 17141,
                          "nodeType": "Block",
                          "src": "4254:34:97",
                          "statements": [
                            {
                              "expression": {
                                "id": 17139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17137,
                                  "name": "fuses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17104,
                                  "src": "4268:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 17138,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4276:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4268:9:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 17140,
                              "nodeType": "ExpressionStatement",
                              "src": "4268:9:97"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17097,
                    "nodeType": "StructuredDocumentation",
                    "src": "3844:66:97",
                    "text": " @dev Returns the Name's owner address and fuses"
                  },
                  "functionSelector": "0178fe3f",
                  "id": 17154,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getData",
                  "nameLocation": "3924:7:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17099,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3940:7:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17154,
                        "src": "3932:15:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17098,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3932:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3931:17:97"
                  },
                  "returnParameters": {
                    "id": 17107,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17102,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4031:5:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17154,
                        "src": "4023:13:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17101,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4023:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17104,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "4057:5:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17154,
                        "src": "4050:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17103,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4050:6:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17106,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "4083:6:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17154,
                        "src": "4076:13:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17105,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "4076:6:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4009:90:97"
                  },
                  "scope": 17742,
                  "src": "3915:434:97",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    747
                  ],
                  "body": {
                    "id": 17201,
                    "nodeType": "Block",
                    "src": "4585:285:97",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17170,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17159,
                                "src": "4603:2:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 17173,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4617:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 17172,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4609:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17171,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4609:7:97",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17174,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4609:10:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4603:16:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 17176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4621:39:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              },
                              "value": "ERC1155: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              }
                            ],
                            "id": 17169,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4595:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4595:66:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17178,
                        "nodeType": "ExpressionStatement",
                        "src": "4595:66:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 17183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17180,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17157,
                                  "src": "4692:4:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 17181,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4700:3:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 17182,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4704:6:97",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "4700:10:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4692:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 17185,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17157,
                                    "src": "4731:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 17186,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "4737:3:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 17187,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4741:6:97",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "4737:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17184,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17096,
                                  "src": "4714:16:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 17188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4714:34:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4692:56:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "id": 17190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4762:43:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                                "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                              },
                              "value": "ERC1155: caller is not owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                                "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                              }
                            ],
                            "id": 17179,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4671:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4671:144:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17192,
                        "nodeType": "ExpressionStatement",
                        "src": "4671:144:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17194,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17157,
                              "src": "4836:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17195,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17159,
                              "src": "4842:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17196,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17161,
                              "src": "4846:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17197,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17163,
                              "src": "4850:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17198,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17165,
                              "src": "4858:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 17193,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17609,
                            "src": "4826:9:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 17199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4826:37:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17200,
                        "nodeType": "ExpressionStatement",
                        "src": "4826:37:97"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17155,
                    "nodeType": "StructuredDocumentation",
                    "src": "4355:56:97",
                    "text": " @dev See {IERC1155-safeTransferFrom}."
                  },
                  "functionSelector": "f242432a",
                  "id": 17202,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "4425:16:97",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 17167,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4576:8:97"
                  },
                  "parameters": {
                    "id": 17166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17157,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4459:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17202,
                        "src": "4451:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4451:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17159,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4481:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17202,
                        "src": "4473:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4473:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17161,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "4501:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17202,
                        "src": "4493:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4493:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17163,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4521:6:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17202,
                        "src": "4513:14:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4513:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17165,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4550:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17202,
                        "src": "4537:17:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17164,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4537:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4441:119:97"
                  },
                  "returnParameters": {
                    "id": 17168,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4585:0:97"
                  },
                  "scope": 17742,
                  "src": "4416:454:97",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    763
                  ],
                  "body": {
                    "id": 17337,
                    "nodeType": "Block",
                    "src": "5136:1130:97",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 17220,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17210,
                                  "src": "5167:3:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 17221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5171:6:97",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5167:10:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 17222,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17213,
                                  "src": "5181:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 17223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5189:6:97",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5181:14:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5167:28:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                              "id": 17225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5209:42:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              },
                              "value": "ERC1155: ids and amounts length mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              }
                            ],
                            "id": 17219,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5146:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5146:115:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17227,
                        "nodeType": "ExpressionStatement",
                        "src": "5146:115:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17229,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17207,
                                "src": "5279:2:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 17232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5293:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 17231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5285:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17230,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5285:7:97",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5285:10:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5279:16:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 17235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5297:39:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              },
                              "value": "ERC1155: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              }
                            ],
                            "id": 17228,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5271:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5271:66:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17237,
                        "nodeType": "ExpressionStatement",
                        "src": "5271:66:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 17242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17239,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17205,
                                  "src": "5368:4:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 17240,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "5376:3:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 17241,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5380:6:97",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "5376:10:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5368:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 17244,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17205,
                                    "src": "5407:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 17245,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5413:3:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 17246,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5417:6:97",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5413:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17243,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17096,
                                  "src": "5390:16:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 17247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5390:34:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5368:56:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "id": 17249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5438:52:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686",
                                "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\""
                              },
                              "value": "ERC1155: transfer caller is not owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686",
                                "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\""
                              }
                            ],
                            "id": 17238,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5347:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5347:153:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17251,
                        "nodeType": "ExpressionStatement",
                        "src": "5347:153:97"
                      },
                      {
                        "body": {
                          "id": 17316,
                          "nodeType": "Block",
                          "src": "5552:473:97",
                          "statements": [
                            {
                              "assignments": [
                                17264
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 17264,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nameLocation": "5574:2:97",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 17316,
                                  "src": "5566:10:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 17263,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5566:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 17268,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 17265,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17210,
                                  "src": "5579:3:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 17267,
                                "indexExpression": {
                                  "id": 17266,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17253,
                                  "src": "5583:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5579:6:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5566:19:97"
                            },
                            {
                              "assignments": [
                                17270
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 17270,
                                  "mutability": "mutable",
                                  "name": "amount",
                                  "nameLocation": "5607:6:97",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 17316,
                                  "src": "5599:14:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 17269,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5599:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 17274,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 17271,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17213,
                                  "src": "5616:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 17273,
                                "indexExpression": {
                                  "id": 17272,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17253,
                                  "src": "5624:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5616:10:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5599:27:97"
                            },
                            {
                              "assignments": [
                                17276,
                                17278,
                                17280
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 17276,
                                  "mutability": "mutable",
                                  "name": "oldOwner",
                                  "nameLocation": "5650:8:97",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 17316,
                                  "src": "5642:16:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 17275,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5642:7:97",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 17278,
                                  "mutability": "mutable",
                                  "name": "fuses",
                                  "nameLocation": "5667:5:97",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 17316,
                                  "src": "5660:12:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 17277,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5660:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 17280,
                                  "mutability": "mutable",
                                  "name": "expiration",
                                  "nameLocation": "5681:10:97",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 17316,
                                  "src": "5674:17:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  "typeName": {
                                    "id": 17279,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5674:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 17284,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 17282,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17264,
                                    "src": "5703:2:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17281,
                                  "name": "getData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17154,
                                  "src": "5695:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                                    "typeString": "function (uint256) view returns (address,uint32,uint64)"
                                  }
                                },
                                "id": 17283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5695:11:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                                  "typeString": "tuple(address,uint32,uint64)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5641:65:97"
                            },
                            {
                              "condition": {
                                "id": 17288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "5725:20:97",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "id": 17286,
                                      "name": "fuses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17278,
                                      "src": "5739:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    ],
                                    "id": 17285,
                                    "name": "_canTransfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17386,
                                    "src": "5726:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_uint32_$returns$_t_bool_$",
                                      "typeString": "function (uint32) returns (bool)"
                                    }
                                  },
                                  "id": 17287,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5726:19:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 17297,
                              "nodeType": "IfStatement",
                              "src": "5721:98:97",
                              "trueBody": {
                                "id": 17296,
                                "nodeType": "Block",
                                "src": "5747:72:97",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 17292,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17264,
                                              "src": "5800:2:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 17291,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "5792:7:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes32_$",
                                              "typeString": "type(bytes32)"
                                            },
                                            "typeName": {
                                              "id": 17290,
                                              "name": "bytes32",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "5792:7:97",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 17293,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "5792:11:97",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 17289,
                                        "name": "OperationProhibited",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16877,
                                        "src": "5772:19:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                          "typeString": "function (bytes32) pure"
                                        }
                                      },
                                      "id": 17294,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5772:32:97",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 17295,
                                    "nodeType": "RevertStatement",
                                    "src": "5765:39:97"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 17305,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 17301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 17299,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17270,
                                        "src": "5858:6:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 17300,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5868:1:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "5858:11:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 17304,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 17302,
                                        "name": "oldOwner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17276,
                                        "src": "5873:8:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "id": 17303,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17205,
                                        "src": "5885:4:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "5873:16:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "5858:31:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                                    "id": 17306,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5907:44:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                      "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                    },
                                    "value": "ERC1155: insufficient balance for transfer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                      "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                    }
                                  ],
                                  "id": 17298,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5833:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 17307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5833:132:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17308,
                              "nodeType": "ExpressionStatement",
                              "src": "5833:132:97"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 17310,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17264,
                                    "src": "5988:2:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 17311,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17207,
                                    "src": "5992:2:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 17312,
                                    "name": "fuses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17278,
                                    "src": "5996:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "id": 17313,
                                    "name": "expiration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17280,
                                    "src": "6003:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 17309,
                                  "name": "_setData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17379,
                                  "src": "5979:8:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                                    "typeString": "function (uint256,address,uint32,uint64)"
                                  }
                                },
                                "id": 17314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5979:35:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17315,
                              "nodeType": "ExpressionStatement",
                              "src": "5979:35:97"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17256,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17253,
                            "src": "5531:1:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 17257,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17210,
                              "src": "5535:3:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 17258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5539:6:97",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5535:10:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5531:14:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17317,
                        "initializationExpression": {
                          "assignments": [
                            17253
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 17253,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "5524:1:97",
                              "nodeType": "VariableDeclaration",
                              "scope": 17317,
                              "src": "5516:9:97",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 17252,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5516:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 17255,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 17254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5528:1:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5516:13:97"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 17261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "5547:3:97",
                            "subExpression": {
                              "id": 17260,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17253,
                              "src": "5549:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17262,
                          "nodeType": "ExpressionStatement",
                          "src": "5547:3:97"
                        },
                        "nodeType": "ForStatement",
                        "src": "5511:514:97"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17319,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6054:3:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6058:6:97",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6054:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17321,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17205,
                              "src": "6066:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17322,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17207,
                              "src": "6072:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17323,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17210,
                              "src": "6076:3:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 17324,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17213,
                              "src": "6081:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 17318,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 676,
                            "src": "6040:13:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 17325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6040:49:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17326,
                        "nodeType": "EmitStatement",
                        "src": "6035:54:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17328,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6149:3:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6153:6:97",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6149:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17330,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17205,
                              "src": "6173:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17331,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17207,
                              "src": "6191:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17332,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17210,
                              "src": "6207:3:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 17333,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17213,
                              "src": "6224:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 17334,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17215,
                              "src": "6245:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 17327,
                            "name": "_doSafeBatchTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17741,
                            "src": "6100:35:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 17335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6100:159:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17336,
                        "nodeType": "ExpressionStatement",
                        "src": "6100:159:97"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17203,
                    "nodeType": "StructuredDocumentation",
                    "src": "4876:61:97",
                    "text": " @dev See {IERC1155-safeBatchTransferFrom}."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 17338,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nameLocation": "4951:21:97",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 17217,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5127:8:97"
                  },
                  "parameters": {
                    "id": 17216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17205,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4990:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17338,
                        "src": "4982:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17204,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4982:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17207,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5012:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17338,
                        "src": "5004:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17206,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5004:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17210,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "5041:3:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17338,
                        "src": "5024:20:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 17208,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5024:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17209,
                          "nodeType": "ArrayTypeName",
                          "src": "5024:9:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17213,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "5071:7:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17338,
                        "src": "5054:24:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 17211,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5054:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17212,
                          "nodeType": "ArrayTypeName",
                          "src": "5054:9:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17215,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5101:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17338,
                        "src": "5088:17:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17214,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5088:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4972:139:97"
                  },
                  "returnParameters": {
                    "id": 17218,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5136:0:97"
                  },
                  "scope": 17742,
                  "src": "4942:1324:97",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17378,
                    "nodeType": "Block",
                    "src": "6667:148:97",
                    "statements": [
                      {
                        "expression": {
                          "id": 17376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17350,
                              "name": "_tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16890,
                              "src": "6677:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 17352,
                            "indexExpression": {
                              "id": 17351,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17341,
                              "src": "6685:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6677:16:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 17357,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17343,
                                        "src": "6724:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 17356,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6716:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 17355,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6716:7:97",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 17358,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6716:14:97",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 17354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6708:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 17353,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6708:7:97",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6708:23:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 17365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 17362,
                                          "name": "fuses",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17345,
                                          "src": "6755:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        ],
                                        "id": 17361,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6747:7:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 17360,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6747:7:97",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 17363,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6747:14:97",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "313630",
                                      "id": 17364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6765:3:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_160_by_1",
                                        "typeString": "int_const 160"
                                      },
                                      "value": "160"
                                    },
                                    "src": "6747:21:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 17366,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6746:23:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6708:61:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17373,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 17370,
                                        "name": "expiry",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17347,
                                        "src": "6793:6:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      ],
                                      "id": 17369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6785:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 17368,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6785:7:97",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 17371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6785:15:97",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "313932",
                                    "id": 17372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6804:3:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    "value": "192"
                                  },
                                  "src": "6785:22:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 17374,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6784:24:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6708:100:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6677:131:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17377,
                        "nodeType": "ExpressionStatement",
                        "src": "6677:131:97"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17339,
                    "nodeType": "StructuredDocumentation",
                    "src": "6465:63:97",
                    "text": " @dev Sets the Name's owner address and fuses"
                  },
                  "id": 17379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setData",
                  "nameLocation": "6542:8:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17341,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "6568:7:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17379,
                        "src": "6560:15:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6560:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17343,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "6593:5:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17379,
                        "src": "6585:13:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17342,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6585:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17345,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "6615:5:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17379,
                        "src": "6608:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17344,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6608:6:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17347,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "6637:6:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17379,
                        "src": "6630:13:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17346,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "6630:6:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6550:99:97"
                  },
                  "returnParameters": {
                    "id": 17349,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6667:0:97"
                  },
                  "scope": 17742,
                  "src": "6533:282:97",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "id": 17386,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_canTransfer",
                  "nameLocation": "6830:12:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17381,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "6850:5:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17386,
                        "src": "6843:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17380,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6843:6:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6842:14:97"
                  },
                  "returnParameters": {
                    "id": 17385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17384,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17386,
                        "src": "6883:4:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 17383,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6883:4:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6882:6:97"
                  },
                  "scope": 17742,
                  "src": "6821:68:97",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17490,
                    "nodeType": "Block",
                    "src": "7023:822:97",
                    "statements": [
                      {
                        "assignments": [
                          17398
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17398,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "7041:7:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17490,
                            "src": "7033:15:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17397,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7033:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17403,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17401,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17388,
                              "src": "7059:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 17400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7051:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 17399,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7051:7:97",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 17402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7051:13:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7033:31:97"
                      },
                      {
                        "assignments": [
                          17405,
                          17407,
                          17409
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17405,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "7083:8:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17490,
                            "src": "7075:16:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17404,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7075:7:97",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17407,
                            "mutability": "mutable",
                            "name": "oldFuses",
                            "nameLocation": "7100:8:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17490,
                            "src": "7093:15:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 17406,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7093:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17409,
                            "mutability": "mutable",
                            "name": "oldExpiry",
                            "nameLocation": "7117:9:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17490,
                            "src": "7110:16:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 17408,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "7110:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17416,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 17413,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17388,
                                  "src": "7159:4:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 17412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7151:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 17411,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7151:7:97",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7151:13:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17410,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17154,
                            "src": "7130:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 17415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7130:44:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7074:100:97"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 17419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17417,
                            "name": "oldExpiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17409,
                            "src": "7189:9:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 17418,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17394,
                            "src": "7201:6:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "7189:18:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17425,
                        "nodeType": "IfStatement",
                        "src": "7185:67:97",
                        "trueBody": {
                          "id": 17424,
                          "nodeType": "Block",
                          "src": "7209:43:97",
                          "statements": [
                            {
                              "expression": {
                                "id": 17422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17420,
                                  "name": "expiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17394,
                                  "src": "7223:6:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 17421,
                                  "name": "oldExpiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17409,
                                  "src": "7232:9:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "7223:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 17423,
                              "nodeType": "ExpressionStatement",
                              "src": "7223:18:97"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17427,
                                "name": "oldOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17405,
                                "src": "7270:8:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 17430,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7290:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 17429,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7282:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17428,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7282:7:97",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7282:10:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7270:22:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206d696e74206f66206578697374696e6720746f6b656e",
                              "id": 17433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7294:33:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0a5a3f6c2833a0d5056e4c87913f3b2ad716b97085ed243cd04d020b3830fcac",
                                "typeString": "literal_string \"ERC1155: mint of existing token\""
                              },
                              "value": "ERC1155: mint of existing token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0a5a3f6c2833a0d5056e4c87913f3b2ad716b97085ed243cd04d020b3830fcac",
                                "typeString": "literal_string \"ERC1155: mint of existing token\""
                              }
                            ],
                            "id": 17426,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7262:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7262:66:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17435,
                        "nodeType": "ExpressionStatement",
                        "src": "7262:66:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17437,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17390,
                                "src": "7346:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 17440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7363:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 17439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7355:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17438,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7355:7:97",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7355:10:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7346:19:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 17443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7367:35:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                "typeString": "literal_string \"ERC1155: mint to the zero address\""
                              },
                              "value": "ERC1155: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                "typeString": "literal_string \"ERC1155: mint to the zero address\""
                              }
                            ],
                            "id": 17436,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7338:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7338:65:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17445,
                        "nodeType": "ExpressionStatement",
                        "src": "7338:65:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17447,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17390,
                                "src": "7434:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 17450,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "7451:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ERC1155Fuse_$17742",
                                      "typeString": "contract ERC1155Fuse"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ERC1155Fuse_$17742",
                                      "typeString": "contract ERC1155Fuse"
                                    }
                                  ],
                                  "id": 17449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7443:7:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17448,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7443:7:97",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7443:13:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7434:22:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206e65774f776e65722063616e6e6f7420626520746865204e616d655772617070657220636f6e7472616374",
                              "id": 17453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7470:54:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_52680399c4a01b55318dc7a1e656395c494f95152fe03ad468b9b7af702c670b",
                                "typeString": "literal_string \"ERC1155: newOwner cannot be the NameWrapper contract\""
                              },
                              "value": "ERC1155: newOwner cannot be the NameWrapper contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_52680399c4a01b55318dc7a1e656395c494f95152fe03ad468b9b7af702c670b",
                                "typeString": "literal_string \"ERC1155: newOwner cannot be the NameWrapper contract\""
                              }
                            ],
                            "id": 17446,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7413:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7413:121:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17455,
                        "nodeType": "ExpressionStatement",
                        "src": "7413:121:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17457,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17398,
                              "src": "7554:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17458,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17390,
                              "src": "7563:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 17461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17459,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17392,
                                "src": "7570:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "id": 17460,
                                "name": "oldFuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17407,
                                "src": "7578:8:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "7570:16:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 17462,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17394,
                              "src": "7588:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 17456,
                            "name": "_setData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17379,
                            "src": "7545:8:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (uint256,address,uint32,uint64)"
                            }
                          },
                          "id": 17463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7545:50:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17464,
                        "nodeType": "ExpressionStatement",
                        "src": "7545:50:97"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17466,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7625:3:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7629:6:97",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7625:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 17470,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7645:3:97",
                                  "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": 17469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7637:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17468,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7637:7:97",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7637:12:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17472,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17390,
                              "src": "7651:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17473,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17398,
                              "src": "7658:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 17474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7667:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 17465,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 661,
                            "src": "7610:14:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 17475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7610:59:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17476,
                        "nodeType": "EmitStatement",
                        "src": "7605:64:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17478,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7723:3:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7727:6:97",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7723:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 17482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7755:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 17481,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7747:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17480,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7747:7:97",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7747:10:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17484,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17390,
                              "src": "7771:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17485,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17398,
                              "src": "7790:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 17486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7811:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "hexValue": "",
                              "id": 17487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7826:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 17477,
                            "name": "_doSafeTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17674,
                            "src": "7679:30:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 17488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7679:159:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17489,
                        "nodeType": "ExpressionStatement",
                        "src": "7679:159:97"
                      }
                    ]
                  },
                  "id": 17491,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "6904:5:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17388,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "6927:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17491,
                        "src": "6919:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17387,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6919:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17390,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "6949:5:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17491,
                        "src": "6941:13:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6941:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17392,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "6971:5:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17491,
                        "src": "6964:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17391,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6964:6:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17394,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "6993:6:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17491,
                        "src": "6986:13:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17393,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "6986:6:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6909:96:97"
                  },
                  "returnParameters": {
                    "id": 17396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7023:0:97"
                  },
                  "scope": 17742,
                  "src": "6895:950:97",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17528,
                    "nodeType": "Block",
                    "src": "7900:255:97",
                    "statements": [
                      {
                        "assignments": [
                          17497,
                          17499,
                          17501
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17497,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "7919:5:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17528,
                            "src": "7911:13:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17496,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7911:7:97",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17499,
                            "mutability": "mutable",
                            "name": "fuses",
                            "nameLocation": "7933:5:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17528,
                            "src": "7926:12:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 17498,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7926:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17501,
                            "mutability": "mutable",
                            "name": "expiry",
                            "nameLocation": "7947:6:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17528,
                            "src": "7940:13:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 17500,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "7940:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17505,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17503,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17493,
                              "src": "7965:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17502,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17154,
                            "src": "7957:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 17504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7957:16:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7910:63:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17507,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17493,
                              "src": "8037:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 17510,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8054:3:97",
                                  "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": 17509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8046:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17508,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8046:7:97",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8046:12:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17512,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17499,
                              "src": "8060:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 17513,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17501,
                              "src": "8067:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 17506,
                            "name": "_setData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17379,
                            "src": "8028:8:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (uint256,address,uint32,uint64)"
                            }
                          },
                          "id": 17514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8028:46:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17515,
                        "nodeType": "ExpressionStatement",
                        "src": "8028:46:97"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17517,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "8104:3:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8108:6:97",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "8104:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17519,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17497,
                              "src": "8116:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 17522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8131:3:97",
                                  "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": 17521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8123:7:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17520,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8123:7:97",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8123:12:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17524,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17493,
                              "src": "8137:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 17525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8146:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 17516,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 661,
                            "src": "8089:14:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 17526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8089:59:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17527,
                        "nodeType": "EmitStatement",
                        "src": "8084:64:97"
                      }
                    ]
                  },
                  "id": 17529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "7860:5:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17493,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "7874:7:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17529,
                        "src": "7866:15:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17492,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7866:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7865:17:97"
                  },
                  "returnParameters": {
                    "id": 17495,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7900:0:97"
                  },
                  "scope": 17742,
                  "src": "7851:304:97",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17608,
                    "nodeType": "Block",
                    "src": "8308:557:97",
                    "statements": [
                      {
                        "assignments": [
                          17543,
                          17545,
                          17547
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17543,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "8327:8:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17608,
                            "src": "8319:16:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17542,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8319:7:97",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17545,
                            "mutability": "mutable",
                            "name": "fuses",
                            "nameLocation": "8344:5:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17608,
                            "src": "8337:12:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 17544,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8337:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17547,
                            "mutability": "mutable",
                            "name": "expiry",
                            "nameLocation": "8358:6:97",
                            "nodeType": "VariableDeclaration",
                            "scope": 17608,
                            "src": "8351:13:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 17546,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "8351:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17551,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17549,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17535,
                              "src": "8376:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17548,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17154,
                            "src": "8368:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 17550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8368:11:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8318:61:97"
                      },
                      {
                        "condition": {
                          "id": 17555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8394:20:97",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 17553,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17545,
                                "src": "8408:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "id": 17552,
                              "name": "_canTransfer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17386,
                              "src": "8395:12:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint32_$returns$_t_bool_$",
                                "typeString": "function (uint32) returns (bool)"
                              }
                            },
                            "id": 17554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8395:19:97",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17564,
                        "nodeType": "IfStatement",
                        "src": "8390:90:97",
                        "trueBody": {
                          "id": 17563,
                          "nodeType": "Block",
                          "src": "8416:64:97",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 17559,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17535,
                                        "src": "8465:2:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 17558,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8457:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 17557,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8457:7:97",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 17560,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8457:11:97",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 17556,
                                  "name": "OperationProhibited",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16877,
                                  "src": "8437:19:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 17561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8437:32:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17562,
                              "nodeType": "RevertStatement",
                              "src": "8430:39:97"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17566,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17537,
                                  "src": "8511:6:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 17567,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8521:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8511:11:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 17571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17569,
                                  "name": "oldOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17543,
                                  "src": "8526:8:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 17570,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17531,
                                  "src": "8538:4:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8526:16:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8511:31:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                              "id": 17573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8556:44:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                              },
                              "value": "ERC1155: insufficient balance for transfer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                              }
                            ],
                            "id": 17565,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8490:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8490:120:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17575,
                        "nodeType": "ExpressionStatement",
                        "src": "8490:120:97"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 17578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17576,
                            "name": "oldOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17543,
                            "src": "8625:8:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 17577,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17533,
                            "src": "8637:2:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8625:14:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17581,
                        "nodeType": "IfStatement",
                        "src": "8621:51:97",
                        "trueBody": {
                          "id": 17580,
                          "nodeType": "Block",
                          "src": "8641:31:97",
                          "statements": [
                            {
                              "functionReturnParameters": 17541,
                              "id": 17579,
                              "nodeType": "Return",
                              "src": "8655:7:97"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17583,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17535,
                              "src": "8691:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17584,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17533,
                              "src": "8695:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17585,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17545,
                              "src": "8699:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 17586,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17547,
                              "src": "8706:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 17582,
                            "name": "_setData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17379,
                            "src": "8682:8:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (uint256,address,uint32,uint64)"
                            }
                          },
                          "id": 17587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8682:31:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17588,
                        "nodeType": "ExpressionStatement",
                        "src": "8682:31:97"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17590,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "8744:3:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8748:6:97",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "8744:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17592,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17531,
                              "src": "8756:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17593,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17533,
                              "src": "8762:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17594,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17535,
                              "src": "8766:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17595,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17537,
                              "src": "8770:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17589,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 661,
                            "src": "8729:14:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 17596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8729:48:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17597,
                        "nodeType": "EmitStatement",
                        "src": "8724:53:97"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17599,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "8819:3:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8823:6:97",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "8819:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17601,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17531,
                              "src": "8831:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17602,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17533,
                              "src": "8837:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17603,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17535,
                              "src": "8841:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17604,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17537,
                              "src": "8845:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17605,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17539,
                              "src": "8853:4:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 17598,
                            "name": "_doSafeTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17674,
                            "src": "8788:30:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 17606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8788:70:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17607,
                        "nodeType": "ExpressionStatement",
                        "src": "8788:70:97"
                      }
                    ]
                  },
                  "id": 17609,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "8170:9:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17531,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "8197:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17609,
                        "src": "8189:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17530,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8189:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17533,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8219:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17609,
                        "src": "8211:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17532,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8211:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17535,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "8239:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17609,
                        "src": "8231:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17534,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8231:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17537,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "8259:6:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17609,
                        "src": "8251:14:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17536,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8251:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17539,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8288:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17609,
                        "src": "8275:17:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17538,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8275:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8179:119:97"
                  },
                  "returnParameters": {
                    "id": 17541,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8308:0:97"
                  },
                  "scope": 17742,
                  "src": "8161:704:97",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17673,
                    "nodeType": "Block",
                    "src": "9064:720:97",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 17624,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17615,
                              "src": "9078:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 17625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9081:10:97",
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2556,
                            "src": "9078:13:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 17626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9078:15:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17672,
                        "nodeType": "IfStatement",
                        "src": "9074:704:97",
                        "trueBody": {
                          "id": 17671,
                          "nodeType": "Block",
                          "src": "9095:683:97",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 17653,
                                    "nodeType": "Block",
                                    "src": "9358:226:97",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 17646,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17640,
                                            "name": "response",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17638,
                                            "src": "9401:8:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 17642,
                                                    "name": "to",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 17615,
                                                    "src": "9430:2:97",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 17641,
                                                  "name": "IERC1155Receiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 805,
                                                  "src": "9413:16:97",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$805_$",
                                                    "typeString": "type(contract IERC1155Receiver)"
                                                  }
                                                },
                                                "id": 17643,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9413:20:97",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155Receiver_$805",
                                                  "typeString": "contract IERC1155Receiver"
                                                }
                                              },
                                              "id": 17644,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "9434:17:97",
                                              "memberName": "onERC1155Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 786,
                                              "src": "9413:38:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 17645,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "9452:8:97",
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "9413:47:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "9401:59:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 17652,
                                        "nodeType": "IfStatement",
                                        "src": "9376:194:97",
                                        "trueBody": {
                                          "id": 17651,
                                          "nodeType": "Block",
                                          "src": "9479:91:97",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73",
                                                    "id": 17648,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "9508:42:97",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                      "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                    },
                                                    "value": "ERC1155: ERC1155Receiver rejected tokens"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                      "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                    }
                                                  ],
                                                  "id": 17647,
                                                  "name": "revert",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [
                                                    -19,
                                                    -19
                                                  ],
                                                  "referencedDeclaration": -19,
                                                  "src": "9501:6:97",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                    "typeString": "function (string memory) pure"
                                                  }
                                                },
                                                "id": 17649,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9501:50:97",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 17650,
                                              "nodeType": "ExpressionStatement",
                                              "src": "9501:50:97"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 17654,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 17639,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 17638,
                                        "mutability": "mutable",
                                        "name": "response",
                                        "nameLocation": "9348:8:97",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 17654,
                                        "src": "9341:15:97",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 17637,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9341:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "9340:17:97"
                                  },
                                  "src": "9332:252:97"
                                },
                                {
                                  "block": {
                                    "id": 17662,
                                    "nodeType": "Block",
                                    "src": "9619:47:97",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 17659,
                                              "name": "reason",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17656,
                                              "src": "9644:6:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "id": 17658,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "9637:6:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 17660,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9637:14:97",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 17661,
                                        "nodeType": "ExpressionStatement",
                                        "src": "9637:14:97"
                                      }
                                    ]
                                  },
                                  "errorName": "Error",
                                  "id": 17663,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 17657,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 17656,
                                        "mutability": "mutable",
                                        "name": "reason",
                                        "nameLocation": "9611:6:97",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 17663,
                                        "src": "9597:20:97",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string"
                                        },
                                        "typeName": {
                                          "id": 17655,
                                          "name": "string",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9597:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "9596:22:97"
                                  },
                                  "src": "9585:81:97"
                                },
                                {
                                  "block": {
                                    "id": 17668,
                                    "nodeType": "Block",
                                    "src": "9673:95:97",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572",
                                              "id": 17665,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "9698:54:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                              },
                                              "value": "ERC1155: transfer to non ERC1155Receiver implementer"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                              }
                                            ],
                                            "id": 17664,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "9691:6:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 17666,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9691:62:97",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 17667,
                                        "nodeType": "ExpressionStatement",
                                        "src": "9691:62:97"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 17669,
                                  "nodeType": "TryCatchClause",
                                  "src": "9667:101:97"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "id": 17631,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17611,
                                    "src": "9189:8:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 17632,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17613,
                                    "src": "9219:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 17633,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17617,
                                    "src": "9245:2:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 17634,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17619,
                                    "src": "9269:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 17635,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17621,
                                    "src": "9297:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 17628,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17615,
                                        "src": "9146:2:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 17627,
                                      "name": "IERC1155Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 805,
                                      "src": "9129:16:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$805_$",
                                        "typeString": "type(contract IERC1155Receiver)"
                                      }
                                    },
                                    "id": 17629,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9129:20:97",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155Receiver_$805",
                                      "typeString": "contract IERC1155Receiver"
                                    }
                                  },
                                  "id": 17630,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "9150:17:97",
                                  "memberName": "onERC1155Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 786,
                                  "src": "9129:38:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 17636,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9129:190:97",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 17670,
                              "nodeType": "TryStatement",
                              "src": "9109:659:97"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 17674,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doSafeTransferAcceptanceCheck",
                  "nameLocation": "8880:30:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17611,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "8928:8:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17674,
                        "src": "8920:16:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17610,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8920:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17613,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "8954:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17674,
                        "src": "8946:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8946:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17615,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8976:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17674,
                        "src": "8968:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17614,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8968:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17617,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "8996:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17674,
                        "src": "8988:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8988:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17619,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "9016:6:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17674,
                        "src": "9008:14:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17618,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9008:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17621,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9045:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17674,
                        "src": "9032:17:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17620,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9032:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8910:145:97"
                  },
                  "returnParameters": {
                    "id": 17623,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9064:0:97"
                  },
                  "scope": 17742,
                  "src": "8871:913:97",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 17740,
                    "nodeType": "Block",
                    "src": "10008:752:97",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 17691,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17680,
                              "src": "10022:2:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 17692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10025:10:97",
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2556,
                            "src": "10022:13:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 17693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10022:15:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17739,
                        "nodeType": "IfStatement",
                        "src": "10018:736:97",
                        "trueBody": {
                          "id": 17738,
                          "nodeType": "Block",
                          "src": "10039:715:97",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 17720,
                                    "nodeType": "Block",
                                    "src": "10309:251:97",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 17713,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17707,
                                            "name": "response",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17705,
                                            "src": "10352:8:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 17709,
                                                    "name": "to",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 17680,
                                                    "src": "10401:2:97",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 17708,
                                                  "name": "IERC1155Receiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 805,
                                                  "src": "10384:16:97",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$805_$",
                                                    "typeString": "type(contract IERC1155Receiver)"
                                                  }
                                                },
                                                "id": 17710,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10384:20:97",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155Receiver_$805",
                                                  "typeString": "contract IERC1155Receiver"
                                                }
                                              },
                                              "id": 17711,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "10405:22:97",
                                              "memberName": "onERC1155BatchReceived",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 804,
                                              "src": "10384:43:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 17712,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "10428:8:97",
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "10384:52:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "10352:84:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 17719,
                                        "nodeType": "IfStatement",
                                        "src": "10327:219:97",
                                        "trueBody": {
                                          "id": 17718,
                                          "nodeType": "Block",
                                          "src": "10455:91:97",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73",
                                                    "id": 17715,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "10484:42:97",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                      "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                    },
                                                    "value": "ERC1155: ERC1155Receiver rejected tokens"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                      "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                    }
                                                  ],
                                                  "id": 17714,
                                                  "name": "revert",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [
                                                    -19,
                                                    -19
                                                  ],
                                                  "referencedDeclaration": -19,
                                                  "src": "10477:6:97",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                    "typeString": "function (string memory) pure"
                                                  }
                                                },
                                                "id": 17716,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10477:50:97",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 17717,
                                              "nodeType": "ExpressionStatement",
                                              "src": "10477:50:97"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 17721,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 17706,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 17705,
                                        "mutability": "mutable",
                                        "name": "response",
                                        "nameLocation": "10299:8:97",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 17721,
                                        "src": "10292:15:97",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 17704,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10292:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "10291:17:97"
                                  },
                                  "src": "10283:277:97"
                                },
                                {
                                  "block": {
                                    "id": 17729,
                                    "nodeType": "Block",
                                    "src": "10595:47:97",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 17726,
                                              "name": "reason",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17723,
                                              "src": "10620:6:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "id": 17725,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "10613:6:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 17727,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10613:14:97",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 17728,
                                        "nodeType": "ExpressionStatement",
                                        "src": "10613:14:97"
                                      }
                                    ]
                                  },
                                  "errorName": "Error",
                                  "id": 17730,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 17724,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 17723,
                                        "mutability": "mutable",
                                        "name": "reason",
                                        "nameLocation": "10587:6:97",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 17730,
                                        "src": "10573:20:97",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string"
                                        },
                                        "typeName": {
                                          "id": 17722,
                                          "name": "string",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10573:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "10572:22:97"
                                  },
                                  "src": "10561:81:97"
                                },
                                {
                                  "block": {
                                    "id": 17735,
                                    "nodeType": "Block",
                                    "src": "10649:95:97",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572",
                                              "id": 17732,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "10674:54:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                              },
                                              "value": "ERC1155: transfer to non ERC1155Receiver implementer"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                              }
                                            ],
                                            "id": 17731,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "10667:6:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 17733,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10667:62:97",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 17734,
                                        "nodeType": "ExpressionStatement",
                                        "src": "10667:62:97"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 17736,
                                  "nodeType": "TryCatchClause",
                                  "src": "10643:101:97"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "id": 17698,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17676,
                                    "src": "10138:8:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 17699,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17678,
                                    "src": "10168:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 17700,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17683,
                                    "src": "10194:3:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 17701,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17686,
                                    "src": "10219:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 17702,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17688,
                                    "src": "10248:4:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 17695,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17680,
                                        "src": "10090:2:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 17694,
                                      "name": "IERC1155Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 805,
                                      "src": "10073:16:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$805_$",
                                        "typeString": "type(contract IERC1155Receiver)"
                                      }
                                    },
                                    "id": 17696,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10073:20:97",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155Receiver_$805",
                                      "typeString": "contract IERC1155Receiver"
                                    }
                                  },
                                  "id": 17697,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "10094:22:97",
                                  "memberName": "onERC1155BatchReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 804,
                                  "src": "10073:43:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 17703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10073:197:97",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 17737,
                              "nodeType": "TryStatement",
                              "src": "10053:691:97"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 17741,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doSafeBatchTransferAcceptanceCheck",
                  "nameLocation": "9799:35:97",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17676,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "9852:8:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17741,
                        "src": "9844:16:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17675,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9844:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17678,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "9878:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17741,
                        "src": "9870:12:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17677,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9870:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17680,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "9900:2:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17741,
                        "src": "9892:10:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17679,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9892:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17683,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "9929:3:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17741,
                        "src": "9912:20:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 17681,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9912:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17682,
                          "nodeType": "ArrayTypeName",
                          "src": "9912:9:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17686,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "9959:7:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17741,
                        "src": "9942:24:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 17684,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9942:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17685,
                          "nodeType": "ArrayTypeName",
                          "src": "9942:9:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17688,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9989:4:97",
                        "nodeType": "VariableDeclaration",
                        "scope": 17741,
                        "src": "9976:17:97",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17687,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9976:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9834:165:97"
                  },
                  "returnParameters": {
                    "id": 17690,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10008:0:97"
                  },
                  "scope": 17742,
                  "src": "9790:970:97",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 17743,
              "src": "877:9885:97",
              "usedErrors": [
                16877
              ]
            }
          ],
          "src": "31:10732:97"
        },
        "id": 97
      },
      "contracts/wrapper/IMetadataService.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/IMetadataService.sol",
          "exportedSymbols": {
            "IMetadataService": [
              17752
            ]
          },
          "id": 17753,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17744,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:98"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IMetadataService",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 17752,
              "linearizedBaseContracts": [
                17752
              ],
              "name": "IMetadataService",
              "nameLocation": "67:16:98",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "0e89341c",
                  "id": 17751,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nameLocation": "99:3:98",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17746,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17751,
                        "src": "103:7:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17745,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "103:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "102:9:98"
                  },
                  "returnParameters": {
                    "id": 17750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17749,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17751,
                        "src": "135:13:98",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17748,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "135:6:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "134:15:98"
                  },
                  "scope": 17752,
                  "src": "90:60:98",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 17753,
              "src": "57:95:98",
              "usedErrors": []
            }
          ],
          "src": "31:122:98"
        },
        "id": 98
      },
      "contracts/wrapper/INameWrapper.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/INameWrapper.sol",
          "exportedSymbols": {
            "CANNOT_BURN_FUSES": [
              17764
            ],
            "CANNOT_CREATE_SUBDOMAIN": [
              17776
            ],
            "CANNOT_SET_RESOLVER": [
              17770
            ],
            "CANNOT_SET_TTL": [
              17773
            ],
            "CANNOT_TRANSFER": [
              17767
            ],
            "CANNOT_UNWRAP": [
              17761
            ],
            "CAN_DO_EVERYTHING": [
              17782
            ],
            "ENS": [
              12157
            ],
            "IBaseRegistrar": [
              11222
            ],
            "IERC1155": [
              764
            ],
            "IERC165": [
              3094
            ],
            "IERC721": [
              2493
            ],
            "IMetadataService": [
              17752
            ],
            "INameWrapper": [
              18030
            ],
            "PARENT_CANNOT_CONTROL": [
              17779
            ]
          },
          "id": 18031,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17754,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:99"
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../registry/ENS.sol",
              "id": 17755,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18031,
              "sourceUnit": 12158,
              "src": "57:29:99",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IBaseRegistrar.sol",
              "file": "../ethregistrar/IBaseRegistrar.sol",
              "id": 17756,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18031,
              "sourceUnit": 11223,
              "src": "87:44:99",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "id": 17757,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18031,
              "sourceUnit": 765,
              "src": "132:60:99",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/IMetadataService.sol",
              "file": "./IMetadataService.sol",
              "id": 17758,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18031,
              "sourceUnit": 17753,
              "src": "193:32:99",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "constant": true,
              "id": 17761,
              "mutability": "constant",
              "name": "CANNOT_UNWRAP",
              "nameLocation": "243:13:99",
              "nodeType": "VariableDeclaration",
              "scope": 18031,
              "src": "227:33:99",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              },
              "typeName": {
                "id": 17759,
                "name": "uint32",
                "nodeType": "ElementaryTypeName",
                "src": "227:6:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                }
              },
              "value": {
                "hexValue": "31",
                "id": 17760,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "259:1:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1_by_1",
                  "typeString": "int_const 1"
                },
                "value": "1"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 17764,
              "mutability": "constant",
              "name": "CANNOT_BURN_FUSES",
              "nameLocation": "278:17:99",
              "nodeType": "VariableDeclaration",
              "scope": 18031,
              "src": "262:37:99",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              },
              "typeName": {
                "id": 17762,
                "name": "uint32",
                "nodeType": "ElementaryTypeName",
                "src": "262:6:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                }
              },
              "value": {
                "hexValue": "32",
                "id": 17763,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "298:1:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_2_by_1",
                  "typeString": "int_const 2"
                },
                "value": "2"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 17767,
              "mutability": "constant",
              "name": "CANNOT_TRANSFER",
              "nameLocation": "317:15:99",
              "nodeType": "VariableDeclaration",
              "scope": 18031,
              "src": "301:35:99",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              },
              "typeName": {
                "id": 17765,
                "name": "uint32",
                "nodeType": "ElementaryTypeName",
                "src": "301:6:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                }
              },
              "value": {
                "hexValue": "34",
                "id": 17766,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "335:1:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 17770,
              "mutability": "constant",
              "name": "CANNOT_SET_RESOLVER",
              "nameLocation": "354:19:99",
              "nodeType": "VariableDeclaration",
              "scope": 18031,
              "src": "338:39:99",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              },
              "typeName": {
                "id": 17768,
                "name": "uint32",
                "nodeType": "ElementaryTypeName",
                "src": "338:6:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                }
              },
              "value": {
                "hexValue": "38",
                "id": 17769,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "376:1:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_8_by_1",
                  "typeString": "int_const 8"
                },
                "value": "8"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 17773,
              "mutability": "constant",
              "name": "CANNOT_SET_TTL",
              "nameLocation": "395:14:99",
              "nodeType": "VariableDeclaration",
              "scope": 18031,
              "src": "379:35:99",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              },
              "typeName": {
                "id": 17771,
                "name": "uint32",
                "nodeType": "ElementaryTypeName",
                "src": "379:6:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                }
              },
              "value": {
                "hexValue": "3136",
                "id": 17772,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "412:2:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_16_by_1",
                  "typeString": "int_const 16"
                },
                "value": "16"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 17776,
              "mutability": "constant",
              "name": "CANNOT_CREATE_SUBDOMAIN",
              "nameLocation": "432:23:99",
              "nodeType": "VariableDeclaration",
              "scope": 18031,
              "src": "416:44:99",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              },
              "typeName": {
                "id": 17774,
                "name": "uint32",
                "nodeType": "ElementaryTypeName",
                "src": "416:6:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                }
              },
              "value": {
                "hexValue": "3332",
                "id": 17775,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "458:2:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "32"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 17779,
              "mutability": "constant",
              "name": "PARENT_CANNOT_CONTROL",
              "nameLocation": "478:21:99",
              "nodeType": "VariableDeclaration",
              "scope": 18031,
              "src": "462:42:99",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              },
              "typeName": {
                "id": 17777,
                "name": "uint32",
                "nodeType": "ElementaryTypeName",
                "src": "462:6:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                }
              },
              "value": {
                "hexValue": "3634",
                "id": 17778,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "502:2:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 17782,
              "mutability": "constant",
              "name": "CAN_DO_EVERYTHING",
              "nameLocation": "522:17:99",
              "nodeType": "VariableDeclaration",
              "scope": 18031,
              "src": "506:37:99",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              },
              "typeName": {
                "id": 17780,
                "name": "uint32",
                "nodeType": "ElementaryTypeName",
                "src": "506:6:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                }
              },
              "value": {
                "hexValue": "30",
                "id": 17781,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "542:1:99",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0"
              },
              "visibility": "internal"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 17783,
                    "name": "IERC1155",
                    "nameLocations": [
                      "572:8:99"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 764,
                    "src": "572:8:99"
                  },
                  "id": 17784,
                  "nodeType": "InheritanceSpecifier",
                  "src": "572:8:99"
                }
              ],
              "canonicalName": "INameWrapper",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 18030,
              "linearizedBaseContracts": [
                18030,
                764,
                3094
              ],
              "name": "INameWrapper",
              "nameLocation": "556:12:99",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "8ce7013e8abebc55c3890a68f5a27c67c3f7efa64e584de5fb22363c606fd340",
                  "id": 17796,
                  "name": "NameWrapped",
                  "nameLocation": "593:11:99",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17786,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "630:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17796,
                        "src": "614:20:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17785,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "614:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17788,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "650:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17796,
                        "src": "644:10:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17787,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "644:5:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17790,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "672:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17796,
                        "src": "664:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17789,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "664:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17792,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "694:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17796,
                        "src": "687:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17791,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "687:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17794,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "716:6:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17796,
                        "src": "709:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17793,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "604:124:99"
                  },
                  "src": "587:142:99"
                },
                {
                  "anonymous": false,
                  "eventSelector": "ee2ba1195c65bcf218a83d874335c6bf9d9067b4c672f3c3bf16cf40de7586c4",
                  "id": 17802,
                  "name": "NameUnwrapped",
                  "nameLocation": "741:13:99",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17798,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "771:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17802,
                        "src": "755:20:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17797,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "755:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17800,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "785:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17802,
                        "src": "777:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17799,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "754:37:99"
                  },
                  "src": "735:57:99"
                },
                {
                  "anonymous": false,
                  "eventSelector": "936318e296f824e203b086d97bb155a0200cec4847efea1fb4b9b7f924157355",
                  "id": 17810,
                  "name": "FusesSet",
                  "nameLocation": "804:8:99",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17809,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17804,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "829:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17810,
                        "src": "813:20:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17803,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "813:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17806,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "842:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17810,
                        "src": "835:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17805,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "835:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17808,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "856:6:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17810,
                        "src": "849:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17807,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "849:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "812:51:99"
                  },
                  "src": "798:66:99"
                },
                {
                  "functionSelector": "3f15457f",
                  "id": 17816,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ens",
                  "nameLocation": "879:3:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17811,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "882:2:99"
                  },
                  "returnParameters": {
                    "id": 17815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17814,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17816,
                        "src": "908:3:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 17813,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 17812,
                            "name": "ENS",
                            "nameLocations": [
                              "908:3:99"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "908:3:99"
                          },
                          "referencedDeclaration": 12157,
                          "src": "908:3:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "907:5:99"
                  },
                  "scope": 18030,
                  "src": "870:43:99",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "2b20e397",
                  "id": 17822,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "registrar",
                  "nameLocation": "928:9:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17817,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "937:2:99"
                  },
                  "returnParameters": {
                    "id": 17821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17820,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17822,
                        "src": "963:14:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                          "typeString": "contract IBaseRegistrar"
                        },
                        "typeName": {
                          "id": 17819,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 17818,
                            "name": "IBaseRegistrar",
                            "nameLocations": [
                              "963:14:99"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11222,
                            "src": "963:14:99"
                          },
                          "referencedDeclaration": 11222,
                          "src": "963:14:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                            "typeString": "contract IBaseRegistrar"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "962:16:99"
                  },
                  "scope": 18030,
                  "src": "919:60:99",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "53095467",
                  "id": 17828,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metadataService",
                  "nameLocation": "994:15:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17823,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1009:2:99"
                  },
                  "returnParameters": {
                    "id": 17827,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17826,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17828,
                        "src": "1035:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMetadataService_$17752",
                          "typeString": "contract IMetadataService"
                        },
                        "typeName": {
                          "id": 17825,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 17824,
                            "name": "IMetadataService",
                            "nameLocations": [
                              "1035:16:99"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 17752,
                            "src": "1035:16:99"
                          },
                          "referencedDeclaration": 17752,
                          "src": "1035:16:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMetadataService_$17752",
                            "typeString": "contract IMetadataService"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1034:18:99"
                  },
                  "scope": 18030,
                  "src": "985:68:99",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "20c38e2b",
                  "id": 17835,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "names",
                  "nameLocation": "1068:5:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17830,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17835,
                        "src": "1074:7:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17829,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1074:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1073:9:99"
                  },
                  "returnParameters": {
                    "id": 17834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17833,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17835,
                        "src": "1106:12:99",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17832,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1106:5:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1105:14:99"
                  },
                  "scope": 18030,
                  "src": "1059:61:99",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "eb8ae530",
                  "id": 17844,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrap",
                  "nameLocation": "1135:4:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17837,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "1164:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17844,
                        "src": "1149:19:99",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17836,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1149:5:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17839,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "1186:12:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17844,
                        "src": "1178:20:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17838,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1178:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17841,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1216:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17844,
                        "src": "1208:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17840,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1208:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1139:91:99"
                  },
                  "returnParameters": {
                    "id": 17843,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1239:0:99"
                  },
                  "scope": 18030,
                  "src": "1126:114:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f9547a9e",
                  "id": 17859,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrapETH2LD",
                  "nameLocation": "1255:10:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17846,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "1291:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17859,
                        "src": "1275:21:99",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17845,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1275:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17848,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "1314:12:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17859,
                        "src": "1306:20:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17847,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1306:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17850,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "1343:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17859,
                        "src": "1336:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17849,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1336:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17852,
                        "mutability": "mutable",
                        "name": "_expiry",
                        "nameLocation": "1365:7:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17859,
                        "src": "1358:14:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17851,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17854,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1390:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17859,
                        "src": "1382:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17853,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1382:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1265:139:99"
                  },
                  "returnParameters": {
                    "id": 17858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17857,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "1430:6:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17859,
                        "src": "1423:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17856,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1423:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1422:15:99"
                  },
                  "scope": 18030,
                  "src": "1246:192:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "9f56dac6",
                  "id": 17876,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "registerAndWrapETH2LD",
                  "nameLocation": "1453:21:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17872,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17861,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "1500:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17876,
                        "src": "1484:21:99",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17860,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1484:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17863,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "1523:12:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17876,
                        "src": "1515:20:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17862,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1515:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17865,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1553:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17876,
                        "src": "1545:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17864,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1545:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17867,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1579:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17876,
                        "src": "1571:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17866,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1571:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17869,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "1604:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17876,
                        "src": "1597:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17868,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1597:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17871,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "1626:6:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17876,
                        "src": "1619:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17870,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1619:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1474:164:99"
                  },
                  "returnParameters": {
                    "id": 17875,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17874,
                        "mutability": "mutable",
                        "name": "registrarExpiry",
                        "nameLocation": "1665:15:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17876,
                        "src": "1657:23:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17873,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1657:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1656:25:99"
                  },
                  "scope": 18030,
                  "src": "1444:238:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "47d2e9fe",
                  "id": 17889,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renew",
                  "nameLocation": "1697:5:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17878,
                        "mutability": "mutable",
                        "name": "labelHash",
                        "nameLocation": "1720:9:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17889,
                        "src": "1712:17:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17877,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1712:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17880,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1747:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17889,
                        "src": "1739:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17879,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1739:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17882,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "1772:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17889,
                        "src": "1765:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17881,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1765:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17884,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "1794:6:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17889,
                        "src": "1787:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17883,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1787:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1702:104:99"
                  },
                  "returnParameters": {
                    "id": 17888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17887,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "1833:7:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17889,
                        "src": "1825:15:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17886,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1825:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1824:17:99"
                  },
                  "scope": 18030,
                  "src": "1688:154:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d8c9921a",
                  "id": 17898,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unwrap",
                  "nameLocation": "1857:6:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17896,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17891,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "1881:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17898,
                        "src": "1873:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17890,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1873:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17893,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "1903:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17898,
                        "src": "1895:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17892,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1895:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17895,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1926:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17898,
                        "src": "1918:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17894,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1918:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1863:74:99"
                  },
                  "returnParameters": {
                    "id": 17897,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1946:0:99"
                  },
                  "scope": 18030,
                  "src": "1848:99:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "8b4dfa75",
                  "id": 17907,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unwrapETH2LD",
                  "nameLocation": "1962:12:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17900,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "1992:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17907,
                        "src": "1984:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17899,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1984:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17902,
                        "mutability": "mutable",
                        "name": "newRegistrant",
                        "nameLocation": "2015:13:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17907,
                        "src": "2007:21:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17901,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2007:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17904,
                        "mutability": "mutable",
                        "name": "newController",
                        "nameLocation": "2046:13:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17907,
                        "src": "2038:21:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17903,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2038:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1974:91:99"
                  },
                  "returnParameters": {
                    "id": 17906,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2074:0:99"
                  },
                  "scope": 18030,
                  "src": "1953:122:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c20a2eb0",
                  "id": 17916,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setFuses",
                  "nameLocation": "2090:8:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17909,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2107:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17916,
                        "src": "2099:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17908,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2099:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17911,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "2120:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17916,
                        "src": "2113:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17910,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2113:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2098:28:99"
                  },
                  "returnParameters": {
                    "id": 17915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17914,
                        "mutability": "mutable",
                        "name": "newFuses",
                        "nameLocation": "2168:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17916,
                        "src": "2161:15:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17913,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2161:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2160:17:99"
                  },
                  "scope": 18030,
                  "src": "2081:97:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "33c69ea9",
                  "id": 17927,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setChildFuses",
                  "nameLocation": "2193:13:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17918,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "2224:10:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17927,
                        "src": "2216:18:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17917,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2216:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17920,
                        "mutability": "mutable",
                        "name": "labelhash",
                        "nameLocation": "2252:9:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17927,
                        "src": "2244:17:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17919,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2244:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17922,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "2278:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17927,
                        "src": "2271:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17921,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2271:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17924,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "2300:6:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17927,
                        "src": "2293:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17923,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "2293:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2206:106:99"
                  },
                  "returnParameters": {
                    "id": 17926,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2321:0:99"
                  },
                  "scope": 18030,
                  "src": "2184:138:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "24c1af44",
                  "id": 17946,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSubnodeRecord",
                  "nameLocation": "2337:16:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17929,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2371:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17946,
                        "src": "2363:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17928,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2363:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17931,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "2401:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17946,
                        "src": "2385:21:99",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17930,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2385:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17933,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2424:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17946,
                        "src": "2416:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17932,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2416:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17935,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "2447:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17946,
                        "src": "2439:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17934,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2439:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17937,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "2472:3:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17946,
                        "src": "2465:10:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17936,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "2465:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17939,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "2492:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17946,
                        "src": "2485:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17938,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2485:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17941,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "2514:6:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17946,
                        "src": "2507:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17940,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "2507:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2353:173:99"
                  },
                  "returnParameters": {
                    "id": 17945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17944,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17946,
                        "src": "2545:7:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17943,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2545:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2544:9:99"
                  },
                  "scope": 18030,
                  "src": "2328:226:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "cf408823",
                  "id": 17957,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setRecord",
                  "nameLocation": "2569:9:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17948,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2596:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17957,
                        "src": "2588:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17947,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2588:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17950,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2618:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17957,
                        "src": "2610:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17949,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2610:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17952,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "2641:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17957,
                        "src": "2633:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17951,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2633:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17954,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "2666:3:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17957,
                        "src": "2659:10:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17953,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "2659:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2578:97:99"
                  },
                  "returnParameters": {
                    "id": 17956,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2684:0:99"
                  },
                  "scope": 18030,
                  "src": "2560:125:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c658e086",
                  "id": 17972,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSubnodeOwner",
                  "nameLocation": "2700:15:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17968,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17959,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2733:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17972,
                        "src": "2725:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17958,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2725:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17961,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "2763:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17972,
                        "src": "2747:21:99",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17960,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2747:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17963,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2786:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17972,
                        "src": "2778:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17962,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2778:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17965,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "2811:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17972,
                        "src": "2804:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 17964,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2804:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17967,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "2833:6:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17972,
                        "src": "2826:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17966,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "2826:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2715:130:99"
                  },
                  "returnParameters": {
                    "id": 17971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17970,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17972,
                        "src": "2864:7:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17969,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2864:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2863:9:99"
                  },
                  "scope": 18030,
                  "src": "2691:182:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f44779b9",
                  "id": 17981,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isTokenOwnerOrApproved",
                  "nameLocation": "2888:22:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17974,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "2919:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17981,
                        "src": "2911:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17973,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2911:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17976,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "2933:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17981,
                        "src": "2925:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17975,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2925:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2910:28:99"
                  },
                  "returnParameters": {
                    "id": 17980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17979,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17981,
                        "src": "2973:4:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 17978,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2973:4:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2972:6:99"
                  },
                  "scope": 18030,
                  "src": "2879:100:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "1896f70a",
                  "id": 17988,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setResolver",
                  "nameLocation": "2994:11:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17986,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17983,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "3014:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17988,
                        "src": "3006:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17982,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3006:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17985,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "3028:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17988,
                        "src": "3020:16:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17984,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3020:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3005:32:99"
                  },
                  "returnParameters": {
                    "id": 17987,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3046:0:99"
                  },
                  "scope": 18030,
                  "src": "2985:62:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "14ab9038",
                  "id": 17995,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTTL",
                  "nameLocation": "3062:6:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17990,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "3077:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17995,
                        "src": "3069:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17989,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3069:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17992,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "3090:3:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 17995,
                        "src": "3083:10:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 17991,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3083:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3068:26:99"
                  },
                  "returnParameters": {
                    "id": 17994,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3103:0:99"
                  },
                  "scope": 18030,
                  "src": "3053:51:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "6352211e",
                  "id": 18002,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "3119:7:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17997,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3135:2:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 18002,
                        "src": "3127:10:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17996,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3127:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3126:12:99"
                  },
                  "returnParameters": {
                    "id": 18001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18000,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3165:5:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 18002,
                        "src": "3157:13:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17999,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3157:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3156:15:99"
                  },
                  "scope": 18030,
                  "src": "3110:62:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "0178fe3f",
                  "id": 18013,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getData",
                  "nameLocation": "3187:7:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18005,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18004,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3203:2:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 18013,
                        "src": "3195:10:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18003,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3195:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3194:12:99"
                  },
                  "returnParameters": {
                    "id": 18012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18007,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18013,
                        "src": "3254:7:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18006,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3254:7:99",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18009,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18013,
                        "src": "3275:6:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18008,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3275:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18011,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18013,
                        "src": "3295:6:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18010,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3295:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3240:71:99"
                  },
                  "scope": 18030,
                  "src": "3178:134:99",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "adf4960a",
                  "id": 18022,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allFusesBurned",
                  "nameLocation": "3327:14:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18015,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "3350:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 18022,
                        "src": "3342:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18014,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3342:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18017,
                        "mutability": "mutable",
                        "name": "fuseMask",
                        "nameLocation": "3363:8:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 18022,
                        "src": "3356:15:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18016,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3356:6:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3341:31:99"
                  },
                  "returnParameters": {
                    "id": 18021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18020,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18022,
                        "src": "3420:4:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 18019,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3420:4:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3419:6:99"
                  },
                  "scope": 18030,
                  "src": "3318:108:99",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "fd0cd0d9",
                  "id": 18029,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isWrapped",
                  "nameLocation": "3441:9:99",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18024,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "3459:4:99",
                        "nodeType": "VariableDeclaration",
                        "scope": 18029,
                        "src": "3451:12:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18023,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3451:7:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3450:14:99"
                  },
                  "returnParameters": {
                    "id": 18028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18027,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18029,
                        "src": "3488:4:99",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 18026,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3488:4:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3487:6:99"
                  },
                  "scope": 18030,
                  "src": "3432:62:99",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 18031,
              "src": "546:2950:99",
              "usedErrors": []
            }
          ],
          "src": "31:3466:99"
        },
        "id": 99
      },
      "contracts/wrapper/INameWrapperUpgrade.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/INameWrapperUpgrade.sol",
          "exportedSymbols": {
            "INameWrapperUpgrade": [
              18063
            ]
          },
          "id": 18064,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18032,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:100"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "INameWrapperUpgrade",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 18063,
              "linearizedBaseContracts": [
                18063
              ],
              "name": "INameWrapperUpgrade",
              "nameLocation": "67:19:100",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "24c1af44",
                  "id": 18049,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSubnodeRecord",
                  "nameLocation": "102:16:100",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18047,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18034,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "136:10:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18049,
                        "src": "128:18:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18033,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "128:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18036,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "172:5:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18049,
                        "src": "156:21:100",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 18035,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "156:6:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18038,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "195:5:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18049,
                        "src": "187:13:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18037,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "187:7:100",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18040,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "218:8:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18049,
                        "src": "210:16:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18039,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "210:7:100",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18042,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "243:3:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18049,
                        "src": "236:10:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18041,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "236:6:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18044,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "263:5:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18049,
                        "src": "256:12:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18043,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "256:6:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18046,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "285:6:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18049,
                        "src": "278:13:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18045,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "278:6:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "118:179:100"
                  },
                  "returnParameters": {
                    "id": 18048,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "306:0:100"
                  },
                  "scope": 18063,
                  "src": "93:214:100",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f9547a9e",
                  "id": 18062,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrapETH2LD",
                  "nameLocation": "322:10:100",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18051,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "358:5:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18062,
                        "src": "342:21:100",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 18050,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:6:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18053,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "381:12:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18062,
                        "src": "373:20:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "373:7:100",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18055,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "410:5:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18062,
                        "src": "403:12:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18054,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "403:6:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18057,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "432:6:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18062,
                        "src": "425:13:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18056,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "425:6:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18059,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "456:8:100",
                        "nodeType": "VariableDeclaration",
                        "scope": 18062,
                        "src": "448:16:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18058,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:7:100",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "332:138:100"
                  },
                  "returnParameters": {
                    "id": 18061,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "479:0:100"
                  },
                  "scope": 18063,
                  "src": "313:167:100",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 18064,
              "src": "57:425:100",
              "usedErrors": []
            }
          ],
          "src": "31:452:100"
        },
        "id": 100
      },
      "contracts/wrapper/NameWrapper.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/NameWrapper.sol",
          "exportedSymbols": {
            "BytesUtils": [
              16817
            ],
            "CANNOT_BURN_FUSES": [
              17764
            ],
            "CANNOT_CREATE_SUBDOMAIN": [
              17776
            ],
            "CANNOT_SET_RESOLVER": [
              17770
            ],
            "CANNOT_SET_TTL": [
              17773
            ],
            "CANNOT_TRANSFER": [
              17767
            ],
            "CANNOT_UNWRAP": [
              17761
            ],
            "CAN_DO_EVERYTHING": [
              17782
            ],
            "CannotUpgrade": [
              18131
            ],
            "Controllable": [
              16866
            ],
            "ENS": [
              12157
            ],
            "ERC1155Fuse": [
              17742
            ],
            "ERC20Recoverable": [
              15873
            ],
            "IBaseRegistrar": [
              11222
            ],
            "IERC165": [
              3094
            ],
            "IERC721Receiver": [
              2511
            ],
            "IMetadataService": [
              17752
            ],
            "INameWrapper": [
              18030
            ],
            "INameWrapperUpgrade": [
              18063
            ],
            "IncompatibleName": [
              18111
            ],
            "IncompatibleParent": [
              18107
            ],
            "IncorrectTargetOwner": [
              18129
            ],
            "IncorrectTokenType": [
              18113
            ],
            "LabelMismatch": [
              18119
            ],
            "LabelTooLong": [
              18125
            ],
            "LabelTooShort": [
              18121
            ],
            "NameNotFound": [
              18105
            ],
            "NameWrapper": [
              20510
            ],
            "OperationProhibited": [
              16877
            ],
            "Ownable": [
              642
            ],
            "PARENT_CANNOT_CONTROL": [
              17779
            ],
            "Unauthorised": [
              18103
            ]
          },
          "id": 20511,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18065,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:101"
            },
            {
              "absolutePath": "contracts/wrapper/ERC1155Fuse.sol",
              "file": "./ERC1155Fuse.sol",
              "id": 18069,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 17743,
              "src": "57:76:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18066,
                    "name": "ERC1155Fuse",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17742,
                    "src": "65:11:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18067,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3094,
                    "src": "78:7:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18068,
                    "name": "OperationProhibited",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16877,
                    "src": "87:19:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/Controllable.sol",
              "file": "./Controllable.sol",
              "id": 18071,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 16867,
              "src": "134:48:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18070,
                    "name": "Controllable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16866,
                    "src": "142:12:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/INameWrapper.sol",
              "file": "./INameWrapper.sol",
              "id": 18081,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 18031,
              "src": "183:203:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18072,
                    "name": "INameWrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18030,
                    "src": "191:12:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18073,
                    "name": "CANNOT_UNWRAP",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17761,
                    "src": "205:13:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18074,
                    "name": "CANNOT_BURN_FUSES",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17764,
                    "src": "220:17:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18075,
                    "name": "CANNOT_TRANSFER",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17767,
                    "src": "239:15:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18076,
                    "name": "CANNOT_SET_RESOLVER",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17770,
                    "src": "256:19:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18077,
                    "name": "CANNOT_SET_TTL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17773,
                    "src": "277:14:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18078,
                    "name": "CANNOT_CREATE_SUBDOMAIN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17776,
                    "src": "293:23:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18079,
                    "name": "PARENT_CANNOT_CONTROL",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17779,
                    "src": "318:21:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 18080,
                    "name": "CAN_DO_EVERYTHING",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17782,
                    "src": "341:17:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/INameWrapperUpgrade.sol",
              "file": "./INameWrapperUpgrade.sol",
              "id": 18083,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 18064,
              "src": "387:62:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18082,
                    "name": "INameWrapperUpgrade",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18063,
                    "src": "395:19:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/IMetadataService.sol",
              "file": "./IMetadataService.sol",
              "id": 18085,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 17753,
              "src": "450:56:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18084,
                    "name": "IMetadataService",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17752,
                    "src": "458:16:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../registry/ENS.sol",
              "id": 18087,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 12158,
              "src": "507:40:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18086,
                    "name": "ENS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12157,
                    "src": "515:3:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IBaseRegistrar.sol",
              "file": "../ethregistrar/IBaseRegistrar.sol",
              "id": 18089,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 11223,
              "src": "548:66:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18088,
                    "name": "IBaseRegistrar",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11222,
                    "src": "556:14:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
              "file": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
              "id": 18091,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 2512,
              "src": "615:89:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18090,
                    "name": "IERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2511,
                    "src": "623:15:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 18093,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 643,
              "src": "705:67:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18092,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 642,
                    "src": "713:7:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/BytesUtils.sol",
              "file": "./BytesUtils.sol",
              "id": 18095,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 16818,
              "src": "773:44:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18094,
                    "name": "BytesUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16817,
                    "src": "781:10:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/ERC20Recoverable.sol",
              "file": "../utils/ERC20Recoverable.sol",
              "id": 18097,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20511,
              "sourceUnit": 15874,
              "src": "818:63:101",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18096,
                    "name": "ERC20Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15873,
                    "src": "826:16:101",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "errorSelector": "b455aae8",
              "id": 18103,
              "name": "Unauthorised",
              "nameLocation": "889:12:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18102,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 18099,
                    "mutability": "mutable",
                    "name": "node",
                    "nameLocation": "910:4:101",
                    "nodeType": "VariableDeclaration",
                    "scope": 18103,
                    "src": "902:12:101",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 18098,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "902:7:101",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 18101,
                    "mutability": "mutable",
                    "name": "addr",
                    "nameLocation": "924:4:101",
                    "nodeType": "VariableDeclaration",
                    "scope": 18103,
                    "src": "916:12:101",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 18100,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "916:7:101",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "901:28:101"
              },
              "src": "883:47:101"
            },
            {
              "errorSelector": "3b4d5400",
              "id": 18105,
              "name": "NameNotFound",
              "nameLocation": "937:12:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18104,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "949:2:101"
              },
              "src": "931:21:101"
            },
            {
              "errorSelector": "615a4703",
              "id": 18107,
              "name": "IncompatibleParent",
              "nameLocation": "959:18:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18106,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "977:2:101"
              },
              "src": "953:27:101"
            },
            {
              "errorSelector": "3b2d0a12",
              "id": 18111,
              "name": "IncompatibleName",
              "nameLocation": "987:16:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18110,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 18109,
                    "mutability": "mutable",
                    "name": "name",
                    "nameLocation": "1010:4:101",
                    "nodeType": "VariableDeclaration",
                    "scope": 18111,
                    "src": "1004:10:101",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 18108,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1004:5:101",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1003:12:101"
              },
              "src": "981:35:101"
            },
            {
              "errorSelector": "1931a538",
              "id": 18113,
              "name": "IncorrectTokenType",
              "nameLocation": "1023:18:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18112,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "1041:2:101"
              },
              "src": "1017:27:101"
            },
            {
              "errorSelector": "c65c3ccc",
              "id": 18119,
              "name": "LabelMismatch",
              "nameLocation": "1051:13:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18118,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 18115,
                    "mutability": "mutable",
                    "name": "labelHash",
                    "nameLocation": "1073:9:101",
                    "nodeType": "VariableDeclaration",
                    "scope": 18119,
                    "src": "1065:17:101",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 18114,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1065:7:101",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 18117,
                    "mutability": "mutable",
                    "name": "expectedLabelhash",
                    "nameLocation": "1092:17:101",
                    "nodeType": "VariableDeclaration",
                    "scope": 18119,
                    "src": "1084:25:101",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 18116,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1084:7:101",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1064:46:101"
              },
              "src": "1045:66:101"
            },
            {
              "errorSelector": "280dacb6",
              "id": 18121,
              "name": "LabelTooShort",
              "nameLocation": "1118:13:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18120,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "1131:2:101"
              },
              "src": "1112:22:101"
            },
            {
              "errorSelector": "e3ba295f",
              "id": 18125,
              "name": "LabelTooLong",
              "nameLocation": "1141:12:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18124,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 18123,
                    "mutability": "mutable",
                    "name": "label",
                    "nameLocation": "1161:5:101",
                    "nodeType": "VariableDeclaration",
                    "scope": 18125,
                    "src": "1154:12:101",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string"
                    },
                    "typeName": {
                      "id": 18122,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "1154:6:101",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1153:14:101"
              },
              "src": "1135:33:101"
            },
            {
              "errorSelector": "5949361a",
              "id": 18129,
              "name": "IncorrectTargetOwner",
              "nameLocation": "1175:20:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18128,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 18127,
                    "mutability": "mutable",
                    "name": "owner",
                    "nameLocation": "1204:5:101",
                    "nodeType": "VariableDeclaration",
                    "scope": 18129,
                    "src": "1196:13:101",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 18126,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1196:7:101",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1195:15:101"
              },
              "src": "1169:42:101"
            },
            {
              "errorSelector": "24c1d6d4",
              "id": 18131,
              "name": "CannotUpgrade",
              "nameLocation": "1218:13:101",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18130,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "1231:2:101"
              },
              "src": "1212:22:101"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 18132,
                    "name": "Ownable",
                    "nameLocations": [
                      "1264:7:101"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 642,
                    "src": "1264:7:101"
                  },
                  "id": 18133,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1264:7:101"
                },
                {
                  "baseName": {
                    "id": 18134,
                    "name": "ERC1155Fuse",
                    "nameLocations": [
                      "1277:11:101"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 17742,
                    "src": "1277:11:101"
                  },
                  "id": 18135,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1277:11:101"
                },
                {
                  "baseName": {
                    "id": 18136,
                    "name": "INameWrapper",
                    "nameLocations": [
                      "1294:12:101"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18030,
                    "src": "1294:12:101"
                  },
                  "id": 18137,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1294:12:101"
                },
                {
                  "baseName": {
                    "id": 18138,
                    "name": "Controllable",
                    "nameLocations": [
                      "1312:12:101"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16866,
                    "src": "1312:12:101"
                  },
                  "id": 18139,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1312:12:101"
                },
                {
                  "baseName": {
                    "id": 18140,
                    "name": "IERC721Receiver",
                    "nameLocations": [
                      "1330:15:101"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2511,
                    "src": "1330:15:101"
                  },
                  "id": 18141,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1330:15:101"
                },
                {
                  "baseName": {
                    "id": 18142,
                    "name": "ERC20Recoverable",
                    "nameLocations": [
                      "1351:16:101"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15873,
                    "src": "1351:16:101"
                  },
                  "id": 18143,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1351:16:101"
                }
              ],
              "canonicalName": "NameWrapper",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 20510,
              "linearizedBaseContracts": [
                20510,
                15873,
                2511,
                16866,
                18030,
                17742,
                642,
                2855,
                820,
                764,
                3082,
                3094
              ],
              "name": "NameWrapper",
              "nameLocation": "1245:11:101",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 18146,
                  "libraryName": {
                    "id": 18144,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "1380:10:101"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16817,
                    "src": "1380:10:101"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1374:27:101",
                  "typeName": {
                    "id": 18145,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1395:5:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "baseFunctions": [
                    17816
                  ],
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 18150,
                  "mutability": "immutable",
                  "name": "ens",
                  "nameLocation": "1436:3:101",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 18149,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1427:8:101"
                  },
                  "scope": 20510,
                  "src": "1406:33:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 18148,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18147,
                      "name": "ENS",
                      "nameLocations": [
                        "1406:3:101"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "1406:3:101"
                    },
                    "referencedDeclaration": 12157,
                    "src": "1406:3:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17822
                  ],
                  "constant": false,
                  "functionSelector": "2b20e397",
                  "id": 18154,
                  "mutability": "immutable",
                  "name": "registrar",
                  "nameLocation": "1486:9:101",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 18153,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1477:8:101"
                  },
                  "scope": 20510,
                  "src": "1445:50:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                    "typeString": "contract IBaseRegistrar"
                  },
                  "typeName": {
                    "id": 18152,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18151,
                      "name": "IBaseRegistrar",
                      "nameLocations": [
                        "1445:14:101"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 11222,
                      "src": "1445:14:101"
                    },
                    "referencedDeclaration": 11222,
                    "src": "1445:14:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                      "typeString": "contract IBaseRegistrar"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17828
                  ],
                  "constant": false,
                  "functionSelector": "53095467",
                  "id": 18158,
                  "mutability": "mutable",
                  "name": "metadataService",
                  "nameLocation": "1534:15:101",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 18157,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1525:8:101"
                  },
                  "scope": 20510,
                  "src": "1501:48:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMetadataService_$17752",
                    "typeString": "contract IMetadataService"
                  },
                  "typeName": {
                    "id": 18156,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18155,
                      "name": "IMetadataService",
                      "nameLocations": [
                        "1501:16:101"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17752,
                      "src": "1501:16:101"
                    },
                    "referencedDeclaration": 17752,
                    "src": "1501:16:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMetadataService_$17752",
                      "typeString": "contract IMetadataService"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17835
                  ],
                  "constant": false,
                  "functionSelector": "20c38e2b",
                  "id": 18163,
                  "mutability": "mutable",
                  "name": "names",
                  "nameLocation": "1597:5:101",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 18162,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1588:8:101"
                  },
                  "scope": 20510,
                  "src": "1555:47:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes32 => bytes)"
                  },
                  "typeName": {
                    "id": 18161,
                    "keyType": {
                      "id": 18159,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1563:7:101",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1555:25:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                      "typeString": "mapping(bytes32 => bytes)"
                    },
                    "valueType": {
                      "id": 18160,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1574:5:101",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "06fdde03",
                  "id": 18166,
                  "mutability": "constant",
                  "name": "name",
                  "nameLocation": "1631:4:101",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "1608:43:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18164,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1608:6:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "hexValue": "4e616d6557726170706572",
                    "id": 18165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1638:13:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_9e5fb40623baecd82eb99e188b55cad44919cef59b84840d0442d334650f7781",
                      "typeString": "literal_string \"NameWrapper\""
                    },
                    "value": "NameWrapper"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 18169,
                  "mutability": "constant",
                  "name": "ETH_NODE",
                  "nameLocation": "1683:8:101",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "1658:110:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18167,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1658:7:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307839336364656237303862373534356463363638656239323830313736313639643163333363666438656436663034363930613062636338386139336663346165",
                    "id": 18168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1702:66:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_66853817334611902194238164484889819180315942402426128563245745834960013477038_by_1",
                      "typeString": "int_const 6685...(69 digits omitted)...7038"
                    },
                    "value": "0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 18172,
                  "mutability": "constant",
                  "name": "ROOT_NODE",
                  "nameLocation": "1799:9:101",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "1774:111:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18170,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1774:7:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 18171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1819:66:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0x0000000000000000000000000000000000000000000000000000000000000000"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "1f4e1504",
                  "id": 18175,
                  "mutability": "mutable",
                  "name": "upgradeContract",
                  "nameLocation": "1919:15:101",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "1892:42:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                    "typeString": "contract INameWrapperUpgrade"
                  },
                  "typeName": {
                    "id": 18174,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18173,
                      "name": "INameWrapperUpgrade",
                      "nameLocations": [
                        "1892:19:101"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18063,
                      "src": "1892:19:101"
                    },
                    "referencedDeclaration": 18063,
                    "src": "1892:19:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                      "typeString": "contract INameWrapperUpgrade"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 18182,
                  "mutability": "constant",
                  "name": "MAX_EXPIRY",
                  "nameLocation": "1964:10:101",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "1940:53:101",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 18176,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1940:6:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 18179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1982:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 18178,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "1982:6:101",
                            "typeDescriptions": {}
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          }
                        ],
                        "id": 18177,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -27,
                        "src": "1977:4:101",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 18180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1977:12:101",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_uint64",
                        "typeString": "type(uint64)"
                      }
                    },
                    "id": 18181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1990:3:101",
                    "memberName": "max",
                    "nodeType": "MemberAccess",
                    "src": "1977:16:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 18254,
                    "nodeType": "Block",
                    "src": "2114:606:101",
                    "statements": [
                      {
                        "expression": {
                          "id": 18196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18194,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18150,
                            "src": "2124:3:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18195,
                            "name": "_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18185,
                            "src": "2130:4:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "2124:10:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 18197,
                        "nodeType": "ExpressionStatement",
                        "src": "2124:10:101"
                      },
                      {
                        "expression": {
                          "id": 18200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18198,
                            "name": "registrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18154,
                            "src": "2144:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                              "typeString": "contract IBaseRegistrar"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18199,
                            "name": "_registrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18188,
                            "src": "2156:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                              "typeString": "contract IBaseRegistrar"
                            }
                          },
                          "src": "2144:22:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                            "typeString": "contract IBaseRegistrar"
                          }
                        },
                        "id": 18201,
                        "nodeType": "ExpressionStatement",
                        "src": "2144:22:101"
                      },
                      {
                        "expression": {
                          "id": 18204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18202,
                            "name": "metadataService",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18158,
                            "src": "2176:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMetadataService_$17752",
                              "typeString": "contract IMetadataService"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18203,
                            "name": "_metadataService",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18191,
                            "src": "2194:16:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMetadataService_$17752",
                              "typeString": "contract IMetadataService"
                            }
                          },
                          "src": "2176:34:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMetadataService_$17752",
                            "typeString": "contract IMetadataService"
                          }
                        },
                        "id": 18205,
                        "nodeType": "ExpressionStatement",
                        "src": "2176:34:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 18209,
                                  "name": "ETH_NODE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18169,
                                  "src": "2344:8:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 18208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2336:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 18207,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2336:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2336:17:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 18213,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2375:1:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 18212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2367:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18211,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2367:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2367:10:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 18219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 18217,
                                    "name": "PARENT_CANNOT_CONTROL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17779,
                                    "src": "2398:21:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "id": 18218,
                                    "name": "CANNOT_UNWRAP",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17761,
                                    "src": "2422:13:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "2398:37:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                ],
                                "id": 18216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2391:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint32_$",
                                  "typeString": "type(uint32)"
                                },
                                "typeName": {
                                  "id": 18215,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2391:6:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2391:45:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 18221,
                              "name": "MAX_EXPIRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18182,
                              "src": "2450:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 18206,
                            "name": "_setData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              20456,
                              17379
                            ],
                            "referencedDeclaration": 17379,
                            "src": "2314:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (uint256,address,uint32,uint64)"
                            }
                          },
                          "id": 18222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2314:156:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18223,
                        "nodeType": "ExpressionStatement",
                        "src": "2314:156:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 18227,
                                  "name": "ROOT_NODE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18172,
                                  "src": "2510:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 18226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2502:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 18225,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2502:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2502:18:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 18231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2542:1:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 18230,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2534:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18229,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2534:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2534:10:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 18237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 18235,
                                    "name": "PARENT_CANNOT_CONTROL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17779,
                                    "src": "2565:21:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "id": 18236,
                                    "name": "CANNOT_UNWRAP",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17761,
                                    "src": "2589:13:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "2565:37:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                ],
                                "id": 18234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2558:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint32_$",
                                  "typeString": "type(uint32)"
                                },
                                "typeName": {
                                  "id": 18233,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2558:6:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2558:45:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 18239,
                              "name": "MAX_EXPIRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18182,
                              "src": "2617:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 18224,
                            "name": "_setData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              20456,
                              17379
                            ],
                            "referencedDeclaration": 17379,
                            "src": "2480:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (uint256,address,uint32,uint64)"
                            }
                          },
                          "id": 18240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2480:157:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18241,
                        "nodeType": "ExpressionStatement",
                        "src": "2480:157:101"
                      },
                      {
                        "expression": {
                          "id": 18246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18242,
                              "name": "names",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18163,
                              "src": "2647:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 18244,
                            "indexExpression": {
                              "id": 18243,
                              "name": "ROOT_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18172,
                              "src": "2653:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2647:16:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "00",
                            "id": 18245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2666:6:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a",
                              "typeString": "literal_string hex\"00\""
                            },
                            "value": "\u0000"
                          },
                          "src": "2647:25:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 18247,
                        "nodeType": "ExpressionStatement",
                        "src": "2647:25:101"
                      },
                      {
                        "expression": {
                          "id": 18252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18248,
                              "name": "names",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18163,
                              "src": "2682:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 18250,
                            "indexExpression": {
                              "id": 18249,
                              "name": "ETH_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18169,
                              "src": "2688:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2682:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "0365746800",
                            "id": 18251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2700:13:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c65934a88d283a635602ca15e14e8b9a9a3d150eacacca3b07f4a85f5fdbface",
                              "typeString": "literal_string hex\"0365746800\""
                            },
                            "value": "\u0003eth\u0000"
                          },
                          "src": "2682:31:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 18253,
                        "nodeType": "ExpressionStatement",
                        "src": "2682:31:101"
                      }
                    ]
                  },
                  "id": 18255,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18185,
                        "mutability": "mutable",
                        "name": "_ens",
                        "nameLocation": "2025:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18255,
                        "src": "2021:8:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 18184,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 18183,
                            "name": "ENS",
                            "nameLocations": [
                              "2021:3:101"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "2021:3:101"
                          },
                          "referencedDeclaration": 12157,
                          "src": "2021:3:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18188,
                        "mutability": "mutable",
                        "name": "_registrar",
                        "nameLocation": "2054:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18255,
                        "src": "2039:25:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                          "typeString": "contract IBaseRegistrar"
                        },
                        "typeName": {
                          "id": 18187,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 18186,
                            "name": "IBaseRegistrar",
                            "nameLocations": [
                              "2039:14:101"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11222,
                            "src": "2039:14:101"
                          },
                          "referencedDeclaration": 11222,
                          "src": "2039:14:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                            "typeString": "contract IBaseRegistrar"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18191,
                        "mutability": "mutable",
                        "name": "_metadataService",
                        "nameLocation": "2091:16:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18255,
                        "src": "2074:33:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMetadataService_$17752",
                          "typeString": "contract IMetadataService"
                        },
                        "typeName": {
                          "id": 18190,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 18189,
                            "name": "IMetadataService",
                            "nameLocations": [
                              "2074:16:101"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 17752,
                            "src": "2074:16:101"
                          },
                          "referencedDeclaration": 17752,
                          "src": "2074:16:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMetadataService_$17752",
                            "typeString": "contract IMetadataService"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2011:102:101"
                  },
                  "returnParameters": {
                    "id": 18193,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2114:0:101"
                  },
                  "scope": 20510,
                  "src": "2000:720:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3093,
                    16943
                  ],
                  "body": {
                    "id": 18284,
                    "nodeType": "Block",
                    "src": "2883:197:101",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 18277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 18270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 18265,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18257,
                                "src": "2912:11:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 18267,
                                      "name": "INameWrapper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18030,
                                      "src": "2932:12:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_INameWrapper_$18030_$",
                                        "typeString": "type(contract INameWrapper)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_INameWrapper_$18030_$",
                                        "typeString": "type(contract INameWrapper)"
                                      }
                                    ],
                                    "id": 18266,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2927:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 18268,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2927:18:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_INameWrapper_$18030",
                                    "typeString": "type(contract INameWrapper)"
                                  }
                                },
                                "id": 18269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2946:11:101",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2927:30:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2912:45:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 18276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 18271,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18257,
                                "src": "2973:11:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 18273,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2511,
                                      "src": "2993:15:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$2511_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$2511_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    ],
                                    "id": 18272,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2988:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 18274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2988:21:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Receiver_$2511",
                                    "typeString": "type(contract IERC721Receiver)"
                                  }
                                },
                                "id": 18275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "3010:11:101",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2988:33:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2973:48:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2912:109:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 18280,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18257,
                                "src": "3061:11:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 18278,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "3037:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_NameWrapper_$20510_$",
                                  "typeString": "type(contract super NameWrapper)"
                                }
                              },
                              "id": 18279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3043:17:101",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16943,
                              "src": "3037:23:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 18281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3037:36:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2912:161:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 18264,
                        "id": 18283,
                        "nodeType": "Return",
                        "src": "2893:180:101"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 18285,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "2735:17:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18261,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 18259,
                        "name": "ERC1155Fuse",
                        "nameLocations": [
                          "2834:11:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 17742,
                        "src": "2834:11:101"
                      },
                      {
                        "id": 18260,
                        "name": "IERC165",
                        "nameLocations": [
                          "2847:7:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3094,
                        "src": "2847:7:101"
                      }
                    ],
                    "src": "2825:30:101"
                  },
                  "parameters": {
                    "id": 18258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18257,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "2760:11:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18285,
                        "src": "2753:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 18256,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2753:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2752:20:101"
                  },
                  "returnParameters": {
                    "id": 18264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18263,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18285,
                        "src": "2873:4:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 18262,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2873:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2872:6:101"
                  },
                  "scope": 20510,
                  "src": "2726:354:101",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    16912,
                    18002
                  ],
                  "body": {
                    "id": 18301,
                    "nodeType": "Block",
                    "src": "3409:41:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18298,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18288,
                              "src": "3440:2:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 18296,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3426:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_NameWrapper_$20510_$",
                                "typeString": "type(contract super NameWrapper)"
                              }
                            },
                            "id": 18297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3432:7:101",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16912,
                            "src": "3426:13:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 18299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3426:17:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 18295,
                        "id": 18300,
                        "nodeType": "Return",
                        "src": "3419:24:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18286,
                    "nodeType": "StructuredDocumentation",
                    "src": "3110:156:101",
                    "text": " @notice Gets the owner of a name\n @param id Label as a string of the .eth domain to wrap\n @return owner The owner of the name"
                  },
                  "functionSelector": "6352211e",
                  "id": 18302,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "3281:7:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18292,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 18290,
                        "name": "ERC1155Fuse",
                        "nameLocations": [
                          "3346:11:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 17742,
                        "src": "3346:11:101"
                      },
                      {
                        "id": 18291,
                        "name": "INameWrapper",
                        "nameLocations": [
                          "3359:12:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18030,
                        "src": "3359:12:101"
                      }
                    ],
                    "src": "3337:35:101"
                  },
                  "parameters": {
                    "id": 18289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18288,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3297:2:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18302,
                        "src": "3289:10:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3289:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3288:12:101"
                  },
                  "returnParameters": {
                    "id": 18295,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18294,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3398:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18302,
                        "src": "3390:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3390:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3389:15:101"
                  },
                  "scope": 20510,
                  "src": "3272:178:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17154,
                    18013
                  ],
                  "body": {
                    "id": 18322,
                    "nodeType": "Block",
                    "src": "3920:41:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18319,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18305,
                              "src": "3951:2:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 18317,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3937:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_NameWrapper_$20510_$",
                                "typeString": "type(contract super NameWrapper)"
                              }
                            },
                            "id": 18318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3943:7:101",
                            "memberName": "getData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17154,
                            "src": "3937:13:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 18320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3937:17:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "functionReturnParameters": 18316,
                        "id": 18321,
                        "nodeType": "Return",
                        "src": "3930:24:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18303,
                    "nodeType": "StructuredDocumentation",
                    "src": "3456:265:101",
                    "text": " @notice Gets the data for a name\n @param id Label as a string of the .eth domain to wrap\n @return address The owner of the name\n @return uint32 Fuses of the name\n @return uint64 Expiry of when the fuses expire for the name"
                  },
                  "functionSelector": "0178fe3f",
                  "id": 18323,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getData",
                  "nameLocation": "3736:7:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18309,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 18307,
                        "name": "ERC1155Fuse",
                        "nameLocations": [
                          "3801:11:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 17742,
                        "src": "3801:11:101"
                      },
                      {
                        "id": 18308,
                        "name": "INameWrapper",
                        "nameLocations": [
                          "3814:12:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18030,
                        "src": "3814:12:101"
                      }
                    ],
                    "src": "3792:35:101"
                  },
                  "parameters": {
                    "id": 18306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18305,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3752:2:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18323,
                        "src": "3744:10:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18304,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3744:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3743:12:101"
                  },
                  "returnParameters": {
                    "id": 18316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18311,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18323,
                        "src": "3858:7:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18310,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3858:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18313,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18323,
                        "src": "3879:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18312,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3879:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18315,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18323,
                        "src": "3899:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18314,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3899:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3844:71:101"
                  },
                  "scope": 20510,
                  "src": "3727:234:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18336,
                    "nodeType": "Block",
                    "src": "4236:51:101",
                    "statements": [
                      {
                        "expression": {
                          "id": 18334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18332,
                            "name": "metadataService",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18158,
                            "src": "4246:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMetadataService_$17752",
                              "typeString": "contract IMetadataService"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18333,
                            "name": "_metadataService",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18327,
                            "src": "4264:16:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMetadataService_$17752",
                              "typeString": "contract IMetadataService"
                            }
                          },
                          "src": "4246:34:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMetadataService_$17752",
                            "typeString": "contract IMetadataService"
                          }
                        },
                        "id": 18335,
                        "nodeType": "ExpressionStatement",
                        "src": "4246:34:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18324,
                    "nodeType": "StructuredDocumentation",
                    "src": "3995:135:101",
                    "text": " @notice Set the metadata service. Only the owner can do this\n @param _metadataService The new metadata service"
                  },
                  "functionSelector": "1534e177",
                  "id": 18337,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 18330,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18329,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "4222:9:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "4222:9:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4222:9:101"
                    }
                  ],
                  "name": "setMetadataService",
                  "nameLocation": "4145:18:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18327,
                        "mutability": "mutable",
                        "name": "_metadataService",
                        "nameLocation": "4181:16:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18337,
                        "src": "4164:33:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMetadataService_$17752",
                          "typeString": "contract IMetadataService"
                        },
                        "typeName": {
                          "id": 18326,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 18325,
                            "name": "IMetadataService",
                            "nameLocations": [
                              "4164:16:101"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 17752,
                            "src": "4164:16:101"
                          },
                          "referencedDeclaration": 17752,
                          "src": "4164:16:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMetadataService_$17752",
                            "typeString": "contract IMetadataService"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4163:35:101"
                  },
                  "returnParameters": {
                    "id": 18331,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4236:0:101"
                  },
                  "scope": 20510,
                  "src": "4136:151:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    819
                  ],
                  "body": {
                    "id": 18351,
                    "nodeType": "Block",
                    "src": "4513:52:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18348,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18340,
                              "src": "4550:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 18346,
                              "name": "metadataService",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18158,
                              "src": "4530:15:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMetadataService_$17752",
                                "typeString": "contract IMetadataService"
                              }
                            },
                            "id": 18347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4546:3:101",
                            "memberName": "uri",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17751,
                            "src": "4530:19:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view external returns (string memory)"
                            }
                          },
                          "id": 18349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4530:28:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 18345,
                        "id": 18350,
                        "nodeType": "Return",
                        "src": "4523:35:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18338,
                    "nodeType": "StructuredDocumentation",
                    "src": "4293:139:101",
                    "text": " @notice Get the metadata uri\n @param tokenId The id of the token\n @return string uri of the metadata service"
                  },
                  "functionSelector": "0e89341c",
                  "id": 18352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nameLocation": "4447:3:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18342,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4480:8:101"
                  },
                  "parameters": {
                    "id": 18341,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18340,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4459:7:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18352,
                        "src": "4451:15:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18339,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4451:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4450:17:101"
                  },
                  "returnParameters": {
                    "id": 18345,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18344,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18352,
                        "src": "4498:13:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 18343,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4498:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4497:15:101"
                  },
                  "scope": 20510,
                  "src": "4438:127:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18427,
                    "nodeType": "Block",
                    "src": "4987:462:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 18363,
                                "name": "upgradeContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18175,
                                "src": "5009:15:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                  "typeString": "contract INameWrapperUpgrade"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                  "typeString": "contract INameWrapperUpgrade"
                                }
                              ],
                              "id": 18362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5001:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 18361,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5001:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5001:24:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 18367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5037:1:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 18366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5029:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 18365,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5029:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18368,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5029:10:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5001:38:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18391,
                        "nodeType": "IfStatement",
                        "src": "4997:197:101",
                        "trueBody": {
                          "id": 18390,
                          "nodeType": "Block",
                          "src": "5041:153:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 18375,
                                        "name": "upgradeContract",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18175,
                                        "src": "5091:15:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                          "typeString": "contract INameWrapperUpgrade"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                          "typeString": "contract INameWrapperUpgrade"
                                        }
                                      ],
                                      "id": 18374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5083:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 18373,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5083:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5083:24:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 18377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5109:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18370,
                                    "name": "registrar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18154,
                                    "src": "5055:9:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                      "typeString": "contract IBaseRegistrar"
                                    }
                                  },
                                  "id": 18372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5065:17:101",
                                  "memberName": "setApprovalForAll",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2470,
                                  "src": "5055:27:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,bool) external"
                                  }
                                },
                                "id": 18378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5055:60:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18379,
                              "nodeType": "ExpressionStatement",
                              "src": "5055:60:101"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 18385,
                                        "name": "upgradeContract",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18175,
                                        "src": "5159:15:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                          "typeString": "contract INameWrapperUpgrade"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                          "typeString": "contract INameWrapperUpgrade"
                                        }
                                      ],
                                      "id": 18384,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5151:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 18383,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5151:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18386,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5151:24:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 18387,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5177:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18380,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18150,
                                    "src": "5129:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 18382,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5133:17:101",
                                  "memberName": "setApprovalForAll",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12119,
                                  "src": "5129:21:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,bool) external"
                                  }
                                },
                                "id": 18388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5129:54:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18389,
                              "nodeType": "ExpressionStatement",
                              "src": "5129:54:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 18394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18392,
                            "name": "upgradeContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18175,
                            "src": "5204:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                              "typeString": "contract INameWrapperUpgrade"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18393,
                            "name": "_upgradeAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18356,
                            "src": "5222:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                              "typeString": "contract INameWrapperUpgrade"
                            }
                          },
                          "src": "5204:33:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                            "typeString": "contract INameWrapperUpgrade"
                          }
                        },
                        "id": 18395,
                        "nodeType": "ExpressionStatement",
                        "src": "5204:33:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 18398,
                                "name": "upgradeContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18175,
                                "src": "5260:15:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                  "typeString": "contract INameWrapperUpgrade"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                  "typeString": "contract INameWrapperUpgrade"
                                }
                              ],
                              "id": 18397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5252:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 18396,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5252:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5252:24:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 18402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5288:1:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 18401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5280:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 18400,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5280:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5280:10:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5252:38:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18426,
                        "nodeType": "IfStatement",
                        "src": "5248:195:101",
                        "trueBody": {
                          "id": 18425,
                          "nodeType": "Block",
                          "src": "5292:151:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 18410,
                                        "name": "upgradeContract",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18175,
                                        "src": "5342:15:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                          "typeString": "contract INameWrapperUpgrade"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                          "typeString": "contract INameWrapperUpgrade"
                                        }
                                      ],
                                      "id": 18409,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5334:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 18408,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5334:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5334:24:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 18412,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5360:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18405,
                                    "name": "registrar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18154,
                                    "src": "5306:9:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                      "typeString": "contract IBaseRegistrar"
                                    }
                                  },
                                  "id": 18407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5316:17:101",
                                  "memberName": "setApprovalForAll",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2470,
                                  "src": "5306:27:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,bool) external"
                                  }
                                },
                                "id": 18413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5306:59:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18414,
                              "nodeType": "ExpressionStatement",
                              "src": "5306:59:101"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 18420,
                                        "name": "upgradeContract",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18175,
                                        "src": "5409:15:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                          "typeString": "contract INameWrapperUpgrade"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                          "typeString": "contract INameWrapperUpgrade"
                                        }
                                      ],
                                      "id": 18419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5401:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 18418,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5401:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18421,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5401:24:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 18422,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5427:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18415,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18150,
                                    "src": "5379:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 18417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5383:17:101",
                                  "memberName": "setApprovalForAll",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12119,
                                  "src": "5379:21:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,bool) external"
                                  }
                                },
                                "id": 18423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5379:53:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18424,
                              "nodeType": "ExpressionStatement",
                              "src": "5379:53:101"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18353,
                    "nodeType": "StructuredDocumentation",
                    "src": "4571:308:101",
                    "text": " @notice Set the address of the upgradeContract of the contract. only admin can do this\n @dev The default value of upgradeContract is the 0 address. Use the 0 address at any time\n to make the contract not upgradable.\n @param _upgradeAddress address of an upgraded contract"
                  },
                  "functionSelector": "b6bcad26",
                  "id": 18428,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 18359,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18358,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "4973:9:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 584,
                        "src": "4973:9:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4973:9:101"
                    }
                  ],
                  "name": "setUpgradeContract",
                  "nameLocation": "4894:18:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18356,
                        "mutability": "mutable",
                        "name": "_upgradeAddress",
                        "nameLocation": "4933:15:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18428,
                        "src": "4913:35:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                          "typeString": "contract INameWrapperUpgrade"
                        },
                        "typeName": {
                          "id": 18355,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 18354,
                            "name": "INameWrapperUpgrade",
                            "nameLocations": [
                              "4913:19:101"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 18063,
                            "src": "4913:19:101"
                          },
                          "referencedDeclaration": 18063,
                          "src": "4913:19:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                            "typeString": "contract INameWrapperUpgrade"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4912:37:101"
                  },
                  "returnParameters": {
                    "id": 18360,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4987:0:101"
                  },
                  "scope": 20510,
                  "src": "4885:564:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18448,
                    "nodeType": "Block",
                    "src": "5643:137:101",
                    "statements": [
                      {
                        "condition": {
                          "id": 18438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5657:41:101",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 18434,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18431,
                                "src": "5681:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "expression": {
                                  "id": 18435,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5687:3:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 18436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5691:6:101",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "5687:10:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18433,
                              "name": "isTokenOwnerOrApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18479,
                              "src": "5658:22:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (bytes32,address) view returns (bool)"
                              }
                            },
                            "id": 18437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5658:40:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18446,
                        "nodeType": "IfStatement",
                        "src": "5653:109:101",
                        "trueBody": {
                          "id": 18445,
                          "nodeType": "Block",
                          "src": "5700:62:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 18440,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18431,
                                    "src": "5734:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 18441,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5740:3:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 18442,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5744:6:101",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5740:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18439,
                                  "name": "Unauthorised",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "5721:12:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) pure"
                                  }
                                },
                                "id": 18443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5721:30:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18444,
                              "nodeType": "RevertStatement",
                              "src": "5714:37:101"
                            }
                          ]
                        }
                      },
                      {
                        "id": 18447,
                        "nodeType": "PlaceholderStatement",
                        "src": "5772:1:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18429,
                    "nodeType": "StructuredDocumentation",
                    "src": "5455:144:101",
                    "text": " @notice Checks if msg.sender is the owner or approved by the owner of a name\n @param node namehash of the name to check"
                  },
                  "id": 18449,
                  "name": "onlyTokenOwner",
                  "nameLocation": "5614:14:101",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 18432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18431,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "5637:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18449,
                        "src": "5629:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18430,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5629:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5628:14:101"
                  },
                  "src": "5605:175:101",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    17981
                  ],
                  "body": {
                    "id": 18478,
                    "nodeType": "Block",
                    "src": "6145:118:101",
                    "statements": [
                      {
                        "assignments": [
                          18461
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18461,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "6163:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18478,
                            "src": "6155:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18460,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6155:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18468,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 18465,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18452,
                                  "src": "6187:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 18464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6179:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 18463,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6179:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6179:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18462,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18302
                            ],
                            "referencedDeclaration": 18302,
                            "src": "6171:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 18467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6171:22:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6155:38:101"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 18471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 18469,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18461,
                              "src": "6210:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 18470,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18454,
                              "src": "6219:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "6210:13:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 18473,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18461,
                                "src": "6244:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 18474,
                                "name": "addr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18454,
                                "src": "6251:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18472,
                              "name": "isApprovedForAll",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17096,
                              "src": "6227:16:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view returns (bool)"
                              }
                            },
                            "id": 18475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6227:29:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6210:46:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 18459,
                        "id": 18477,
                        "nodeType": "Return",
                        "src": "6203:53:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18450,
                    "nodeType": "StructuredDocumentation",
                    "src": "5786:221:101",
                    "text": " @notice Checks if owner or approved by owner\n @param node namehash of the name to check\n @param addr which address to check permissions for\n @return whether or not is owner or approved"
                  },
                  "functionSelector": "f44779b9",
                  "id": 18479,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isTokenOwnerOrApproved",
                  "nameLocation": "6022:22:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18456,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6109:8:101"
                  },
                  "parameters": {
                    "id": 18455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18452,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "6053:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18479,
                        "src": "6045:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18451,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6045:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18454,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "6067:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18479,
                        "src": "6059:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18453,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6059:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6044:28:101"
                  },
                  "returnParameters": {
                    "id": 18459,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18458,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18479,
                        "src": "6135:4:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 18457,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6135:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6134:6:101"
                  },
                  "scope": 20510,
                  "src": "6013:250:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17859
                  ],
                  "body": {
                    "id": 18570,
                    "nodeType": "Block",
                    "src": "7026:723:101",
                    "statements": [
                      {
                        "assignments": [
                          18497
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18497,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "7044:7:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18570,
                            "src": "7036:15:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18496,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7036:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18507,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 18503,
                                      "name": "label",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18482,
                                      "src": "7078:5:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    ],
                                    "id": 18502,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7072:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 18501,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7072:5:101",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18504,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7072:12:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "id": 18500,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "7062:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 18505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7062:23:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 18499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7054:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 18498,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7054:7:101",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 18506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7054:32:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7036:50:101"
                      },
                      {
                        "assignments": [
                          18509
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18509,
                            "mutability": "mutable",
                            "name": "registrant",
                            "nameLocation": "7104:10:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18570,
                            "src": "7096:18:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18508,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7096:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18514,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18512,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18497,
                              "src": "7135:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 18510,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18154,
                              "src": "7117:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                "typeString": "contract IBaseRegistrar"
                              }
                            },
                            "id": 18511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7127:7:101",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2426,
                            "src": "7117:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view external returns (address)"
                            }
                          },
                          "id": 18513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7117:26:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7096:47:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 18518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 18515,
                              "name": "registrant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18509,
                              "src": "7170:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 18516,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7184:3:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7188:6:101",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7184:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "7170:24:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "id": 18525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "7210:51:101",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 18521,
                                  "name": "registrant",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18509,
                                  "src": "7238:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 18522,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "7250:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 18523,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7254:6:101",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "7250:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 18519,
                                  "name": "registrar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18154,
                                  "src": "7211:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                    "typeString": "contract IBaseRegistrar"
                                  }
                                },
                                "id": 18520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7221:16:101",
                                "memberName": "isApprovedForAll",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2480,
                                "src": "7211:26:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view external returns (bool)"
                                }
                              },
                              "id": 18524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7211:50:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7170:91:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18540,
                        "nodeType": "IfStatement",
                        "src": "7153:260:101",
                        "trueBody": {
                          "id": 18539,
                          "nodeType": "Block",
                          "src": "7272:141:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 18529,
                                        "name": "ETH_NODE",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18169,
                                        "src": "7333:8:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 18532,
                                            "name": "tokenId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18497,
                                            "src": "7351:7:101",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 18531,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7343:7:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                            "typeString": "type(bytes32)"
                                          },
                                          "typeName": {
                                            "id": 18530,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "7343:7:101",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 18533,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7343:16:101",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 18528,
                                      "name": "_makeNode",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19807,
                                      "src": "7323:9:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 18534,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7323:37:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 18535,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "7378:3:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 18536,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "7382:6:101",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "7378:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18527,
                                  "name": "Unauthorised",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "7293:12:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) pure"
                                  }
                                },
                                "id": 18537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7293:109:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18538,
                              "nodeType": "RevertStatement",
                              "src": "7286:116:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18544,
                              "name": "registrant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18509,
                              "src": "7507:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 18547,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7527:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                ],
                                "id": 18546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7519:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18545,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7519:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7519:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18549,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18497,
                              "src": "7534:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 18541,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18154,
                              "src": "7484:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                "typeString": "contract IBaseRegistrar"
                              }
                            },
                            "id": 18543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7494:12:101",
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2446,
                            "src": "7484:22:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256) external"
                            }
                          },
                          "id": 18550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7484:58:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18551,
                        "nodeType": "ExpressionStatement",
                        "src": "7484:58:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18555,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18497,
                              "src": "7644:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 18558,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7661:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                ],
                                "id": 18557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7653:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18556,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7653:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7653:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 18552,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18154,
                              "src": "7626:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                "typeString": "contract IBaseRegistrar"
                              }
                            },
                            "id": 18554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7636:7:101",
                            "memberName": "reclaim",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11221,
                            "src": "7626:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address) external"
                            }
                          },
                          "id": 18560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7626:41:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18561,
                        "nodeType": "ExpressionStatement",
                        "src": "7626:41:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18563,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18482,
                              "src": "7697:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 18564,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18484,
                              "src": "7704:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18565,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18486,
                              "src": "7718:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 18566,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18488,
                              "src": "7725:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 18567,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18490,
                              "src": "7733:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18562,
                            "name": "_wrapETH2LD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20365,
                            "src": "7685:11:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$_t_address_$returns$_t_uint64_$",
                              "typeString": "function (string memory,address,uint32,uint64,address) returns (uint64)"
                            }
                          },
                          "id": 18568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7685:57:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 18495,
                        "id": 18569,
                        "nodeType": "Return",
                        "src": "7678:64:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18480,
                    "nodeType": "StructuredDocumentation",
                    "src": "6269:560:101",
                    "text": " @notice Wraps a .eth domain, creating a new token and sending the original ERC721 token to this contract\n @dev Can be called by the owner of the name on the .eth registrar or an authorised caller on the registrar\n @param label Label as a string of the .eth domain to wrap\n @param wrappedOwner Owner of the name in this contract\n @param fuses Initial fuses to set\n @param expiry When the fuses will expire\n @param resolver Resolver contract address\n @return Normalised expiry of when the fuses expire"
                  },
                  "functionSelector": "f9547a9e",
                  "id": 18571,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrapETH2LD",
                  "nameLocation": "6844:10:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18492,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7000:8:101"
                  },
                  "parameters": {
                    "id": 18491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18482,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "6880:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18571,
                        "src": "6864:21:101",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 18481,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6864:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18484,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "6903:12:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18571,
                        "src": "6895:20:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18483,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6895:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18486,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "6932:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18571,
                        "src": "6925:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18485,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6925:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18488,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "6954:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18571,
                        "src": "6947:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18487,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "6947:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18490,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "6978:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18571,
                        "src": "6970:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18489,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6970:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6854:138:101"
                  },
                  "returnParameters": {
                    "id": 18495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18494,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18571,
                        "src": "7018:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18493,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "7018:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7017:8:101"
                  },
                  "scope": 20510,
                  "src": "6835:914:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17876
                  ],
                  "body": {
                    "id": 18624,
                    "nodeType": "Block",
                    "src": "8647:214:101",
                    "statements": [
                      {
                        "assignments": [
                          18593
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18593,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "8665:7:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18624,
                            "src": "8657:15:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18592,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8657:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18603,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 18599,
                                      "name": "label",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18574,
                                      "src": "8699:5:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    ],
                                    "id": 18598,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8693:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 18597,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8693:5:101",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8693:12:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "id": 18596,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "8683:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 18601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8683:23:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 18595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8675:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 18594,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8675:7:101",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 18602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8675:32:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8657:50:101"
                      },
                      {
                        "expression": {
                          "id": 18614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18604,
                            "name": "registrarExpiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18590,
                            "src": "8717:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 18607,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18593,
                                "src": "8754:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 18610,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "8771:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                      "typeString": "contract NameWrapper"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                      "typeString": "contract NameWrapper"
                                    }
                                  ],
                                  "id": 18609,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8763:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18608,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8763:7:101",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 18611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8763:13:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 18612,
                                "name": "duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18578,
                                "src": "8778:8:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 18605,
                                "name": "registrar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18154,
                                "src": "8735:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                  "typeString": "contract IBaseRegistrar"
                                }
                              },
                              "id": 18606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8745:8:101",
                              "memberName": "register",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11204,
                              "src": "8735:18:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,address,uint256) external returns (uint256)"
                              }
                            },
                            "id": 18613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8735:52:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8717:70:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18615,
                        "nodeType": "ExpressionStatement",
                        "src": "8717:70:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18617,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18574,
                              "src": "8809:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 18618,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18576,
                              "src": "8816:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18619,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18582,
                              "src": "8830:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 18620,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18584,
                              "src": "8837:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 18621,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18580,
                              "src": "8845:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18616,
                            "name": "_wrapETH2LD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20365,
                            "src": "8797:11:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$_t_address_$returns$_t_uint64_$",
                              "typeString": "function (string memory,address,uint32,uint64,address) returns (uint64)"
                            }
                          },
                          "id": 18622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8797:57:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 18623,
                        "nodeType": "ExpressionStatement",
                        "src": "8797:57:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18572,
                    "nodeType": "StructuredDocumentation",
                    "src": "7755:624:101",
                    "text": " @dev Registers a new .eth second-level domain and wraps it.\n      Only callable by authorised controllers.\n @param label The label to register (Eg, 'foo' for 'foo.eth').\n @param wrappedOwner The owner of the wrapped name.\n @param duration The duration, in seconds, to register the name for.\n @param resolver The resolver address to set on the ENS registry (optional).\n @param fuses Initial fuses to set\n @param expiry When the fuses will expire\n @return registrarExpiry The expiry date of the new name on the .eth registrar, in seconds since the Unix epoch."
                  },
                  "functionSelector": "9f56dac6",
                  "id": 18625,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 18588,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18587,
                        "name": "onlyController",
                        "nameLocations": [
                          "8598:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 16865,
                        "src": "8598:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8598:14:101"
                    }
                  ],
                  "name": "registerAndWrapETH2LD",
                  "nameLocation": "8394:21:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18586,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8589:8:101"
                  },
                  "parameters": {
                    "id": 18585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18574,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "8441:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18625,
                        "src": "8425:21:101",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 18573,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8425:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18576,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "8464:12:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18625,
                        "src": "8456:20:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18575,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8456:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18578,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "8494:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18625,
                        "src": "8486:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18577,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8486:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18580,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "8520:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18625,
                        "src": "8512:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18579,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8512:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18582,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "8545:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18625,
                        "src": "8538:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18581,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8538:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18584,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "8567:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18625,
                        "src": "8560:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18583,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "8560:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8415:164:101"
                  },
                  "returnParameters": {
                    "id": 18591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18590,
                        "mutability": "mutable",
                        "name": "registrarExpiry",
                        "nameLocation": "8630:15:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18625,
                        "src": "8622:23:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18589,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8622:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8621:25:101"
                  },
                  "scope": 20510,
                  "src": "8385:476:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    17889
                  ],
                  "body": {
                    "id": 18700,
                    "nodeType": "Block",
                    "src": "9435:523:101",
                    "statements": [
                      {
                        "assignments": [
                          18643
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18643,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "9453:4:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18700,
                            "src": "9445:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 18642,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9445:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18651,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18645,
                              "name": "ETH_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18169,
                              "src": "9470:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 18648,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18628,
                                  "src": "9488:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 18647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9480:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 18646,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9480:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9480:16:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 18644,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "9460:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 18650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9460:37:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9445:52:101"
                      },
                      {
                        "expression": {
                          "id": 18658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18652,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18640,
                            "src": "9508:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 18655,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18628,
                                "src": "9534:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 18656,
                                "name": "duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18630,
                                "src": "9543:8:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 18653,
                                "name": "registrar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18154,
                                "src": "9518:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                  "typeString": "contract IBaseRegistrar"
                                }
                              },
                              "id": 18654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9528:5:101",
                              "memberName": "renew",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11213,
                              "src": "9518:15:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) external returns (uint256)"
                              }
                            },
                            "id": 18657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9518:34:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9508:44:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18659,
                        "nodeType": "ExpressionStatement",
                        "src": "9508:44:101"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 18661,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18643,
                              "src": "9576:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 18660,
                            "name": "isWrapped",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19668,
                            "src": "9566:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 18662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9566:15:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18699,
                        "nodeType": "IfStatement",
                        "src": "9562:390:101",
                        "trueBody": {
                          "id": 18698,
                          "nodeType": "Block",
                          "src": "9583:369:101",
                          "statements": [
                            {
                              "assignments": [
                                18664,
                                18666,
                                18668
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18664,
                                  "mutability": "mutable",
                                  "name": "owner",
                                  "nameLocation": "9606:5:101",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18698,
                                  "src": "9598:13:101",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 18663,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9598:7:101",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 18666,
                                  "mutability": "mutable",
                                  "name": "oldFuses",
                                  "nameLocation": "9620:8:101",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18698,
                                  "src": "9613:15:101",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 18665,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9613:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 18668,
                                  "mutability": "mutable",
                                  "name": "oldExpiry",
                                  "nameLocation": "9637:9:101",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18698,
                                  "src": "9630:16:101",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  "typeName": {
                                    "id": 18667,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9630:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 18675,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 18672,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18643,
                                        "src": "9683:4:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 18671,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9675:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 18670,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9675:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18673,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9675:13:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 18669,
                                  "name": "getData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    18323
                                  ],
                                  "referencedDeclaration": 18323,
                                  "src": "9650:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                                    "typeString": "function (uint256) view returns (address,uint32,uint64)"
                                  }
                                },
                                "id": 18674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9650:52:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                                  "typeString": "tuple(address,uint32,uint64)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9597:105:101"
                            },
                            {
                              "expression": {
                                "id": 18685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18676,
                                  "name": "expiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18634,
                                  "src": "9716:6:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 18678,
                                      "name": "expiry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18634,
                                      "src": "9742:6:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    {
                                      "id": 18679,
                                      "name": "oldExpiry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18668,
                                      "src": "9750:9:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 18682,
                                          "name": "expires",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18640,
                                          "src": "9768:7:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 18681,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9761:6:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint64_$",
                                          "typeString": "type(uint64)"
                                        },
                                        "typeName": {
                                          "id": 18680,
                                          "name": "uint64",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9761:6:101",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 18683,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9761:15:101",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "id": 18677,
                                    "name": "_normaliseExpiry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20292,
                                    "src": "9725:16:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_uint64_$",
                                      "typeString": "function (uint64,uint64,uint64) pure returns (uint64)"
                                    }
                                  },
                                  "id": 18684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9725:52:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "9716:61:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 18686,
                              "nodeType": "ExpressionStatement",
                              "src": "9716:61:101"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 18688,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18643,
                                    "src": "9818:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 18689,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18664,
                                    "src": "9840:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 18694,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 18692,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18690,
                                        "name": "oldFuses",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18666,
                                        "src": "9863:8:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "|",
                                      "rightExpression": {
                                        "id": 18691,
                                        "name": "fuses",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18632,
                                        "src": "9874:5:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "9863:16:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "|",
                                    "rightExpression": {
                                      "id": 18693,
                                      "name": "PARENT_CANNOT_CONTROL",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17779,
                                      "src": "9882:21:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "9863:40:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "id": 18695,
                                    "name": "expiry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18634,
                                    "src": "9921:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 18687,
                                  "name": "_setData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    20456,
                                    17379
                                  ],
                                  "referencedDeclaration": 20456,
                                  "src": "9792:8:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,address,uint32,uint64)"
                                  }
                                },
                                "id": 18696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9792:149:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18697,
                              "nodeType": "ExpressionStatement",
                              "src": "9792:149:101"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18626,
                    "nodeType": "StructuredDocumentation",
                    "src": "8867:386:101",
                    "text": " @notice Renews a .eth second-level domain.\n @dev Only callable by authorised controllers.\n @param tokenId The hash of the label to register (eg, `keccak256('foo')`, for 'foo.eth').\n @param duration The number of seconds to renew the name for.\n @return expires The expiry date of the name on the .eth registrar, in seconds since the Unix epoch."
                  },
                  "functionSelector": "47d2e9fe",
                  "id": 18701,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 18638,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18637,
                        "name": "onlyController",
                        "nameLocations": [
                          "9394:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 16865,
                        "src": "9394:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9394:14:101"
                    }
                  ],
                  "name": "renew",
                  "nameLocation": "9268:5:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18636,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9385:8:101"
                  },
                  "parameters": {
                    "id": 18635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18628,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "9291:7:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18701,
                        "src": "9283:15:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9283:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18630,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "9316:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18701,
                        "src": "9308:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9308:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18632,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "9341:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18701,
                        "src": "9334:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18631,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9334:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18634,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "9363:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18701,
                        "src": "9356:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18633,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "9356:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9273:102:101"
                  },
                  "returnParameters": {
                    "id": 18641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18640,
                        "mutability": "mutable",
                        "name": "expires",
                        "nameLocation": "9426:7:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18701,
                        "src": "9418:15:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9418:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9417:17:101"
                  },
                  "scope": 20510,
                  "src": "9259:699:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    17844
                  ],
                  "body": {
                    "id": 18803,
                    "nodeType": "Block",
                    "src": "10454:640:101",
                    "statements": [
                      {
                        "assignments": [
                          18713,
                          18715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18713,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "10473:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18803,
                            "src": "10465:17:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 18712,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10465:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18715,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "10492:6:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18803,
                            "src": "10484:14:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18714,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10484:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18720,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 18718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10517:1:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 18716,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18704,
                              "src": "10502:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 18717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10507:9:101",
                            "memberName": "readLabel",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16816,
                            "src": "10502:14:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32,uint256)"
                            }
                          },
                          "id": 18719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10502:17:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$",
                            "typeString": "tuple(bytes32,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10464:55:101"
                      },
                      {
                        "assignments": [
                          18722
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18722,
                            "mutability": "mutable",
                            "name": "parentNode",
                            "nameLocation": "10537:10:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18803,
                            "src": "10529:18:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 18721,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10529:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18727,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18725,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18715,
                              "src": "10564:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 18723,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18704,
                              "src": "10550:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 18724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10555:8:101",
                            "memberName": "namehash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16752,
                            "src": "10550:13:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 18726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10550:21:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10529:42:101"
                      },
                      {
                        "assignments": [
                          18729
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18729,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "10589:4:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18803,
                            "src": "10581:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 18728,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10581:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18734,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18731,
                              "name": "parentNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18722,
                              "src": "10606:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18732,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18713,
                              "src": "10618:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 18730,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "10596:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 18733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10596:32:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10581:47:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 18737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18735,
                            "name": "parentNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18722,
                            "src": "10643:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 18736,
                            "name": "ETH_NODE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18169,
                            "src": "10657:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "10643:22:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18742,
                        "nodeType": "IfStatement",
                        "src": "10639:80:101",
                        "trueBody": {
                          "id": 18741,
                          "nodeType": "Block",
                          "src": "10667:52:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 18738,
                                  "name": "IncompatibleParent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18107,
                                  "src": "10688:18:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 18739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10688:20:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18740,
                              "nodeType": "RevertStatement",
                              "src": "10681:27:101"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          18744
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18744,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "10737:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18803,
                            "src": "10729:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18743,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10729:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18749,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18747,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18729,
                              "src": "10755:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 18745,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18150,
                              "src": "10745:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 18746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10749:5:101",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12126,
                            "src": "10745:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 18748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10745:15:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10729:31:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 18753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 18750,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18744,
                              "src": "10775:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 18751,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10784:3:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10788:6:101",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "10784:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "10775:19:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "id": 18760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "10798:40:101",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 18756,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18744,
                                  "src": "10820:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 18757,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "10827:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 18758,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "10831:6:101",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "10827:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 18754,
                                  "name": "ens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18150,
                                  "src": "10799:3:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ENS_$12157",
                                    "typeString": "contract ENS"
                                  }
                                },
                                "id": 18755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "10803:16:101",
                                "memberName": "isApprovedForAll",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12156,
                                "src": "10799:20:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view external returns (bool)"
                                }
                              },
                              "id": 18759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10799:39:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10775:63:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18769,
                        "nodeType": "IfStatement",
                        "src": "10771:131:101",
                        "trueBody": {
                          "id": 18768,
                          "nodeType": "Block",
                          "src": "10840:62:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 18763,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18729,
                                    "src": "10874:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 18764,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "10880:3:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 18765,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "10884:6:101",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "10880:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18762,
                                  "name": "Unauthorised",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "10861:12:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) pure"
                                  }
                                },
                                "id": 18766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10861:30:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18767,
                              "nodeType": "RevertStatement",
                              "src": "10854:37:101"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18770,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18708,
                            "src": "10916:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 18773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10936:1:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 18772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10928:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 18771,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10928:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10928:10:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10916:22:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18784,
                        "nodeType": "IfStatement",
                        "src": "10912:84:101",
                        "trueBody": {
                          "id": 18783,
                          "nodeType": "Block",
                          "src": "10940:56:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 18779,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18729,
                                    "src": "10970:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 18780,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18708,
                                    "src": "10976:8:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18776,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18150,
                                    "src": "10954:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 18778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "10958:11:101",
                                  "memberName": "setResolver",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12098,
                                  "src": "10954:15:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) external"
                                  }
                                },
                                "id": 18781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10954:31:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18782,
                              "nodeType": "ExpressionStatement",
                              "src": "10954:31:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18788,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18729,
                              "src": "11019:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 18791,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "11033:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                ],
                                "id": 18790,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11025:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18789,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11025:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18792,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11025:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 18785,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18150,
                              "src": "11006:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 18787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11010:8:101",
                            "memberName": "setOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12105,
                            "src": "11006:12:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 18793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11006:33:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18794,
                        "nodeType": "ExpressionStatement",
                        "src": "11006:33:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18796,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18729,
                              "src": "11056:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18797,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18704,
                              "src": "11062:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "id": 18798,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18706,
                              "src": "11068:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 18799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11082:1:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "30",
                              "id": 18800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11085:1:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 18795,
                            "name": "_wrap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19950,
                            "src": "11050:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,address,uint32,uint64)"
                            }
                          },
                          "id": 18801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11050:37:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18802,
                        "nodeType": "ExpressionStatement",
                        "src": "11050:37:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18702,
                    "nodeType": "StructuredDocumentation",
                    "src": "9964:363:101",
                    "text": " @notice Wraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\n @dev Can be called by the owner in the registry or an authorised caller in the registry\n @param name The name to wrap, in DNS format\n @param wrappedOwner Owner of the name in this contract\n @param resolver Resolver contract"
                  },
                  "functionSelector": "eb8ae530",
                  "id": 18804,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrap",
                  "nameLocation": "10342:4:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18710,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10445:8:101"
                  },
                  "parameters": {
                    "id": 18709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18704,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "10371:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18804,
                        "src": "10356:19:101",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 18703,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10356:5:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18706,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "10393:12:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18804,
                        "src": "10385:20:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18705,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10385:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18708,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "10423:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18804,
                        "src": "10415:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10415:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10346:91:101"
                  },
                  "returnParameters": {
                    "id": 18711,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10454:0:101"
                  },
                  "scope": 20510,
                  "src": "10333:761:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17907
                  ],
                  "body": {
                    "id": 18867,
                    "nodeType": "Block",
                    "src": "11642:408:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18821,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18811,
                            "src": "11656:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 18824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11678:3:101",
                                "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": 18823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11670:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 18822,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11670:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18825,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11670:12:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11656:26:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18832,
                        "nodeType": "IfStatement",
                        "src": "11652:96:101",
                        "trueBody": {
                          "id": 18831,
                          "nodeType": "Block",
                          "src": "11684:64:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 18828,
                                    "name": "controller",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18811,
                                    "src": "11726:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18827,
                                  "name": "IncorrectTargetOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18129,
                                  "src": "11705:20:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 18829,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11705:32:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18830,
                              "nodeType": "RevertStatement",
                              "src": "11698:39:101"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18833,
                            "name": "registrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18809,
                            "src": "11761:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 18836,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "11783:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                  "typeString": "contract NameWrapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                  "typeString": "contract NameWrapper"
                                }
                              ],
                              "id": 18835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11775:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 18834,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11775:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11775:13:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11761:27:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18844,
                        "nodeType": "IfStatement",
                        "src": "11757:97:101",
                        "trueBody": {
                          "id": 18843,
                          "nodeType": "Block",
                          "src": "11790:64:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 18840,
                                    "name": "registrant",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18809,
                                    "src": "11832:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18839,
                                  "name": "IncorrectTargetOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18129,
                                  "src": "11811:20:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 18841,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11811:32:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18842,
                              "nodeType": "RevertStatement",
                              "src": "11804:39:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 18847,
                                  "name": "ETH_NODE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18169,
                                  "src": "11881:8:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 18848,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18807,
                                  "src": "11891:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 18846,
                                "name": "_makeNode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19807,
                                "src": "11871:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                                }
                              },
                              "id": 18849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11871:30:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18850,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18811,
                              "src": "11903:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18845,
                            "name": "_unwrap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20402,
                            "src": "11863:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 18851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11863:51:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18852,
                        "nodeType": "ExpressionStatement",
                        "src": "11863:51:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 18858,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "11972:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                ],
                                "id": 18857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11964:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18856,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11964:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11964:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18860,
                              "name": "registrant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18809,
                              "src": "11991:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 18863,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18807,
                                  "src": "12023:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 18862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12015:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 18861,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12015:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12015:18:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 18853,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18154,
                              "src": "11924:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                "typeString": "contract IBaseRegistrar"
                              }
                            },
                            "id": 18855,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11934:16:101",
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2436,
                            "src": "11924:26:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256) external"
                            }
                          },
                          "id": 18865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11924:119:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18866,
                        "nodeType": "ExpressionStatement",
                        "src": "11924:119:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18805,
                    "nodeType": "StructuredDocumentation",
                    "src": "11100:362:101",
                    "text": " @notice Unwraps a .eth domain. e.g. vitalik.eth\n @dev Can be called by the owner in the wrapper or an authorised caller in the wrapper\n @param labelhash Labelhash of the .eth domain\n @param registrant Sets the owner in the .eth registrar to this address\n @param controller Sets the owner in the registry to this address"
                  },
                  "functionSelector": "8b4dfa75",
                  "id": 18868,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 18816,
                              "name": "ETH_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18169,
                              "src": "11620:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18817,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18807,
                              "src": "11630:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 18815,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "11610:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 18818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11610:30:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 18819,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18814,
                        "name": "onlyTokenOwner",
                        "nameLocations": [
                          "11595:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18449,
                        "src": "11595:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11595:46:101"
                    }
                  ],
                  "name": "unwrapETH2LD",
                  "nameLocation": "11477:12:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18813,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11586:8:101"
                  },
                  "parameters": {
                    "id": 18812,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18807,
                        "mutability": "mutable",
                        "name": "labelhash",
                        "nameLocation": "11507:9:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18868,
                        "src": "11499:17:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18806,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11499:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18809,
                        "mutability": "mutable",
                        "name": "registrant",
                        "nameLocation": "11534:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18868,
                        "src": "11526:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18808,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11526:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18811,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "11562:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18868,
                        "src": "11554:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18810,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11554:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11489:89:101"
                  },
                  "returnParameters": {
                    "id": 18820,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11642:0:101"
                  },
                  "scope": 20510,
                  "src": "11468:582:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17898
                  ],
                  "body": {
                    "id": 18920,
                    "nodeType": "Block",
                    "src": "12702:295:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 18887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18885,
                            "name": "parentNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18871,
                            "src": "12716:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 18886,
                            "name": "ETH_NODE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18169,
                            "src": "12730:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12716:22:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18892,
                        "nodeType": "IfStatement",
                        "src": "12712:80:101",
                        "trueBody": {
                          "id": 18891,
                          "nodeType": "Block",
                          "src": "12740:52:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 18888,
                                  "name": "IncompatibleParent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18107,
                                  "src": "12761:18:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 18889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12761:20:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18890,
                              "nodeType": "RevertStatement",
                              "src": "12754:27:101"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 18898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 18893,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18875,
                              "src": "12805:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 18896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12827:3:101",
                                  "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": 18895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12819:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18894,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12819:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12819:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "12805:26:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 18904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 18899,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18875,
                              "src": "12835:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 18902,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "12857:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                ],
                                "id": 18901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12849:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18900,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12849:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18903,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12849:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "12835:27:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12805:57:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18911,
                        "nodeType": "IfStatement",
                        "src": "12801:127:101",
                        "trueBody": {
                          "id": 18910,
                          "nodeType": "Block",
                          "src": "12864:64:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 18907,
                                    "name": "controller",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18875,
                                    "src": "12906:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18906,
                                  "name": "IncorrectTargetOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18129,
                                  "src": "12885:20:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 18908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12885:32:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18909,
                              "nodeType": "RevertStatement",
                              "src": "12878:39:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 18914,
                                  "name": "parentNode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18871,
                                  "src": "12955:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 18915,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18873,
                                  "src": "12967:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 18913,
                                "name": "_makeNode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19807,
                                "src": "12945:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                                }
                              },
                              "id": 18916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12945:32:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18917,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18875,
                              "src": "12979:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18912,
                            "name": "_unwrap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20402,
                            "src": "12937:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 18918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12937:53:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18919,
                        "nodeType": "ExpressionStatement",
                        "src": "12937:53:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18869,
                    "nodeType": "StructuredDocumentation",
                    "src": "12056:470:101",
                    "text": " @notice Unwraps a non .eth domain, of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\n @dev Can be called by the owner in the wrapper or an authorised caller in the wrapper\n @param parentNode Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')\n @param labelhash Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')\n @param controller Sets the owner in the registry to this address"
                  },
                  "functionSelector": "d8c9921a",
                  "id": 18921,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 18880,
                              "name": "parentNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18871,
                              "src": "12678:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18881,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18873,
                              "src": "12690:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 18879,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "12668:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 18882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12668:32:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 18883,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18878,
                        "name": "onlyTokenOwner",
                        "nameLocations": [
                          "12653:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18449,
                        "src": "12653:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12653:48:101"
                    }
                  ],
                  "name": "unwrap",
                  "nameLocation": "12541:6:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18877,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "12644:8:101"
                  },
                  "parameters": {
                    "id": 18876,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18871,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "12565:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18921,
                        "src": "12557:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18870,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12557:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18873,
                        "mutability": "mutable",
                        "name": "labelhash",
                        "nameLocation": "12593:9:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18921,
                        "src": "12585:17:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18872,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12585:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18875,
                        "mutability": "mutable",
                        "name": "controller",
                        "nameLocation": "12620:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18921,
                        "src": "12612:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18874,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12612:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12547:89:101"
                  },
                  "returnParameters": {
                    "id": 18884,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12702:0:101"
                  },
                  "scope": 20510,
                  "src": "12532:465:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17916
                  ],
                  "body": {
                    "id": 18969,
                    "nodeType": "Block",
                    "src": "13360:260:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18939,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18924,
                              "src": "13399:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18940,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18926,
                              "src": "13405:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 18938,
                            "name": "_checkForParentCannotControl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20509,
                            "src": "13370:28:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint32_$returns$__$",
                              "typeString": "function (bytes32,uint32) view"
                            }
                          },
                          "id": 18941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13370:41:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18942,
                        "nodeType": "ExpressionStatement",
                        "src": "13370:41:101"
                      },
                      {
                        "assignments": [
                          18944,
                          18946,
                          18948
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18944,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "13431:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18969,
                            "src": "13423:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18943,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13423:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18946,
                            "mutability": "mutable",
                            "name": "oldFuses",
                            "nameLocation": "13445:8:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18969,
                            "src": "13438:15:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 18945,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "13438:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18948,
                            "mutability": "mutable",
                            "name": "expiry",
                            "nameLocation": "13462:6:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 18969,
                            "src": "13455:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 18947,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "13455:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18955,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 18952,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18924,
                                  "src": "13501:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 18951,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13493:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 18950,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13493:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13493:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18949,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18323
                            ],
                            "referencedDeclaration": 18323,
                            "src": "13472:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 18954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13472:44:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13422:94:101"
                      },
                      {
                        "expression": {
                          "id": 18958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18956,
                            "name": "fuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18926,
                            "src": "13527:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "id": 18957,
                            "name": "oldFuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18946,
                            "src": "13536:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "13527:17:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 18959,
                        "nodeType": "ExpressionStatement",
                        "src": "13527:17:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18961,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18924,
                              "src": "13564:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18962,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18944,
                              "src": "13570:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18963,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18926,
                              "src": "13577:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 18964,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18948,
                              "src": "13584:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 18960,
                            "name": "_setFuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20427,
                            "src": "13554:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,uint32,uint64)"
                            }
                          },
                          "id": 18965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13554:37:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18966,
                        "nodeType": "ExpressionStatement",
                        "src": "13554:37:101"
                      },
                      {
                        "expression": {
                          "id": 18967,
                          "name": "fuses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18926,
                          "src": "13608:5:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "functionReturnParameters": 18937,
                        "id": 18968,
                        "nodeType": "Return",
                        "src": "13601:12:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18922,
                    "nodeType": "StructuredDocumentation",
                    "src": "13003:182:101",
                    "text": " @notice Sets fuses of a name\n @param node Namehash of the name\n @param fuses Fuses to burn (cannot burn PARENT_CANNOT_CONTROL)\n @return New fuses"
                  },
                  "functionSelector": "c20a2eb0",
                  "id": 18970,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 18929,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18924,
                          "src": "13275:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 18930,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18928,
                        "name": "onlyTokenOwner",
                        "nameLocations": [
                          "13260:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18449,
                        "src": "13260:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13260:20:101"
                    },
                    {
                      "arguments": [
                        {
                          "id": 18932,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18924,
                          "src": "13306:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "id": 18933,
                          "name": "CANNOT_BURN_FUSES",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17764,
                          "src": "13312:17:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        }
                      ],
                      "id": 18934,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18931,
                        "name": "operationAllowed",
                        "nameLocations": [
                          "13289:16:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19537,
                        "src": "13289:16:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13289:41:101"
                    }
                  ],
                  "name": "setFuses",
                  "nameLocation": "13200:8:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18927,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18924,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "13217:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18970,
                        "src": "13209:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 18923,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13209:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18926,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "13230:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 18970,
                        "src": "13223:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18925,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13223:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13208:28:101"
                  },
                  "returnParameters": {
                    "id": 18937,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18936,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18970,
                        "src": "13348:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18935,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13348:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13347:8:101"
                  },
                  "scope": 20510,
                  "src": "13191:429:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19014,
                    "nodeType": "Block",
                    "src": "14111:331:101",
                    "statements": [
                      {
                        "assignments": [
                          18981
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18981,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "14129:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19014,
                            "src": "14121:17:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 18980,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "14121:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18988,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 18985,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18973,
                                  "src": "14157:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 18984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14151:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 18983,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14151:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14151:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 18982,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "14141:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 18987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14141:23:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14121:43:101"
                      },
                      {
                        "assignments": [
                          18990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18990,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "14182:4:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19014,
                            "src": "14174:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 18989,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "14174:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18995,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18992,
                              "name": "ETH_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18169,
                              "src": "14199:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 18993,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18981,
                              "src": "14209:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 18991,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "14189:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 18994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14189:30:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14174:45:101"
                      },
                      {
                        "assignments": [
                          18997,
                          18999
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18997,
                            "mutability": "mutable",
                            "name": "fuses",
                            "nameLocation": "14237:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19014,
                            "src": "14230:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 18996,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "14230:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18999,
                            "mutability": "mutable",
                            "name": "expiry",
                            "nameLocation": "14251:6:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19014,
                            "src": "14244:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 18998,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "14244:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19003,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19001,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18990,
                              "src": "14277:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19000,
                            "name": "_prepareUpgrade",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20039,
                            "src": "14261:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$_t_uint64_$",
                              "typeString": "function (bytes32) returns (uint32,uint64)"
                            }
                          },
                          "id": 19002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14261:21:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14229:53:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19007,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18973,
                              "src": "14333:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 19008,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18975,
                              "src": "14352:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19009,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18997,
                              "src": "14378:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19010,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18999,
                              "src": "14397:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 19011,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18977,
                              "src": "14417:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 19004,
                              "name": "upgradeContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18175,
                              "src": "14293:15:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                "typeString": "contract INameWrapperUpgrade"
                              }
                            },
                            "id": 19006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "14309:10:101",
                            "memberName": "wrapETH2LD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18062,
                            "src": "14293:26:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$_t_address_$returns$__$",
                              "typeString": "function (string memory,address,uint32,uint64,address) external"
                            }
                          },
                          "id": 19012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14293:142:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19013,
                        "nodeType": "ExpressionStatement",
                        "src": "14293:142:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18971,
                    "nodeType": "StructuredDocumentation",
                    "src": "13626:356:101",
                    "text": " @notice Upgrades a .eth wrapped domain by calling the wrapETH2LD function of the upgradeContract\n     and burning the token of this contract\n @dev Can be called by the owner of the name in this contract\n @param label Label as a string of the .eth name to upgrade\n @param wrappedOwner The owner of the wrapped name"
                  },
                  "functionSelector": "e72bf00f",
                  "id": 19015,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "upgradeETH2LD",
                  "nameLocation": "13997:13:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18978,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18973,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "14036:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19015,
                        "src": "14020:21:101",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 18972,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14020:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18975,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "14059:12:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19015,
                        "src": "14051:20:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18974,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14051:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18977,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "14089:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19015,
                        "src": "14081:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18976,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14081:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14010:93:101"
                  },
                  "returnParameters": {
                    "id": 18979,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14111:0:101"
                  },
                  "scope": 20510,
                  "src": "13988:454:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19063,
                    "nodeType": "Block",
                    "src": "15113:377:101",
                    "statements": [
                      {
                        "assignments": [
                          19028
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19028,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "15131:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19063,
                            "src": "15123:17:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19027,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15123:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19035,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19032,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19020,
                                  "src": "15159:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 19031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15153:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 19030,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15153:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15153:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 19029,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "15143:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 19034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15143:23:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15123:43:101"
                      },
                      {
                        "assignments": [
                          19037
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19037,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "15184:4:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19063,
                            "src": "15176:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19036,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15176:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19042,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19039,
                              "name": "parentNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19018,
                              "src": "15201:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19040,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19028,
                              "src": "15213:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19038,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "15191:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 19041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15191:32:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15176:47:101"
                      },
                      {
                        "assignments": [
                          19044,
                          19046
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19044,
                            "mutability": "mutable",
                            "name": "fuses",
                            "nameLocation": "15241:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19063,
                            "src": "15234:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 19043,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15234:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19046,
                            "mutability": "mutable",
                            "name": "expiry",
                            "nameLocation": "15255:6:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19063,
                            "src": "15248:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 19045,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "15248:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19050,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19048,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19037,
                              "src": "15281:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19047,
                            "name": "_prepareUpgrade",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20039,
                            "src": "15265:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$_t_uint64_$",
                              "typeString": "function (bytes32) returns (uint32,uint64)"
                            }
                          },
                          "id": 19049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15265:21:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15233:53:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19054,
                              "name": "parentNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19018,
                              "src": "15342:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19055,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19020,
                              "src": "15366:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 19056,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19022,
                              "src": "15385:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19057,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19024,
                              "src": "15411:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 19058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15433:1:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 19059,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19044,
                              "src": "15448:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19060,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19046,
                              "src": "15467:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "id": 19051,
                              "name": "upgradeContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18175,
                              "src": "15296:15:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                "typeString": "contract INameWrapperUpgrade"
                              }
                            },
                            "id": 19053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "15312:16:101",
                            "memberName": "setSubnodeRecord",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18049,
                            "src": "15296:32:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_string_memory_ptr_$_t_address_$_t_address_$_t_uint64_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,string memory,address,address,uint64,uint32,uint64) external"
                            }
                          },
                          "id": 19061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15296:187:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19062,
                        "nodeType": "ExpressionStatement",
                        "src": "15296:187:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19016,
                    "nodeType": "StructuredDocumentation",
                    "src": "14448:514:101",
                    "text": " @notice Upgrades a non .eth domain of any kind. Could be a DNSSEC name vitalik.xyz or a subdomain\n @dev Can be called by the owner or an authorised caller\n Requires upgraded Namewrapper to permit old Namewrapper to call `setSubnodeRecord` for all names\n @param parentNode Namehash of the parent name\n @param label Label as a string of the name to upgrade\n @param wrappedOwner Owner of the name in this contract\n @param resolver Resolver contract for this name"
                  },
                  "functionSelector": "ee7eba78",
                  "id": 19064,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "upgrade",
                  "nameLocation": "14977:7:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19018,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "15002:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19064,
                        "src": "14994:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19017,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14994:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19020,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "15038:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19064,
                        "src": "15022:21:101",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 19019,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15022:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19022,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "15061:12:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19064,
                        "src": "15053:20:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19021,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15053:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19024,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "15091:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19064,
                        "src": "15083:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19023,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15083:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14984:121:101"
                  },
                  "returnParameters": {
                    "id": 19026,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15113:0:101"
                  },
                  "scope": 20510,
                  "src": "14968:522:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17927
                  ],
                  "body": {
                    "id": 19203,
                    "nodeType": "Block",
                    "src": "16032:1318:101",
                    "statements": [
                      {
                        "assignments": [
                          19077
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19077,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "16050:4:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19203,
                            "src": "16042:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19076,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16042:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19082,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19079,
                              "name": "parentNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19067,
                              "src": "16067:10:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19080,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19069,
                              "src": "16079:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19078,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "16057:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 19081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16057:32:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16042:47:101"
                      },
                      {
                        "assignments": [
                          19084,
                          19086,
                          19088
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19084,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "16108:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19203,
                            "src": "16100:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19083,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16100:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19086,
                            "mutability": "mutable",
                            "name": "oldFuses",
                            "nameLocation": "16122:8:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19203,
                            "src": "16115:15:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 19085,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16115:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19088,
                            "mutability": "mutable",
                            "name": "oldExpiry",
                            "nameLocation": "16139:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19203,
                            "src": "16132:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 19087,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "16132:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19095,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19092,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19077,
                                  "src": "16181:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 19091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16173:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19090,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16173:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16173:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19089,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18323
                            ],
                            "referencedDeclaration": 18323,
                            "src": "16152:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 19094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16152:44:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16099:97:101"
                      },
                      {
                        "assignments": [
                          19097
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19097,
                            "mutability": "mutable",
                            "name": "maxExpiry",
                            "nameLocation": "16213:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19203,
                            "src": "16206:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 19096,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "16206:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19098,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16206:16:101"
                      },
                      {
                        "assignments": [
                          null,
                          19100,
                          19102
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 19100,
                            "mutability": "mutable",
                            "name": "parentFuses",
                            "nameLocation": "16242:11:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19203,
                            "src": "16235:18:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 19099,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16235:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19102,
                            "mutability": "mutable",
                            "name": "parentExpiry",
                            "nameLocation": "16262:12:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19203,
                            "src": "16255:19:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 19101,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "16255:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19109,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19106,
                                  "name": "parentNode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19067,
                                  "src": "16307:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 19105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16299:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19104,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16299:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16299:19:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19103,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18323
                            ],
                            "referencedDeclaration": 18323,
                            "src": "16278:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 19108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16278:50:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16232:96:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 19112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19110,
                            "name": "parentNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19067,
                            "src": "16342:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 19111,
                            "name": "ETH_NODE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18169,
                            "src": "16356:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "16342:22:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 19159,
                          "nodeType": "Block",
                          "src": "16652:247:101",
                          "statements": [
                            {
                              "condition": {
                                "id": 19146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "16670:47:101",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "id": 19142,
                                      "name": "parentNode",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19067,
                                      "src": "16694:10:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 19143,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "16706:3:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 19144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "16710:6:101",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "16706:10:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 19141,
                                    "name": "isTokenOwnerOrApproved",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18479,
                                    "src": "16671:22:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                      "typeString": "function (bytes32,address) view returns (bool)"
                                    }
                                  },
                                  "id": 19145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16671:46:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19154,
                              "nodeType": "IfStatement",
                              "src": "16666:123:101",
                              "trueBody": {
                                "id": 19153,
                                "nodeType": "Block",
                                "src": "16719:70:101",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 19148,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19077,
                                          "src": "16757:4:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 19149,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "16763:3:101",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 19150,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "16767:6:101",
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "16763:10:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 19147,
                                        "name": "Unauthorised",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18103,
                                        "src": "16744:12:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$returns$__$",
                                          "typeString": "function (bytes32,address) pure"
                                        }
                                      },
                                      "id": 19151,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16744:30:101",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 19152,
                                    "nodeType": "RevertStatement",
                                    "src": "16737:37:101"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 19157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19155,
                                  "name": "maxExpiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19097,
                                  "src": "16864:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 19156,
                                  "name": "parentExpiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19102,
                                  "src": "16876:12:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "16864:24:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 19158,
                              "nodeType": "ExpressionStatement",
                              "src": "16864:24:101"
                            }
                          ]
                        },
                        "id": 19160,
                        "nodeType": "IfStatement",
                        "src": "16338:561:101",
                        "trueBody": {
                          "id": 19140,
                          "nodeType": "Block",
                          "src": "16366:280:101",
                          "statements": [
                            {
                              "condition": {
                                "id": 19118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "16384:41:101",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "id": 19114,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19077,
                                      "src": "16408:4:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 19115,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "16414:3:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 19116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "16418:6:101",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "16414:10:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 19113,
                                    "name": "isTokenOwnerOrApproved",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18479,
                                    "src": "16385:22:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                      "typeString": "function (bytes32,address) view returns (bool)"
                                    }
                                  },
                                  "id": 19117,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16385:40:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19126,
                              "nodeType": "IfStatement",
                              "src": "16380:117:101",
                              "trueBody": {
                                "id": 19125,
                                "nodeType": "Block",
                                "src": "16427:70:101",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 19120,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19077,
                                          "src": "16465:4:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 19121,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "16471:3:101",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 19122,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "16475:6:101",
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "16471:10:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 19119,
                                        "name": "Unauthorised",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18103,
                                        "src": "16452:12:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$returns$__$",
                                          "typeString": "function (bytes32,address) pure"
                                        }
                                      },
                                      "id": 19123,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16452:30:101",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 19124,
                                    "nodeType": "RevertStatement",
                                    "src": "16445:37:101"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 19138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19127,
                                  "name": "maxExpiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19097,
                                  "src": "16574:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 19134,
                                              "name": "labelhash",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19069,
                                              "src": "16623:9:101",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            ],
                                            "id": 19133,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "16615:7:101",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 19132,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "16615:7:101",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 19135,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16615:18:101",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 19130,
                                          "name": "registrar",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18154,
                                          "src": "16593:9:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                            "typeString": "contract IBaseRegistrar"
                                          }
                                        },
                                        "id": 19131,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "16603:11:101",
                                        "memberName": "nameExpires",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 11185,
                                        "src": "16593:21:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256) view external returns (uint256)"
                                        }
                                      },
                                      "id": 19136,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16593:41:101",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 19129,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16586:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint64_$",
                                      "typeString": "type(uint64)"
                                    },
                                    "typeName": {
                                      "id": 19128,
                                      "name": "uint64",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16586:6:101",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 19137,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16586:49:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "16574:61:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 19139,
                              "nodeType": "ExpressionStatement",
                              "src": "16574:61:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19162,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19077,
                              "src": "16927:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19163,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19071,
                              "src": "16933:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19164,
                              "name": "parentFuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19100,
                              "src": "16940:11:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 19161,
                            "name": "_checkParentFuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20203,
                            "src": "16909:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint32_$_t_uint32_$returns$__$",
                              "typeString": "function (bytes32,uint32,uint32) pure"
                            }
                          },
                          "id": 19165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16909:43:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19166,
                        "nodeType": "ExpressionStatement",
                        "src": "16909:43:101"
                      },
                      {
                        "expression": {
                          "id": 19173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19167,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19073,
                            "src": "16963:6:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19169,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19073,
                                "src": "16989:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "id": 19170,
                                "name": "oldExpiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19088,
                                "src": "16997:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "id": 19171,
                                "name": "maxExpiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19097,
                                "src": "17008:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 19168,
                              "name": "_normaliseExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20292,
                              "src": "16972:16:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_uint64_$",
                                "typeString": "function (uint64,uint64,uint64) pure returns (uint64)"
                              }
                            },
                            "id": 19172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16972:46:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "16963:55:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 19174,
                        "nodeType": "ExpressionStatement",
                        "src": "16963:55:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 19179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 19177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19175,
                                "name": "oldFuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19086,
                                "src": "17121:8:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "id": 19176,
                                "name": "PARENT_CANNOT_CONTROL",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17779,
                                "src": "17132:21:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "17121:32:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 19178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17157:1:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "17121:37:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 19184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 19182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19180,
                                "name": "oldFuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19086,
                                "src": "17174:8:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "id": 19181,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19071,
                                "src": "17185:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "17174:16:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 19183,
                              "name": "oldFuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19086,
                              "src": "17194:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "17174:28:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17121:81:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19191,
                        "nodeType": "IfStatement",
                        "src": "17104:166:101",
                        "trueBody": {
                          "id": 19190,
                          "nodeType": "Block",
                          "src": "17213:57:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 19187,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19077,
                                    "src": "17254:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 19186,
                                  "name": "OperationProhibited",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16877,
                                  "src": "17234:19:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 19188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17234:25:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19189,
                              "nodeType": "RevertStatement",
                              "src": "17227:32:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 19194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19192,
                            "name": "fuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19071,
                            "src": "17279:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "id": 19193,
                            "name": "oldFuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19086,
                            "src": "17288:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "17279:17:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 19195,
                        "nodeType": "ExpressionStatement",
                        "src": "17279:17:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19197,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19077,
                              "src": "17316:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19198,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19084,
                              "src": "17322:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19199,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19071,
                              "src": "17329:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19200,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19073,
                              "src": "17336:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 19196,
                            "name": "_setFuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20427,
                            "src": "17306:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,uint32,uint64)"
                            }
                          },
                          "id": 19201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17306:37:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19202,
                        "nodeType": "ExpressionStatement",
                        "src": "17306:37:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19065,
                    "nodeType": "StructuredDocumentation",
                    "src": "15496:394:101",
                    "text": "/* @notice Sets fuses of a name that you own the parent of. Can also be called by the owner of a .eth name\n @param parentNode Parent namehash of the name e.g. vitalik.xyz would be namehash('xyz')\n @param labelhash Labelhash of the name, e.g. vitalik.xyz would be keccak256('vitalik')\n @param fuses Fuses to burn\n @param expiry When the fuses will expire"
                  },
                  "functionSelector": "33c69ea9",
                  "id": 19204,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setChildFuses",
                  "nameLocation": "15905:13:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19067,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "15936:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19204,
                        "src": "15928:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19066,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15928:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19069,
                        "mutability": "mutable",
                        "name": "labelhash",
                        "nameLocation": "15964:9:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19204,
                        "src": "15956:17:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19068,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15956:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19071,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "15990:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19204,
                        "src": "15983:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19070,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15983:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19073,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "16012:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19204,
                        "src": "16005:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19072,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "16005:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15918:106:101"
                  },
                  "returnParameters": {
                    "id": 19075,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16032:0:101"
                  },
                  "scope": 20510,
                  "src": "15896:1454:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17972
                  ],
                  "body": {
                    "id": 19293,
                    "nodeType": "Block",
                    "src": "18081:467:101",
                    "statements": [
                      {
                        "assignments": [
                          19233
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19233,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "18099:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19293,
                            "src": "18091:17:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19232,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "18091:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19240,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19237,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19209,
                                  "src": "18127:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 19236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18121:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 19235,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "18121:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18121:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 19234,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "18111:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 19239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18111:23:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18091:43:101"
                      },
                      {
                        "expression": {
                          "id": 19246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19241,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19230,
                            "src": "18144:4:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19243,
                                "name": "parentNode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19207,
                                "src": "18161:10:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 19244,
                                "name": "labelhash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19233,
                                "src": "18173:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 19242,
                              "name": "_makeNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19807,
                              "src": "18151:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                              }
                            },
                            "id": 19245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18151:32:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "18144:39:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 19247,
                        "nodeType": "ExpressionStatement",
                        "src": "18144:39:101"
                      },
                      {
                        "expression": {
                          "id": 19255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19248,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19215,
                            "src": "18193:6:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19250,
                                "name": "parentNode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19207,
                                "src": "18229:10:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 19251,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19230,
                                "src": "18241:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 19252,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19213,
                                "src": "18247:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 19253,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19215,
                                "src": "18254:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 19249,
                              "name": "_checkParentFusesAndExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20168,
                              "src": "18202:26:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_uint32_$_t_uint64_$returns$_t_uint64_$",
                                "typeString": "function (bytes32,bytes32,uint32,uint64) view returns (uint64)"
                              }
                            },
                            "id": 19254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18202:59:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "18193:68:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 19256,
                        "nodeType": "ExpressionStatement",
                        "src": "18193:68:101"
                      },
                      {
                        "condition": {
                          "id": 19260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "18276:16:101",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 19258,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19230,
                                "src": "18287:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 19257,
                              "name": "isWrapped",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19668,
                              "src": "18277:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                                "typeString": "function (bytes32) view returns (bool)"
                              }
                            },
                            "id": 19259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18277:15:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 19291,
                          "nodeType": "Block",
                          "src": "18459:83:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19283,
                                    "name": "parentNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19207,
                                    "src": "18485:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19284,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19230,
                                    "src": "18497:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19285,
                                    "name": "label",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19209,
                                    "src": "18503:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  },
                                  {
                                    "id": 19286,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19211,
                                    "src": "18510:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19287,
                                    "name": "fuses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19213,
                                    "src": "18517:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "id": 19288,
                                    "name": "expiry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19215,
                                    "src": "18524:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 19282,
                                  "name": "_updateName",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20122,
                                  "src": "18473:11:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes32,string memory,address,uint32,uint64)"
                                  }
                                },
                                "id": 19289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18473:58:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19290,
                              "nodeType": "ExpressionStatement",
                              "src": "18473:58:101"
                            }
                          ]
                        },
                        "id": 19292,
                        "nodeType": "IfStatement",
                        "src": "18272:270:101",
                        "trueBody": {
                          "id": 19281,
                          "nodeType": "Block",
                          "src": "18294:159:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19264,
                                    "name": "parentNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19207,
                                    "src": "18328:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19265,
                                    "name": "labelhash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19233,
                                    "src": "18340:9:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 19268,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "18359:4:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                          "typeString": "contract NameWrapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                          "typeString": "contract NameWrapper"
                                        }
                                      ],
                                      "id": 19267,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "18351:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 19266,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18351:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19269,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18351:13:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 19261,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18150,
                                    "src": "18308:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 19263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "18312:15:101",
                                  "memberName": "setSubnodeOwner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12091,
                                  "src": "18308:19:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                                  }
                                },
                                "id": 19270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18308:57:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 19271,
                              "nodeType": "ExpressionStatement",
                              "src": "18308:57:101"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19273,
                                    "name": "parentNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19207,
                                    "src": "18396:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19274,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19230,
                                    "src": "18408:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19275,
                                    "name": "label",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19209,
                                    "src": "18414:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  },
                                  {
                                    "id": 19276,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19211,
                                    "src": "18421:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19277,
                                    "name": "fuses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19213,
                                    "src": "18428:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "id": 19278,
                                    "name": "expiry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19215,
                                    "src": "18435:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 19272,
                                  "name": "_addLabelAndWrap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19983,
                                  "src": "18379:16:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes32,string memory,address,uint32,uint64)"
                                  }
                                },
                                "id": 19279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18379:63:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19280,
                              "nodeType": "ExpressionStatement",
                              "src": "18379:63:101"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19205,
                    "nodeType": "StructuredDocumentation",
                    "src": "17356:408:101",
                    "text": " @notice Sets the subdomain owner in the registry and then wraps the subdomain\n @param parentNode Parent namehash of the subdomain\n @param label Label of the subdomain as a string\n @param owner New owner in the wrapper\n @param fuses Initial fuses for the wrapped subdomain\n @param expiry When the fuses will expire\n @return node Namehash of the subdomain"
                  },
                  "functionSelector": "c658e086",
                  "id": 19294,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 19218,
                          "name": "parentNode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19207,
                          "src": "17966:10:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 19219,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19217,
                        "name": "onlyTokenOwner",
                        "nameLocations": [
                          "17951:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18449,
                        "src": "17951:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "17951:26:101"
                    },
                    {
                      "arguments": [
                        {
                          "id": 19221,
                          "name": "parentNode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19207,
                          "src": "18009:10:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19225,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19209,
                                  "src": "18037:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 19224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18031:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 19223,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "18031:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18031:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 19222,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "18021:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 19227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18021:23:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 19228,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19220,
                        "name": "canCallSetSubnodeOwner",
                        "nameLocations": [
                          "17986:22:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19609,
                        "src": "17986:22:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "17986:59:101"
                    }
                  ],
                  "name": "setSubnodeOwner",
                  "nameLocation": "17779:15:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19207,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "17812:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19294,
                        "src": "17804:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19206,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17804:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19209,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "17848:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19294,
                        "src": "17832:21:101",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 19208,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17832:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19211,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "17871:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19294,
                        "src": "17863:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17863:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19213,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "17893:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19294,
                        "src": "17886:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19212,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17886:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19215,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "17915:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19294,
                        "src": "17908:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19214,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "17908:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17794:133:101"
                  },
                  "returnParameters": {
                    "id": 19231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19230,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "18071:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19294,
                        "src": "18063:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19229,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "18063:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18062:14:101"
                  },
                  "scope": 20510,
                  "src": "17770:778:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17946
                  ],
                  "body": {
                    "id": 19402,
                    "nodeType": "Block",
                    "src": "19432:757:101",
                    "statements": [
                      {
                        "assignments": [
                          19327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19327,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "19450:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19402,
                            "src": "19442:17:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19326,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "19442:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19334,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19331,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19299,
                                  "src": "19478:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 19330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19472:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 19329,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19472:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19472:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 19328,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "19462:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 19333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19462:23:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19442:43:101"
                      },
                      {
                        "expression": {
                          "id": 19340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19335,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19324,
                            "src": "19495:4:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19337,
                                "name": "parentNode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19297,
                                "src": "19512:10:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 19338,
                                "name": "labelhash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19327,
                                "src": "19524:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 19336,
                              "name": "_makeNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19807,
                              "src": "19502:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                              }
                            },
                            "id": 19339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19502:32:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "19495:39:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 19341,
                        "nodeType": "ExpressionStatement",
                        "src": "19495:39:101"
                      },
                      {
                        "expression": {
                          "id": 19349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19342,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19309,
                            "src": "19544:6:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19344,
                                "name": "parentNode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19297,
                                "src": "19580:10:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 19345,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19324,
                                "src": "19592:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 19346,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19307,
                                "src": "19598:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 19347,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19309,
                                "src": "19605:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 19343,
                              "name": "_checkParentFusesAndExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20168,
                              "src": "19553:26:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_uint32_$_t_uint64_$returns$_t_uint64_$",
                                "typeString": "function (bytes32,bytes32,uint32,uint64) view returns (uint64)"
                              }
                            },
                            "id": 19348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19553:59:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "19544:68:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 19350,
                        "nodeType": "ExpressionStatement",
                        "src": "19544:68:101"
                      },
                      {
                        "condition": {
                          "id": 19354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "19626:16:101",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 19352,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19324,
                                "src": "19637:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 19351,
                              "name": "isWrapped",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19668,
                              "src": "19627:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                                "typeString": "function (bytes32) view returns (bool)"
                              }
                            },
                            "id": 19353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19627:15:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 19400,
                          "nodeType": "Block",
                          "src": "19919:264:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19381,
                                    "name": "parentNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19297,
                                    "src": "19971:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19382,
                                    "name": "labelhash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19327,
                                    "src": "19999:9:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 19385,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "20034:4:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                          "typeString": "contract NameWrapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                          "typeString": "contract NameWrapper"
                                        }
                                      ],
                                      "id": 19384,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "20026:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 19383,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20026:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19386,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "20026:13:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19387,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19303,
                                    "src": "20057:8:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19388,
                                    "name": "ttl",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19305,
                                    "src": "20083:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "id": 19378,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18150,
                                    "src": "19933:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 19380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "19937:16:101",
                                  "memberName": "setSubnodeRecord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12080,
                                  "src": "19933:20:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_address_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes32,address,address,uint64) external"
                                  }
                                },
                                "id": 19389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19933:167:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19390,
                              "nodeType": "ExpressionStatement",
                              "src": "19933:167:101"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19392,
                                    "name": "parentNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19297,
                                    "src": "20126:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19393,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19324,
                                    "src": "20138:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19394,
                                    "name": "label",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19299,
                                    "src": "20144:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "id": 19395,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19301,
                                    "src": "20151:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19396,
                                    "name": "fuses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19307,
                                    "src": "20158:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "id": 19397,
                                    "name": "expiry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19309,
                                    "src": "20165:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 19391,
                                  "name": "_updateName",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20122,
                                  "src": "20114:11:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes32,string memory,address,uint32,uint64)"
                                  }
                                },
                                "id": 19398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20114:58:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19399,
                              "nodeType": "ExpressionStatement",
                              "src": "20114:58:101"
                            }
                          ]
                        },
                        "id": 19401,
                        "nodeType": "IfStatement",
                        "src": "19622:561:101",
                        "trueBody": {
                          "id": 19377,
                          "nodeType": "Block",
                          "src": "19644:269:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19358,
                                    "name": "parentNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19297,
                                    "src": "19696:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19359,
                                    "name": "labelhash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19327,
                                    "src": "19724:9:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 19362,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "19759:4:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                          "typeString": "contract NameWrapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                          "typeString": "contract NameWrapper"
                                        }
                                      ],
                                      "id": 19361,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19751:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 19360,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19751:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19363,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19751:13:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19364,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19303,
                                    "src": "19782:8:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19365,
                                    "name": "ttl",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19305,
                                    "src": "19808:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "id": 19355,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18150,
                                    "src": "19658:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 19357,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "19662:16:101",
                                  "memberName": "setSubnodeRecord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12080,
                                  "src": "19658:20:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_address_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes32,address,address,uint64) external"
                                  }
                                },
                                "id": 19366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19658:167:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19367,
                              "nodeType": "ExpressionStatement",
                              "src": "19658:167:101"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19369,
                                    "name": "parentNode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19297,
                                    "src": "19856:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19370,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19324,
                                    "src": "19868:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19371,
                                    "name": "label",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19299,
                                    "src": "19874:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "id": 19372,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19301,
                                    "src": "19881:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19373,
                                    "name": "fuses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19307,
                                    "src": "19888:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "id": 19374,
                                    "name": "expiry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19309,
                                    "src": "19895:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 19368,
                                  "name": "_addLabelAndWrap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19983,
                                  "src": "19839:16:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,bytes32,string memory,address,uint32,uint64)"
                                  }
                                },
                                "id": 19375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19839:63:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19376,
                              "nodeType": "ExpressionStatement",
                              "src": "19839:63:101"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19295,
                    "nodeType": "StructuredDocumentation",
                    "src": "18554:516:101",
                    "text": " @notice Sets the subdomain owner in the registry with records and then wraps the subdomain\n @param parentNode parent namehash of the subdomain\n @param label label of the subdomain as a string\n @param owner new owner in the wrapper\n @param resolver resolver contract in the registry\n @param ttl ttl in the regsitry\n @param fuses initial fuses for the wrapped subdomain\n @param expiry expiry date for the domain\n @return node Namehash of the subdomain"
                  },
                  "functionSelector": "24c1af44",
                  "id": 19403,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 19312,
                          "name": "parentNode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19297,
                          "src": "19317:10:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 19313,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19311,
                        "name": "onlyTokenOwner",
                        "nameLocations": [
                          "19302:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18449,
                        "src": "19302:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19302:26:101"
                    },
                    {
                      "arguments": [
                        {
                          "id": 19315,
                          "name": "parentNode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19297,
                          "src": "19360:10:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19319,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19299,
                                  "src": "19388:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 19318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19382:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 19317,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19382:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19382:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 19316,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "19372:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 19321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19372:23:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 19322,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19314,
                        "name": "canCallSetSubnodeOwner",
                        "nameLocations": [
                          "19337:22:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19609,
                        "src": "19337:22:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19337:59:101"
                    }
                  ],
                  "name": "setSubnodeRecord",
                  "nameLocation": "19085:16:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19297,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "19119:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19403,
                        "src": "19111:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19296,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19111:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19299,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "19153:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19403,
                        "src": "19139:19:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 19298,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "19139:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19301,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "19176:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19403,
                        "src": "19168:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19300,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19168:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19303,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "19199:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19403,
                        "src": "19191:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19302,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19191:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19305,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "19224:3:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19403,
                        "src": "19217:10:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19304,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "19217:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19307,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "19244:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19403,
                        "src": "19237:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19306,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19237:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19309,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "19266:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19403,
                        "src": "19259:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19308,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "19259:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19101:177:101"
                  },
                  "returnParameters": {
                    "id": 19325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19324,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "19422:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19403,
                        "src": "19414:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19323,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19414:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19413:14:101"
                  },
                  "scope": 20510,
                  "src": "19076:1113:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17957
                  ],
                  "body": {
                    "id": 19459,
                    "nodeType": "Block",
                    "src": "20769:181:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19430,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19406,
                              "src": "20793:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 19433,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "20807:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                ],
                                "id": 19432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20799:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 19431,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20799:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20799:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19435,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19410,
                              "src": "20814:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19436,
                              "name": "ttl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19412,
                              "src": "20824:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "id": 19427,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18150,
                              "src": "20779:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 19429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20783:9:101",
                            "memberName": "setRecord",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12067,
                            "src": "20779:13:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint64) external"
                            }
                          },
                          "id": 19437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20779:49:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19438,
                        "nodeType": "ExpressionStatement",
                        "src": "20779:49:101"
                      },
                      {
                        "assignments": [
                          19440,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19440,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "20847:8:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19459,
                            "src": "20839:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19439,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "20839:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 19447,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19444,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19406,
                                  "src": "20879:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 19443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20871:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19442,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20871:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20871:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19441,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18323
                            ],
                            "referencedDeclaration": 18323,
                            "src": "20863:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 19446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20863:22:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20838:47:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19449,
                              "name": "oldOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19440,
                              "src": "20905:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19450,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19408,
                              "src": "20915:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 19453,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19406,
                                  "src": "20930:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 19452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20922:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19451,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20922:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20922:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 19455,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20937:1:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "hexValue": "",
                              "id": 19456,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20940:2:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 19448,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17609,
                            "src": "20895:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 19457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20895:48:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19458,
                        "nodeType": "ExpressionStatement",
                        "src": "20895:48:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19404,
                    "nodeType": "StructuredDocumentation",
                    "src": "20195:266:101",
                    "text": " @notice Sets records for the name in the ENS Registry\n @param node Namehash of the name to set a record for\n @param owner New owner in the registry\n @param resolver Resolver contract\n @param ttl Time to live in the registry"
                  },
                  "functionSelector": "cf408823",
                  "id": 19460,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 19416,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19406,
                          "src": "20638:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 19417,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19415,
                        "name": "onlyTokenOwner",
                        "nameLocations": [
                          "20623:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18449,
                        "src": "20623:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "20623:20:101"
                    },
                    {
                      "arguments": [
                        {
                          "id": 19419,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19406,
                          "src": "20682:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 19424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 19422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 19420,
                              "name": "CANNOT_TRANSFER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17767,
                              "src": "20700:15:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "id": 19421,
                              "name": "CANNOT_SET_RESOLVER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17770,
                              "src": "20718:19:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "20700:37:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "|",
                          "rightExpression": {
                            "id": 19423,
                            "name": "CANNOT_SET_TTL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17773,
                            "src": "20740:14:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "20700:54:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        }
                      ],
                      "id": 19425,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19418,
                        "name": "operationAllowed",
                        "nameLocations": [
                          "20652:16:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19537,
                        "src": "20652:16:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "20652:112:101"
                    }
                  ],
                  "name": "setRecord",
                  "nameLocation": "20476:9:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19414,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "20606:8:101"
                  },
                  "parameters": {
                    "id": 19413,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19406,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "20503:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19460,
                        "src": "20495:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19405,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "20495:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19408,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "20525:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19460,
                        "src": "20517:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19407,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20517:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19410,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "20548:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19460,
                        "src": "20540:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19409,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20540:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19412,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "20573:3:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19460,
                        "src": "20566:10:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19411,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "20566:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20485:97:101"
                  },
                  "returnParameters": {
                    "id": 19426,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20769:0:101"
                  },
                  "scope": 20510,
                  "src": "20467:483:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17988
                  ],
                  "body": {
                    "id": 19483,
                    "nodeType": "Block",
                    "src": "21282:48:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19479,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19463,
                              "src": "21308:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19480,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19465,
                              "src": "21314:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 19476,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18150,
                              "src": "21292:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 19478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "21296:11:101",
                            "memberName": "setResolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12098,
                            "src": "21292:15:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 19481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21292:31:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19482,
                        "nodeType": "ExpressionStatement",
                        "src": "21292:31:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19461,
                    "nodeType": "StructuredDocumentation",
                    "src": "20956:150:101",
                    "text": " @notice Sets resolver contract in the registry\n @param node namehash of the name\n @param resolver the resolver contract"
                  },
                  "functionSelector": "1896f70a",
                  "id": 19484,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 19469,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19463,
                          "src": "21220:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 19470,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19468,
                        "name": "onlyTokenOwner",
                        "nameLocations": [
                          "21205:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18449,
                        "src": "21205:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "21205:20:101"
                    },
                    {
                      "arguments": [
                        {
                          "id": 19472,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19463,
                          "src": "21251:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "id": 19473,
                          "name": "CANNOT_SET_RESOLVER",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17770,
                          "src": "21257:19:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        }
                      ],
                      "id": 19474,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19471,
                        "name": "operationAllowed",
                        "nameLocations": [
                          "21234:16:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19537,
                        "src": "21234:16:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "21234:43:101"
                    }
                  ],
                  "name": "setResolver",
                  "nameLocation": "21121:11:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19467,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "21188:8:101"
                  },
                  "parameters": {
                    "id": 19466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19463,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "21141:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19484,
                        "src": "21133:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19462,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "21133:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19465,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "21155:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19484,
                        "src": "21147:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19464,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21147:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21132:32:101"
                  },
                  "returnParameters": {
                    "id": 19475,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21282:0:101"
                  },
                  "scope": 20510,
                  "src": "21112:218:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17995
                  ],
                  "body": {
                    "id": 19507,
                    "nodeType": "Block",
                    "src": "21625:38:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19503,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19487,
                              "src": "21646:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19504,
                              "name": "ttl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19489,
                              "src": "21652:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "id": 19500,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18150,
                              "src": "21635:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 19502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "21639:6:101",
                            "memberName": "setTTL",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12112,
                            "src": "21635:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,uint64) external"
                            }
                          },
                          "id": 19505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21635:21:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19506,
                        "nodeType": "ExpressionStatement",
                        "src": "21635:21:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19485,
                    "nodeType": "StructuredDocumentation",
                    "src": "21336:129:101",
                    "text": " @notice Sets TTL in the registry\n @param node Namehash of the name\n @param ttl TTL in the registry"
                  },
                  "functionSelector": "14ab9038",
                  "id": 19508,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 19493,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19487,
                          "src": "21568:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 19494,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19492,
                        "name": "onlyTokenOwner",
                        "nameLocations": [
                          "21553:14:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 18449,
                        "src": "21553:14:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "21553:20:101"
                    },
                    {
                      "arguments": [
                        {
                          "id": 19496,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19487,
                          "src": "21599:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "id": 19497,
                          "name": "CANNOT_SET_TTL",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17773,
                          "src": "21605:14:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        }
                      ],
                      "id": 19498,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19495,
                        "name": "operationAllowed",
                        "nameLocations": [
                          "21582:16:101"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19537,
                        "src": "21582:16:101"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "21582:38:101"
                    }
                  ],
                  "name": "setTTL",
                  "nameLocation": "21480:6:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19491,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "21536:8:101"
                  },
                  "parameters": {
                    "id": 19490,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19487,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "21495:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19508,
                        "src": "21487:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19486,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "21487:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19489,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "21508:3:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19508,
                        "src": "21501:10:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19488,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "21501:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21486:26:101"
                  },
                  "returnParameters": {
                    "id": 19499,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21625:0:101"
                  },
                  "scope": 20510,
                  "src": "21471:192:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19536,
                    "nodeType": "Block",
                    "src": "21953:164:101",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          19516,
                          null
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 19516,
                            "mutability": "mutable",
                            "name": "fuses",
                            "nameLocation": "21973:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19536,
                            "src": "21966:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 19515,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "21966:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 19523,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19520,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19511,
                                  "src": "22000:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 19519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21992:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19518,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21992:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21992:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19517,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18323
                            ],
                            "referencedDeclaration": 18323,
                            "src": "21984:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 19522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21984:22:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21963:43:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 19528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 19526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 19524,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19516,
                              "src": "22020:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 19525,
                              "name": "fuseMask",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19513,
                              "src": "22028:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "22020:16:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 19527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22040:1:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "22020:21:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19534,
                        "nodeType": "IfStatement",
                        "src": "22016:84:101",
                        "trueBody": {
                          "id": 19533,
                          "nodeType": "Block",
                          "src": "22043:57:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 19530,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19511,
                                    "src": "22084:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 19529,
                                  "name": "OperationProhibited",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16877,
                                  "src": "22064:19:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 19531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22064:25:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19532,
                              "nodeType": "RevertStatement",
                              "src": "22057:32:101"
                            }
                          ]
                        }
                      },
                      {
                        "id": 19535,
                        "nodeType": "PlaceholderStatement",
                        "src": "22109:1:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19509,
                    "nodeType": "StructuredDocumentation",
                    "src": "21669:221:101",
                    "text": " @dev Allows an operation only if none of the specified fuses are burned.\n @param node The namehash of the name to check fuses on.\n @param fuseMask A bitmask of fuses that must not be burned."
                  },
                  "id": 19537,
                  "name": "operationAllowed",
                  "nameLocation": "21905:16:101",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 19514,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19511,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "21930:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19537,
                        "src": "21922:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19510,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "21922:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19513,
                        "mutability": "mutable",
                        "name": "fuseMask",
                        "nameLocation": "21943:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19537,
                        "src": "21936:15:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19512,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "21936:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21921:31:101"
                  },
                  "src": "21896:221:101",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19608,
                    "nodeType": "Block",
                    "src": "22720:555:101",
                    "statements": [
                      {
                        "assignments": [
                          19545
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19545,
                            "mutability": "mutable",
                            "name": "subnode",
                            "nameLocation": "22738:7:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19608,
                            "src": "22730:15:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19544,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "22730:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19550,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19547,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19540,
                              "src": "22758:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19548,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19542,
                              "src": "22764:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19546,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "22748:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 19549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22748:26:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22730:44:101"
                      },
                      {
                        "assignments": [
                          19552
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19552,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "22792:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19608,
                            "src": "22784:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19551,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "22784:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19557,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19555,
                              "name": "subnode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19545,
                              "src": "22810:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 19553,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18150,
                              "src": "22800:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 19554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "22804:5:101",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12126,
                            "src": "22800:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 19556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22800:18:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22784:34:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19558,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19552,
                            "src": "22833:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 19561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22850:1:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 19560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22842:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 19559,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "22842:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22842:10:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "22833:19:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 19605,
                          "nodeType": "Block",
                          "src": "23051:206:101",
                          "statements": [
                            {
                              "assignments": [
                                null,
                                19586,
                                null
                              ],
                              "declarations": [
                                null,
                                {
                                  "constant": false,
                                  "id": 19586,
                                  "mutability": "mutable",
                                  "name": "subnodeFuses",
                                  "nameLocation": "23075:12:101",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19605,
                                  "src": "23068:19:101",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 19585,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23068:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 19593,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 19590,
                                        "name": "subnode",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19545,
                                        "src": "23109:7:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 19589,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23101:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 19588,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23101:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23101:16:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19587,
                                  "name": "getData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    18323
                                  ],
                                  "referencedDeclaration": 18323,
                                  "src": "23093:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                                    "typeString": "function (uint256) view returns (address,uint32,uint64)"
                                  }
                                },
                                "id": 19592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23093:25:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                                  "typeString": "tuple(address,uint32,uint64)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "23065:53:101"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 19598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 19596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 19594,
                                    "name": "subnodeFuses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19586,
                                    "src": "23136:12:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "id": 19595,
                                    "name": "PARENT_CANNOT_CONTROL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17779,
                                    "src": "23151:21:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "23136:36:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 19597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23176:1:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "23136:41:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19604,
                              "nodeType": "IfStatement",
                              "src": "23132:115:101",
                              "trueBody": {
                                "id": 19603,
                                "nodeType": "Block",
                                "src": "23179:68:101",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 19600,
                                          "name": "subnode",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19545,
                                          "src": "23224:7:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 19599,
                                        "name": "OperationProhibited",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16877,
                                        "src": "23204:19:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                          "typeString": "function (bytes32) pure"
                                        }
                                      },
                                      "id": 19601,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "23204:28:101",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 19602,
                                    "nodeType": "RevertStatement",
                                    "src": "23197:35:101"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 19606,
                        "nodeType": "IfStatement",
                        "src": "22829:428:101",
                        "trueBody": {
                          "id": 19584,
                          "nodeType": "Block",
                          "src": "22854:191:101",
                          "statements": [
                            {
                              "assignments": [
                                null,
                                19565,
                                null
                              ],
                              "declarations": [
                                null,
                                {
                                  "constant": false,
                                  "id": 19565,
                                  "mutability": "mutable",
                                  "name": "fuses",
                                  "nameLocation": "22878:5:101",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19584,
                                  "src": "22871:12:101",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 19564,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22871:6:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 19572,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 19569,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19540,
                                        "src": "22905:4:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 19568,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "22897:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 19567,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22897:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22897:13:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19566,
                                  "name": "getData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    18323
                                  ],
                                  "referencedDeclaration": 18323,
                                  "src": "22889:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                                    "typeString": "function (uint256) view returns (address,uint32,uint64)"
                                  }
                                },
                                "id": 19571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22889:22:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                                  "typeString": "tuple(address,uint32,uint64)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "22868:43:101"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 19577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 19575,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 19573,
                                    "name": "fuses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19565,
                                    "src": "22929:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "id": 19574,
                                    "name": "CANNOT_CREATE_SUBDOMAIN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17776,
                                    "src": "22937:23:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "22929:31:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 19576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22964:1:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "22929:36:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19583,
                              "nodeType": "IfStatement",
                              "src": "22925:110:101",
                              "trueBody": {
                                "id": 19582,
                                "nodeType": "Block",
                                "src": "22967:68:101",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 19579,
                                          "name": "subnode",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19545,
                                          "src": "23012:7:101",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 19578,
                                        "name": "OperationProhibited",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16877,
                                        "src": "22992:19:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                          "typeString": "function (bytes32) pure"
                                        }
                                      },
                                      "id": 19580,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22992:28:101",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 19581,
                                    "nodeType": "RevertStatement",
                                    "src": "22985:35:101"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "id": 19607,
                        "nodeType": "PlaceholderStatement",
                        "src": "23267:1:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19538,
                    "nodeType": "StructuredDocumentation",
                    "src": "22123:526:101",
                    "text": " @notice Check whether a name can call setSubnodeOwner/setSubnodeRecord\n @dev Checks both CANNOT_CREATE_SUBDOMAIN and PARENT_CANNOT_CONTROL and whether not they have been burnt\n      and checks whether the owner of the subdomain is 0x0 for creating or already exists for\n      replacing a subdomain. If either conditions are true, then it is possible to call\n      setSubnodeOwner\n @param node Namehash of the name to check\n @param labelhash Labelhash of the name to check"
                  },
                  "id": 19609,
                  "name": "canCallSetSubnodeOwner",
                  "nameLocation": "22664:22:101",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 19543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19540,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "22695:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19609,
                        "src": "22687:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19539,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "22687:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19542,
                        "mutability": "mutable",
                        "name": "labelhash",
                        "nameLocation": "22709:9:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19609,
                        "src": "22701:17:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19541,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "22701:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22686:33:101"
                  },
                  "src": "22655:620:101",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    18022
                  ],
                  "body": {
                    "id": 19635,
                    "nodeType": "Block",
                    "src": "23659:105:101",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          19621,
                          null
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 19621,
                            "mutability": "mutable",
                            "name": "fuses",
                            "nameLocation": "23679:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19635,
                            "src": "23672:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 19620,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "23672:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 19628,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19625,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19612,
                                  "src": "23706:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 19624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "23698:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19623,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "23698:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23698:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19622,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18323
                            ],
                            "referencedDeclaration": 18323,
                            "src": "23690:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 19627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23690:22:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23669:43:101"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 19633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 19631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 19629,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19621,
                              "src": "23729:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 19630,
                              "name": "fuseMask",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19614,
                              "src": "23737:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "23729:16:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 19632,
                            "name": "fuseMask",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19614,
                            "src": "23749:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "23729:28:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 19619,
                        "id": 19634,
                        "nodeType": "Return",
                        "src": "23722:35:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19610,
                    "nodeType": "StructuredDocumentation",
                    "src": "23281:245:101",
                    "text": " @notice Checks all Fuses in the mask are burned for the node\n @param node Namehash of the name\n @param fuseMask The fuses you want to check\n @return Boolean of whether or not all the selected fuses are burned"
                  },
                  "functionSelector": "adf4960a",
                  "id": 19636,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allFusesBurned",
                  "nameLocation": "23541:14:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19616,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "23623:8:101"
                  },
                  "parameters": {
                    "id": 19615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19612,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "23564:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19636,
                        "src": "23556:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19611,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "23556:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19614,
                        "mutability": "mutable",
                        "name": "fuseMask",
                        "nameLocation": "23577:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19636,
                        "src": "23570:15:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19613,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "23570:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23555:31:101"
                  },
                  "returnParameters": {
                    "id": 19619,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19618,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19636,
                        "src": "23649:4:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19617,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23649:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23648:6:101"
                  },
                  "scope": 20510,
                  "src": "23532:232:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    18029
                  ],
                  "body": {
                    "id": 19667,
                    "nodeType": "Block",
                    "src": "24114:120:101",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 19655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 19648,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19639,
                                      "src": "24159:4:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 19647,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24151:7:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 19646,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24151:7:101",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 19649,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24151:13:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 19645,
                                "name": "ownerOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  18302
                                ],
                                "referencedDeclaration": 18302,
                                "src": "24143:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                  "typeString": "function (uint256) view returns (address)"
                                }
                              },
                              "id": 19650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24143:22:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 19653,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24177:1:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 19652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24169:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 19651,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24169:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24169:10:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "24143:36:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 19664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 19658,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19639,
                                  "src": "24205:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 19656,
                                  "name": "ens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18150,
                                  "src": "24195:3:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ENS_$12157",
                                    "typeString": "contract ENS"
                                  }
                                },
                                "id": 19657,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "24199:5:101",
                                "memberName": "owner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12126,
                                "src": "24195:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                  "typeString": "function (bytes32) view external returns (address)"
                                }
                              },
                              "id": 19659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24195:15:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 19662,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "24222:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                ],
                                "id": 19661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24214:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 19660,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24214:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24214:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "24195:32:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "24143:84:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 19644,
                        "id": 19666,
                        "nodeType": "Return",
                        "src": "24124:103:101"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19637,
                    "nodeType": "StructuredDocumentation",
                    "src": "23770:269:101",
                    "text": " @notice Checks if a name is wrapped or not\n @dev Both of these checks need to be true to be considered wrapped if checked without this contract\n @param node Namehash of the name\n @return Boolean of whether or not the name is wrapped"
                  },
                  "functionSelector": "fd0cd0d9",
                  "id": 19668,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isWrapped",
                  "nameLocation": "24054:9:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19641,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24090:8:101"
                  },
                  "parameters": {
                    "id": 19640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19639,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "24072:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19668,
                        "src": "24064:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19638,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "24064:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24063:14:101"
                  },
                  "returnParameters": {
                    "id": 19644,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19643,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19668,
                        "src": "24108:4:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19642,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24108:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24107:6:101"
                  },
                  "scope": 20510,
                  "src": "24045:189:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2510
                  ],
                  "body": {
                    "id": 19773,
                    "nodeType": "Block",
                    "src": "24396:871:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 19682,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "24459:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 19683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "24463:6:101",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "24459:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 19686,
                                "name": "registrar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18154,
                                "src": "24481:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                  "typeString": "contract IBaseRegistrar"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                  "typeString": "contract IBaseRegistrar"
                                }
                              ],
                              "id": 19685,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24473:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 19684,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "24473:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24473:18:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "24459:32:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19693,
                        "nodeType": "IfStatement",
                        "src": "24455:90:101",
                        "trueBody": {
                          "id": 19692,
                          "nodeType": "Block",
                          "src": "24493:52:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 19689,
                                  "name": "IncorrectTokenType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18113,
                                  "src": "24514:18:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 19690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24514:20:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19691,
                              "nodeType": "RevertStatement",
                              "src": "24507:27:101"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          19695,
                          19697,
                          19699,
                          19701,
                          19703
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19695,
                            "mutability": "mutable",
                            "name": "label",
                            "nameLocation": "24583:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19773,
                            "src": "24569:19:101",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 19694,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "24569:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19697,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "24610:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19773,
                            "src": "24602:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19696,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "24602:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19699,
                            "mutability": "mutable",
                            "name": "fuses",
                            "nameLocation": "24636:5:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19773,
                            "src": "24629:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 19698,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "24629:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19701,
                            "mutability": "mutable",
                            "name": "expiry",
                            "nameLocation": "24662:6:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19773,
                            "src": "24655:13:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 19700,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "24655:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19703,
                            "mutability": "mutable",
                            "name": "resolver",
                            "nameLocation": "24690:8:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19773,
                            "src": "24682:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19702,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "24682:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19719,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19706,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19676,
                              "src": "24722:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 19708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "24729:6:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 19707,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "24729:6:101",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "24737:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19709,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "24737:7:101",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19712,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "24746:6:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 19711,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "24746:6:101",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19714,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "24754:6:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  },
                                  "typeName": {
                                    "id": 19713,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "24754:6:101",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "24762:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19715,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "24762:7:101",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 19717,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "24728:42:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_string_storage_ptr_$_$_t_type$_t_address_$_$_t_type$_t_uint32_$_$_t_type$_t_uint64_$_$_t_type$_t_address_$_$",
                                "typeString": "tuple(type(string storage pointer),type(address),type(uint32),type(uint64),type(address))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_string_storage_ptr_$_$_t_type$_t_address_$_$_t_type$_t_uint32_$_$_t_type$_t_uint64_$_$_t_type$_t_address_$_$",
                                "typeString": "tuple(type(string storage pointer),type(address),type(uint32),type(uint64),type(address))"
                              }
                            ],
                            "expression": {
                              "id": 19704,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "24711:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "24715:6:101",
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "24711:10:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 19718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24711:60:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_address_payable_$_t_uint32_$_t_uint64_$_t_address_payable_$",
                            "typeString": "tuple(string memory,address payable,uint32,uint64,address payable)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24555:216:101"
                      },
                      {
                        "assignments": [
                          19721
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19721,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "24790:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19773,
                            "src": "24782:17:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19720,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "24782:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19726,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19724,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19674,
                              "src": "24810:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "24802:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 19722,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "24802:7:101",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 19725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24802:16:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24782:36:101"
                      },
                      {
                        "assignments": [
                          19728
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19728,
                            "mutability": "mutable",
                            "name": "labelhashFromData",
                            "nameLocation": "24836:17:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19773,
                            "src": "24828:25:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19727,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "24828:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19735,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19732,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19695,
                                  "src": "24872:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 19731,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24866:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 19730,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24866:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24866:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 19729,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "24856:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 19734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24856:23:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24828:51:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 19738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19736,
                            "name": "labelhashFromData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19728,
                            "src": "24894:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 19737,
                            "name": "labelhash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19721,
                            "src": "24915:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "24894:30:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19745,
                        "nodeType": "IfStatement",
                        "src": "24890:111:101",
                        "trueBody": {
                          "id": 19744,
                          "nodeType": "Block",
                          "src": "24926:75:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 19740,
                                    "name": "labelhashFromData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19728,
                                    "src": "24961:17:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 19741,
                                    "name": "labelhash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19721,
                                    "src": "24980:9:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 19739,
                                  "name": "LabelMismatch",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18119,
                                  "src": "24947:13:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32,bytes32) pure"
                                  }
                                },
                                "id": 19742,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24947:43:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19743,
                              "nodeType": "RevertStatement",
                              "src": "24940:50:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19751,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19721,
                                  "src": "25110:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 19750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "25102:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19749,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "25102:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25102:18:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 19755,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "25130:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameWrapper_$20510",
                                    "typeString": "contract NameWrapper"
                                  }
                                ],
                                "id": 19754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "25122:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 19753,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "25122:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25122:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 19746,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18154,
                              "src": "25084:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                "typeString": "contract IBaseRegistrar"
                              }
                            },
                            "id": 19748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25094:7:101",
                            "memberName": "reclaim",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11221,
                            "src": "25084:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address) external"
                            }
                          },
                          "id": 19757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25084:52:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19758,
                        "nodeType": "ExpressionStatement",
                        "src": "25084:52:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19760,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19695,
                              "src": "25159:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 19761,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19697,
                              "src": "25166:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19762,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19699,
                              "src": "25173:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19763,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19701,
                              "src": "25180:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 19764,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19703,
                              "src": "25188:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19759,
                            "name": "_wrapETH2LD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20365,
                            "src": "25147:11:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$_t_address_$returns$_t_uint64_$",
                              "typeString": "function (string memory,address,uint32,uint64,address) returns (uint64)"
                            }
                          },
                          "id": 19765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25147:50:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 19766,
                        "nodeType": "ExpressionStatement",
                        "src": "25147:50:101"
                      },
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 19768,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19670,
                                  "src": "25231:2:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 19767,
                                "name": "IERC721Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2511,
                                "src": "25215:15:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$2511_$",
                                  "typeString": "type(contract IERC721Receiver)"
                                }
                              },
                              "id": 19769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25215:19:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC721Receiver_$2511",
                                "typeString": "contract IERC721Receiver"
                              }
                            },
                            "id": 19770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25235:16:101",
                            "memberName": "onERC721Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2510,
                            "src": "25215:36:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 19771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "25252:8:101",
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "25215:45:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 19681,
                        "id": 19772,
                        "nodeType": "Return",
                        "src": "25208:52:101"
                      }
                    ]
                  },
                  "functionSelector": "150b7a02",
                  "id": 19774,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC721Received",
                  "nameLocation": "24249:16:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19678,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24370:8:101"
                  },
                  "parameters": {
                    "id": 19677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19670,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "24283:2:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19774,
                        "src": "24275:10:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24275:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19672,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19774,
                        "src": "24295:7:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19671,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24295:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19674,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "24320:7:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19774,
                        "src": "24312:15:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19673,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24312:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19676,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "24352:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19774,
                        "src": "24337:19:101",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19675,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "24337:5:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24265:97:101"
                  },
                  "returnParameters": {
                    "id": 19681,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19680,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19774,
                        "src": "24388:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 19679,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "24388:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24387:8:101"
                  },
                  "scope": 20510,
                  "src": "24240:1027:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    17386
                  ],
                  "body": {
                    "id": 19788,
                    "nodeType": "Block",
                    "src": "25381:52:101",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 19786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 19784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 19782,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19776,
                              "src": "25398:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 19783,
                              "name": "CANNOT_TRANSFER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17767,
                              "src": "25406:15:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "25398:23:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 19785,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25425:1:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "25398:28:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 19781,
                        "id": 19787,
                        "nodeType": "Return",
                        "src": "25391:35:101"
                      }
                    ]
                  },
                  "id": 19789,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_canTransfer",
                  "nameLocation": "25316:12:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19778,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "25357:8:101"
                  },
                  "parameters": {
                    "id": 19777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19776,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "25336:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19789,
                        "src": "25329:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19775,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "25329:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25328:14:101"
                  },
                  "returnParameters": {
                    "id": 19781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19780,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19789,
                        "src": "25375:4:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19779,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25375:4:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25374:6:101"
                  },
                  "scope": 20510,
                  "src": "25307:126:101",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19806,
                    "nodeType": "Block",
                    "src": "25550:68:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19801,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19791,
                                  "src": "25594:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 19802,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19793,
                                  "src": "25600:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 19799,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "25577:3:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 19800,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "25581:12:101",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "25577:16:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 19803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25577:33:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 19798,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "25567:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 19804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25567:44:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 19797,
                        "id": 19805,
                        "nodeType": "Return",
                        "src": "25560:51:101"
                      }
                    ]
                  },
                  "id": 19807,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_makeNode",
                  "nameLocation": "25448:9:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19794,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19791,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "25466:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19807,
                        "src": "25458:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19790,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "25458:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19793,
                        "mutability": "mutable",
                        "name": "labelhash",
                        "nameLocation": "25480:9:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19807,
                        "src": "25472:17:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19792,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "25472:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25457:33:101"
                  },
                  "returnParameters": {
                    "id": 19797,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19796,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19807,
                        "src": "25537:7:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19795,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "25537:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25536:9:101"
                  },
                  "scope": 20510,
                  "src": "25439:179:101",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 19855,
                    "nodeType": "Block",
                    "src": "25752:257:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 19818,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19809,
                                  "src": "25772:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 19817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "25766:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 19816,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "25766:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25766:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 19820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25779:6:101",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "25766:19:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 19821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25788:1:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "25766:23:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19827,
                        "nodeType": "IfStatement",
                        "src": "25762:76:101",
                        "trueBody": {
                          "id": 19826,
                          "nodeType": "Block",
                          "src": "25791:47:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 19823,
                                  "name": "LabelTooShort",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18121,
                                  "src": "25812:13:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 19824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25812:15:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19825,
                              "nodeType": "RevertStatement",
                              "src": "25805:22:101"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 19830,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19809,
                                  "src": "25857:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 19829,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "25851:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 19828,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "25851:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25851:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 19832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25864:6:101",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "25851:19:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "323535",
                            "id": 19833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25873:3:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_255_by_1",
                              "typeString": "int_const 255"
                            },
                            "value": "255"
                          },
                          "src": "25851:25:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19840,
                        "nodeType": "IfStatement",
                        "src": "25847:82:101",
                        "trueBody": {
                          "id": 19839,
                          "nodeType": "Block",
                          "src": "25878:51:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 19836,
                                    "name": "label",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19809,
                                    "src": "25912:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 19835,
                                  "name": "LabelTooLong",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18125,
                                  "src": "25899:12:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 19837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25899:19:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19838,
                              "nodeType": "RevertStatement",
                              "src": "25892:26:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 19847,
                                        "name": "label",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19809,
                                        "src": "25974:5:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "id": 19846,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "25968:5:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 19845,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "25968:5:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19848,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "25968:12:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 19849,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "25981:6:101",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "25968:19:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 19844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "25962:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 19843,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "25962:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25962:26:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 19851,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19809,
                              "src": "25990:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 19852,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19811,
                              "src": "25997:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 19841,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "25945:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "25949:12:101",
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "25945:16:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 19853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25945:57:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 19815,
                        "id": 19854,
                        "nodeType": "Return",
                        "src": "25938:64:101"
                      }
                    ]
                  },
                  "id": 19856,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addLabel",
                  "nameLocation": "25633:9:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19812,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19809,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "25657:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19856,
                        "src": "25643:19:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 19808,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "25643:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19811,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "25677:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19856,
                        "src": "25664:17:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19810,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "25664:5:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25642:40:101"
                  },
                  "returnParameters": {
                    "id": 19815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19814,
                        "mutability": "mutable",
                        "name": "ret",
                        "nameLocation": "25743:3:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19856,
                        "src": "25730:16:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19813,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "25730:5:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25729:18:101"
                  },
                  "scope": 20510,
                  "src": "25624:385:101",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    17491
                  ],
                  "body": {
                    "id": 19914,
                    "nodeType": "Block",
                    "src": "26144:333:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19869,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19858,
                              "src": "26172:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19870,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19862,
                              "src": "26178:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 19868,
                            "name": "_canFusesBeBurned",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20488,
                            "src": "26154:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint32_$returns$__$",
                              "typeString": "function (bytes32,uint32) pure"
                            }
                          },
                          "id": 19871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26154:30:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19872,
                        "nodeType": "ExpressionStatement",
                        "src": "26154:30:101"
                      },
                      {
                        "assignments": [
                          19874
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19874,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "26202:8:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19914,
                            "src": "26194:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19873,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "26194:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19881,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19878,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19858,
                                  "src": "26229:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 19877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "26221:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19876,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "26221:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26221:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19875,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18302
                            ],
                            "referencedDeclaration": 18302,
                            "src": "26213:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 19880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26213:22:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26194:41:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19882,
                            "name": "oldOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19874,
                            "src": "26249:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 19885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26269:1:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 19884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "26261:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 19883,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "26261:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26261:10:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "26249:22:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19904,
                        "nodeType": "IfStatement",
                        "src": "26245:177:101",
                        "trueBody": {
                          "id": 19903,
                          "nodeType": "Block",
                          "src": "26273:149:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 19891,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19858,
                                        "src": "26355:4:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 19890,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "26347:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 19889,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "26347:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19892,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26347:13:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19888,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17529,
                                  "src": "26341:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 19893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26341:20:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19894,
                              "nodeType": "ExpressionStatement",
                              "src": "26341:20:101"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 19896,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19858,
                                    "src": "26394:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 19899,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "26408:1:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 19898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "26400:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 19897,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "26400:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26400:10:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 19895,
                                  "name": "NameUnwrapped",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17802,
                                  "src": "26380:13:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address)"
                                  }
                                },
                                "id": 19901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26380:31:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19902,
                              "nodeType": "EmitStatement",
                              "src": "26375:36:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19908,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19858,
                              "src": "26443:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19909,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19860,
                              "src": "26449:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19910,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19862,
                              "src": "26456:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19911,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19864,
                              "src": "26463:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "id": 19905,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "26431:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_NameWrapper_$20510_$",
                                "typeString": "type(contract super NameWrapper)"
                              }
                            },
                            "id": 19907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "26437:5:101",
                            "memberName": "_mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17491,
                            "src": "26431:11:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,uint32,uint64)"
                            }
                          },
                          "id": 19912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26431:39:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19913,
                        "nodeType": "ExpressionStatement",
                        "src": "26431:39:101"
                      }
                    ]
                  },
                  "id": 19915,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "26024:5:101",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19866,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "26135:8:101"
                  },
                  "parameters": {
                    "id": 19865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19858,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "26047:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19915,
                        "src": "26039:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19857,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26039:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19860,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "26069:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19915,
                        "src": "26061:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19859,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26061:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19862,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "26091:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19915,
                        "src": "26084:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19861,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26084:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19864,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "26113:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19915,
                        "src": "26106:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19863,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "26106:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26029:96:101"
                  },
                  "returnParameters": {
                    "id": 19867,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26144:0:101"
                  },
                  "scope": 20510,
                  "src": "26015:462:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19949,
                    "nodeType": "Block",
                    "src": "26637:152:101",
                    "statements": [
                      {
                        "expression": {
                          "id": 19932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19928,
                              "name": "names",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18163,
                              "src": "26647:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 19930,
                            "indexExpression": {
                              "id": 19929,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19917,
                              "src": "26653:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "26647:11:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19931,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19919,
                            "src": "26661:4:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "26647:18:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 19933,
                        "nodeType": "ExpressionStatement",
                        "src": "26647:18:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19935,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19917,
                              "src": "26681:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19936,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19921,
                              "src": "26687:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19937,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19923,
                              "src": "26701:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19938,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19925,
                              "src": "26708:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 19934,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              19915
                            ],
                            "referencedDeclaration": 19915,
                            "src": "26675:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,uint32,uint64)"
                            }
                          },
                          "id": 19939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26675:40:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19940,
                        "nodeType": "ExpressionStatement",
                        "src": "26675:40:101"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 19942,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19917,
                              "src": "26742:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19943,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19919,
                              "src": "26748:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 19944,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19921,
                              "src": "26754:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19945,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19923,
                              "src": "26768:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19946,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19925,
                              "src": "26775:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 19941,
                            "name": "NameWrapped",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17796,
                            "src": "26730:11:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,address,uint32,uint64)"
                            }
                          },
                          "id": 19947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26730:52:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19948,
                        "nodeType": "EmitStatement",
                        "src": "26725:57:101"
                      }
                    ]
                  },
                  "id": 19950,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_wrap",
                  "nameLocation": "26492:5:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19917,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "26515:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19950,
                        "src": "26507:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19916,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26507:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19919,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "26542:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19950,
                        "src": "26529:17:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19918,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "26529:5:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19921,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "26564:12:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19950,
                        "src": "26556:20:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19920,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26556:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19923,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "26593:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19950,
                        "src": "26586:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19922,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26586:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19925,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "26615:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19950,
                        "src": "26608:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19924,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "26608:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26497:130:101"
                  },
                  "returnParameters": {
                    "id": 19927,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26637:0:101"
                  },
                  "scope": 20510,
                  "src": "26483:306:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19982,
                    "nodeType": "Block",
                    "src": "26983:121:101",
                    "statements": [
                      {
                        "assignments": [
                          19966
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19966,
                            "mutability": "mutable",
                            "name": "name",
                            "nameLocation": "27006:4:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 19982,
                            "src": "26993:17:101",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 19965,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "26993:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19973,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19968,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19956,
                              "src": "27023:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 19969,
                                "name": "names",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18163,
                                "src": "27030:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                  "typeString": "mapping(bytes32 => bytes storage ref)"
                                }
                              },
                              "id": 19971,
                              "indexExpression": {
                                "id": 19970,
                                "name": "parentNode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19952,
                                "src": "27036:10:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "27030:17:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 19967,
                            "name": "_addLabel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19856,
                            "src": "27013:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory,bytes memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 19972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27013:35:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26993:55:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19975,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19954,
                              "src": "27064:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 19976,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19966,
                              "src": "27070:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 19977,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19958,
                              "src": "27076:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19978,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19960,
                              "src": "27083:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 19979,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19962,
                              "src": "27090:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 19974,
                            "name": "_wrap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19950,
                            "src": "27058:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,address,uint32,uint64)"
                            }
                          },
                          "id": 19980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27058:39:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19981,
                        "nodeType": "ExpressionStatement",
                        "src": "27058:39:101"
                      }
                    ]
                  },
                  "id": 19983,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addLabelAndWrap",
                  "nameLocation": "26804:16:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19952,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "26838:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19983,
                        "src": "26830:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19951,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26830:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19954,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "26866:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19983,
                        "src": "26858:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19953,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26858:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19956,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "26894:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19983,
                        "src": "26880:19:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 19955,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "26880:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19958,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "26917:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19983,
                        "src": "26909:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19957,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26909:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19960,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "26939:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19983,
                        "src": "26932:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19959,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26932:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19962,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "26961:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 19983,
                        "src": "26954:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19961,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "26954:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26820:153:101"
                  },
                  "returnParameters": {
                    "id": 19964,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26983:0:101"
                  },
                  "scope": 20510,
                  "src": "26795:309:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20038,
                    "nodeType": "Block",
                    "src": "27215:346:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 20000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 19994,
                                "name": "upgradeContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18175,
                                "src": "27237:15:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                  "typeString": "contract INameWrapperUpgrade"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_INameWrapperUpgrade_$18063",
                                  "typeString": "contract INameWrapperUpgrade"
                                }
                              ],
                              "id": 19993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27229:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 19992,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "27229:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27229:24:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 19998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27265:1:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 19997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27257:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 19996,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "27257:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27257:10:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "27229:38:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20005,
                        "nodeType": "IfStatement",
                        "src": "27225:91:101",
                        "trueBody": {
                          "id": 20004,
                          "nodeType": "Block",
                          "src": "27269:47:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 20001,
                                  "name": "CannotUpgrade",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18131,
                                  "src": "27290:13:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 20002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27290:15:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20003,
                              "nodeType": "RevertStatement",
                              "src": "27283:22:101"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 20011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "27330:41:101",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 20007,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19985,
                                "src": "27354:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "expression": {
                                  "id": 20008,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "27360:3:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 20009,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "27364:6:101",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "27360:10:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 20006,
                              "name": "isTokenOwnerOrApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18479,
                              "src": "27331:22:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (bytes32,address) view returns (bool)"
                              }
                            },
                            "id": 20010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27331:40:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20019,
                        "nodeType": "IfStatement",
                        "src": "27326:109:101",
                        "trueBody": {
                          "id": 20018,
                          "nodeType": "Block",
                          "src": "27373:62:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 20013,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19985,
                                    "src": "27407:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 20014,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "27413:3:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 20015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "27417:6:101",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "27413:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 20012,
                                  "name": "Unauthorised",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "27394:12:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) pure"
                                  }
                                },
                                "id": 20016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27394:30:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20017,
                              "nodeType": "RevertStatement",
                              "src": "27387:37:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 20029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              null,
                              {
                                "id": 20020,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19988,
                                "src": "27448:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 20021,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19990,
                                "src": "27455:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "id": 20022,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "27445:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_uint32_$_t_uint64_$",
                              "typeString": "tuple(,uint32,uint64)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 20026,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19985,
                                    "src": "27481:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 20025,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "27473:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 20024,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "27473:7:101",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 20027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27473:13:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20023,
                              "name": "getData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                18323
                              ],
                              "referencedDeclaration": 18323,
                              "src": "27465:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                                "typeString": "function (uint256) view returns (address,uint32,uint64)"
                              }
                            },
                            "id": 20028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27465:22:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "tuple(address,uint32,uint64)"
                            }
                          },
                          "src": "27445:42:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20030,
                        "nodeType": "ExpressionStatement",
                        "src": "27445:42:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20034,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19985,
                                  "src": "27548:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 20033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "27540:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 20032,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "27540:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27540:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20031,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17529,
                            "src": "27534:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 20036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27534:20:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20037,
                        "nodeType": "ExpressionStatement",
                        "src": "27534:20:101"
                      }
                    ]
                  },
                  "id": 20039,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_prepareUpgrade",
                  "nameLocation": "27119:15:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19986,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19985,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "27143:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20039,
                        "src": "27135:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 19984,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "27135:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27134:14:101"
                  },
                  "returnParameters": {
                    "id": 19991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19988,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "27189:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20039,
                        "src": "27182:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 19987,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "27182:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19990,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "27203:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20039,
                        "src": "27196:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 19989,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "27196:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27181:29:101"
                  },
                  "scope": 20510,
                  "src": "27110:451:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 20121,
                    "nodeType": "Block",
                    "src": "27750:417:101",
                    "statements": [
                      {
                        "assignments": [
                          20055
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20055,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "27768:8:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20121,
                            "src": "27760:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20054,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "27760:7:101",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20062,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20059,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20043,
                                  "src": "27795:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 20058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "27787:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 20057,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "27787:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27787:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20056,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18302
                            ],
                            "referencedDeclaration": 18302,
                            "src": "27779:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 20061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27779:22:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27760:41:101"
                      },
                      {
                        "assignments": [
                          20064
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20064,
                            "mutability": "mutable",
                            "name": "name",
                            "nameLocation": "27824:4:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20121,
                            "src": "27811:17:101",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 20063,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "27811:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20071,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20066,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20045,
                              "src": "27841:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 20067,
                                "name": "names",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18163,
                                "src": "27848:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                  "typeString": "mapping(bytes32 => bytes storage ref)"
                                }
                              },
                              "id": 20069,
                              "indexExpression": {
                                "id": 20068,
                                "name": "parentNode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20041,
                                "src": "27854:10:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "27848:17:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 20065,
                            "name": "_addLabel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19856,
                            "src": "27831:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory,bytes memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 20070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27831:35:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27811:55:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 20072,
                                "name": "names",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18163,
                                "src": "27880:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                  "typeString": "mapping(bytes32 => bytes storage ref)"
                                }
                              },
                              "id": 20074,
                              "indexExpression": {
                                "id": 20073,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20043,
                                "src": "27886:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "27880:11:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 20075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "27892:6:101",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "27880:18:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 20076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27902:1:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "27880:23:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20085,
                        "nodeType": "IfStatement",
                        "src": "27876:72:101",
                        "trueBody": {
                          "id": 20084,
                          "nodeType": "Block",
                          "src": "27905:43:101",
                          "statements": [
                            {
                              "expression": {
                                "id": 20082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 20078,
                                    "name": "names",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18163,
                                    "src": "27919:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 20080,
                                  "indexExpression": {
                                    "id": 20079,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20043,
                                    "src": "27925:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "27919:11:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20081,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20064,
                                  "src": "27933:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "27919:18:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 20083,
                              "nodeType": "ExpressionStatement",
                              "src": "27919:18:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20087,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20043,
                              "src": "27967:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20088,
                              "name": "oldOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20055,
                              "src": "27973:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20089,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20049,
                              "src": "27983:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20090,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20051,
                              "src": "27990:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 20086,
                            "name": "_setFuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20427,
                            "src": "27957:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,uint32,uint64)"
                            }
                          },
                          "id": 20091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27957:40:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20092,
                        "nodeType": "ExpressionStatement",
                        "src": "27957:40:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 20098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20093,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20047,
                            "src": "28011:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 20096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "28028:1:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 20095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "28020:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 20094,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "28020:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 20097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28020:10:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "28011:19:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 20119,
                          "nodeType": "Block",
                          "src": "28088:73:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 20109,
                                    "name": "oldOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20055,
                                    "src": "28112:8:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 20110,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20047,
                                    "src": "28122:5:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 20113,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20043,
                                        "src": "28137:4:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 20112,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "28129:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 20111,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "28129:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 20114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "28129:13:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 20115,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "28144:1:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 20116,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "28147:2:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 20108,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17609,
                                  "src": "28102:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 20117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28102:48:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20118,
                              "nodeType": "ExpressionStatement",
                              "src": "28102:48:101"
                            }
                          ]
                        },
                        "id": 20120,
                        "nodeType": "IfStatement",
                        "src": "28007:154:101",
                        "trueBody": {
                          "id": 20107,
                          "nodeType": "Block",
                          "src": "28032:50:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 20100,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20043,
                                    "src": "28054:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 20103,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "28068:1:101",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 20102,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "28060:7:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 20101,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "28060:7:101",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 20104,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "28060:10:101",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 20099,
                                  "name": "_unwrap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20402,
                                  "src": "28046:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address)"
                                  }
                                },
                                "id": 20105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28046:25:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20106,
                              "nodeType": "ExpressionStatement",
                              "src": "28046:25:101"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 20122,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateName",
                  "nameLocation": "27576:11:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20052,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20041,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "27605:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20122,
                        "src": "27597:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20040,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "27597:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20043,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "27633:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20122,
                        "src": "27625:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20042,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "27625:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20045,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "27661:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20122,
                        "src": "27647:19:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 20044,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "27647:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20047,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "27684:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20122,
                        "src": "27676:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20046,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27676:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20049,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "27706:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20122,
                        "src": "27699:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20048,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "27699:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20051,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "27728:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20122,
                        "src": "27721:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20050,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "27721:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27587:153:101"
                  },
                  "returnParameters": {
                    "id": 20053,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27750:0:101"
                  },
                  "scope": 20510,
                  "src": "27567:600:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20167,
                    "nodeType": "Block",
                    "src": "28381:261:101",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          null,
                          20136
                        ],
                        "declarations": [
                          null,
                          null,
                          {
                            "constant": false,
                            "id": 20136,
                            "mutability": "mutable",
                            "name": "oldExpiry",
                            "nameLocation": "28403:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20167,
                            "src": "28396:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 20135,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "28396:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20143,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20140,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20126,
                                  "src": "28432:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 20139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28424:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 20138,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28424:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28424:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20137,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18323
                            ],
                            "referencedDeclaration": 18323,
                            "src": "28416:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 20142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28416:22:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28391:47:101"
                      },
                      {
                        "assignments": [
                          null,
                          20145,
                          20147
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 20145,
                            "mutability": "mutable",
                            "name": "parentFuses",
                            "nameLocation": "28458:11:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20167,
                            "src": "28451:18:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 20144,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "28451:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 20147,
                            "mutability": "mutable",
                            "name": "maxExpiry",
                            "nameLocation": "28478:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20167,
                            "src": "28471:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 20146,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "28471:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20154,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20151,
                                  "name": "parentNode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20124,
                                  "src": "28507:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 20150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28499:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 20149,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28499:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28499:19:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20148,
                            "name": "getData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18323
                            ],
                            "referencedDeclaration": 18323,
                            "src": "28491:7:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "function (uint256) view returns (address,uint32,uint64)"
                            }
                          },
                          "id": 20153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28491:28:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28448:71:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20156,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20126,
                              "src": "28547:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20157,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20128,
                              "src": "28553:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20158,
                              "name": "parentFuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20145,
                              "src": "28560:11:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 20155,
                            "name": "_checkParentFuses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20203,
                            "src": "28529:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint32_$_t_uint32_$returns$__$",
                              "typeString": "function (bytes32,uint32,uint32) pure"
                            }
                          },
                          "id": 20159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28529:43:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20160,
                        "nodeType": "ExpressionStatement",
                        "src": "28529:43:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20162,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20130,
                              "src": "28606:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 20163,
                              "name": "oldExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20136,
                              "src": "28614:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 20164,
                              "name": "maxExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20147,
                              "src": "28625:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 20161,
                            "name": "_normaliseExpiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20292,
                            "src": "28589:16:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_uint64_$",
                              "typeString": "function (uint64,uint64,uint64) pure returns (uint64)"
                            }
                          },
                          "id": 20165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28589:46:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 20134,
                        "id": 20166,
                        "nodeType": "Return",
                        "src": "28582:53:101"
                      }
                    ]
                  },
                  "id": 20168,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkParentFusesAndExpiry",
                  "nameLocation": "28222:26:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20124,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "28266:10:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20168,
                        "src": "28258:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20123,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "28258:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20126,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "28294:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20168,
                        "src": "28286:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20125,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "28286:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20128,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "28315:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20168,
                        "src": "28308:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20127,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "28308:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20130,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "28337:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20168,
                        "src": "28330:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20129,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "28330:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28248:101:101"
                  },
                  "returnParameters": {
                    "id": 20134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20133,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20168,
                        "src": "28373:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20132,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "28373:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28372:8:101"
                  },
                  "scope": 20510,
                  "src": "28213:429:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20202,
                    "nodeType": "Block",
                    "src": "28767:283:101",
                    "statements": [
                      {
                        "assignments": [
                          20178
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20178,
                            "mutability": "mutable",
                            "name": "isBurningPCC",
                            "nameLocation": "28782:12:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20202,
                            "src": "28777:17:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 20177,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "28777:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20184,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 20183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 20181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20179,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20172,
                              "src": "28797:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 20180,
                              "name": "PARENT_CANNOT_CONTROL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17779,
                              "src": "28805:21:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "28797:29:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 20182,
                            "name": "PARENT_CANNOT_CONTROL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17779,
                            "src": "28842:21:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "28797:66:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28777:86:101"
                      },
                      {
                        "assignments": [
                          20186
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20186,
                            "mutability": "mutable",
                            "name": "parentHasNotBurnedCU",
                            "nameLocation": "28879:20:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20202,
                            "src": "28874:25:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 20185,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "28874:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20192,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 20191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 20189,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20187,
                              "name": "parentFuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20174,
                              "src": "28902:11:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 20188,
                              "name": "CANNOT_UNWRAP",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17761,
                              "src": "28916:13:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "28902:27:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 20190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28933:1:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "28902:32:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28874:60:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20193,
                            "name": "isBurningPCC",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20178,
                            "src": "28949:12:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "id": 20194,
                            "name": "parentHasNotBurnedCU",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20186,
                            "src": "28965:20:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "28949:36:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20201,
                        "nodeType": "IfStatement",
                        "src": "28945:99:101",
                        "trueBody": {
                          "id": 20200,
                          "nodeType": "Block",
                          "src": "28987:57:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 20197,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20170,
                                    "src": "29028:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 20196,
                                  "name": "OperationProhibited",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16877,
                                  "src": "29008:19:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 20198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29008:25:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20199,
                              "nodeType": "RevertStatement",
                              "src": "29001:32:101"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 20203,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkParentFuses",
                  "nameLocation": "28657:17:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20170,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "28692:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20203,
                        "src": "28684:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20169,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "28684:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20172,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "28713:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20203,
                        "src": "28706:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20171,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "28706:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20174,
                        "mutability": "mutable",
                        "name": "parentFuses",
                        "nameLocation": "28735:11:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20203,
                        "src": "28728:18:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20173,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "28728:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28674:78:101"
                  },
                  "returnParameters": {
                    "id": 20176,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28767:0:101"
                  },
                  "scope": 20510,
                  "src": "28648:402:101",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20259,
                    "nodeType": "Block",
                    "src": "29310:276:101",
                    "statements": [
                      {
                        "assignments": [
                          20219
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20219,
                            "mutability": "mutable",
                            "name": "oldExpiry",
                            "nameLocation": "29327:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20259,
                            "src": "29320:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 20218,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "29320:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20220,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29320:16:101"
                      },
                      {
                        "expression": {
                          "id": 20231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 20221,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20212,
                                "src": "29347:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 20222,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20214,
                                "src": "29354:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 20223,
                                "name": "oldExpiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20219,
                                "src": "29361:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "id": 20224,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "29346:25:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "tuple(address,uint32,uint64)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 20228,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20205,
                                    "src": "29390:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 20227,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "29382:7:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 20226,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "29382:7:101",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 20229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29382:13:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20225,
                              "name": "getData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                18323
                              ],
                              "referencedDeclaration": 18323,
                              "src": "29374:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                                "typeString": "function (uint256) view returns (address,uint32,uint64)"
                              }
                            },
                            "id": 20230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29374:22:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "tuple(address,uint32,uint64)"
                            }
                          },
                          "src": "29346:50:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20232,
                        "nodeType": "ExpressionStatement",
                        "src": "29346:50:101"
                      },
                      {
                        "assignments": [
                          20234
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20234,
                            "mutability": "mutable",
                            "name": "maxExpiry",
                            "nameLocation": "29413:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20259,
                            "src": "29406:16:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 20233,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "29406:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20245,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 20241,
                                      "name": "labelhash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20207,
                                      "src": "29462:9:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 20240,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "29454:7:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 20239,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "29454:7:101",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 20242,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "29454:18:101",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 20237,
                                  "name": "registrar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18154,
                                  "src": "29432:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                    "typeString": "contract IBaseRegistrar"
                                  }
                                },
                                "id": 20238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "29442:11:101",
                                "memberName": "nameExpires",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11185,
                                "src": "29432:21:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view external returns (uint256)"
                                }
                              },
                              "id": 20243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29432:41:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "29425:6:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint64_$",
                              "typeString": "type(uint64)"
                            },
                            "typeName": {
                              "id": 20235,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "29425:6:101",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 20244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29425:49:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29406:68:101"
                      },
                      {
                        "expression": {
                          "id": 20252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20246,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20209,
                            "src": "29485:6:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20248,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20209,
                                "src": "29511:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "id": 20249,
                                "name": "oldExpiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20219,
                                "src": "29519:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "id": 20250,
                                "name": "maxExpiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20234,
                                "src": "29530:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 20247,
                              "name": "_normaliseExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20292,
                              "src": "29494:16:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_uint64_$",
                                "typeString": "function (uint64,uint64,uint64) pure returns (uint64)"
                              }
                            },
                            "id": 20251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29494:46:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "29485:55:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 20253,
                        "nodeType": "ExpressionStatement",
                        "src": "29485:55:101"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 20254,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20212,
                              "src": "29558:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20255,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20214,
                              "src": "29565:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20256,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20209,
                              "src": "29572:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "id": 20257,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "29557:22:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                            "typeString": "tuple(address,uint32,uint64)"
                          }
                        },
                        "functionReturnParameters": 20217,
                        "id": 20258,
                        "nodeType": "Return",
                        "src": "29550:29:101"
                      }
                    ]
                  },
                  "id": 20260,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getETH2LDDataAndNormaliseExpiry",
                  "nameLocation": "29065:32:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20210,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20205,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "29115:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20260,
                        "src": "29107:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20204,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "29107:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20207,
                        "mutability": "mutable",
                        "name": "labelhash",
                        "nameLocation": "29137:9:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20260,
                        "src": "29129:17:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20206,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "29129:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20209,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "29163:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20260,
                        "src": "29156:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20208,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "29156:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29097:78:101"
                  },
                  "returnParameters": {
                    "id": 20217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20212,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "29244:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20260,
                        "src": "29236:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20211,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "29236:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20214,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "29270:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20260,
                        "src": "29263:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20213,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "29263:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20216,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20260,
                        "src": "29289:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20215,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "29289:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29222:83:101"
                  },
                  "scope": 20510,
                  "src": "29056:530:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20291,
                    "nodeType": "Block",
                    "src": "29730:352:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 20273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20271,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20262,
                            "src": "29864:6:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 20272,
                            "name": "maxExpiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20266,
                            "src": "29873:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "29864:18:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20279,
                        "nodeType": "IfStatement",
                        "src": "29860:67:101",
                        "trueBody": {
                          "id": 20278,
                          "nodeType": "Block",
                          "src": "29884:43:101",
                          "statements": [
                            {
                              "expression": {
                                "id": 20276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20274,
                                  "name": "expiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20262,
                                  "src": "29898:6:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20275,
                                  "name": "maxExpiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20266,
                                  "src": "29907:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "29898:18:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 20277,
                              "nodeType": "ExpressionStatement",
                              "src": "29898:18:101"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 20282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20280,
                            "name": "expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20262,
                            "src": "29989:6:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 20281,
                            "name": "oldExpiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20264,
                            "src": "29998:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "29989:18:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20288,
                        "nodeType": "IfStatement",
                        "src": "29985:67:101",
                        "trueBody": {
                          "id": 20287,
                          "nodeType": "Block",
                          "src": "30009:43:101",
                          "statements": [
                            {
                              "expression": {
                                "id": 20285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20283,
                                  "name": "expiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20262,
                                  "src": "30023:6:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20284,
                                  "name": "oldExpiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20264,
                                  "src": "30032:9:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "30023:18:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 20286,
                              "nodeType": "ExpressionStatement",
                              "src": "30023:18:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 20289,
                          "name": "expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20262,
                          "src": "30069:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 20270,
                        "id": 20290,
                        "nodeType": "Return",
                        "src": "30062:13:101"
                      }
                    ]
                  },
                  "id": 20292,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_normaliseExpiry",
                  "nameLocation": "29601:16:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20262,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "29634:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20292,
                        "src": "29627:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20261,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "29627:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20264,
                        "mutability": "mutable",
                        "name": "oldExpiry",
                        "nameLocation": "29657:9:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20292,
                        "src": "29650:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20263,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "29650:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20266,
                        "mutability": "mutable",
                        "name": "maxExpiry",
                        "nameLocation": "29683:9:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20292,
                        "src": "29676:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20265,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "29676:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29617:81:101"
                  },
                  "returnParameters": {
                    "id": 20270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20269,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20292,
                        "src": "29722:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20268,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "29722:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29721:8:101"
                  },
                  "scope": 20510,
                  "src": "29592:490:101",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20364,
                    "nodeType": "Block",
                    "src": "30270:715:101",
                    "statements": [
                      {
                        "assignments": [
                          20308
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20308,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "30424:9:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20364,
                            "src": "30416:17:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 20307,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "30416:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20315,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20312,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20294,
                                  "src": "30452:5:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 20311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "30446:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 20310,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "30446:5:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30446:12:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 20309,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "30436:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 20314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30436:23:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30416:43:101"
                      },
                      {
                        "assignments": [
                          20317
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20317,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "30477:4:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20364,
                            "src": "30469:12:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 20316,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "30469:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20322,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20319,
                              "name": "ETH_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18169,
                              "src": "30494:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20320,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20308,
                              "src": "30504:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 20318,
                            "name": "_makeNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19807,
                            "src": "30484:9:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 20321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30484:30:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30469:45:101"
                      },
                      {
                        "assignments": [
                          20324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20324,
                            "mutability": "mutable",
                            "name": "oldFuses",
                            "nameLocation": "30531:8:101",
                            "nodeType": "VariableDeclaration",
                            "scope": 20364,
                            "src": "30524:15:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 20323,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "30524:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20325,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30524:15:101"
                      },
                      {
                        "expression": {
                          "id": 20334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              null,
                              {
                                "id": 20326,
                                "name": "oldFuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20324,
                                "src": "30553:8:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 20327,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20300,
                                "src": "30563:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "id": 20328,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "30550:20:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_uint32_$_t_uint64_$",
                              "typeString": "tuple(,uint32,uint64)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20330,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20317,
                                "src": "30619:4:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 20331,
                                "name": "labelhash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20308,
                                "src": "30637:9:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 20332,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20300,
                                "src": "30660:6:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 20329,
                              "name": "_getETH2LDDataAndNormaliseExpiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20260,
                              "src": "30573:32:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_uint64_$returns$_t_address_$_t_uint32_$_t_uint64_$",
                                "typeString": "function (bytes32,bytes32,uint64) view returns (address,uint32,uint64)"
                              }
                            },
                            "id": 20333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30573:103:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_uint32_$_t_uint64_$",
                              "typeString": "tuple(address,uint32,uint64)"
                            }
                          },
                          "src": "30550:126:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20335,
                        "nodeType": "ExpressionStatement",
                        "src": "30550:126:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20337,
                              "name": "ETH_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18169,
                              "src": "30717:8:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20338,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20317,
                              "src": "30739:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20339,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20294,
                              "src": "30757:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 20340,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20296,
                              "src": "30776:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 20343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20341,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20298,
                                "src": "30802:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "id": 20342,
                                "name": "PARENT_CANNOT_CONTROL",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17779,
                                "src": "30810:21:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "30802:29:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20344,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20300,
                              "src": "30845:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 20336,
                            "name": "_addLabelAndWrap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19983,
                            "src": "30687:16:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,bytes32,string memory,address,uint32,uint64)"
                            }
                          },
                          "id": 20345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30687:174:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20346,
                        "nodeType": "ExpressionStatement",
                        "src": "30687:174:101"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 20352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20347,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20302,
                            "src": "30875:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 20350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "30895:1:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 20349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30887:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 20348,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "30887:7:101",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 20351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30887:10:101",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "30875:22:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20361,
                        "nodeType": "IfStatement",
                        "src": "30871:84:101",
                        "trueBody": {
                          "id": 20360,
                          "nodeType": "Block",
                          "src": "30899:56:101",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 20356,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20317,
                                    "src": "30929:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 20357,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20302,
                                    "src": "30935:8:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 20353,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18150,
                                    "src": "30913:3:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 20355,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "30917:11:101",
                                  "memberName": "setResolver",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12098,
                                  "src": "30913:15:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) external"
                                  }
                                },
                                "id": 20358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30913:31:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20359,
                              "nodeType": "ExpressionStatement",
                              "src": "30913:31:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 20362,
                          "name": "expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20300,
                          "src": "30972:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 20306,
                        "id": 20363,
                        "nodeType": "Return",
                        "src": "30965:13:101"
                      }
                    ]
                  },
                  "id": 20365,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_wrapETH2LD",
                  "nameLocation": "30097:11:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20294,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "30132:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20365,
                        "src": "30118:19:101",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 20293,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "30118:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20296,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "30155:12:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20365,
                        "src": "30147:20:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30147:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20298,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "30184:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20365,
                        "src": "30177:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20297,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "30177:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20300,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "30206:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20365,
                        "src": "30199:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20299,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "30199:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20302,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "30230:8:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20365,
                        "src": "30222:16:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30222:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30108:136:101"
                  },
                  "returnParameters": {
                    "id": 20306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20305,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20365,
                        "src": "30262:6:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20304,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "30262:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30261:8:101"
                  },
                  "scope": 20510,
                  "src": "30088:897:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 20401,
                    "nodeType": "Block",
                    "src": "31045:258:101",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 20373,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20367,
                              "src": "31074:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20374,
                              "name": "CANNOT_UNWRAP",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17761,
                              "src": "31080:13:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 20372,
                            "name": "allFusesBurned",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19636,
                            "src": "31059:14:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint32_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint32) view returns (bool)"
                            }
                          },
                          "id": 20375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31059:35:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20381,
                        "nodeType": "IfStatement",
                        "src": "31055:98:101",
                        "trueBody": {
                          "id": 20380,
                          "nodeType": "Block",
                          "src": "31096:57:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 20377,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20367,
                                    "src": "31137:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 20376,
                                  "name": "OperationProhibited",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16877,
                                  "src": "31117:19:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 20378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31117:25:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20379,
                              "nodeType": "RevertStatement",
                              "src": "31110:32:101"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20385,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20367,
                                  "src": "31213:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 20384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "31205:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 20383,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "31205:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31205:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20382,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17529,
                            "src": "31199:5:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 20387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31199:20:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20388,
                        "nodeType": "ExpressionStatement",
                        "src": "31199:20:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20392,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20367,
                              "src": "31242:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20393,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20369,
                              "src": "31248:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 20389,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18150,
                              "src": "31229:3:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 20391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "31233:8:101",
                            "memberName": "setOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12105,
                            "src": "31229:12:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 20394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31229:25:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20395,
                        "nodeType": "ExpressionStatement",
                        "src": "31229:25:101"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20397,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20367,
                              "src": "31284:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20398,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20369,
                              "src": "31290:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 20396,
                            "name": "NameUnwrapped",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17802,
                            "src": "31270:13:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 20399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31270:26:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20400,
                        "nodeType": "EmitStatement",
                        "src": "31265:31:101"
                      }
                    ]
                  },
                  "id": 20402,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_unwrap",
                  "nameLocation": "31000:7:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20367,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "31016:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20402,
                        "src": "31008:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20366,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "31008:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20369,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "31030:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20402,
                        "src": "31022:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20368,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31022:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31007:29:101"
                  },
                  "returnParameters": {
                    "id": 20371,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31045:0:101"
                  },
                  "scope": 20510,
                  "src": "30991:312:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 20426,
                    "nodeType": "Block",
                    "src": "31433:97:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20414,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20404,
                              "src": "31452:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20415,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20406,
                              "src": "31458:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20416,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20408,
                              "src": "31465:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20417,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20410,
                              "src": "31472:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 20413,
                            "name": "_setData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              20456,
                              17379
                            ],
                            "referencedDeclaration": 20456,
                            "src": "31443:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,address,uint32,uint64)"
                            }
                          },
                          "id": 20418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31443:36:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20419,
                        "nodeType": "ExpressionStatement",
                        "src": "31443:36:101"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20421,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20404,
                              "src": "31503:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20422,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20408,
                              "src": "31509:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20423,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20410,
                              "src": "31516:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 20420,
                            "name": "FusesSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17810,
                            "src": "31494:8:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,uint32,uint64)"
                            }
                          },
                          "id": 20424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31494:29:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20425,
                        "nodeType": "EmitStatement",
                        "src": "31489:34:101"
                      }
                    ]
                  },
                  "id": 20427,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setFuses",
                  "nameLocation": "31318:9:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20404,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "31345:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20427,
                        "src": "31337:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20403,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "31337:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20406,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "31367:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20427,
                        "src": "31359:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20405,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31359:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20408,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "31389:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20427,
                        "src": "31382:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20407,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "31382:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20410,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "31411:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20427,
                        "src": "31404:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20409,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "31404:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31327:96:101"
                  },
                  "returnParameters": {
                    "id": 20412,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31433:0:101"
                  },
                  "scope": 20510,
                  "src": "31309:221:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20455,
                    "nodeType": "Block",
                    "src": "31659:108:101",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20439,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20429,
                              "src": "31687:4:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20440,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20433,
                              "src": "31693:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 20438,
                            "name": "_canFusesBeBurned",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20488,
                            "src": "31669:17:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint32_$returns$__$",
                              "typeString": "function (bytes32,uint32) pure"
                            }
                          },
                          "id": 20441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31669:30:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20442,
                        "nodeType": "ExpressionStatement",
                        "src": "31669:30:101"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20448,
                                  "name": "node",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20429,
                                  "src": "31732:4:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 20447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "31724:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 20446,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "31724:7:101",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31724:13:101",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20450,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20431,
                              "src": "31739:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20451,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20433,
                              "src": "31746:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20452,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20435,
                              "src": "31753:6:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "id": 20443,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "31709:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_NameWrapper_$20510_$",
                                "typeString": "type(contract super NameWrapper)"
                              }
                            },
                            "id": 20445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "31715:8:101",
                            "memberName": "_setData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17379,
                            "src": "31709:14:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (uint256,address,uint32,uint64)"
                            }
                          },
                          "id": 20453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31709:51:101",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20454,
                        "nodeType": "ExpressionStatement",
                        "src": "31709:51:101"
                      }
                    ]
                  },
                  "id": 20456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setData",
                  "nameLocation": "31545:8:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20429,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "31571:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20456,
                        "src": "31563:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20428,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "31563:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20431,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "31593:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20456,
                        "src": "31585:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20430,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31585:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20433,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "31615:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20456,
                        "src": "31608:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20432,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "31608:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20435,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "31637:6:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20456,
                        "src": "31630:13:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20434,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "31630:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31553:96:101"
                  },
                  "returnParameters": {
                    "id": 20437,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31659:0:101"
                  },
                  "scope": 20510,
                  "src": "31536:231:101",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20487,
                    "nodeType": "Block",
                    "src": "31842:254:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 20468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 20466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20463,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20460,
                                "src": "31869:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "id": 20465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "~",
                                "prefix": true,
                                "src": "31877:22:101",
                                "subExpression": {
                                  "id": 20464,
                                  "name": "PARENT_CANNOT_CONTROL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17779,
                                  "src": "31878:21:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "31869:30:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 20467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31903:1:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "31869:35:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 20479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 20474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20469,
                                "name": "fuses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20460,
                                "src": "31920:5:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 20472,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 20470,
                                      "name": "PARENT_CANNOT_CONTROL",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17779,
                                      "src": "31929:21:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "|",
                                    "rightExpression": {
                                      "id": 20471,
                                      "name": "CANNOT_UNWRAP",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17761,
                                      "src": "31953:13:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "31929:37:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "id": 20473,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "31928:39:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "31920:47:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 20477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20475,
                                    "name": "PARENT_CANNOT_CONTROL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17779,
                                    "src": "31984:21:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "id": 20476,
                                    "name": "CANNOT_UNWRAP",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17761,
                                    "src": "32008:13:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "31984:37:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "id": 20478,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "31983:39:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "31920:102:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "31869:153:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20486,
                        "nodeType": "IfStatement",
                        "src": "31852:238:101",
                        "trueBody": {
                          "id": 20485,
                          "nodeType": "Block",
                          "src": "32033:57:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 20482,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20458,
                                    "src": "32074:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 20481,
                                  "name": "OperationProhibited",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16877,
                                  "src": "32054:19:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 20483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32054:25:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20484,
                              "nodeType": "RevertStatement",
                              "src": "32047:32:101"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 20488,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_canFusesBeBurned",
                  "nameLocation": "31782:17:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20458,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "31808:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20488,
                        "src": "31800:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20457,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "31800:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20460,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "31821:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20488,
                        "src": "31814:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20459,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "31814:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31799:28:101"
                  },
                  "returnParameters": {
                    "id": 20462,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31842:0:101"
                  },
                  "scope": 20510,
                  "src": "31773:323:101",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20508,
                    "nodeType": "Block",
                    "src": "32202:190:101",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 20499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 20497,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20495,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20492,
                              "src": "32216:5:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 20496,
                              "name": "PARENT_CANNOT_CONTROL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17779,
                              "src": "32224:21:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "32216:29:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 20498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32249:1:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "32216:34:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20507,
                        "nodeType": "IfStatement",
                        "src": "32212:174:101",
                        "trueBody": {
                          "id": 20506,
                          "nodeType": "Block",
                          "src": "32252:134:101",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 20501,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20490,
                                    "src": "32358:4:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 20502,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "32364:3:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 20503,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "32368:6:101",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "32364:10:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 20500,
                                  "name": "Unauthorised",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "32345:12:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) pure"
                                  }
                                },
                                "id": 20504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32345:30:101",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20505,
                              "nodeType": "RevertStatement",
                              "src": "32338:37:101"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 20509,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkForParentCannotControl",
                  "nameLocation": "32111:28:101",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20490,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "32148:4:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20509,
                        "src": "32140:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20489,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "32140:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20492,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "32161:5:101",
                        "nodeType": "VariableDeclaration",
                        "scope": 20509,
                        "src": "32154:12:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20491,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "32154:6:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32139:28:101"
                  },
                  "returnParameters": {
                    "id": 20494,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32202:0:101"
                  },
                  "scope": 20510,
                  "src": "32102:290:101",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 20511,
              "src": "1236:31158:101",
              "usedErrors": [
                16877,
                18103,
                18107,
                18113,
                18119,
                18121,
                18125,
                18129,
                18131
              ]
            }
          ],
          "src": "31:32364:101"
        },
        "id": 101
      },
      "contracts/wrapper/mocks/ERC1155ReceiverMock.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/mocks/ERC1155ReceiverMock.sol",
          "exportedSymbols": {
            "ERC1155ReceiverMock": [
              20649
            ],
            "ERC165": [
              3082
            ],
            "IERC1155Receiver": [
              805
            ],
            "IERC165": [
              3094
            ]
          },
          "id": 20650,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20512,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "199:23:102"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "id": 20513,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20650,
              "sourceUnit": 806,
              "src": "224:68:102",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 20514,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20650,
              "sourceUnit": 3083,
              "src": "293:64:102",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 20515,
                    "name": "IERC1155Receiver",
                    "nameLocations": [
                      "391:16:102"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 805,
                    "src": "391:16:102"
                  },
                  "id": 20516,
                  "nodeType": "InheritanceSpecifier",
                  "src": "391:16:102"
                },
                {
                  "baseName": {
                    "id": 20517,
                    "name": "ERC165",
                    "nameLocations": [
                      "409:6:102"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3082,
                    "src": "409:6:102"
                  },
                  "id": 20518,
                  "nodeType": "InheritanceSpecifier",
                  "src": "409:6:102"
                }
              ],
              "canonicalName": "ERC1155ReceiverMock",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 20649,
              "linearizedBaseContracts": [
                20649,
                3082,
                805,
                3094
              ],
              "name": "ERC1155ReceiverMock",
              "nameLocation": "368:19:102",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 20520,
                  "mutability": "mutable",
                  "name": "_recRetval",
                  "nameLocation": "437:10:102",
                  "nodeType": "VariableDeclaration",
                  "scope": 20649,
                  "src": "422:25:102",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 20519,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "422:6:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 20522,
                  "mutability": "mutable",
                  "name": "_recReverts",
                  "nameLocation": "466:11:102",
                  "nodeType": "VariableDeclaration",
                  "scope": 20649,
                  "src": "453:24:102",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20521,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "453:4:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 20524,
                  "mutability": "mutable",
                  "name": "_batRetval",
                  "nameLocation": "498:10:102",
                  "nodeType": "VariableDeclaration",
                  "scope": 20649,
                  "src": "483:25:102",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 20523,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "483:6:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 20526,
                  "mutability": "mutable",
                  "name": "_batReverts",
                  "nameLocation": "527:11:102",
                  "nodeType": "VariableDeclaration",
                  "scope": 20649,
                  "src": "514:24:102",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20525,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "514:4:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "e4b060c773f3fcca980bf840b0e2856ca36598bb4da2c0c3913b89050630df37",
                  "id": 20538,
                  "name": "Received",
                  "nameLocation": "551:8:102",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20528,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "577:8:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20538,
                        "src": "569:16:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20527,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "569:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20530,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "603:4:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20538,
                        "src": "595:12:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20529,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "595:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20532,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "625:2:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20538,
                        "src": "617:10:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20531,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20534,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "645:5:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20538,
                        "src": "637:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20533,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20536,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "666:4:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20538,
                        "src": "660:10:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20535,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "660:5:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "559:117:102"
                  },
                  "src": "545:132:102"
                },
                {
                  "anonymous": false,
                  "eventSelector": "9facaeece8596899cc39b65f0d1e262008ade8403076a2dfb6df2004fc8d9652",
                  "id": 20552,
                  "name": "BatchReceived",
                  "nameLocation": "688:13:102",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20540,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "719:8:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20552,
                        "src": "711:16:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20539,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "711:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20542,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "745:4:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20552,
                        "src": "737:12:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20541,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "737:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20545,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "769:3:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20552,
                        "src": "759:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20543,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "759:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20544,
                          "nodeType": "ArrayTypeName",
                          "src": "759:9:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20548,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "792:6:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20552,
                        "src": "782:16:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20546,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "782:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20547,
                          "nodeType": "ArrayTypeName",
                          "src": "782:9:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20550,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "814:4:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20552,
                        "src": "808:10:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20549,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "808:5:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "701:123:102"
                  },
                  "src": "682:143:102"
                },
                {
                  "body": {
                    "id": 20579,
                    "nodeType": "Block",
                    "src": "951:139:102",
                    "statements": [
                      {
                        "expression": {
                          "id": 20565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20563,
                            "name": "_recRetval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20520,
                            "src": "961:10:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20564,
                            "name": "recRetval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20554,
                            "src": "974:9:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "961:22:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20566,
                        "nodeType": "ExpressionStatement",
                        "src": "961:22:102"
                      },
                      {
                        "expression": {
                          "id": 20569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20567,
                            "name": "_recReverts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20522,
                            "src": "993:11:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20568,
                            "name": "recReverts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20556,
                            "src": "1007:10:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "993:24:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20570,
                        "nodeType": "ExpressionStatement",
                        "src": "993:24:102"
                      },
                      {
                        "expression": {
                          "id": 20573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20571,
                            "name": "_batRetval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20524,
                            "src": "1027:10:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20572,
                            "name": "batRetval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20558,
                            "src": "1040:9:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1027:22:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20574,
                        "nodeType": "ExpressionStatement",
                        "src": "1027:22:102"
                      },
                      {
                        "expression": {
                          "id": 20577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20575,
                            "name": "_batReverts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20526,
                            "src": "1059:11:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20576,
                            "name": "batReverts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20560,
                            "src": "1073:10:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1059:24:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20578,
                        "nodeType": "ExpressionStatement",
                        "src": "1059:24:102"
                      }
                    ]
                  },
                  "id": 20580,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20561,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20554,
                        "mutability": "mutable",
                        "name": "recRetval",
                        "nameLocation": "859:9:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20580,
                        "src": "852:16:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 20553,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "852:6:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20556,
                        "mutability": "mutable",
                        "name": "recReverts",
                        "nameLocation": "883:10:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20580,
                        "src": "878:15:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 20555,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "878:4:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20558,
                        "mutability": "mutable",
                        "name": "batRetval",
                        "nameLocation": "910:9:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20580,
                        "src": "903:16:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 20557,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:6:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20560,
                        "mutability": "mutable",
                        "name": "batReverts",
                        "nameLocation": "934:10:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20580,
                        "src": "929:15:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 20559,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "929:4:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "842:108:102"
                  },
                  "returnParameters": {
                    "id": 20562,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "951:0:102"
                  },
                  "scope": 20649,
                  "src": "831:259:102",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    786
                  ],
                  "body": {
                    "id": 20612,
                    "nodeType": "Block",
                    "src": "1284:166:102",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1302:12:102",
                              "subExpression": {
                                "id": 20597,
                                "name": "_recReverts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20522,
                                "src": "1303:11:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433131353552656365697665724d6f636b3a20726576657274696e67206f6e2072656365697665",
                              "id": 20599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1316:43:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_28b84c4ed279ffb88476777a67b487aa734a98b71976220822fd64bc4c37ff03",
                                "typeString": "literal_string \"ERC1155ReceiverMock: reverting on receive\""
                              },
                              "value": "ERC1155ReceiverMock: reverting on receive"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_28b84c4ed279ffb88476777a67b487aa734a98b71976220822fd64bc4c37ff03",
                                "typeString": "literal_string \"ERC1155ReceiverMock: reverting on receive\""
                              }
                            ],
                            "id": 20596,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1294:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1294:66:102",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20601,
                        "nodeType": "ExpressionStatement",
                        "src": "1294:66:102"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20603,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20582,
                              "src": "1384:8:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20604,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20584,
                              "src": "1394:4:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20605,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20586,
                              "src": "1400:2:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20606,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20588,
                              "src": "1404:5:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20607,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20590,
                              "src": "1411:4:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 20602,
                            "name": "Received",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20538,
                            "src": "1375:8:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 20608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1375:41:102",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20609,
                        "nodeType": "EmitStatement",
                        "src": "1370:46:102"
                      },
                      {
                        "expression": {
                          "id": 20610,
                          "name": "_recRetval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20520,
                          "src": "1433:10:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 20595,
                        "id": 20611,
                        "nodeType": "Return",
                        "src": "1426:17:102"
                      }
                    ]
                  },
                  "functionSelector": "f23a6e61",
                  "id": 20613,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nameLocation": "1105:17:102",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20592,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1258:8:102"
                  },
                  "parameters": {
                    "id": 20591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20582,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1140:8:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20613,
                        "src": "1132:16:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20581,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1132:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20584,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1166:4:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20613,
                        "src": "1158:12:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20583,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1158:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20586,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1188:2:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20613,
                        "src": "1180:10:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20585,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1180:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20588,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1208:5:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20613,
                        "src": "1200:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20587,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1200:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20590,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1238:4:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20613,
                        "src": "1223:19:102",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20589,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1223:5:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1122:126:102"
                  },
                  "returnParameters": {
                    "id": 20595,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20594,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20613,
                        "src": "1276:6:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 20593,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1276:6:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1275:8:102"
                  },
                  "scope": 20649,
                  "src": "1096:354:102",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    804
                  ],
                  "body": {
                    "id": 20647,
                    "nodeType": "Block",
                    "src": "1673:213:102",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1704:12:102",
                              "subExpression": {
                                "id": 20632,
                                "name": "_batReverts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20526,
                                "src": "1705:11:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433131353552656365697665724d6f636b3a20726576657274696e67206f6e2062617463682072656365697665",
                              "id": 20634,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1730:49:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3e72644f1ec2e45850282bf7e40f58bed4cd632f58748543bbee2b7062f07e6f",
                                "typeString": "literal_string \"ERC1155ReceiverMock: reverting on batch receive\""
                              },
                              "value": "ERC1155ReceiverMock: reverting on batch receive"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3e72644f1ec2e45850282bf7e40f58bed4cd632f58748543bbee2b7062f07e6f",
                                "typeString": "literal_string \"ERC1155ReceiverMock: reverting on batch receive\""
                              }
                            ],
                            "id": 20631,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1683:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1683:106:102",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20636,
                        "nodeType": "ExpressionStatement",
                        "src": "1683:106:102"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20638,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20615,
                              "src": "1818:8:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20639,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20617,
                              "src": "1828:4:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20640,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20620,
                              "src": "1834:3:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 20641,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20623,
                              "src": "1839:6:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 20642,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20625,
                              "src": "1847:4:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 20637,
                            "name": "BatchReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20552,
                            "src": "1804:13:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 20643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1804:48:102",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20644,
                        "nodeType": "EmitStatement",
                        "src": "1799:53:102"
                      },
                      {
                        "expression": {
                          "id": 20645,
                          "name": "_batRetval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20524,
                          "src": "1869:10:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 20630,
                        "id": 20646,
                        "nodeType": "Return",
                        "src": "1862:17:102"
                      }
                    ]
                  },
                  "functionSelector": "bc197c81",
                  "id": 20648,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nameLocation": "1465:22:102",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20627,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1647:8:102"
                  },
                  "parameters": {
                    "id": 20626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20615,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1505:8:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20648,
                        "src": "1497:16:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20614,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1497:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20617,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1531:4:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20648,
                        "src": "1523:12:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20616,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1523:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20620,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "1564:3:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20648,
                        "src": "1545:22:102",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20618,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1545:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20619,
                          "nodeType": "ArrayTypeName",
                          "src": "1545:9:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20623,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "1596:6:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20648,
                        "src": "1577:25:102",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20621,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1577:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20622,
                          "nodeType": "ArrayTypeName",
                          "src": "1577:9:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20625,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1627:4:102",
                        "nodeType": "VariableDeclaration",
                        "scope": 20648,
                        "src": "1612:19:102",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20624,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1612:5:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1487:150:102"
                  },
                  "returnParameters": {
                    "id": 20630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20629,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20648,
                        "src": "1665:6:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 20628,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1665:6:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1664:8:102"
                  },
                  "scope": 20649,
                  "src": "1456:430:102",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 20650,
              "src": "359:1529:102",
              "usedErrors": []
            }
          ],
          "src": "199:1690:102"
        },
        "id": 102
      },
      "contracts/wrapper/mocks/UpgradedNameWrapperMock.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/mocks/UpgradedNameWrapperMock.sol",
          "exportedSymbols": {
            "CANNOT_BURN_FUSES": [
              17764
            ],
            "CANNOT_CREATE_SUBDOMAIN": [
              17776
            ],
            "CANNOT_SET_RESOLVER": [
              17770
            ],
            "CANNOT_SET_TTL": [
              17773
            ],
            "CANNOT_TRANSFER": [
              17767
            ],
            "CANNOT_UNWRAP": [
              17761
            ],
            "CAN_DO_EVERYTHING": [
              17782
            ],
            "ENS": [
              12157
            ],
            "IBaseRegistrar": [
              11222
            ],
            "IERC1155": [
              764
            ],
            "IERC165": [
              3094
            ],
            "IERC721": [
              2493
            ],
            "IMetadataService": [
              17752
            ],
            "INameWrapper": [
              18030
            ],
            "PARENT_CANNOT_CONTROL": [
              17779
            ],
            "UpgradedNameWrapperMock": [
              20876
            ]
          },
          "id": 20877,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20651,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:23:103"
            },
            {
              "absolutePath": "contracts/wrapper/INameWrapper.sol",
              "file": "../INameWrapper.sol",
              "id": 20652,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20877,
              "sourceUnit": 18031,
              "src": "55:29:103",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../../registry/ENS.sol",
              "id": 20653,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20877,
              "sourceUnit": 12158,
              "src": "85:32:103",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ethregistrar/IBaseRegistrar.sol",
              "file": "../../ethregistrar/IBaseRegistrar.sol",
              "id": 20654,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20877,
              "sourceUnit": 11223,
              "src": "118:47:103",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "UpgradedNameWrapperMock",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 20876,
              "linearizedBaseContracts": [
                20876
              ],
              "name": "UpgradedNameWrapperMock",
              "nameLocation": "176:23:103",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "9bb73e9e",
                  "id": 20656,
                  "mutability": "immutable",
                  "name": "oldNameWrapper",
                  "nameLocation": "231:14:103",
                  "nodeType": "VariableDeclaration",
                  "scope": 20876,
                  "src": "206:39:103",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "206:7:103",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 20659,
                  "mutability": "immutable",
                  "name": "ens",
                  "nameLocation": "272:3:103",
                  "nodeType": "VariableDeclaration",
                  "scope": 20876,
                  "src": "251:24:103",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 20658,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 20657,
                      "name": "ENS",
                      "nameLocations": [
                        "251:3:103"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "251:3:103"
                    },
                    "referencedDeclaration": 12157,
                    "src": "251:3:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "2b20e397",
                  "id": 20662,
                  "mutability": "immutable",
                  "name": "registrar",
                  "nameLocation": "313:9:103",
                  "nodeType": "VariableDeclaration",
                  "scope": 20876,
                  "src": "281:41:103",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                    "typeString": "contract IBaseRegistrar"
                  },
                  "typeName": {
                    "id": 20661,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 20660,
                      "name": "IBaseRegistrar",
                      "nameLocations": [
                        "281:14:103"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 11222,
                      "src": "281:14:103"
                    },
                    "referencedDeclaration": 11222,
                    "src": "281:14:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                      "typeString": "contract IBaseRegistrar"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20685,
                    "nodeType": "Block",
                    "src": "433:101:103",
                    "statements": [
                      {
                        "expression": {
                          "id": 20675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20673,
                            "name": "oldNameWrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20656,
                            "src": "443:14:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20674,
                            "name": "_oldNameWrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20664,
                            "src": "460:15:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "443:32:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 20676,
                        "nodeType": "ExpressionStatement",
                        "src": "443:32:103"
                      },
                      {
                        "expression": {
                          "id": 20679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20677,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20659,
                            "src": "485:3:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20678,
                            "name": "_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20667,
                            "src": "491:4:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "485:10:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 20680,
                        "nodeType": "ExpressionStatement",
                        "src": "485:10:103"
                      },
                      {
                        "expression": {
                          "id": 20683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20681,
                            "name": "registrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20662,
                            "src": "505:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                              "typeString": "contract IBaseRegistrar"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20682,
                            "name": "_registrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20670,
                            "src": "517:10:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                              "typeString": "contract IBaseRegistrar"
                            }
                          },
                          "src": "505:22:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                            "typeString": "contract IBaseRegistrar"
                          }
                        },
                        "id": 20684,
                        "nodeType": "ExpressionStatement",
                        "src": "505:22:103"
                      }
                    ]
                  },
                  "id": 20686,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20671,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20664,
                        "mutability": "mutable",
                        "name": "_oldNameWrapper",
                        "nameLocation": "358:15:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20686,
                        "src": "350:23:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "350:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20667,
                        "mutability": "mutable",
                        "name": "_ens",
                        "nameLocation": "387:4:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20686,
                        "src": "383:8:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$12157",
                          "typeString": "contract ENS"
                        },
                        "typeName": {
                          "id": 20666,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 20665,
                            "name": "ENS",
                            "nameLocations": [
                              "383:3:103"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12157,
                            "src": "383:3:103"
                          },
                          "referencedDeclaration": 12157,
                          "src": "383:3:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20670,
                        "mutability": "mutable",
                        "name": "_registrar",
                        "nameLocation": "416:10:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20686,
                        "src": "401:25:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                          "typeString": "contract IBaseRegistrar"
                        },
                        "typeName": {
                          "id": 20669,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 20668,
                            "name": "IBaseRegistrar",
                            "nameLocations": [
                              "401:14:103"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11222,
                            "src": "401:14:103"
                          },
                          "referencedDeclaration": 11222,
                          "src": "401:14:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                            "typeString": "contract IBaseRegistrar"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "340:92:103"
                  },
                  "returnParameters": {
                    "id": 20672,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "433:0:103"
                  },
                  "scope": 20876,
                  "src": "329:205:103",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "68b62ced075679cd06e8bec73ce876151221dc2a8b4f2f166371859837bb9184",
                  "id": 20702,
                  "name": "SetSubnodeRecord",
                  "nameLocation": "546:16:103",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20688,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "580:10:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "572:18:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20687,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20690,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "607:5:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "600:12:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 20689,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "600:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20692,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "630:8:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "622:16:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20691,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "622:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20694,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "656:8:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "648:16:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20693,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "648:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20696,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "681:3:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "674:10:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20695,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20698,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "701:5:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "694:12:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20697,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "694:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20700,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "723:6:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "716:13:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20699,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "716:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "562:173:103"
                  },
                  "src": "540:196:103"
                },
                {
                  "anonymous": false,
                  "eventSelector": "2dacb9d9fb1aa0f64303648a47866cb480ff876892dd74ab0500f18ac5b875ca",
                  "id": 20714,
                  "name": "WrapETH2LD",
                  "nameLocation": "748:10:103",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20704,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "775:5:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20714,
                        "src": "768:12:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 20703,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "768:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20706,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "798:12:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20714,
                        "src": "790:20:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20705,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "790:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20708,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "827:5:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20714,
                        "src": "820:12:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20707,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "820:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20710,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "849:6:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20714,
                        "src": "842:13:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20709,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "842:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20712,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "873:8:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20714,
                        "src": "865:16:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20711,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "865:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "758:129:103"
                  },
                  "src": "742:146:103"
                },
                {
                  "body": {
                    "id": 20790,
                    "nodeType": "Block",
                    "src": "1059:477:103",
                    "statements": [
                      {
                        "assignments": [
                          20728
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20728,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "1077:7:103",
                            "nodeType": "VariableDeclaration",
                            "scope": 20790,
                            "src": "1069:15:103",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20727,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1069:7:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20738,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 20734,
                                      "name": "label",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20716,
                                      "src": "1111:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string calldata"
                                      }
                                    ],
                                    "id": 20733,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1105:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 20732,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1105:5:103",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 20735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1105:12:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "id": 20731,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "1095:9:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 20736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1095:23:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 20730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1087:7:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 20729,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1087:7:103",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 20737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1087:32:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1069:50:103"
                      },
                      {
                        "assignments": [
                          20740
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20740,
                            "mutability": "mutable",
                            "name": "registrant",
                            "nameLocation": "1137:10:103",
                            "nodeType": "VariableDeclaration",
                            "scope": 20790,
                            "src": "1129:18:103",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20739,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1129:7:103",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20745,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20743,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20728,
                              "src": "1168:7:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 20741,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20662,
                              "src": "1150:9:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                "typeString": "contract IBaseRegistrar"
                              }
                            },
                            "id": 20742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1160:7:103",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2426,
                            "src": "1150:17:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view external returns (address)"
                            }
                          },
                          "id": 20744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1150:26:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1129:47:103"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20749,
                              "name": "registrant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20740,
                              "src": "1209:10:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 20752,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1229:4:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UpgradedNameWrapperMock_$20876",
                                    "typeString": "contract UpgradedNameWrapperMock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UpgradedNameWrapperMock_$20876",
                                    "typeString": "contract UpgradedNameWrapperMock"
                                  }
                                ],
                                "id": 20751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1221:7:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20750,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1221:7:103",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1221:13:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20754,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20728,
                              "src": "1236:7:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 20746,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20662,
                              "src": "1186:9:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                "typeString": "contract IBaseRegistrar"
                              }
                            },
                            "id": 20748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1196:12:103",
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2446,
                            "src": "1186:22:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256) external"
                            }
                          },
                          "id": 20755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1186:58:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20756,
                        "nodeType": "ExpressionStatement",
                        "src": "1186:58:103"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20760,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20728,
                              "src": "1272:7:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 20763,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1289:4:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UpgradedNameWrapperMock_$20876",
                                    "typeString": "contract UpgradedNameWrapperMock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UpgradedNameWrapperMock_$20876",
                                    "typeString": "contract UpgradedNameWrapperMock"
                                  }
                                ],
                                "id": 20762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1281:7:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20761,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1281:7:103",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1281:13:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 20757,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20662,
                              "src": "1254:9:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                "typeString": "contract IBaseRegistrar"
                              }
                            },
                            "id": 20759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1264:7:103",
                            "memberName": "reclaim",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11221,
                            "src": "1254:17:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address) external"
                            }
                          },
                          "id": 20765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1254:41:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20766,
                        "nodeType": "ExpressionStatement",
                        "src": "1254:41:103"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 20778,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 20771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20768,
                                  "name": "registrant",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20740,
                                  "src": "1326:10:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 20769,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1340:3:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 20770,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1344:6:103",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "1340:10:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1326:24:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 20774,
                                    "name": "registrant",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20740,
                                    "src": "1397:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 20775,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "1409:3:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 20776,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1413:6:103",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "1409:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 20772,
                                    "name": "registrar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20662,
                                    "src": "1370:9:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBaseRegistrar_$11222",
                                      "typeString": "contract IBaseRegistrar"
                                    }
                                  },
                                  "id": 20773,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1380:16:103",
                                  "memberName": "isApprovedForAll",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2480,
                                  "src": "1370:26:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view external returns (bool)"
                                  }
                                },
                                "id": 20777,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1370:50:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1326:94:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e617574686f7269736564",
                              "id": 20779,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1434:14:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5f0a93f24d3028381be5acbc4ed821462983ec319f1f822e408afc4413b15341",
                                "typeString": "literal_string \"Unauthorised\""
                              },
                              "value": "Unauthorised"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5f0a93f24d3028381be5acbc4ed821462983ec319f1f822e408afc4413b15341",
                                "typeString": "literal_string \"Unauthorised\""
                              }
                            ],
                            "id": 20767,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1305:7:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1305:153:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20781,
                        "nodeType": "ExpressionStatement",
                        "src": "1305:153:103"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20783,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20716,
                              "src": "1484:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 20784,
                              "name": "wrappedOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20718,
                              "src": "1491:12:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20785,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20720,
                              "src": "1505:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20786,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20722,
                              "src": "1512:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 20787,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20724,
                              "src": "1520:8:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 20782,
                            "name": "WrapETH2LD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20714,
                            "src": "1473:10:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint32_$_t_uint64_$_t_address_$returns$__$",
                              "typeString": "function (string memory,address,uint32,uint64,address)"
                            }
                          },
                          "id": 20788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1473:56:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20789,
                        "nodeType": "EmitStatement",
                        "src": "1468:61:103"
                      }
                    ]
                  },
                  "functionSelector": "f9547a9e",
                  "id": 20791,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrapETH2LD",
                  "nameLocation": "903:10:103",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20725,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20716,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "939:5:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20791,
                        "src": "923:21:103",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 20715,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "923:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20718,
                        "mutability": "mutable",
                        "name": "wrappedOwner",
                        "nameLocation": "962:12:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20791,
                        "src": "954:20:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20717,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "954:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20720,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "991:5:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20791,
                        "src": "984:12:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20719,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "984:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20722,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "1013:6:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20791,
                        "src": "1006:13:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20721,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1006:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20724,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1037:8:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20791,
                        "src": "1029:16:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20723,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1029:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "913:138:103"
                  },
                  "returnParameters": {
                    "id": 20726,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1059:0:103"
                  },
                  "scope": 20876,
                  "src": "894:642:103",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20874,
                    "nodeType": "Block",
                    "src": "1755:639:103",
                    "statements": [
                      {
                        "assignments": [
                          20809
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20809,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "1773:9:103",
                            "nodeType": "VariableDeclaration",
                            "scope": 20874,
                            "src": "1765:17:103",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 20808,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1765:7:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20816,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20813,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20795,
                                  "src": "1801:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 20812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1795:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 20811,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1795:5:103",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1795:12:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 20810,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1785:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 20815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1785:23:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1765:43:103"
                      },
                      {
                        "assignments": [
                          20818
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20818,
                            "mutability": "mutable",
                            "name": "node",
                            "nameLocation": "1826:4:103",
                            "nodeType": "VariableDeclaration",
                            "scope": 20874,
                            "src": "1818:12:103",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 20817,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1818:7:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20826,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20822,
                                  "name": "parentNode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20793,
                                  "src": "1860:10:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 20823,
                                  "name": "labelhash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20809,
                                  "src": "1872:9:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 20820,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1843:3:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 20821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1847:12:103",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "1843:16:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 20824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1843:39:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 20819,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1833:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 20825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1833:50:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1818:65:103"
                      },
                      {
                        "assignments": [
                          20828
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20828,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "1901:5:103",
                            "nodeType": "VariableDeclaration",
                            "scope": 20874,
                            "src": "1893:13:103",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20827,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1893:7:103",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20833,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20831,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20818,
                              "src": "1919:4:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 20829,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20659,
                              "src": "1909:3:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 20830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1913:5:103",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12126,
                            "src": "1909:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 20832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1909:15:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1893:31:103"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 20850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 20843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 20838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 20835,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "1955:3:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 20836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1959:6:103",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "1955:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 20837,
                                    "name": "oldNameWrapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20656,
                                    "src": "1969:14:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "1955:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 20842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20839,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20828,
                                    "src": "2003:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 20840,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2012:3:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 20841,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2016:6:103",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2012:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2003:19:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1955:67:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 20846,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20828,
                                    "src": "2063:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 20847,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2070:3:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 20848,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2074:6:103",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2070:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 20844,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20659,
                                    "src": "2042:3:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$12157",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 20845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2046:16:103",
                                  "memberName": "isApprovedForAll",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12156,
                                  "src": "2042:20:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view external returns (bool)"
                                  }
                                },
                                "id": 20849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2042:39:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1955:126:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e6f74206f776e65722f617070726f766564206f722070726576696f7573206e616d655772617070657220636f6e74726f6c6c6572",
                              "id": 20851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2095:55:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_40bd7efd8eb18d3c0684353e84f337b88c8c7ee778c5dbf71fbef8454e46189e",
                                "typeString": "literal_string \"Not owner/approved or previous nameWrapper controller\""
                              },
                              "value": "Not owner/approved or previous nameWrapper controller"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_40bd7efd8eb18d3c0684353e84f337b88c8c7ee778c5dbf71fbef8454e46189e",
                                "typeString": "literal_string \"Not owner/approved or previous nameWrapper controller\""
                              }
                            ],
                            "id": 20834,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1934:7:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1934:226:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20853,
                        "nodeType": "ExpressionStatement",
                        "src": "1934:226:103"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20857,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20818,
                              "src": "2183:4:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 20860,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2197:4:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UpgradedNameWrapperMock_$20876",
                                    "typeString": "contract UpgradedNameWrapperMock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UpgradedNameWrapperMock_$20876",
                                    "typeString": "contract UpgradedNameWrapperMock"
                                  }
                                ],
                                "id": 20859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2189:7:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20858,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2189:7:103",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2189:13:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 20854,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20659,
                              "src": "2170:3:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 20856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2174:8:103",
                            "memberName": "setOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12105,
                            "src": "2170:12:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 20862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2170:33:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20863,
                        "nodeType": "ExpressionStatement",
                        "src": "2170:33:103"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20865,
                              "name": "parentNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20793,
                              "src": "2248:10:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 20866,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20795,
                              "src": "2272:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 20867,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20797,
                              "src": "2291:8:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20868,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20799,
                              "src": "2313:8:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20869,
                              "name": "ttl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20801,
                              "src": "2335:3:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 20870,
                              "name": "fuses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20803,
                              "src": "2352:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 20871,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20805,
                              "src": "2371:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 20864,
                            "name": "SetSubnodeRecord",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20702,
                            "src": "2218:16:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$_t_address_$_t_address_$_t_uint64_$_t_uint32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,string memory,address,address,uint64,uint32,uint64)"
                            }
                          },
                          "id": 20872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2218:169:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20873,
                        "nodeType": "EmitStatement",
                        "src": "2213:174:103"
                      }
                    ]
                  },
                  "functionSelector": "24c1af44",
                  "id": 20875,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSubnodeRecord",
                  "nameLocation": "1551:16:103",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20806,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20793,
                        "mutability": "mutable",
                        "name": "parentNode",
                        "nameLocation": "1585:10:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20875,
                        "src": "1577:18:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 20792,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1577:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20795,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "1619:5:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20875,
                        "src": "1605:19:103",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 20794,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1605:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20797,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "1642:8:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20875,
                        "src": "1634:16:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20796,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1634:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20799,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1668:8:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20875,
                        "src": "1660:16:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20798,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1660:7:103",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20801,
                        "mutability": "mutable",
                        "name": "ttl",
                        "nameLocation": "1693:3:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20875,
                        "src": "1686:10:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20800,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1686:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20803,
                        "mutability": "mutable",
                        "name": "fuses",
                        "nameLocation": "1713:5:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20875,
                        "src": "1706:12:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20802,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1706:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20805,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "1735:6:103",
                        "nodeType": "VariableDeclaration",
                        "scope": 20875,
                        "src": "1728:13:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 20804,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1728:6:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1567:180:103"
                  },
                  "returnParameters": {
                    "id": 20807,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1755:0:103"
                  },
                  "scope": 20876,
                  "src": "1542:852:103",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 20877,
              "src": "167:2229:103",
              "usedErrors": []
            }
          ],
          "src": "31:2366:103"
        },
        "id": 103
      },
      "contracts/wrapper/test/NameGriefer.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/test/NameGriefer.sol",
          "exportedSymbols": {
            "BytesUtils": [
              16817
            ],
            "ENS": [
              12157
            ],
            "IERC1155Receiver": [
              805
            ],
            "INameWrapper": [
              18030
            ],
            "NameGriefer": [
              21067
            ]
          },
          "id": 21068,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20878,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:104"
            },
            {
              "absolutePath": "contracts/wrapper/BytesUtils.sol",
              "file": "../BytesUtils.sol",
              "id": 20880,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21068,
              "sourceUnit": 16818,
              "src": "57:45:104",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 20879,
                    "name": "BytesUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16817,
                    "src": "65:10:104",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/wrapper/INameWrapper.sol",
              "file": "../INameWrapper.sol",
              "id": 20882,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21068,
              "sourceUnit": 18031,
              "src": "103:49:104",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 20881,
                    "name": "INameWrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18030,
                    "src": "111:12:104",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/registry/ENS.sol",
              "file": "../../registry/ENS.sol",
              "id": 20884,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21068,
              "sourceUnit": 12158,
              "src": "153:43:104",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 20883,
                    "name": "ENS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12157,
                    "src": "161:3:104",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "id": 20886,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21068,
              "sourceUnit": 806,
              "src": "197:92:104",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 20885,
                    "name": "IERC1155Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 805,
                    "src": "205:16:104",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 20887,
                    "name": "IERC1155Receiver",
                    "nameLocations": [
                      "315:16:104"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 805,
                    "src": "315:16:104"
                  },
                  "id": 20888,
                  "nodeType": "InheritanceSpecifier",
                  "src": "315:16:104"
                }
              ],
              "canonicalName": "NameGriefer",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 21067,
              "linearizedBaseContracts": [
                21067,
                805,
                3094
              ],
              "name": "NameGriefer",
              "nameLocation": "300:11:104",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 20890,
                  "libraryName": {
                    "id": 20889,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "344:10:104"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16817,
                    "src": "344:10:104"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "338:23:104"
                },
                {
                  "constant": false,
                  "functionSelector": "3f15457f",
                  "id": 20893,
                  "mutability": "immutable",
                  "name": "ens",
                  "nameLocation": "388:3:104",
                  "nodeType": "VariableDeclaration",
                  "scope": 21067,
                  "src": "367:24:104",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$12157",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 20892,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 20891,
                      "name": "ENS",
                      "nameLocations": [
                        "367:3:104"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12157,
                      "src": "367:3:104"
                    },
                    "referencedDeclaration": 12157,
                    "src": "367:3:104",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$12157",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "ac210cc7",
                  "id": 20896,
                  "mutability": "immutable",
                  "name": "wrapper",
                  "nameLocation": "427:7:104",
                  "nodeType": "VariableDeclaration",
                  "scope": 21067,
                  "src": "397:37:104",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_INameWrapper_$18030",
                    "typeString": "contract INameWrapper"
                  },
                  "typeName": {
                    "id": 20895,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 20894,
                      "name": "INameWrapper",
                      "nameLocations": [
                        "397:12:104"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18030,
                      "src": "397:12:104"
                    },
                    "referencedDeclaration": 18030,
                    "src": "397:12:104",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_INameWrapper_$18030",
                      "typeString": "contract INameWrapper"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20927,
                    "nodeType": "Block",
                    "src": "476:147:104",
                    "statements": [
                      {
                        "expression": {
                          "id": 20904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20902,
                            "name": "wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20896,
                            "src": "486:7:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapper_$18030",
                              "typeString": "contract INameWrapper"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20903,
                            "name": "_wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20899,
                            "src": "496:8:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapper_$18030",
                              "typeString": "contract INameWrapper"
                            }
                          },
                          "src": "486:18:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapper_$18030",
                            "typeString": "contract INameWrapper"
                          }
                        },
                        "id": 20905,
                        "nodeType": "ExpressionStatement",
                        "src": "486:18:104"
                      },
                      {
                        "assignments": [
                          20908
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20908,
                            "mutability": "mutable",
                            "name": "_ens",
                            "nameLocation": "518:4:104",
                            "nodeType": "VariableDeclaration",
                            "scope": 20927,
                            "src": "514:8:104",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            },
                            "typeName": {
                              "id": 20907,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 20906,
                                "name": "ENS",
                                "nameLocations": [
                                  "514:3:104"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 12157,
                                "src": "514:3:104"
                              },
                              "referencedDeclaration": 12157,
                              "src": "514:3:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20912,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 20909,
                              "name": "_wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20899,
                              "src": "525:8:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                "typeString": "contract INameWrapper"
                              }
                            },
                            "id": 20910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "534:3:104",
                            "memberName": "ens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17816,
                            "src": "525:12:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ENS_$12157_$",
                              "typeString": "function () view external returns (contract ENS)"
                            }
                          },
                          "id": 20911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "525:14:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "514:25:104"
                      },
                      {
                        "expression": {
                          "id": 20915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20913,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20893,
                            "src": "549:3:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20914,
                            "name": "_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20908,
                            "src": "555:4:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$12157",
                              "typeString": "contract ENS"
                            }
                          },
                          "src": "549:10:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ENS_$12157",
                            "typeString": "contract ENS"
                          }
                        },
                        "id": 20916,
                        "nodeType": "ExpressionStatement",
                        "src": "549:10:104"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20922,
                                  "name": "_wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20899,
                                  "src": "600:8:104",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                    "typeString": "contract INameWrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                    "typeString": "contract INameWrapper"
                                  }
                                ],
                                "id": 20921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "592:7:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20920,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "592:7:104",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "592:17:104",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 20924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "611:4:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 20917,
                              "name": "_ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20908,
                              "src": "569:4:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$12157",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 20919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "574:17:104",
                            "memberName": "setApprovalForAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12119,
                            "src": "569:22:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool) external"
                            }
                          },
                          "id": 20925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "569:47:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20926,
                        "nodeType": "ExpressionStatement",
                        "src": "569:47:104"
                      }
                    ]
                  },
                  "id": 20928,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20899,
                        "mutability": "mutable",
                        "name": "_wrapper",
                        "nameLocation": "466:8:104",
                        "nodeType": "VariableDeclaration",
                        "scope": 20928,
                        "src": "453:21:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INameWrapper_$18030",
                          "typeString": "contract INameWrapper"
                        },
                        "typeName": {
                          "id": 20898,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 20897,
                            "name": "INameWrapper",
                            "nameLocations": [
                              "453:12:104"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 18030,
                            "src": "453:12:104"
                          },
                          "referencedDeclaration": 18030,
                          "src": "453:12:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapper_$18030",
                            "typeString": "contract INameWrapper"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "452:23:104"
                  },
                  "returnParameters": {
                    "id": 20901,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "476:0:104"
                  },
                  "scope": 21067,
                  "src": "441:182:104",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20947,
                    "nodeType": "Block",
                    "src": "674:62:104",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20936,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20930,
                              "src": "697:4:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 20939,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "711:4:104",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameGriefer_$21067",
                                    "typeString": "contract NameGriefer"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameGriefer_$21067",
                                    "typeString": "contract NameGriefer"
                                  }
                                ],
                                "id": 20938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "703:7:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20937,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "703:7:104",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "703:13:104",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 20943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "726:1:104",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 20942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "718:7:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20941,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "718:7:104",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "718:10:104",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 20933,
                              "name": "wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20896,
                              "src": "684:7:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                "typeString": "contract INameWrapper"
                              }
                            },
                            "id": 20935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "692:4:104",
                            "memberName": "wrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17844,
                            "src": "684:12:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (bytes memory,address,address) external"
                            }
                          },
                          "id": 20945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "684:45:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20946,
                        "nodeType": "ExpressionStatement",
                        "src": "684:45:104"
                      }
                    ]
                  },
                  "functionSelector": "1ca8f08e",
                  "id": 20948,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "destroy",
                  "nameLocation": "638:7:104",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20930,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "661:4:104",
                        "nodeType": "VariableDeclaration",
                        "scope": 20948,
                        "src": "646:19:104",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20929,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "646:5:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "645:21:104"
                  },
                  "returnParameters": {
                    "id": 20932,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "674:0:104"
                  },
                  "scope": 21067,
                  "src": "629:107:104",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    786
                  ],
                  "body": {
                    "id": 21025,
                    "nodeType": "Block",
                    "src": "919:589:104",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20965,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20950,
                                "src": "937:8:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 20968,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "957:4:104",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_NameGriefer_$21067",
                                      "typeString": "contract NameGriefer"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_NameGriefer_$21067",
                                      "typeString": "contract NameGriefer"
                                    }
                                  ],
                                  "id": 20967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "949:7:104",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20966,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "949:7:104",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 20969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "949:13:104",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "937:25:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f70657261746f72206d757374206265207573",
                              "id": 20971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "964:21:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5f7637c1dfbb4bf38cd27dbcf7233563de769fef77091aa2f578b0a78cea172",
                                "typeString": "literal_string \"Operator must be us\""
                              },
                              "value": "Operator must be us"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5f7637c1dfbb4bf38cd27dbcf7233563de769fef77091aa2f578b0a78cea172",
                                "typeString": "literal_string \"Operator must be us\""
                              }
                            ],
                            "id": 20964,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "929:7:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "929:57:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20973,
                        "nodeType": "ExpressionStatement",
                        "src": "929:57:104"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20975,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20952,
                                "src": "1004:4:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 20978,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1020:1:104",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 20977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1012:7:104",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20976,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1012:7:104",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 20979,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1012:10:104",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1004:18:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "546f6b656e206d757374206265206e6577",
                              "id": 20981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1024:19:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2e352f30d7ae55afec051558c4813ce120c9ffc625a314a5588a877b346408e5",
                                "typeString": "literal_string \"Token must be new\""
                              },
                              "value": "Token must be new"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2e352f30d7ae55afec051558c4813ce120c9ffc625a314a5588a877b346408e5",
                                "typeString": "literal_string \"Token must be new\""
                              }
                            ],
                            "id": 20974,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "996:7:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "996:48:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20983,
                        "nodeType": "ExpressionStatement",
                        "src": "996:48:104"
                      },
                      {
                        "assignments": [
                          20985
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20985,
                            "mutability": "mutable",
                            "name": "name",
                            "nameLocation": "1095:4:104",
                            "nodeType": "VariableDeclaration",
                            "scope": 21025,
                            "src": "1082:17:104",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 20984,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1082:5:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20993,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 20990,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20954,
                                  "src": "1124:2:104",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 20989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1116:7:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 20988,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1116:7:104",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20991,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1116:11:104",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 20986,
                              "name": "wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20896,
                              "src": "1102:7:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                "typeString": "contract INameWrapper"
                              }
                            },
                            "id": 20987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1110:5:104",
                            "memberName": "names",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17835,
                            "src": "1102:13:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes32) view external returns (bytes memory)"
                            }
                          },
                          "id": 20992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1102:26:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1082:46:104"
                      },
                      {
                        "assignments": [
                          20995,
                          20997
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20995,
                            "mutability": "mutable",
                            "name": "labelhash",
                            "nameLocation": "1147:9:104",
                            "nodeType": "VariableDeclaration",
                            "scope": 21025,
                            "src": "1139:17:104",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 20994,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1139:7:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 20997,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "1166:6:104",
                            "nodeType": "VariableDeclaration",
                            "scope": 21025,
                            "src": "1158:14:104",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20996,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1158:7:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21002,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1191:1:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 20998,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20985,
                              "src": "1176:4:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 20999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1181:9:104",
                            "memberName": "readLabel",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16816,
                            "src": "1176:14:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32,uint256)"
                            }
                          },
                          "id": 21001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1176:17:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$",
                            "typeString": "tuple(bytes32,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1138:55:104"
                      },
                      {
                        "assignments": [
                          21004
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21004,
                            "mutability": "mutable",
                            "name": "parentNode",
                            "nameLocation": "1211:10:104",
                            "nodeType": "VariableDeclaration",
                            "scope": 21025,
                            "src": "1203:18:104",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 21003,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1203:7:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21009,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21007,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20997,
                              "src": "1238:6:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 21005,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20985,
                              "src": "1224:4:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 21006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1229:8:104",
                            "memberName": "namehash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16752,
                            "src": "1224:13:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 21008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1224:21:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1203:42:104"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21013,
                              "name": "parentNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21004,
                              "src": "1270:10:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 21014,
                              "name": "labelhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20995,
                              "src": "1282:9:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 21017,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1301:4:104",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NameGriefer_$21067",
                                    "typeString": "contract NameGriefer"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NameGriefer_$21067",
                                    "typeString": "contract NameGriefer"
                                  }
                                ],
                                "id": 21016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1293:7:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 21015,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1293:7:104",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 21018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1293:13:104",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 21010,
                              "name": "wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20896,
                              "src": "1255:7:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                "typeString": "contract INameWrapper"
                              }
                            },
                            "id": 21012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1263:6:104",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17898,
                            "src": "1255:14:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address) external"
                            }
                          },
                          "id": 21019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1255:52:104",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21020,
                        "nodeType": "ExpressionStatement",
                        "src": "1255:52:104"
                      },
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "id": 21021,
                              "name": "NameGriefer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21067,
                              "src": "1463:11:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_NameGriefer_$21067_$",
                                "typeString": "type(contract NameGriefer)"
                              }
                            },
                            "id": 21022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1475:17:104",
                            "memberName": "onERC1155Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21026,
                            "src": "1463:29:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                              "typeString": "function NameGriefer.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"
                            }
                          },
                          "id": 21023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1493:8:104",
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "1463:38:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 20963,
                        "id": 21024,
                        "nodeType": "Return",
                        "src": "1456:45:104"
                      }
                    ]
                  },
                  "functionSelector": "f23a6e61",
                  "id": 21026,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nameLocation": "751:17:104",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20960,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "893:8:104"
                  },
                  "parameters": {
                    "id": 20959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20950,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "786:8:104",
                        "nodeType": "VariableDeclaration",
                        "scope": 21026,
                        "src": "778:16:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20949,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "778:7:104",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20952,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "812:4:104",
                        "nodeType": "VariableDeclaration",
                        "scope": 21026,
                        "src": "804:12:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20951,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "804:7:104",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20954,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "834:2:104",
                        "nodeType": "VariableDeclaration",
                        "scope": 21026,
                        "src": "826:10:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20953,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "826:7:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20956,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21026,
                        "src": "846:7:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "846:7:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20958,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21026,
                        "src": "863:14:104",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20957,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "863:5:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "768:115:104"
                  },
                  "returnParameters": {
                    "id": 20963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20962,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21026,
                        "src": "911:6:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 20961,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "911:6:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "910:8:104"
                  },
                  "scope": 21067,
                  "src": "742:766:104",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    804
                  ],
                  "body": {
                    "id": 21048,
                    "nodeType": "Block",
                    "src": "1701:67:104",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "id": 21044,
                              "name": "NameGriefer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21067,
                              "src": "1718:11:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_NameGriefer_$21067_$",
                                "typeString": "type(contract NameGriefer)"
                              }
                            },
                            "id": 21045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1730:22:104",
                            "memberName": "onERC1155BatchReceived",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21049,
                            "src": "1718:34:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                              "typeString": "function NameGriefer.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"
                            }
                          },
                          "id": 21046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1753:8:104",
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "1718:43:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 21043,
                        "id": 21047,
                        "nodeType": "Return",
                        "src": "1711:50:104"
                      }
                    ]
                  },
                  "functionSelector": "bc197c81",
                  "id": 21049,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nameLocation": "1523:22:104",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21040,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1675:8:104"
                  },
                  "parameters": {
                    "id": 21039,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21028,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21049,
                        "src": "1555:7:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21027,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1555:7:104",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21030,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21049,
                        "src": "1572:7:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21029,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1572:7:104",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21033,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21049,
                        "src": "1589:18:104",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21031,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1589:7:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21032,
                          "nodeType": "ArrayTypeName",
                          "src": "1589:9:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21036,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21049,
                        "src": "1617:18:104",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21034,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1617:7:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21035,
                          "nodeType": "ArrayTypeName",
                          "src": "1617:9:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21038,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21049,
                        "src": "1645:14:104",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21037,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1645:5:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1545:120:104"
                  },
                  "returnParameters": {
                    "id": 21043,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21042,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21049,
                        "src": "1693:6:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 21041,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1693:6:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1692:8:104"
                  },
                  "scope": 21067,
                  "src": "1514:254:104",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3093
                  ],
                  "body": {
                    "id": 21065,
                    "nodeType": "Block",
                    "src": "1895:398:104",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 21059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21057,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21051,
                              "src": "1924:11:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30783031666663396137",
                              "id": 21058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1939:10:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_33540519_by_1",
                                "typeString": "int_const 33540519"
                              },
                              "value": "0x01ffc9a7"
                            },
                            "src": "1924:25:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 21062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21060,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21051,
                              "src": "2041:11:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30783465323331326530",
                              "id": 21061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2056:10:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1310921440_by_1",
                                "typeString": "int_const 1310921440"
                              },
                              "value": "0x4e2312e0"
                            },
                            "src": "2041:25:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1924:142:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 21056,
                        "id": 21064,
                        "nodeType": "Return",
                        "src": "1905:161:104"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 21066,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1783:17:104",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21053,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1859:8:104"
                  },
                  "parameters": {
                    "id": 21052,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21051,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "1808:11:104",
                        "nodeType": "VariableDeclaration",
                        "scope": 21066,
                        "src": "1801:18:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 21050,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1801:6:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1800:20:104"
                  },
                  "returnParameters": {
                    "id": 21056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21055,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21066,
                        "src": "1885:4:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21054,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1885:4:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1884:6:104"
                  },
                  "scope": 21067,
                  "src": "1774:519:104",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 21068,
              "src": "291:2004:104",
              "usedErrors": []
            }
          ],
          "src": "31:2265:104"
        },
        "id": 104
      },
      "contracts/wrapper/test/TestBytesUtils.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/test/TestBytesUtils.sol",
          "exportedSymbols": {
            "BytesUtils": [
              16817
            ],
            "TestBytesUtils": [
              21106
            ]
          },
          "id": 21107,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21069,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:105"
            },
            {
              "absolutePath": "contracts/wrapper/BytesUtils.sol",
              "file": "../BytesUtils.sol",
              "id": 21071,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21107,
              "sourceUnit": 16818,
              "src": "57:45:105",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 21070,
                    "name": "BytesUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16817,
                    "src": "65:10:105",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "TestBytesUtils",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 21106,
              "linearizedBaseContracts": [
                21106
              ],
              "name": "TestBytesUtils",
              "nameLocation": "113:14:105",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 21073,
                  "libraryName": {
                    "id": 21072,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "140:10:105"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16817,
                    "src": "140:10:105"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "134:23:105"
                },
                {
                  "body": {
                    "id": 21089,
                    "nodeType": "Block",
                    "src": "286:46:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21086,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21077,
                              "src": "318:6:105",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 21084,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21075,
                              "src": "303:4:105",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 21085,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "308:9:105",
                            "memberName": "readLabel",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16816,
                            "src": "303:14:105",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32,uint256)"
                            }
                          },
                          "id": 21087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "303:22:105",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$",
                            "typeString": "tuple(bytes32,uint256)"
                          }
                        },
                        "functionReturnParameters": 21083,
                        "id": 21088,
                        "nodeType": "Return",
                        "src": "296:29:105"
                      }
                    ]
                  },
                  "functionSelector": "90497d23",
                  "id": 21090,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readLabel",
                  "nameLocation": "172:9:105",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21075,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "197:4:105",
                        "nodeType": "VariableDeclaration",
                        "scope": 21090,
                        "src": "182:19:105",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21074,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "182:5:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21077,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "211:6:105",
                        "nodeType": "VariableDeclaration",
                        "scope": 21090,
                        "src": "203:14:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "203:7:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "181:37:105"
                  },
                  "returnParameters": {
                    "id": 21083,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21080,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21090,
                        "src": "264:7:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 21079,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "264:7:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21082,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21090,
                        "src": "273:7:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21081,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "273:7:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "263:18:105"
                  },
                  "scope": 21106,
                  "src": "163:169:105",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21104,
                    "nodeType": "Block",
                    "src": "451:45:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21101,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21094,
                              "src": "482:6:105",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 21099,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21092,
                              "src": "468:4:105",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 21100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "473:8:105",
                            "memberName": "namehash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16752,
                            "src": "468:13:105",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 21102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "468:21:105",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 21098,
                        "id": 21103,
                        "nodeType": "Return",
                        "src": "461:28:105"
                      }
                    ]
                  },
                  "functionSelector": "ecc4401d",
                  "id": 21105,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "namehash",
                  "nameLocation": "347:8:105",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21095,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21092,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "371:4:105",
                        "nodeType": "VariableDeclaration",
                        "scope": 21105,
                        "src": "356:19:105",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21091,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "356:5:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21094,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "385:6:105",
                        "nodeType": "VariableDeclaration",
                        "scope": 21105,
                        "src": "377:14:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21093,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "377:7:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "355:37:105"
                  },
                  "returnParameters": {
                    "id": 21098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21097,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21105,
                        "src": "438:7:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 21096,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "438:7:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "437:9:105"
                  },
                  "scope": 21106,
                  "src": "338:158:105",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 21107,
              "src": "104:394:105",
              "usedErrors": []
            }
          ],
          "src": "31:468:105"
        },
        "id": 105
      },
      "contracts/wrapper/test/TestNameWrapperReentrancy.sol": {
        "ast": {
          "absolutePath": "contracts/wrapper/test/TestNameWrapperReentrancy.sol",
          "exportedSymbols": {
            "CANNOT_BURN_FUSES": [
              17764
            ],
            "CANNOT_CREATE_SUBDOMAIN": [
              17776
            ],
            "CANNOT_SET_RESOLVER": [
              17770
            ],
            "CANNOT_SET_TTL": [
              17773
            ],
            "CANNOT_TRANSFER": [
              17767
            ],
            "CANNOT_UNWRAP": [
              17761
            ],
            "CAN_DO_EVERYTHING": [
              17782
            ],
            "ENS": [
              12157
            ],
            "ERC165": [
              3082
            ],
            "IBaseRegistrar": [
              11222
            ],
            "IERC1155": [
              764
            ],
            "IERC1155Receiver": [
              805
            ],
            "IERC165": [
              3094
            ],
            "IERC721": [
              2493
            ],
            "IMetadataService": [
              17752
            ],
            "INameWrapper": [
              18030
            ],
            "PARENT_CANNOT_CONTROL": [
              17779
            ],
            "TestNameWrapperReentrancy": [
              21252
            ]
          },
          "id": 21253,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21108,
              "literals": [
                "solidity",
                "~",
                "0.8",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:106"
            },
            {
              "absolutePath": "contracts/wrapper/INameWrapper.sol",
              "file": "../INameWrapper.sol",
              "id": 21109,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21253,
              "sourceUnit": 18031,
              "src": "57:29:106",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "id": 21110,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21253,
              "sourceUnit": 806,
              "src": "87:68:106",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 21111,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21253,
              "sourceUnit": 3083,
              "src": "156:64:106",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 21112,
                    "name": "ERC165",
                    "nameLocations": [
                      "260:6:106"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3082,
                    "src": "260:6:106"
                  },
                  "id": 21113,
                  "nodeType": "InheritanceSpecifier",
                  "src": "260:6:106"
                },
                {
                  "baseName": {
                    "id": 21114,
                    "name": "IERC1155Receiver",
                    "nameLocations": [
                      "268:16:106"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 805,
                    "src": "268:16:106"
                  },
                  "id": 21115,
                  "nodeType": "InheritanceSpecifier",
                  "src": "268:16:106"
                }
              ],
              "canonicalName": "TestNameWrapperReentrancy",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 21252,
              "linearizedBaseContracts": [
                21252,
                805,
                3082,
                3094
              ],
              "name": "TestNameWrapperReentrancy",
              "nameLocation": "231:25:106",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 21118,
                  "mutability": "mutable",
                  "name": "nameWrapper",
                  "nameLocation": "304:11:106",
                  "nodeType": "VariableDeclaration",
                  "scope": 21252,
                  "src": "291:24:106",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_INameWrapper_$18030",
                    "typeString": "contract INameWrapper"
                  },
                  "typeName": {
                    "id": 21117,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 21116,
                      "name": "INameWrapper",
                      "nameLocations": [
                        "291:12:106"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18030,
                      "src": "291:12:106"
                    },
                    "referencedDeclaration": 18030,
                    "src": "291:12:106",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_INameWrapper_$18030",
                      "typeString": "contract INameWrapper"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21120,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "329:5:106",
                  "nodeType": "VariableDeclaration",
                  "scope": 21252,
                  "src": "321:13:106",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21119,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "321:7:106",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21122,
                  "mutability": "mutable",
                  "name": "parentNode",
                  "nameLocation": "348:10:106",
                  "nodeType": "VariableDeclaration",
                  "scope": 21252,
                  "src": "340:18:106",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21121,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "340:7:106",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21124,
                  "mutability": "mutable",
                  "name": "labelHash",
                  "nameLocation": "372:9:106",
                  "nodeType": "VariableDeclaration",
                  "scope": 21252,
                  "src": "364:17:106",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21123,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "364:7:106",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21126,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "395:7:106",
                  "nodeType": "VariableDeclaration",
                  "scope": 21252,
                  "src": "387:15:106",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21125,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "387:7:106",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21154,
                    "nodeType": "Block",
                    "src": "543:133:106",
                    "statements": [
                      {
                        "expression": {
                          "id": 21140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21138,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21120,
                            "src": "553:5:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21139,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21128,
                            "src": "561:6:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "553:14:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21141,
                        "nodeType": "ExpressionStatement",
                        "src": "553:14:106"
                      },
                      {
                        "expression": {
                          "id": 21144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21142,
                            "name": "nameWrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21118,
                            "src": "577:11:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapper_$18030",
                              "typeString": "contract INameWrapper"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21143,
                            "name": "_nameWrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21131,
                            "src": "591:12:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INameWrapper_$18030",
                              "typeString": "contract INameWrapper"
                            }
                          },
                          "src": "577:26:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapper_$18030",
                            "typeString": "contract INameWrapper"
                          }
                        },
                        "id": 21145,
                        "nodeType": "ExpressionStatement",
                        "src": "577:26:106"
                      },
                      {
                        "expression": {
                          "id": 21148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21146,
                            "name": "parentNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21122,
                            "src": "613:10:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21147,
                            "name": "_parentNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21133,
                            "src": "626:11:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "613:24:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 21149,
                        "nodeType": "ExpressionStatement",
                        "src": "613:24:106"
                      },
                      {
                        "expression": {
                          "id": 21152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21150,
                            "name": "labelHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21124,
                            "src": "647:9:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21151,
                            "name": "_labelHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21135,
                            "src": "659:10:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "647:22:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 21153,
                        "nodeType": "ExpressionStatement",
                        "src": "647:22:106"
                      }
                    ]
                  },
                  "id": 21155,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21136,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21128,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "438:6:106",
                        "nodeType": "VariableDeclaration",
                        "scope": 21155,
                        "src": "430:14:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21127,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "430:7:106",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21131,
                        "mutability": "mutable",
                        "name": "_nameWrapper",
                        "nameLocation": "467:12:106",
                        "nodeType": "VariableDeclaration",
                        "scope": 21155,
                        "src": "454:25:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INameWrapper_$18030",
                          "typeString": "contract INameWrapper"
                        },
                        "typeName": {
                          "id": 21130,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 21129,
                            "name": "INameWrapper",
                            "nameLocations": [
                              "454:12:106"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 18030,
                            "src": "454:12:106"
                          },
                          "referencedDeclaration": 18030,
                          "src": "454:12:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INameWrapper_$18030",
                            "typeString": "contract INameWrapper"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21133,
                        "mutability": "mutable",
                        "name": "_parentNode",
                        "nameLocation": "497:11:106",
                        "nodeType": "VariableDeclaration",
                        "scope": 21155,
                        "src": "489:19:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 21132,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "489:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21135,
                        "mutability": "mutable",
                        "name": "_labelHash",
                        "nameLocation": "526:10:106",
                        "nodeType": "VariableDeclaration",
                        "scope": 21155,
                        "src": "518:18:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 21134,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "518:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "420:122:106"
                  },
                  "returnParameters": {
                    "id": 21137,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "543:0:106"
                  },
                  "scope": 21252,
                  "src": "409:267:106",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3081,
                    3093
                  ],
                  "body": {
                    "id": 21177,
                    "nodeType": "Block",
                    "src": "834:137:106",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 21170,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21165,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21157,
                              "src": "863:11:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 21167,
                                    "name": "IERC1155Receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 805,
                                    "src": "883:16:106",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$805_$",
                                      "typeString": "type(contract IERC1155Receiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$805_$",
                                      "typeString": "type(contract IERC1155Receiver)"
                                    }
                                  ],
                                  "id": 21166,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "878:4:106",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 21168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "878:22:106",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155Receiver_$805",
                                  "typeString": "type(contract IERC1155Receiver)"
                                }
                              },
                              "id": 21169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "901:11:106",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "878:34:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "863:49:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 21173,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21157,
                                "src": "952:11:106",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 21171,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "928:5:106",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_TestNameWrapperReentrancy_$21252_$",
                                  "typeString": "type(contract super TestNameWrapperReentrancy)"
                                }
                              },
                              "id": 21172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "934:17:106",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3081,
                              "src": "928:23:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 21174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "928:36:106",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "863:101:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 21164,
                        "id": 21176,
                        "nodeType": "Return",
                        "src": "844:120:106"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 21178,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "691:17:106",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21161,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 21159,
                        "name": "ERC165",
                        "nameLocations": [
                          "790:6:106"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3082,
                        "src": "790:6:106"
                      },
                      {
                        "id": 21160,
                        "name": "IERC165",
                        "nameLocations": [
                          "798:7:106"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3094,
                        "src": "798:7:106"
                      }
                    ],
                    "src": "781:25:106"
                  },
                  "parameters": {
                    "id": 21158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21157,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "716:11:106",
                        "nodeType": "VariableDeclaration",
                        "scope": 21178,
                        "src": "709:18:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 21156,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:6:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "708:20:106"
                  },
                  "returnParameters": {
                    "id": 21164,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21163,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21178,
                        "src": "824:4:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21162,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "824:4:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "823:6:106"
                  },
                  "scope": 21252,
                  "src": "682:289:106",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    786
                  ],
                  "body": {
                    "id": 21210,
                    "nodeType": "Block",
                    "src": "1139:137:106",
                    "statements": [
                      {
                        "expression": {
                          "id": 21196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21194,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21126,
                            "src": "1149:7:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21195,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21184,
                            "src": "1159:3:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1149:13:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21197,
                        "nodeType": "ExpressionStatement",
                        "src": "1149:13:106"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21201,
                              "name": "parentNode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21122,
                              "src": "1191:10:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 21202,
                              "name": "labelHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21124,
                              "src": "1203:9:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 21203,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21120,
                              "src": "1214:5:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 21198,
                              "name": "nameWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21118,
                              "src": "1172:11:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                "typeString": "contract INameWrapper"
                              }
                            },
                            "id": 21200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1184:6:106",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17898,
                            "src": "1172:18:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address) external"
                            }
                          },
                          "id": 21204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1172:48:106",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21205,
                        "nodeType": "ExpressionStatement",
                        "src": "1172:48:106"
                      },
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "id": 21206,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "1238:4:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TestNameWrapperReentrancy_$21252",
                                "typeString": "contract TestNameWrapperReentrancy"
                              }
                            },
                            "id": 21207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1243:17:106",
                            "memberName": "onERC1155Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21211,
                            "src": "1238:22:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 21208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1261:8:106",
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "1238:31:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 21193,
                        "id": 21209,
                        "nodeType": "Return",
                        "src": "1231:38:106"
                      }
                    ]
                  },
                  "functionSelector": "f23a6e61",
                  "id": 21211,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nameLocation": "986:17:106",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21190,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1113:8:106"
                  },
                  "parameters": {
                    "id": 21189,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21180,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21211,
                        "src": "1013:7:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21179,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1013:7:106",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21182,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21211,
                        "src": "1030:7:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21181,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1030:7:106",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21184,
                        "mutability": "mutable",
                        "name": "_id",
                        "nameLocation": "1055:3:106",
                        "nodeType": "VariableDeclaration",
                        "scope": 21211,
                        "src": "1047:11:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21183,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1047:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21186,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21211,
                        "src": "1068:7:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21185,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1068:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21188,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21211,
                        "src": "1085:14:106",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21187,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1085:5:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1003:102:106"
                  },
                  "returnParameters": {
                    "id": 21193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21192,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21211,
                        "src": "1131:6:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 21191,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1131:6:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1130:8:106"
                  },
                  "scope": 21252,
                  "src": "977:299:106",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    804
                  ],
                  "body": {
                    "id": 21233,
                    "nodeType": "Block",
                    "src": "1469:60:106",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "id": 21229,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "1486:4:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TestNameWrapperReentrancy_$21252",
                                "typeString": "contract TestNameWrapperReentrancy"
                              }
                            },
                            "id": 21230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1491:22:106",
                            "memberName": "onERC1155BatchReceived",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21234,
                            "src": "1486:27:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 21231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1514:8:106",
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "1486:36:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 21228,
                        "id": 21232,
                        "nodeType": "Return",
                        "src": "1479:43:106"
                      }
                    ]
                  },
                  "functionSelector": "bc197c81",
                  "id": 21234,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nameLocation": "1291:22:106",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21225,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1443:8:106"
                  },
                  "parameters": {
                    "id": 21224,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21213,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21234,
                        "src": "1323:7:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21212,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1323:7:106",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21215,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21234,
                        "src": "1340:7:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21214,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1340:7:106",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21218,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21234,
                        "src": "1357:16:106",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21216,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1357:7:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21217,
                          "nodeType": "ArrayTypeName",
                          "src": "1357:9:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21221,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21234,
                        "src": "1383:16:106",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21219,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1383:7:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21220,
                          "nodeType": "ArrayTypeName",
                          "src": "1383:9:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21223,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21234,
                        "src": "1409:12:106",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21222,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1409:5:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1313:114:106"
                  },
                  "returnParameters": {
                    "id": 21228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21227,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21234,
                        "src": "1461:6:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 21226,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1461:6:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1460:8:106"
                  },
                  "scope": 21252,
                  "src": "1282:247:106",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21250,
                    "nodeType": "Block",
                    "src": "1566:83:106",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 21242,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1613:4:106",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_TestNameWrapperReentrancy_$21252",
                                    "typeString": "contract TestNameWrapperReentrancy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_TestNameWrapperReentrancy_$21252",
                                    "typeString": "contract TestNameWrapperReentrancy"
                                  }
                                ],
                                "id": 21241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1605:7:106",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 21240,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1605:7:106",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 21243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1605:13:106",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21244,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21120,
                              "src": "1620:5:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21245,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21126,
                              "src": "1627:7:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 21246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1636:1:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "hexValue": "",
                              "id": 21247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1639:2:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "id": 21237,
                              "name": "nameWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21118,
                              "src": "1576:11:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INameWrapper_$18030",
                                "typeString": "contract INameWrapper"
                              }
                            },
                            "id": 21239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1588:16:106",
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 747,
                            "src": "1576:28:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 21248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1576:66:106",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21249,
                        "nodeType": "ExpressionStatement",
                        "src": "1576:66:106"
                      }
                    ]
                  },
                  "functionSelector": "905783c6",
                  "id": 21251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimToOwner",
                  "nameLocation": "1544:12:106",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21235,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1556:2:106"
                  },
                  "returnParameters": {
                    "id": 21236,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1566:0:106"
                  },
                  "scope": 21252,
                  "src": "1535:114:106",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 21253,
              "src": "222:1429:106",
              "usedErrors": []
            }
          ],
          "src": "31:1621:106"
        },
        "id": 106
      },
      "test/dnssec-oracle/TestBytesUtils.sol": {
        "ast": {
          "absolutePath": "test/dnssec-oracle/TestBytesUtils.sol",
          "exportedSymbols": {
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "RRUtils": [
              7059
            ],
            "TestBytesUtils": [
              21882
            ]
          },
          "id": 21883,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21254,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:107"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/RRUtils.sol",
              "file": "../../contracts/dnssec-oracle/RRUtils.sol",
              "id": 21255,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21883,
              "sourceUnit": 7060,
              "src": "25:51:107",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../../contracts/dnssec-oracle/BytesUtils.sol",
              "id": 21256,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21883,
              "sourceUnit": 5018,
              "src": "77:54:107",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "TestBytesUtils",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 21882,
              "linearizedBaseContracts": [
                21882
              ],
              "name": "TestBytesUtils",
              "nameLocation": "142:14:107",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 21258,
                  "libraryName": {
                    "id": 21257,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "167:10:107"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "167:10:107"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "161:23:107"
                },
                {
                  "body": {
                    "id": 21303,
                    "nodeType": "Block",
                    "src": "222:433:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "246:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 21265,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "249:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "",
                                    "id": 21262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "236:2:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  },
                                  "id": 21263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "239:6:107",
                                  "memberName": "keccak",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4263,
                                  "src": "236:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "236:15:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730",
                                    "id": 21269,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "263:66:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1",
                                      "typeString": "int_const 8947...(69 digits omitted)...1552"
                                    },
                                    "value": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1",
                                      "typeString": "int_const 8947...(69 digits omitted)...1552"
                                    }
                                  ],
                                  "id": 21268,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "255:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21267,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "255:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "255:75:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "236:94:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e636f72726563742068617368206f6620656d70747920737472696e67",
                              "id": 21272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "332:32:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ccdc0392a10c2d827126b17a796b48eafa036f7ca92558db0c3b7d498620cb42",
                                "typeString": "literal_string \"Incorrect hash of empty string\""
                              },
                              "value": "Incorrect hash of empty string"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ccdc0392a10c2d827126b17a796b48eafa036f7ca92558db0c3b7d498620cb42",
                                "typeString": "literal_string \"Incorrect hash of empty string\""
                              }
                            ],
                            "id": 21261,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "228:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "228:137:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21274,
                        "nodeType": "ExpressionStatement",
                        "src": "228:137:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21278,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "392:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "33",
                                    "id": 21279,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "395:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    },
                                    "value": "3"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "666f6f",
                                    "id": 21276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "379:5:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_41b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d",
                                      "typeString": "literal_string \"foo\""
                                    },
                                    "value": "foo"
                                  },
                                  "id": 21277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "385:6:107",
                                  "memberName": "keccak",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4263,
                                  "src": "379:12:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21280,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "379:18:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307834316231613036343937353261663162323862336463323961313535366565653738316534613463336131663766353366393066613833346465303938633464",
                                    "id": 21283,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "409:66:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_29714174079724412745887019504253973571029824035614949642323418802670541573197_by_1",
                                      "typeString": "int_const 2971...(69 digits omitted)...3197"
                                    },
                                    "value": "0x41b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_29714174079724412745887019504253973571029824035614949642323418802670541573197_by_1",
                                      "typeString": "int_const 2971...(69 digits omitted)...3197"
                                    }
                                  ],
                                  "id": 21282,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "401:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21281,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "401:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21284,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "401:75:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "379:97:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e636f72726563742068617368206f662027666f6f27",
                              "id": 21286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "478:25:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c32175d32a0e82681a8b7e8be3eb49f97845b39b03a1b2918b41127279713506",
                                "typeString": "literal_string \"Incorrect hash of 'foo'\""
                              },
                              "value": "Incorrect hash of 'foo'"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c32175d32a0e82681a8b7e8be3eb49f97845b39b03a1b2918b41127279713506",
                                "typeString": "literal_string \"Incorrect hash of 'foo'\""
                              }
                            ],
                            "id": 21275,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "371:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "371:133:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21288,
                        "nodeType": "ExpressionStatement",
                        "src": "371:133:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21292,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "531:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 21293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "534:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "666f6f",
                                    "id": 21290,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "518:5:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_41b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d",
                                      "typeString": "literal_string \"foo\""
                                    },
                                    "value": "foo"
                                  },
                                  "id": 21291,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "524:6:107",
                                  "memberName": "keccak",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4263,
                                  "src": "518:12:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "518:18:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730",
                                    "id": 21297,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "548:66:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1",
                                      "typeString": "int_const 8947...(69 digits omitted)...1552"
                                    },
                                    "value": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1",
                                      "typeString": "int_const 8947...(69 digits omitted)...1552"
                                    }
                                  ],
                                  "id": 21296,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "540:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21295,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "540:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "540:75:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "518:97:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e636f72726563742068617368206f6620656d70747920737472696e67",
                              "id": 21300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "617:32:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ccdc0392a10c2d827126b17a796b48eafa036f7ca92558db0c3b7d498620cb42",
                                "typeString": "literal_string \"Incorrect hash of empty string\""
                              },
                              "value": "Incorrect hash of empty string"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ccdc0392a10c2d827126b17a796b48eafa036f7ca92558db0c3b7d498620cb42",
                                "typeString": "literal_string \"Incorrect hash of empty string\""
                              }
                            ],
                            "id": 21289,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "510:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "510:140:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21302,
                        "nodeType": "ExpressionStatement",
                        "src": "510:140:107"
                      }
                    ]
                  },
                  "functionSelector": "673dcc73",
                  "id": 21304,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testKeccak",
                  "nameLocation": "197:10:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "207:2:107"
                  },
                  "returnParameters": {
                    "id": 21260,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "222:0:107"
                  },
                  "scope": 21882,
                  "src": "188:467:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21363,
                    "nodeType": "Block",
                    "src": "693:416:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "68656c6c6f",
                                    "id": 21310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "722:7:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                      "typeString": "literal_string \"hello\""
                                    },
                                    "value": "hello"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                      "typeString": "literal_string \"hello\""
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "68656c6c6f",
                                    "id": 21308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "707:7:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                      "typeString": "literal_string \"hello\""
                                    },
                                    "value": "hello"
                                  },
                                  "id": 21309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "715:6:107",
                                  "memberName": "equals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4535,
                                  "src": "707:14:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                  }
                                },
                                "id": 21311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "707:23:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "734:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "707:31:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537472696e6720657175616c697479",
                              "id": 21314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "740:17:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_596eb6791a5069d9c5aafa8b2f0e60843ddf87d5636ca7393ffcee72fd5606fe",
                                "typeString": "literal_string \"String equality\""
                              },
                              "value": "String equality"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_596eb6791a5069d9c5aafa8b2f0e60843ddf87d5636ca7393ffcee72fd5606fe",
                                "typeString": "literal_string \"String equality\""
                              }
                            ],
                            "id": 21307,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "699:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "699:59:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21316,
                        "nodeType": "ExpressionStatement",
                        "src": "699:59:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "676f6f64627965",
                                    "id": 21320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "787:9:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_795d549ea199f3d64ea49f5792287667c58f283ef1d500cba523a8fe1fc3d430",
                                      "typeString": "literal_string \"goodbye\""
                                    },
                                    "value": "goodbye"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_795d549ea199f3d64ea49f5792287667c58f283ef1d500cba523a8fe1fc3d430",
                                      "typeString": "literal_string \"goodbye\""
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "68656c6c6f",
                                    "id": 21318,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "772:7:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                      "typeString": "literal_string \"hello\""
                                    },
                                    "value": "hello"
                                  },
                                  "id": 21319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "780:6:107",
                                  "memberName": "equals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4535,
                                  "src": "772:14:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                  }
                                },
                                "id": 21321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "772:25:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "66616c7365",
                                "id": 21322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "801:5:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "src": "772:34:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537472696e6720696e657175616c697479",
                              "id": 21324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "808:19:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_804bb9153fba379de973d097c160a9b9da9ca174d530baa1cafee83d4c2833fc",
                                "typeString": "literal_string \"String inequality\""
                              },
                              "value": "String inequality"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_804bb9153fba379de973d097c160a9b9da9ca174d530baa1cafee83d4c2833fc",
                                "typeString": "literal_string \"String inequality\""
                              }
                            ],
                            "id": 21317,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "764:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "764:64:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21326,
                        "nodeType": "ExpressionStatement",
                        "src": "764:64:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 21330,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "857:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "656c6c6f",
                                    "id": 21331,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "860:6:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_729b67e29bd543b60a81f35aba2c80ac4d8ea4caba9a72ed978093c22148af50",
                                      "typeString": "literal_string \"ello\""
                                    },
                                    "value": "ello"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_729b67e29bd543b60a81f35aba2c80ac4d8ea4caba9a72ed978093c22148af50",
                                      "typeString": "literal_string \"ello\""
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "68656c6c6f",
                                    "id": 21328,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "842:7:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                      "typeString": "literal_string \"hello\""
                                    },
                                    "value": "hello"
                                  },
                                  "id": 21329,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "850:6:107",
                                  "memberName": "equals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4510,
                                  "src": "842:14:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,bytes memory) pure returns (bool)"
                                  }
                                },
                                "id": 21332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "842:25:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "871:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "842:33:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537562737472696e6720746f20737472696e6720657175616c697479",
                              "id": 21335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "877:30:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e4473e14bb320ebfc1a8c77d907eed343535ecb4dde11ed6020cbeaa611e61ac",
                                "typeString": "literal_string \"Substring to string equality\""
                              },
                              "value": "Substring to string equality"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e4473e14bb320ebfc1a8c77d907eed343535ecb4dde11ed6020cbeaa611e61ac",
                                "typeString": "literal_string \"Substring to string equality\""
                              }
                            ],
                            "id": 21327,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "834:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "834:74:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21337,
                        "nodeType": "ExpressionStatement",
                        "src": "834:74:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 21341,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "937:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "6a656c6c6f",
                                    "id": 21342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "940:7:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_3a23e4bd396e5a1f6ca1e1e0a95873fc0dfa15493c9ae32d9772dc7c1838fa69",
                                      "typeString": "literal_string \"jello\""
                                    },
                                    "value": "jello"
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 21343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "949:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "34",
                                    "id": 21344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "952:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_3a23e4bd396e5a1f6ca1e1e0a95873fc0dfa15493c9ae32d9772dc7c1838fa69",
                                      "typeString": "literal_string \"jello\""
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "68656c6c6f",
                                    "id": 21339,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "922:7:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                      "typeString": "literal_string \"hello\""
                                    },
                                    "value": "hello"
                                  },
                                  "id": 21340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "930:6:107",
                                  "memberName": "equals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4449,
                                  "src": "922:14:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 21345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "922:32:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "958:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "922:40:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537562737472696e6720746f20737562737472696e6720657175616c697479",
                              "id": 21348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "964:33:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_843e99517f2a31c84fc8209ad696769d721e30918a2a7db0c030db2ed1639b7b",
                                "typeString": "literal_string \"Substring to substring equality\""
                              },
                              "value": "Substring to substring equality"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_843e99517f2a31c84fc8209ad696769d721e30918a2a7db0c030db2ed1639b7b",
                                "typeString": "literal_string \"Substring to substring equality\""
                              }
                            ],
                            "id": 21338,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "914:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "914:84:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21350,
                        "nodeType": "ExpressionStatement",
                        "src": "914:84:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 21354,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1028:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "61626368656c6c6f",
                                    "id": 21355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1031:10:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_16d6c3a2d4cca1cfbed5a33a6345ab591fee8b8dc7f5fac603cacc6529d684d8",
                                      "typeString": "literal_string \"abchello\""
                                    },
                                    "value": "abchello"
                                  },
                                  {
                                    "hexValue": "33",
                                    "id": 21356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1043:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    },
                                    "value": "3"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_16d6c3a2d4cca1cfbed5a33a6345ab591fee8b8dc7f5fac603cacc6529d684d8",
                                      "typeString": "literal_string \"abchello\""
                                    },
                                    {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "7a68656c6c6f",
                                    "id": 21352,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1012:8:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6d4489b75d62452021444e959b638dff607072ea4e671a06df65f8cde6d44765",
                                      "typeString": "literal_string \"zhello\""
                                    },
                                    "value": "zhello"
                                  },
                                  "id": 21353,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1021:6:107",
                                  "memberName": "equals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4481,
                                  "src": "1012:15:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 21357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1012:33:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1049:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1012:41:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726520646966666572656e742076616c75652077697468206d756c7469706c65206c656e677468",
                              "id": 21360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1057:46:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c9a94edefb554b283c3e675ff6c094adc8299ada82da72a741c3e748c306196",
                                "typeString": "literal_string \"Compare different value with multiple length\""
                              },
                              "value": "Compare different value with multiple length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c9a94edefb554b283c3e675ff6c094adc8299ada82da72a741c3e748c306196",
                                "typeString": "literal_string \"Compare different value with multiple length\""
                              }
                            ],
                            "id": 21351,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1004:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1004:100:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21362,
                        "nodeType": "ExpressionStatement",
                        "src": "1004:100:107"
                      }
                    ]
                  },
                  "functionSelector": "c80094b3",
                  "id": 21364,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testEquals",
                  "nameLocation": "668:10:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21305,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "678:2:107"
                  },
                  "returnParameters": {
                    "id": 21306,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "693:0:107"
                  },
                  "scope": 21882,
                  "src": "659:450:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21415,
                    "nodeType": "Block",
                    "src": "1155:286:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 21370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1183:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    {
                                      "hexValue": "31",
                                      "id": 21371,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1186:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    {
                                      "hexValue": "7878627878",
                                      "id": 21372,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1189:7:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_74d4a82605869dd97b26e7be35afd7e62e5fc5b8bf3b79d0f84b9104326298e0",
                                        "typeString": "literal_string \"xxbxx\""
                                      },
                                      "value": "xxbxx"
                                    },
                                    {
                                      "hexValue": "32",
                                      "id": 21373,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1198:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    {
                                      "hexValue": "31",
                                      "id": 21374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1201:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_74d4a82605869dd97b26e7be35afd7e62e5fc5b8bf3b79d0f84b9104326298e0",
                                        "typeString": "literal_string \"xxbxx\""
                                      },
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "786178",
                                      "id": 21368,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1169:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_a9c2727b7921f4ba68a6a0f04cf28a88ed586934bf8c8f9411d39ec3daf7fbcc",
                                        "typeString": "literal_string \"xax\""
                                      },
                                      "value": "xax"
                                    },
                                    "id": 21369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1175:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4421,
                                    "src": "1169:13:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"
                                    }
                                  },
                                  "id": 21375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1169:34:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1208:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1169:40:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1213:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1169:48:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d706172652073616d65206c656e677468",
                              "id": 21380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1220:21:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5bc7eb6305585f9b5cfb4a6b9c1dfa988d674d092f13aaeb30f2a701d8fca38a",
                                "typeString": "literal_string \"Compare same length\""
                              },
                              "value": "Compare same length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5bc7eb6305585f9b5cfb4a6b9c1dfa988d674d092f13aaeb30f2a701d8fca38a",
                                "typeString": "literal_string \"Compare same length\""
                              }
                            ],
                            "id": 21367,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1161:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1161:81:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21382,
                        "nodeType": "ExpressionStatement",
                        "src": "1161:81:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 21386,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1270:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    {
                                      "hexValue": "31",
                                      "id": 21387,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1273:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    {
                                      "hexValue": "787861627878",
                                      "id": 21388,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1276:8:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_d6cecd6ca1712b3a8f7b7ce5c808e30a969aef18a1e261d179b1e51d0cb4707f",
                                        "typeString": "literal_string \"xxabxx\""
                                      },
                                      "value": "xxabxx"
                                    },
                                    {
                                      "hexValue": "32",
                                      "id": 21389,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1286:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    {
                                      "hexValue": "32",
                                      "id": 21390,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1289:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_d6cecd6ca1712b3a8f7b7ce5c808e30a969aef18a1e261d179b1e51d0cb4707f",
                                        "typeString": "literal_string \"xxabxx\""
                                      },
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "786178",
                                      "id": 21384,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1256:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_a9c2727b7921f4ba68a6a0f04cf28a88ed586934bf8c8f9411d39ec3daf7fbcc",
                                        "typeString": "literal_string \"xax\""
                                      },
                                      "value": "xax"
                                    },
                                    "id": 21385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1262:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4421,
                                    "src": "1256:13:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"
                                    }
                                  },
                                  "id": 21391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1256:35:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1295:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1256:40:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1300:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1256:48:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726520646966666572656e74206c656e677468",
                              "id": 21396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1307:26:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_03e476650ab551512fe9bb311d042c73370e6a81c84da4e2c1d9c7390d4e12c8",
                                "typeString": "literal_string \"Compare different length\""
                              },
                              "value": "Compare different length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_03e476650ab551512fe9bb311d042c73370e6a81c84da4e2c1d9c7390d4e12c8",
                                "typeString": "literal_string \"Compare different length\""
                              }
                            ],
                            "id": 21383,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1248:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1248:86:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21398,
                        "nodeType": "ExpressionStatement",
                        "src": "1248:86:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 21402,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1362:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    {
                                      "hexValue": "31",
                                      "id": 21403,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1365:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    {
                                      "hexValue": "7878617878",
                                      "id": 21404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1368:7:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_0ef8be2b83d1593f690d175fc341f5e8835bcb26971a41b342d59b56234f2c5a",
                                        "typeString": "literal_string \"xxaxx\""
                                      },
                                      "value": "xxaxx"
                                    },
                                    {
                                      "hexValue": "32",
                                      "id": 21405,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1377:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    {
                                      "hexValue": "31",
                                      "id": 21406,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1380:1:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_0ef8be2b83d1593f690d175fc341f5e8835bcb26971a41b342d59b56234f2c5a",
                                        "typeString": "literal_string \"xxaxx\""
                                      },
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "786178",
                                      "id": 21400,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1348:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_a9c2727b7921f4ba68a6a0f04cf28a88ed586934bf8c8f9411d39ec3daf7fbcc",
                                        "typeString": "literal_string \"xax\""
                                      },
                                      "value": "xax"
                                    },
                                    "id": 21401,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1354:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4421,
                                    "src": "1348:13:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"
                                    }
                                  },
                                  "id": 21407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1348:34:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1387:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1348:40:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1392:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1348:48:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d706172652073616d65207769746820646966666572656e74206f6666736574",
                              "id": 21412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1399:36:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_02fc56588f09e08b24a19ce6df995052dbcff45e5138a3c4edb0fad3bf3ee342",
                                "typeString": "literal_string \"Compare same with different offset\""
                              },
                              "value": "Compare same with different offset"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_02fc56588f09e08b24a19ce6df995052dbcff45e5138a3c4edb0fad3bf3ee342",
                                "typeString": "literal_string \"Compare same with different offset\""
                              }
                            ],
                            "id": 21399,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1340:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1340:96:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21414,
                        "nodeType": "ExpressionStatement",
                        "src": "1340:96:107"
                      }
                    ]
                  },
                  "functionSelector": "878ab4ae",
                  "id": 21416,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testComparePartial",
                  "nameLocation": "1122:18:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21365,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1140:2:107"
                  },
                  "returnParameters": {
                    "id": 21366,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1155:0:107"
                  },
                  "scope": 21882,
                  "src": "1113:328:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21523,
                    "nodeType": "Block",
                    "src": "1480:872:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "61",
                                      "id": 21422,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1506:3:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      },
                                      "value": "a"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "61",
                                      "id": 21420,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1494:3:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      },
                                      "value": "a"
                                    },
                                    "id": 21421,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1498:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4284,
                                    "src": "1494:11:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                    }
                                  },
                                  "id": 21423,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1494:16:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1515:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1494:22:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1520:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1494:30:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726520657175616c",
                              "id": 21428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1527:15:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c35f9b12ca4d27568056c39f4fe93d050fcf0bb9b8710a0dff738cf6463b3a97",
                                "typeString": "literal_string \"Compare equal\""
                              },
                              "value": "Compare equal"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c35f9b12ca4d27568056c39f4fe93d050fcf0bb9b8710a0dff738cf6463b3a97",
                                "typeString": "literal_string \"Compare equal\""
                              }
                            ],
                            "id": 21419,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1486:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21429,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1486:57:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21430,
                        "nodeType": "ExpressionStatement",
                        "src": "1486:57:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "62",
                                      "id": 21434,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1569:3:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                                        "typeString": "literal_string \"b\""
                                      },
                                      "value": "b"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                                        "typeString": "literal_string \"b\""
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "61",
                                      "id": 21432,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1557:3:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      },
                                      "value": "a"
                                    },
                                    "id": 21433,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1561:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4284,
                                    "src": "1557:11:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                    }
                                  },
                                  "id": 21435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1557:16:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21436,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1578:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1557:22:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1583:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1557:30:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726520646966666572656e742076616c756520776974682073616d65206c656e677468",
                              "id": 21440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1591:42:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5f6cc0c98bcfe3c0cb60be7cac4a422e003c7daec0aecc80551c9ab5a4bdb10",
                                "typeString": "literal_string \"Compare different value with same length\""
                              },
                              "value": "Compare different value with same length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5f6cc0c98bcfe3c0cb60be7cac4a422e003c7daec0aecc80551c9ab5a4bdb10",
                                "typeString": "literal_string \"Compare different value with same length\""
                              }
                            ],
                            "id": 21431,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1549:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1549:85:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21442,
                        "nodeType": "ExpressionStatement",
                        "src": "1549:85:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "61",
                                      "id": 21446,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1660:3:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      },
                                      "value": "a"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "62",
                                      "id": 21444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1648:3:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                                        "typeString": "literal_string \"b\""
                                      },
                                      "value": "b"
                                    },
                                    "id": 21445,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1652:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4284,
                                    "src": "1648:11:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                    }
                                  },
                                  "id": 21447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1648:16:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1669:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1648:22:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21450,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1674:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1648:30:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726520646966666572656e742076616c756520776974682073616d65206c656e677468",
                              "id": 21452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1682:42:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5f6cc0c98bcfe3c0cb60be7cac4a422e003c7daec0aecc80551c9ab5a4bdb10",
                                "typeString": "literal_string \"Compare different value with same length\""
                              },
                              "value": "Compare different value with same length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5f6cc0c98bcfe3c0cb60be7cac4a422e003c7daec0aecc80551c9ab5a4bdb10",
                                "typeString": "literal_string \"Compare different value with same length\""
                              }
                            ],
                            "id": 21443,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1640:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1640:85:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21454,
                        "nodeType": "ExpressionStatement",
                        "src": "1640:85:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "6162",
                                      "id": 21458,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1752:4:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_67fad3bfa1e0321bd021ca805ce14876e50acac8ca8532eda8cbf924da565160",
                                        "typeString": "literal_string \"ab\""
                                      },
                                      "value": "ab"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_67fad3bfa1e0321bd021ca805ce14876e50acac8ca8532eda8cbf924da565160",
                                        "typeString": "literal_string \"ab\""
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "6161",
                                      "id": 21456,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1739:4:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_dfa57c542fea29ed292cef0ce135d0e22189365fa59abedc7a310b751ace684f",
                                        "typeString": "literal_string \"aa\""
                                      },
                                      "value": "aa"
                                    },
                                    "id": 21457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1744:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4284,
                                    "src": "1739:12:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                    }
                                  },
                                  "id": 21459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1739:18:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21460,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1760:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1739:22:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1765:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1739:30:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726520646966666572656e742076616c75652077697468206d756c7469706c65206c656e677468",
                              "id": 21464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1773:46:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c9a94edefb554b283c3e675ff6c094adc8299ada82da72a741c3e748c306196",
                                "typeString": "literal_string \"Compare different value with multiple length\""
                              },
                              "value": "Compare different value with multiple length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c9a94edefb554b283c3e675ff6c094adc8299ada82da72a741c3e748c306196",
                                "typeString": "literal_string \"Compare different value with multiple length\""
                              }
                            ],
                            "id": 21455,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1731:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1731:89:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21466,
                        "nodeType": "ExpressionStatement",
                        "src": "1731:89:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "6161",
                                      "id": 21470,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1846:4:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_dfa57c542fea29ed292cef0ce135d0e22189365fa59abedc7a310b751ace684f",
                                        "typeString": "literal_string \"aa\""
                                      },
                                      "value": "aa"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_dfa57c542fea29ed292cef0ce135d0e22189365fa59abedc7a310b751ace684f",
                                        "typeString": "literal_string \"aa\""
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "61",
                                      "id": 21468,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1834:3:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      },
                                      "value": "a"
                                    },
                                    "id": 21469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1838:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4284,
                                    "src": "1834:11:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                    }
                                  },
                                  "id": 21471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1834:17:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21472,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1855:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1834:22:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1860:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1834:30:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726520646966666572656e742076616c7565207769746820646966666572656e74206c656e677468",
                              "id": 21476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1868:47:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0565c18ee5278c15f772c3ed947ac11333166ea5c4636eb577abddbf78d0ae6c",
                                "typeString": "literal_string \"Compare different value with different length\""
                              },
                              "value": "Compare different value with different length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0565c18ee5278c15f772c3ed947ac11333166ea5c4636eb577abddbf78d0ae6c",
                                "typeString": "literal_string \"Compare different value with different length\""
                              }
                            ],
                            "id": 21467,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1826:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1826:90:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21478,
                        "nodeType": "ExpressionStatement",
                        "src": "1826:90:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "61",
                                      "id": 21482,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1943:3:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      },
                                      "value": "a"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                        "typeString": "literal_string \"a\""
                                      }
                                    ],
                                    "expression": {
                                      "hexValue": "6161",
                                      "id": 21480,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1930:4:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_dfa57c542fea29ed292cef0ce135d0e22189365fa59abedc7a310b751ace684f",
                                        "typeString": "literal_string \"aa\""
                                      },
                                      "value": "aa"
                                    },
                                    "id": 21481,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1935:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4284,
                                    "src": "1930:12:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                    }
                                  },
                                  "id": 21483,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1930:17:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1951:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1930:22:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1956:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "1930:30:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726520646966666572656e742076616c7565207769746820646966666572656e74206c656e677468",
                              "id": 21488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1964:47:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0565c18ee5278c15f772c3ed947ac11333166ea5c4636eb577abddbf78d0ae6c",
                                "typeString": "literal_string \"Compare different value with different length\""
                              },
                              "value": "Compare different value with different length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0565c18ee5278c15f772c3ed947ac11333166ea5c4636eb577abddbf78d0ae6c",
                                "typeString": "literal_string \"Compare different value with different length\""
                              }
                            ],
                            "id": 21479,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1922:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1922:90:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21490,
                        "nodeType": "ExpressionStatement",
                        "src": "1922:90:107"
                      },
                      {
                        "assignments": [
                          21492
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21492,
                            "mutability": "mutable",
                            "name": "longChar",
                            "nameLocation": "2031:8:107",
                            "nodeType": "VariableDeclaration",
                            "scope": 21523,
                            "src": "2018:21:107",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 21491,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2018:5:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21494,
                        "initialValue": {
                          "hexValue": "31323334353637383930313233343536373839303132333435363738393031323334",
                          "id": 21493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2042:36:107",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_7bbc0059a392ec8971d4484557e4297b495362b69eaaf8bb749208e098bcec20",
                            "typeString": "literal_string \"1234567890123456789012345678901234\""
                          },
                          "value": "1234567890123456789012345678901234"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2018:60:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 21498,
                                      "name": "longChar",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21492,
                                      "src": "2109:8:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 21496,
                                      "name": "longChar",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21492,
                                      "src": "2092:8:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 21497,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2101:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4284,
                                    "src": "2092:16:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                    }
                                  },
                                  "id": 21499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2092:26:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2122:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2092:31:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2127:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "2092:39:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d7061726573206d6f7265207468616e2033322062797465732063686172",
                              "id": 21504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2135:34:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_60aa1ee88c02b796f2bec0246a31c97415d0f47b9bf4bac40af536913b468248",
                                "typeString": "literal_string \"Compares more than 32 bytes char\""
                              },
                              "value": "Compares more than 32 bytes char"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_60aa1ee88c02b796f2bec0246a31c97415d0f47b9bf4bac40af536913b468248",
                                "typeString": "literal_string \"Compares more than 32 bytes char\""
                              }
                            ],
                            "id": 21495,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2084:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2084:86:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21506,
                        "nodeType": "ExpressionStatement",
                        "src": "2084:86:107"
                      },
                      {
                        "assignments": [
                          21508
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21508,
                            "mutability": "mutable",
                            "name": "otherLongChar",
                            "nameLocation": "2189:13:107",
                            "nodeType": "VariableDeclaration",
                            "scope": 21523,
                            "src": "2176:26:107",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 21507,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2176:5:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21510,
                        "initialValue": {
                          "hexValue": "32323334353637383930313233343536373839303132333435363738393031323334",
                          "id": 21509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2205:36:107",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_6f15a2d45d0418dfa057ad693315a4cddb0c63f303b9b0b7e9ac6fc26be04652",
                            "typeString": "literal_string \"2234567890123456789012345678901234\""
                          },
                          "value": "2234567890123456789012345678901234"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2176:65:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 21517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 21514,
                                      "name": "otherLongChar",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21508,
                                      "src": "2272:13:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 21512,
                                      "name": "longChar",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21492,
                                      "src": "2255:8:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 21513,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2264:7:107",
                                    "memberName": "compare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4284,
                                    "src": "2255:16:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                    }
                                  },
                                  "id": 21515,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2255:31:107",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 21516,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2289:1:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2255:35:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "74727565",
                                "id": 21518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2294:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "2255:43:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f6d70617265206c6f6e672063686172207769746820646966666572656e6365206174207374617274",
                              "id": 21520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2302:44:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b8997dc2d063e9fb8a4f4952461a71ac960d32c6a2e87f631ab357cd8f645bd",
                                "typeString": "literal_string \"Compare long char with difference at start\""
                              },
                              "value": "Compare long char with difference at start"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b8997dc2d063e9fb8a4f4952461a71ac960d32c6a2e87f631ab357cd8f645bd",
                                "typeString": "literal_string \"Compare long char with difference at start\""
                              }
                            ],
                            "id": 21511,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2247:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2247:100:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21522,
                        "nodeType": "ExpressionStatement",
                        "src": "2247:100:107"
                      }
                    ]
                  },
                  "functionSelector": "809a6173",
                  "id": 21524,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testCompare",
                  "nameLocation": "1454:11:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21417,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1465:2:107"
                  },
                  "returnParameters": {
                    "id": 21418,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1480:0:107"
                  },
                  "scope": 21882,
                  "src": "1445:907:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21611,
                    "nodeType": "Block",
                    "src": "2393:411:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30",
                                            "id": 21533,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2441:1:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          {
                                            "hexValue": "30",
                                            "id": 21534,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2444:1:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "expression": {
                                            "hexValue": "68656c6c6f",
                                            "id": 21531,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2423:7:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                              "typeString": "literal_string \"hello\""
                                            },
                                            "value": "hello"
                                          },
                                          "id": 21532,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "2431:9:107",
                                          "memberName": "substring",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4745,
                                          "src": "2423:17:107",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 21535,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2423:23:107",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 21530,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2417:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 21529,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2417:5:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21536,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2417:30:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 21528,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "2407:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 21537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2407:41:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "",
                                        "id": 21541,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2468:2:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                          "typeString": "literal_string \"\""
                                        },
                                        "value": ""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                          "typeString": "literal_string \"\""
                                        }
                                      ],
                                      "id": 21540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2462:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 21539,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2462:5:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21542,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2462:9:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 21538,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "2452:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 21543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2452:20:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "2407:65:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f70792030206279746573",
                              "id": 21545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2474:14:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e29f2ddaeadeab3559952d54b0d68b91ef0da29793b7b1d536702989fe3bdbee",
                                "typeString": "literal_string \"Copy 0 bytes\""
                              },
                              "value": "Copy 0 bytes"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e29f2ddaeadeab3559952d54b0d68b91ef0da29793b7b1d536702989fe3bdbee",
                                "typeString": "literal_string \"Copy 0 bytes\""
                              }
                            ],
                            "id": 21527,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2399:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2399:90:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21547,
                        "nodeType": "ExpressionStatement",
                        "src": "2399:90:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30",
                                            "id": 21554,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2537:1:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          {
                                            "hexValue": "34",
                                            "id": 21555,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2540:1:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            }
                                          ],
                                          "expression": {
                                            "hexValue": "68656c6c6f",
                                            "id": 21552,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2519:7:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                              "typeString": "literal_string \"hello\""
                                            },
                                            "value": "hello"
                                          },
                                          "id": 21553,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "2527:9:107",
                                          "memberName": "substring",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4745,
                                          "src": "2519:17:107",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 21556,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2519:23:107",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 21551,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2513:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 21550,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2513:5:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21557,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2513:30:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 21549,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "2503:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 21558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2503:41:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "68656c6c",
                                        "id": 21562,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2564:6:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_647b0bf5e82b669964766915971e5985cb6559f0f22af1002f75d81d4f334942",
                                          "typeString": "literal_string \"hell\""
                                        },
                                        "value": "hell"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_647b0bf5e82b669964766915971e5985cb6559f0f22af1002f75d81d4f334942",
                                          "typeString": "literal_string \"hell\""
                                        }
                                      ],
                                      "id": 21561,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2558:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 21560,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2558:5:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21563,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2558:13:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 21559,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "2548:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 21564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2548:24:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "2503:69:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f707920737562737472696e67",
                              "id": 21566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2574:16:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b69adba4b15d6a8a1b8a64f4f9b86f72be3b65732717c771b7ea48e206c3d461",
                                "typeString": "literal_string \"Copy substring\""
                              },
                              "value": "Copy substring"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b69adba4b15d6a8a1b8a64f4f9b86f72be3b65732717c771b7ea48e206c3d461",
                                "typeString": "literal_string \"Copy substring\""
                              }
                            ],
                            "id": 21548,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2495:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2495:96:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21568,
                        "nodeType": "ExpressionStatement",
                        "src": "2495:96:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "31",
                                            "id": 21575,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2639:1:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          {
                                            "hexValue": "34",
                                            "id": 21576,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2642:1:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            }
                                          ],
                                          "expression": {
                                            "hexValue": "68656c6c6f",
                                            "id": 21573,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2621:7:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                              "typeString": "literal_string \"hello\""
                                            },
                                            "value": "hello"
                                          },
                                          "id": 21574,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "2629:9:107",
                                          "memberName": "substring",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4745,
                                          "src": "2621:17:107",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 21577,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2621:23:107",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 21572,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2615:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 21571,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2615:5:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21578,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2615:30:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 21570,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "2605:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 21579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2605:41:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "656c6c6f",
                                        "id": 21583,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2666:6:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_729b67e29bd543b60a81f35aba2c80ac4d8ea4caba9a72ed978093c22148af50",
                                          "typeString": "literal_string \"ello\""
                                        },
                                        "value": "ello"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_729b67e29bd543b60a81f35aba2c80ac4d8ea4caba9a72ed978093c22148af50",
                                          "typeString": "literal_string \"ello\""
                                        }
                                      ],
                                      "id": 21582,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2660:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 21581,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2660:5:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21584,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2660:13:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 21580,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "2650:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 21585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2650:24:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "2605:69:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f707920737562737472696e67",
                              "id": 21587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2676:16:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b69adba4b15d6a8a1b8a64f4f9b86f72be3b65732717c771b7ea48e206c3d461",
                                "typeString": "literal_string \"Copy substring\""
                              },
                              "value": "Copy substring"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b69adba4b15d6a8a1b8a64f4f9b86f72be3b65732717c771b7ea48e206c3d461",
                                "typeString": "literal_string \"Copy substring\""
                              }
                            ],
                            "id": 21569,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2597:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2597:96:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21589,
                        "nodeType": "ExpressionStatement",
                        "src": "2597:96:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30",
                                            "id": 21596,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2741:1:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          {
                                            "hexValue": "35",
                                            "id": 21597,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2744:1:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_5_by_1",
                                              "typeString": "int_const 5"
                                            },
                                            "value": "5"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_5_by_1",
                                              "typeString": "int_const 5"
                                            }
                                          ],
                                          "expression": {
                                            "hexValue": "68656c6c6f",
                                            "id": 21594,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2723:7:107",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                              "typeString": "literal_string \"hello\""
                                            },
                                            "value": "hello"
                                          },
                                          "id": 21595,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "2731:9:107",
                                          "memberName": "substring",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4745,
                                          "src": "2723:17:107",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                            "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 21598,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2723:23:107",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 21593,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2717:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 21592,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2717:5:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21599,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2717:30:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 21591,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "2707:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 21600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2707:41:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "68656c6c6f",
                                        "id": 21604,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2768:7:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                          "typeString": "literal_string \"hello\""
                                        },
                                        "value": "hello"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8",
                                          "typeString": "literal_string \"hello\""
                                        }
                                      ],
                                      "id": 21603,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2762:5:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 21602,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2762:5:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2762:14:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 21601,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "2752:9:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 21606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2752:25:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "2707:70:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f70792077686f6c6520737472696e67",
                              "id": 21608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2779:19:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9968d7daf615e9fa7c6713bbc68c64b800be2f1bf3288dca817829d5de1b34e8",
                                "typeString": "literal_string \"Copy whole string\""
                              },
                              "value": "Copy whole string"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9968d7daf615e9fa7c6713bbc68c64b800be2f1bf3288dca817829d5de1b34e8",
                                "typeString": "literal_string \"Copy whole string\""
                              }
                            ],
                            "id": 21590,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2699:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2699:100:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21610,
                        "nodeType": "ExpressionStatement",
                        "src": "2699:100:107"
                      }
                    ]
                  },
                  "functionSelector": "098e6232",
                  "id": 21612,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testSubstring",
                  "nameLocation": "2365:13:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21525,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2378:2:107"
                  },
                  "returnParameters": {
                    "id": 21526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2393:0:107"
                  },
                  "scope": 21882,
                  "src": "2356:448:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21641,
                    "nodeType": "Block",
                    "src": "2845:122:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 21620,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2878:1:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "expression": {
                                        "hexValue": "61",
                                        "id": 21618,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2864:3:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                          "typeString": "literal_string \"a\""
                                        },
                                        "value": "a"
                                      },
                                      "id": 21619,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "2868:9:107",
                                      "memberName": "readUint8",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4552,
                                      "src": "2864:13:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                      }
                                    },
                                    "id": 21621,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2864:16:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 21617,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2859:4:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21616,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2859:4:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2859:22:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30783631",
                                "id": 21623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2885:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_97_by_1",
                                  "typeString": "int_const 97"
                                },
                                "value": "0x61"
                              },
                              "src": "2859:30:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "61203d3d2030783631",
                              "id": 21625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2891:11:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3b33bb8f6621c61a1c9a8b8113e60f0b7233de96fbe0d40dae1384c3fc842925",
                                "typeString": "literal_string \"a == 0x61\""
                              },
                              "value": "a == 0x61"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3b33bb8f6621c61a1c9a8b8113e60f0b7233de96fbe0d40dae1384c3fc842925",
                                "typeString": "literal_string \"a == 0x61\""
                              }
                            ],
                            "id": 21615,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2851:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2851:52:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21627,
                        "nodeType": "ExpressionStatement",
                        "src": "2851:52:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 21633,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2937:1:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "expression": {
                                        "hexValue": "6261",
                                        "id": 21631,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2922:4:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_d40d1e79d496f0321bb7c771d11a21a4bd6e998026fe61d0650c7c67bad49c3c",
                                          "typeString": "literal_string \"ba\""
                                        },
                                        "value": "ba"
                                      },
                                      "id": 21632,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "2927:9:107",
                                      "memberName": "readUint8",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4552,
                                      "src": "2922:14:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                      }
                                    },
                                    "id": 21634,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2922:17:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 21630,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2917:4:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21629,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2917:4:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2917:23:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30783631",
                                "id": 21636,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2944:4:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_97_by_1",
                                  "typeString": "int_const 97"
                                },
                                "value": "0x61"
                              },
                              "src": "2917:31:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "61203d3d2030783631",
                              "id": 21638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2950:11:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3b33bb8f6621c61a1c9a8b8113e60f0b7233de96fbe0d40dae1384c3fc842925",
                                "typeString": "literal_string \"a == 0x61\""
                              },
                              "value": "a == 0x61"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3b33bb8f6621c61a1c9a8b8113e60f0b7233de96fbe0d40dae1384c3fc842925",
                                "typeString": "literal_string \"a == 0x61\""
                              }
                            ],
                            "id": 21628,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2909:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2909:53:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21640,
                        "nodeType": "ExpressionStatement",
                        "src": "2909:53:107"
                      }
                    ]
                  },
                  "functionSelector": "2e72f9a9",
                  "id": 21642,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testReadUint8",
                  "nameLocation": "2817:13:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21613,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2830:2:107"
                  },
                  "returnParameters": {
                    "id": 21614,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2845:0:107"
                  },
                  "scope": 21882,
                  "src": "2808:159:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21658,
                    "nodeType": "Block",
                    "src": "3009:71:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 21650,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3045:1:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "expression": {
                                        "hexValue": "616263",
                                        "id": 21648,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3028:5:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45",
                                          "typeString": "literal_string \"abc\""
                                        },
                                        "value": "abc"
                                      },
                                      "id": 21649,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3034:10:107",
                                      "memberName": "readUint16",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4572,
                                      "src": "3028:16:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                                      }
                                    },
                                    "id": 21651,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3028:19:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "id": 21647,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3023:4:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21646,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3023:4:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3023:25:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "307836323633",
                                "id": 21653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3052:6:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_25187_by_1",
                                  "typeString": "int_const 25187"
                                },
                                "value": "0x6263"
                              },
                              "src": "3023:35:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "526561642075696e74203136",
                              "id": 21655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3060:14:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d49128b581930719aa04d624dd89cff9d22b04fd0e8c9dda2fe4a29bf43da749",
                                "typeString": "literal_string \"Read uint 16\""
                              },
                              "value": "Read uint 16"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d49128b581930719aa04d624dd89cff9d22b04fd0e8c9dda2fe4a29bf43da749",
                                "typeString": "literal_string \"Read uint 16\""
                              }
                            ],
                            "id": 21645,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3015:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3015:60:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21657,
                        "nodeType": "ExpressionStatement",
                        "src": "3015:60:107"
                      }
                    ]
                  },
                  "functionSelector": "f3cbda46",
                  "id": 21659,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testReadUint16",
                  "nameLocation": "2980:14:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21643,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2994:2:107"
                  },
                  "returnParameters": {
                    "id": 21644,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3009:0:107"
                  },
                  "scope": 21882,
                  "src": "2971:109:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21675,
                    "nodeType": "Block",
                    "src": "3122:77:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 21667,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3160:1:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "expression": {
                                        "hexValue": "6162636465",
                                        "id": 21665,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3141:7:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_6377c7e66081cb65e473c1b95db5195a27d04a7108b468890224bedbe1a8a6eb",
                                          "typeString": "literal_string \"abcde\""
                                        },
                                        "value": "abcde"
                                      },
                                      "id": 21666,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3149:10:107",
                                      "memberName": "readUint32",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4592,
                                      "src": "3141:18:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                                      }
                                    },
                                    "id": 21668,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3141:21:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  ],
                                  "id": 21664,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3136:4:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21663,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3136:4:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3136:27:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30783632363336343635",
                                "id": 21670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3167:10:107",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1650680933_by_1",
                                  "typeString": "int_const 1650680933"
                                },
                                "value": "0x62636465"
                              },
                              "src": "3136:41:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "526561642075696e74203332",
                              "id": 21672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3179:14:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c73525d413229451c579a25eb278f10a9f2e08642c8778e9ece05e751d72f4d5",
                                "typeString": "literal_string \"Read uint 32\""
                              },
                              "value": "Read uint 32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c73525d413229451c579a25eb278f10a9f2e08642c8778e9ece05e751d72f4d5",
                                "typeString": "literal_string \"Read uint 32\""
                              }
                            ],
                            "id": 21662,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3128:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3128:66:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21674,
                        "nodeType": "ExpressionStatement",
                        "src": "3128:66:107"
                      }
                    ]
                  },
                  "functionSelector": "1b8e1b81",
                  "id": 21676,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testReadUint32",
                  "nameLocation": "3093:14:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21660,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3107:2:107"
                  },
                  "returnParameters": {
                    "id": 21661,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3122:0:107"
                  },
                  "scope": 21882,
                  "src": "3084:115:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21695,
                    "nodeType": "Block",
                    "src": "3242:162:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 21684,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3301:1:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "expression": {
                                        "hexValue": "6162636465666768696a6b6c6d6e6f70717273747576",
                                        "id": 21682,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3264:24:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_5ed2850117d4cba1d959da39cd958d7f52af69d210c0efd77e6074ad943017fd",
                                          "typeString": "literal_string \"abcdefghijklmnopqrstuv\""
                                        },
                                        "value": "abcdefghijklmnopqrstuv"
                                      },
                                      "id": 21683,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3289:11:107",
                                      "memberName": "readBytes20",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4632,
                                      "src": "3264:36:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes20_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (bytes20)"
                                      }
                                    },
                                    "id": 21685,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3264:39:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes20",
                                      "typeString": "bytes20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes20",
                                      "typeString": "bytes20"
                                    }
                                  ],
                                  "id": 21681,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3256:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21680,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3256:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3256:48:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307836323633363436353636363736383639366136623663366436653666373037313732373337343735303030303030303030303030303030303030303030303030",
                                    "id": 21689,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3316:66:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_44502269928946851823613417706299415688751559965807601403642718243125408563200_by_1",
                                      "typeString": "int_const 4450...(69 digits omitted)...3200"
                                    },
                                    "value": "0x62636465666768696a6b6c6d6e6f707172737475000000000000000000000000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_44502269928946851823613417706299415688751559965807601403642718243125408563200_by_1",
                                      "typeString": "int_const 4450...(69 digits omitted)...3200"
                                    }
                                  ],
                                  "id": 21688,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3308:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21687,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3308:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3308:75:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "3256:127:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "7265616442797465733230",
                              "id": 21692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3385:13:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_974ae182026b0ba5d30ca4b083d43bf7d940dee89b8f9872917a22e202d41df8",
                                "typeString": "literal_string \"readBytes20\""
                              },
                              "value": "readBytes20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_974ae182026b0ba5d30ca4b083d43bf7d940dee89b8f9872917a22e202d41df8",
                                "typeString": "literal_string \"readBytes20\""
                              }
                            ],
                            "id": 21679,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3248:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3248:151:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21694,
                        "nodeType": "ExpressionStatement",
                        "src": "3248:151:107"
                      }
                    ]
                  },
                  "functionSelector": "005aa6f9",
                  "id": 21696,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testReadBytes20",
                  "nameLocation": "3212:15:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21677,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3227:2:107"
                  },
                  "returnParameters": {
                    "id": 21678,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3242:0:107"
                  },
                  "scope": 21882,
                  "src": "3203:201:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21712,
                    "nodeType": "Block",
                    "src": "3447:163:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21702,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3508:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "3031323334353637383961626364656630313233343536373839616263646566",
                                    "id": 21700,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3461:34:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9a57067ee21cfc99ac55dbc3bc5e6f9461dbd7ffc60b79a12f3e93c9c987f0cf",
                                      "typeString": "literal_string \"0123456789abcdef0123456789abcdef\""
                                    },
                                    "value": "0123456789abcdef0123456789abcdef"
                                  },
                                  "id": 21701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3496:11:107",
                                  "memberName": "readBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4612,
                                  "src": "3461:46:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3461:49:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307833303331333233333334333533363337333833393631363236333634363536363330333133323333333433353336333733383339363136323633363436353636",
                                    "id": 21706,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3522:66:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_21797938705943676250364219608352299876680491279601907659684404502782596638054_by_1",
                                      "typeString": "int_const 2179...(69 digits omitted)...8054"
                                    },
                                    "value": "0x3031323334353637383961626364656630313233343536373839616263646566"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_21797938705943676250364219608352299876680491279601907659684404502782596638054_by_1",
                                      "typeString": "int_const 2179...(69 digits omitted)...8054"
                                    }
                                  ],
                                  "id": 21705,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3514:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21704,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3514:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3514:75:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "3461:128:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "7265616442797465733332",
                              "id": 21709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3591:13:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_75d9deeae65d7d556ddf2b2305f974de12f0656c64f354d250392a722b3ab4e9",
                                "typeString": "literal_string \"readBytes32\""
                              },
                              "value": "readBytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_75d9deeae65d7d556ddf2b2305f974de12f0656c64f354d250392a722b3ab4e9",
                                "typeString": "literal_string \"readBytes32\""
                              }
                            ],
                            "id": 21699,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3453:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3453:152:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21711,
                        "nodeType": "ExpressionStatement",
                        "src": "3453:152:107"
                      }
                    ]
                  },
                  "functionSelector": "e77975cf",
                  "id": 21713,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testReadBytes32",
                  "nameLocation": "3417:15:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21697,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3432:2:107"
                  },
                  "returnParameters": {
                    "id": 21698,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3447:0:107"
                  },
                  "scope": 21882,
                  "src": "3408:202:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21880,
                    "nodeType": "Block",
                    "src": "3661:1226:107",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21719,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3700:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "32",
                                    "id": 21720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3703:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "4334",
                                    "id": 21717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3675:4:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_df00219f623e2bb2442f04dffe60fd9ad1efb43243074e440ae0d72b471c07d0",
                                      "typeString": "literal_string \"C4\""
                                    },
                                    "value": "C4"
                                  },
                                  "id": 21718,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3680:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "3675:24:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21721,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3675:30:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "61",
                                        "id": 21726,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3724:3:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                          "typeString": "literal_string \"a\""
                                        },
                                        "value": "a"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                          "typeString": "literal_string \"a\""
                                        }
                                      ],
                                      "id": 21725,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3717:6:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 21724,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3717:6:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3717:11:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 21723,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3709:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21722,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3709:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3709:20:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "3675:54:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f646520276127",
                              "id": 21730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3731:12:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0e59f029ea56bbaf4b61743fce5c46cb75c77bb08ae2edbf489ec1fa43ec8201",
                                "typeString": "literal_string \"Decode 'a'\""
                              },
                              "value": "Decode 'a'"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0e59f029ea56bbaf4b61743fce5c46cb75c77bb08ae2edbf489ec1fa43ec8201",
                                "typeString": "literal_string \"Decode 'a'\""
                              }
                            ],
                            "id": 21716,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3667:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3667:77:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21732,
                        "nodeType": "ExpressionStatement",
                        "src": "3667:77:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21736,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3785:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "34",
                                    "id": 21737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3788:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "43354747",
                                    "id": 21734,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3758:6:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e304b1c07d131dd1556b70ff52a40495ee948fb22a93057012c6a6450e3a2c51",
                                      "typeString": "literal_string \"C5GG\""
                                    },
                                    "value": "C5GG"
                                  },
                                  "id": 21735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3765:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "3758:26:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3758:32:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "6161",
                                        "id": 21743,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3809:4:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_dfa57c542fea29ed292cef0ce135d0e22189365fa59abedc7a310b751ace684f",
                                          "typeString": "literal_string \"aa\""
                                        },
                                        "value": "aa"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_dfa57c542fea29ed292cef0ce135d0e22189365fa59abedc7a310b751ace684f",
                                          "typeString": "literal_string \"aa\""
                                        }
                                      ],
                                      "id": 21742,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3802:6:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes2_$",
                                        "typeString": "type(bytes2)"
                                      },
                                      "typeName": {
                                        "id": 21741,
                                        "name": "bytes2",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3802:6:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21744,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3802:12:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes2",
                                      "typeString": "bytes2"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes2",
                                      "typeString": "bytes2"
                                    }
                                  ],
                                  "id": 21740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3794:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21739,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3794:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3794:21:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "3758:57:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f64652027616127",
                              "id": 21747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3817:13:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d60e1b1046c018b9e8929b4c1b05a79e8d860db206231f63d53a5a3159024b47",
                                "typeString": "literal_string \"Decode 'aa'\""
                              },
                              "value": "Decode 'aa'"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d60e1b1046c018b9e8929b4c1b05a79e8d860db206231f63d53a5a3159024b47",
                                "typeString": "literal_string \"Decode 'aa'\""
                              }
                            ],
                            "id": 21733,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3750:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3750:81:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21749,
                        "nodeType": "ExpressionStatement",
                        "src": "3750:81:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21753,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3873:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "35",
                                    "id": 21754,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3876:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_5_by_1",
                                      "typeString": "int_const 5"
                                    },
                                    "value": "5"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_5_by_1",
                                      "typeString": "int_const 5"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "4335474d32",
                                    "id": 21751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3845:7:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d5d7968618a918d6ad89691e4ecf81f46743dbf650e1e6dd7d877169cad3f412",
                                      "typeString": "literal_string \"C5GM2\""
                                    },
                                    "value": "C5GM2"
                                  },
                                  "id": 21752,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3853:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "3845:27:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3845:33:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "616161",
                                        "id": 21760,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3897:5:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_b9a5dc0048db9a7d13548781df3cd4b2334606391f75f40c14225a92f4cb3537",
                                          "typeString": "literal_string \"aaa\""
                                        },
                                        "value": "aaa"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_b9a5dc0048db9a7d13548781df3cd4b2334606391f75f40c14225a92f4cb3537",
                                          "typeString": "literal_string \"aaa\""
                                        }
                                      ],
                                      "id": 21759,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3890:6:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes3_$",
                                        "typeString": "type(bytes3)"
                                      },
                                      "typeName": {
                                        "id": 21758,
                                        "name": "bytes3",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3890:6:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21761,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3890:13:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes3",
                                      "typeString": "bytes3"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes3",
                                      "typeString": "bytes3"
                                    }
                                  ],
                                  "id": 21757,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3882:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21756,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3882:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3882:22:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "3845:59:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f6465202761616127",
                              "id": 21764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3906:14:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2c1ac60deb5cfb03a9f2bb1de9c89f448504d9a2dcb791c2c1856aa4bc90271f",
                                "typeString": "literal_string \"Decode 'aaa'\""
                              },
                              "value": "Decode 'aaa'"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2c1ac60deb5cfb03a9f2bb1de9c89f448504d9a2dcb791c2c1856aa4bc90271f",
                                "typeString": "literal_string \"Decode 'aaa'\""
                              }
                            ],
                            "id": 21750,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3837:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3837:84:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21766,
                        "nodeType": "ExpressionStatement",
                        "src": "3837:84:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3965:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "37",
                                    "id": 21771,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3968:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "value": "7"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "4335474d324f38",
                                    "id": 21768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3935:9:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d878994b42edf0d9fa280e69ac8188cdae4144e411fa0ae747596ec021a05c11",
                                      "typeString": "literal_string \"C5GM2O8\""
                                    },
                                    "value": "C5GM2O8"
                                  },
                                  "id": 21769,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3945:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "3935:29:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3935:35:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "61616161",
                                        "id": 21777,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3989:6:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_a80470dba00d5faf620fd6c51a1ca94668e13cd66fffaee3702f5497a8549053",
                                          "typeString": "literal_string \"aaaa\""
                                        },
                                        "value": "aaaa"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_a80470dba00d5faf620fd6c51a1ca94668e13cd66fffaee3702f5497a8549053",
                                          "typeString": "literal_string \"aaaa\""
                                        }
                                      ],
                                      "id": 21776,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3982:6:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes4_$",
                                        "typeString": "type(bytes4)"
                                      },
                                      "typeName": {
                                        "id": 21775,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3982:6:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21778,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3982:14:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "id": 21774,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3974:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21773,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3974:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3974:23:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "3935:62:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f646520276161616127",
                              "id": 21781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3999:15:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d0e47d356613d6f7153025faa1a08a01b4b79e2f0872a569cab00e33b8fe2f92",
                                "typeString": "literal_string \"Decode 'aaaa'\""
                              },
                              "value": "Decode 'aaaa'"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d0e47d356613d6f7153025faa1a08a01b4b79e2f0872a569cab00e33b8fe2f92",
                                "typeString": "literal_string \"Decode 'aaaa'\""
                              }
                            ],
                            "id": 21767,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3927:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3927:88:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21783,
                        "nodeType": "ExpressionStatement",
                        "src": "3927:88:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4060:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "38",
                                    "id": 21788,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4063:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "4335474d324f4231",
                                    "id": 21785,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4029:10:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_deac20ac92f61bc71c592f53f5bd1aca96296851a07d7f9c9489e24e6067c926",
                                      "typeString": "literal_string \"C5GM2OB1\""
                                    },
                                    "value": "C5GM2OB1"
                                  },
                                  "id": 21786,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4040:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "4029:30:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4029:36:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "6161616161",
                                        "id": 21794,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4084:7:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_5aff159202c5d82ecfd14de49cc2c8c1f74964a25d78c549137c4ce714030fe7",
                                          "typeString": "literal_string \"aaaaa\""
                                        },
                                        "value": "aaaaa"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_5aff159202c5d82ecfd14de49cc2c8c1f74964a25d78c549137c4ce714030fe7",
                                          "typeString": "literal_string \"aaaaa\""
                                        }
                                      ],
                                      "id": 21793,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4077:6:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes5_$",
                                        "typeString": "type(bytes5)"
                                      },
                                      "typeName": {
                                        "id": 21792,
                                        "name": "bytes5",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4077:6:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4077:15:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes5",
                                      "typeString": "bytes5"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes5",
                                      "typeString": "bytes5"
                                    }
                                  ],
                                  "id": 21791,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4069:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21790,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4069:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4069:24:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "4029:64:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f64652027616161616127",
                              "id": 21798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4095:16:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df5139274082a2890b652b7b9ca4aa3b92da255beebd2aea522efabf071a82ba",
                                "typeString": "literal_string \"Decode 'aaaaa'\""
                              },
                              "value": "Decode 'aaaaa'"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df5139274082a2890b652b7b9ca4aa3b92da255beebd2aea522efabf071a82ba",
                                "typeString": "literal_string \"Decode 'aaaaa'\""
                              }
                            ],
                            "id": 21784,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4021:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4021:91:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21800,
                        "nodeType": "ExpressionStatement",
                        "src": "4021:91:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21804,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4157:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "38",
                                    "id": 21805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4160:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "6335676d324f6231",
                                    "id": 21802,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4126:10:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fedcfef9f2d2bdd9c9aefd371fdc7486c294c9065d4ba303a5cc8ed3e0cbf264",
                                      "typeString": "literal_string \"c5gm2Ob1\""
                                    },
                                    "value": "c5gm2Ob1"
                                  },
                                  "id": 21803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4137:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "4126:30:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4126:36:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "6161616161",
                                        "id": 21811,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4181:7:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_5aff159202c5d82ecfd14de49cc2c8c1f74964a25d78c549137c4ce714030fe7",
                                          "typeString": "literal_string \"aaaaa\""
                                        },
                                        "value": "aaaaa"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_5aff159202c5d82ecfd14de49cc2c8c1f74964a25d78c549137c4ce714030fe7",
                                          "typeString": "literal_string \"aaaaa\""
                                        }
                                      ],
                                      "id": 21810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4174:6:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes5_$",
                                        "typeString": "type(bytes5)"
                                      },
                                      "typeName": {
                                        "id": 21809,
                                        "name": "bytes5",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4174:6:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4174:15:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes5",
                                      "typeString": "bytes5"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes5",
                                      "typeString": "bytes5"
                                    }
                                  ],
                                  "id": 21808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4166:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21807,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4166:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4166:24:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "4126:64:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f64652027616161616127206c6f77657263617365",
                              "id": 21815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4192:26:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_be82a2b2a8eedc49dab18db603ee4db7a6e654667a8312a4b20bfa32c42ded3c",
                                "typeString": "literal_string \"Decode 'aaaaa' lowercase\""
                              },
                              "value": "Decode 'aaaaa' lowercase"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_be82a2b2a8eedc49dab18db603ee4db7a6e654667a8312a4b20bfa32c42ded3c",
                                "typeString": "literal_string \"Decode 'aaaaa' lowercase\""
                              }
                            ],
                            "id": 21801,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4118:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4118:101:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21817,
                        "nodeType": "ExpressionStatement",
                        "src": "4118:101:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4298:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "3432",
                                    "id": 21822,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4301:2:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_42_by_1",
                                      "typeString": "int_const 42"
                                    },
                                    "value": "42"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_42_by_1",
                                      "typeString": "int_const 42"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "433548363650333543504a4d4751424144444d3651524a4645314f4e3453524b454c5237455533504638",
                                    "id": 21819,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4233:44:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d5b249cb1eecdd5aaa076db77b0d4e5d8c4e13c4e59ba1ed07a07fd94a75d55a",
                                      "typeString": "literal_string \"C5H66P35CPJMGQBADDM6QRJFE1ON4SRKELR7EU3PF8\""
                                    },
                                    "value": "C5H66P35CPJMGQBADDM6QRJFE1ON4SRKELR7EU3PF8"
                                  },
                                  "id": 21820,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4278:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "4233:64:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4233:71:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "6162636465666768696a6b6c6d6e6f707172737475767778797a",
                                        "id": 21828,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4324:28:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_9230175b13981da14d2f3334f321eb78fa0473133f6da3de896feb22fb258936",
                                          "typeString": "literal_string \"abcdefghijklmnopqrstuvwxyz\""
                                        },
                                        "value": "abcdefghijklmnopqrstuvwxyz"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_9230175b13981da14d2f3334f321eb78fa0473133f6da3de896feb22fb258936",
                                          "typeString": "literal_string \"abcdefghijklmnopqrstuvwxyz\""
                                        }
                                      ],
                                      "id": 21827,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4316:7:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes26_$",
                                        "typeString": "type(bytes26)"
                                      },
                                      "typeName": {
                                        "id": 21826,
                                        "name": "bytes26",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4316:7:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21829,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4316:37:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes26",
                                      "typeString": "bytes26"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes26",
                                      "typeString": "bytes26"
                                    }
                                  ],
                                  "id": 21825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4308:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21824,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4308:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4308:46:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "4233:121:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f646520616c706861626574",
                              "id": 21832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4356:17:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dfecda4119da15203af22c4adb285880c89c909cc077ea7a2491252d3e6bc123",
                                "typeString": "literal_string \"Decode alphabet\""
                              },
                              "value": "Decode alphabet"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dfecda4119da15203af22c4adb285880c89c909cc077ea7a2491252d3e6bc123",
                                "typeString": "literal_string \"Decode alphabet\""
                              }
                            ],
                            "id": 21818,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4225:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4225:149:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21834,
                        "nodeType": "ExpressionStatement",
                        "src": "4225:149:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4453:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "3432",
                                    "id": 21839,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4456:2:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_42_by_1",
                                      "typeString": "int_const 42"
                                    },
                                    "value": "42"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_42_by_1",
                                      "typeString": "int_const 42"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "633568363670333563706a6d6771626164646d3671726a6665316f6e3473726b656c7237657533706638",
                                    "id": 21836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4388:44:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_34d1d58192761e6d0e8d002725ad91f448a977fb4651ba0ca9a9b355f56b36b9",
                                      "typeString": "literal_string \"c5h66p35cpjmgqbaddm6qrjfe1on4srkelr7eu3pf8\""
                                    },
                                    "value": "c5h66p35cpjmgqbaddm6qrjfe1on4srkelr7eu3pf8"
                                  },
                                  "id": 21837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4433:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "4388:64:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4388:71:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "6162636465666768696a6b6c6d6e6f707172737475767778797a",
                                        "id": 21845,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4479:28:107",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_9230175b13981da14d2f3334f321eb78fa0473133f6da3de896feb22fb258936",
                                          "typeString": "literal_string \"abcdefghijklmnopqrstuvwxyz\""
                                        },
                                        "value": "abcdefghijklmnopqrstuvwxyz"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_9230175b13981da14d2f3334f321eb78fa0473133f6da3de896feb22fb258936",
                                          "typeString": "literal_string \"abcdefghijklmnopqrstuvwxyz\""
                                        }
                                      ],
                                      "id": 21844,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4471:7:107",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes26_$",
                                        "typeString": "type(bytes26)"
                                      },
                                      "typeName": {
                                        "id": 21843,
                                        "name": "bytes26",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4471:7:107",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 21846,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4471:37:107",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes26",
                                      "typeString": "bytes26"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes26",
                                      "typeString": "bytes26"
                                    }
                                  ],
                                  "id": 21842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4463:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21841,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4463:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4463:46:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "4388:121:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f646520616c706861626574206c6f77657263617365",
                              "id": 21849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4511:27:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae2facbcc57f3802e5a9e7198d5d43aab834f08caa7d17ea6263a458a927f643",
                                "typeString": "literal_string \"Decode alphabet lowercase\""
                              },
                              "value": "Decode alphabet lowercase"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ae2facbcc57f3802e5a9e7198d5d43aab834f08caa7d17ea6263a458a927f643",
                                "typeString": "literal_string \"Decode alphabet lowercase\""
                              }
                            ],
                            "id": 21835,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4380:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4380:159:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21851,
                        "nodeType": "ExpressionStatement",
                        "src": "4380:159:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21855,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4628:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "3532",
                                    "id": 21856,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4631:2:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_52_by_1",
                                      "typeString": "int_const 52"
                                    },
                                    "value": "52"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_52_by_1",
                                      "typeString": "int_const 52"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "4335474d324f42314335474d324f42314335474d324f42314335474d324f42314335474d324f42314335474d324f423143354747",
                                    "id": 21853,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4553:54:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_5ebffa5fa64d4dae90899395a7ef54698bee770e38417122e0109c098ec79afe",
                                      "typeString": "literal_string \"C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GG\""
                                    },
                                    "value": "C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GM2OB1C5GG"
                                  },
                                  "id": 21854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4608:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "4553:74:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4553:81:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "6161616161616161616161616161616161616161616161616161616161616161",
                                    "id": 21860,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4646:34:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_47a01324181e85459310f8fb9b24dc09744323ebdcef26cbf98959effdc76e02",
                                      "typeString": "literal_string \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\""
                                    },
                                    "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_47a01324181e85459310f8fb9b24dc09744323ebdcef26cbf98959effdc76e02",
                                      "typeString": "literal_string \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\""
                                    }
                                  ],
                                  "id": 21859,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4638:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21858,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4638:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4638:43:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "4553:128:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f64652033322a276127",
                              "id": 21863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4683:15:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5ed41eb7bfcbd1f7e6ec230b18935019051f3c094557ae28dfd2d0616553ee26",
                                "typeString": "literal_string \"Decode 32*'a'\""
                              },
                              "value": "Decode 32*'a'"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5ed41eb7bfcbd1f7e6ec230b18935019051f3c094557ae28dfd2d0616553ee26",
                                "typeString": "literal_string \"Decode 32*'a'\""
                              }
                            ],
                            "id": 21852,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4545:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4545:154:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21865,
                        "nodeType": "ExpressionStatement",
                        "src": "4545:154:107"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 21876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 21869,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4791:1:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "3332",
                                    "id": 21870,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4794:2:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "2062737434686c6a653772306f38633870346f38713538326c6d30656a6d697174076d61746f6b656e0378797a00",
                                    "id": 21867,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4713:57:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_62d2a17e186e7e56c59b86326e3f4c5ffbaf96ee7a3d2325b826cc6f3cd24c61",
                                      "typeString": "literal_string hex\"2062737434686c6a653772306f38633870346f38713538326c6d30656a6d697174076d61746f6b656e0378797a00\""
                                    },
                                    "value": " bst4hlje7r0o8c8p4o8q582lm0ejmiqt\u0007matoken\u0003xyz\u0000"
                                  },
                                  "id": 21868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4771:19:107",
                                  "memberName": "base32HexDecodeWord",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4972,
                                  "src": "4713:77:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 21871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4713:84:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "5f3a48d66e3ec18431192611a2a055b01d3b4b5d",
                                    "id": 21874,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4809:45:107",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c8abfc11e813897c7d9d36d6c45be159dbaf53fed60a6614d2ce10fbdee76962",
                                      "typeString": "literal_string hex\"5f3a48d66e3ec18431192611a2a055b01d3b4b5d\""
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_c8abfc11e813897c7d9d36d6c45be159dbaf53fed60a6614d2ce10fbdee76962",
                                      "typeString": "literal_string hex\"5f3a48d66e3ec18431192611a2a055b01d3b4b5d\""
                                    }
                                  ],
                                  "id": 21873,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4801:7:107",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 21872,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4801:7:107",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 21875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4801:54:107",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "4713:142:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4465636f6465207265616c2062797465733332686578",
                              "id": 21877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4857:24:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4aa21864c6c5f68459882cebe5d7989f64eff10a412bb39411106d79b11cf6d7",
                                "typeString": "literal_string \"Decode real bytes32hex\""
                              },
                              "value": "Decode real bytes32hex"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4aa21864c6c5f68459882cebe5d7989f64eff10a412bb39411106d79b11cf6d7",
                                "typeString": "literal_string \"Decode real bytes32hex\""
                              }
                            ],
                            "id": 21866,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4705:7:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4705:177:107",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21879,
                        "nodeType": "ExpressionStatement",
                        "src": "4705:177:107"
                      }
                    ]
                  },
                  "functionSelector": "83d31df6",
                  "id": 21881,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testBase32HexDecodeWord",
                  "nameLocation": "3623:23:107",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21714,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3646:2:107"
                  },
                  "returnParameters": {
                    "id": 21715,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3661:0:107"
                  },
                  "scope": 21882,
                  "src": "3614:1273:107",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 21883,
              "src": "133:4756:107",
              "usedErrors": []
            }
          ],
          "src": "0:4889:107"
        },
        "id": 107
      },
      "test/dnssec-oracle/TestRRUtils.sol": {
        "ast": {
          "absolutePath": "test/dnssec-oracle/TestRRUtils.sol",
          "exportedSymbols": {
            "Buffer": [
              521
            ],
            "BytesUtils": [
              5017
            ],
            "RRUtils": [
              7059
            ],
            "TestRRUtils": [
              22393
            ]
          },
          "id": 22394,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21884,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:108"
            },
            {
              "absolutePath": "contracts/dnssec-oracle/RRUtils.sol",
              "file": "../../contracts/dnssec-oracle/RRUtils.sol",
              "id": 21885,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22394,
              "sourceUnit": 7060,
              "src": "25:51:108",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dnssec-oracle/BytesUtils.sol",
              "file": "../../contracts/dnssec-oracle/BytesUtils.sol",
              "id": 21886,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22394,
              "sourceUnit": 5018,
              "src": "77:54:108",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "TestRRUtils",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 22393,
              "linearizedBaseContracts": [
                22393
              ],
              "name": "TestRRUtils",
              "nameLocation": "142:11:108",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 21888,
                  "libraryName": {
                    "id": 21887,
                    "name": "BytesUtils",
                    "nameLocations": [
                      "164:10:108"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5017,
                    "src": "164:10:108"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "158:23:108"
                },
                {
                  "global": false,
                  "id": 21890,
                  "libraryName": {
                    "id": 21889,
                    "name": "RRUtils",
                    "nameLocations": [
                      "190:7:108"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7059,
                    "src": "190:7:108"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "184:20:108"
                },
                {
                  "constant": true,
                  "id": 21893,
                  "mutability": "constant",
                  "name": "DNSTYPE_A",
                  "nameLocation": "224:9:108",
                  "nodeType": "VariableDeclaration",
                  "scope": 22393,
                  "src": "208:29:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 21891,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "208:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 21892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "236:1:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21896,
                  "mutability": "constant",
                  "name": "DNSTYPE_CNAME",
                  "nameLocation": "257:13:108",
                  "nodeType": "VariableDeclaration",
                  "scope": 22393,
                  "src": "241:33:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 21894,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "241:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "35",
                    "id": 21895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "273:1:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5_by_1",
                      "typeString": "int_const 5"
                    },
                    "value": "5"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21899,
                  "mutability": "constant",
                  "name": "DNSTYPE_MX",
                  "nameLocation": "294:10:108",
                  "nodeType": "VariableDeclaration",
                  "scope": 22393,
                  "src": "278:31:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 21897,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "278:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "3135",
                    "id": 21898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "307:2:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_15_by_1",
                      "typeString": "int_const 15"
                    },
                    "value": "15"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21902,
                  "mutability": "constant",
                  "name": "DNSTYPE_TEXT",
                  "nameLocation": "329:12:108",
                  "nodeType": "VariableDeclaration",
                  "scope": 22393,
                  "src": "313:33:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 21900,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "313:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "3136",
                    "id": 21901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "344:2:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_16_by_1",
                      "typeString": "int_const 16"
                    },
                    "value": "16"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21905,
                  "mutability": "constant",
                  "name": "DNSTYPE_RRSIG",
                  "nameLocation": "366:13:108",
                  "nodeType": "VariableDeclaration",
                  "scope": 22393,
                  "src": "350:34:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 21903,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "350:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "3436",
                    "id": 21904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "382:2:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_46_by_1",
                      "typeString": "int_const 46"
                    },
                    "value": "46"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21908,
                  "mutability": "constant",
                  "name": "DNSTYPE_TYPE1234",
                  "nameLocation": "404:16:108",
                  "nodeType": "VariableDeclaration",
                  "scope": 22393,
                  "src": "388:39:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 21906,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "388:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "hexValue": "31323334",
                    "id": 21907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "423:4:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1234_by_1",
                      "typeString": "int_const 1234"
                    },
                    "value": "1234"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21941,
                    "nodeType": "Block",
                    "src": "470:219:108",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21914,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "503:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "00",
                                    "id": 21912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "484:7:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a",
                                      "typeString": "literal_string hex\"00\""
                                    },
                                    "value": "\u0000"
                                  },
                                  "id": 21913,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "492:10:108",
                                  "memberName": "nameLength",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6069,
                                  "src": "484:18:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "484:21:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 21916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "509:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "484:26:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6e616d654c656e67746828272e2729203d3d2031",
                              "id": 21918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "512:22:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7eff79fd07b3511edb69feef9a829a779b1052131d8bb0bbda3c75f69891e329",
                                "typeString": "literal_string \"nameLength('.') == 1\""
                              },
                              "value": "nameLength('.') == 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7eff79fd07b3511edb69feef9a829a779b1052131d8bb0bbda3c75f69891e329",
                                "typeString": "literal_string \"nameLength('.') == 1\""
                              }
                            ],
                            "id": 21911,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "476:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "476:59:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21920,
                        "nodeType": "ExpressionStatement",
                        "src": "476:59:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "34",
                                    "id": 21924,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "576:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "0361626300",
                                    "id": 21922,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "549:15:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2384a5610f49b2c9ed7f0b197612043212ef1d0cd09c9546f25fc81de6192981",
                                      "typeString": "literal_string hex\"0361626300\""
                                    },
                                    "value": "\u0003abc\u0000"
                                  },
                                  "id": 21923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "565:10:108",
                                  "memberName": "nameLength",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6069,
                                  "src": "549:26:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21925,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "549:29:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 21926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "582:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "549:34:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6e616d654c656e67746828272e2729203d3d2031",
                              "id": 21928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "585:22:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7eff79fd07b3511edb69feef9a829a779b1052131d8bb0bbda3c75f69891e329",
                                "typeString": "literal_string \"nameLength('.') == 1\""
                              },
                              "value": "nameLength('.') == 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7eff79fd07b3511edb69feef9a829a779b1052131d8bb0bbda3c75f69891e329",
                                "typeString": "literal_string \"nameLength('.') == 1\""
                              }
                            ],
                            "id": 21921,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "541:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "541:67:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21930,
                        "nodeType": "ExpressionStatement",
                        "src": "541:67:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21934,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "649:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "0361626300",
                                    "id": 21932,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "622:15:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2384a5610f49b2c9ed7f0b197612043212ef1d0cd09c9546f25fc81de6192981",
                                      "typeString": "literal_string hex\"0361626300\""
                                    },
                                    "value": "\u0003abc\u0000"
                                  },
                                  "id": 21933,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "638:10:108",
                                  "memberName": "nameLength",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6069,
                                  "src": "622:26:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "622:29:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "35",
                                "id": 21936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "655:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5_by_1",
                                  "typeString": "int_const 5"
                                },
                                "value": "5"
                              },
                              "src": "622:34:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6e616d654c656e67746828276162632e2729203d3d2035",
                              "id": 21938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "658:25:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_79698b1975fb3b45192f1d63d744beeb5391eccc3c46a52243578ea8ab3bea6d",
                                "typeString": "literal_string \"nameLength('abc.') == 5\""
                              },
                              "value": "nameLength('abc.') == 5"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_79698b1975fb3b45192f1d63d744beeb5391eccc3c46a52243578ea8ab3bea6d",
                                "typeString": "literal_string \"nameLength('abc.') == 5\""
                              }
                            ],
                            "id": 21931,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "614:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "614:70:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21940,
                        "nodeType": "ExpressionStatement",
                        "src": "614:70:108"
                      }
                    ]
                  },
                  "functionSelector": "0250cf9a",
                  "id": 21942,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testNameLength",
                  "nameLocation": "441:14:108",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21909,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "455:2:108"
                  },
                  "returnParameters": {
                    "id": 21910,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "470:0:108"
                  },
                  "scope": 22393,
                  "src": "432:257:108",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21987,
                    "nodeType": "Block",
                    "src": "731:320:108",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21948,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "764:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "00",
                                    "id": 21946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "745:7:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a",
                                      "typeString": "literal_string hex\"00\""
                                    },
                                    "value": "\u0000"
                                  },
                                  "id": 21947,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "753:10:108",
                                  "memberName": "labelCount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6143,
                                  "src": "745:18:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "745:21:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 21950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "770:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "745:26:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6c6162656c436f756e7428272e2729203d3d2030",
                              "id": 21952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "773:22:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_550f417f12cd5b0cc6c5440b051ecee0b959ace0c0a870d9bab0f22af94f9e73",
                                "typeString": "literal_string \"labelCount('.') == 0\""
                              },
                              "value": "labelCount('.') == 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_550f417f12cd5b0cc6c5440b051ecee0b959ace0c0a870d9bab0f22af94f9e73",
                                "typeString": "literal_string \"labelCount('.') == 0\""
                              }
                            ],
                            "id": 21945,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "737:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "737:59:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21954,
                        "nodeType": "ExpressionStatement",
                        "src": "737:59:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21958,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "833:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "016100",
                                    "id": 21956,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "810:11:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4b4dbcf47e0f8a66c36d30fb349b967b5b765a08696d0ff6fa30412b0c2ca647",
                                      "typeString": "literal_string hex\"016100\""
                                    },
                                    "value": "\u0001a\u0000"
                                  },
                                  "id": 21957,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "822:10:108",
                                  "memberName": "labelCount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6143,
                                  "src": "810:22:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21959,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "810:25:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 21960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "839:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "810:30:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6c6162656c436f756e742827612e2729203d3d2031",
                              "id": 21962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "842:23:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ca1733b0e82b81bf1eb99a2b630a9d3af688720adab95cea378a13d2fa4770fe",
                                "typeString": "literal_string \"labelCount('a.') == 1\""
                              },
                              "value": "labelCount('a.') == 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ca1733b0e82b81bf1eb99a2b630a9d3af688720adab95cea378a13d2fa4770fe",
                                "typeString": "literal_string \"labelCount('a.') == 1\""
                              }
                            ],
                            "id": 21955,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "802:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "802:64:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21964,
                        "nodeType": "ExpressionStatement",
                        "src": "802:64:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 21968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "909:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "016201610000",
                                    "id": 21966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "880:17:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d8f88e669f3eec4b644f0d9522e9e482aafed1a299f030298c6a0227a311f8fe",
                                      "typeString": "literal_string hex\"016201610000\""
                                    },
                                    "value": "\u0001b\u0001a\u0000\u0000"
                                  },
                                  "id": 21967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "898:10:108",
                                  "memberName": "labelCount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6143,
                                  "src": "880:28:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "880:31:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 21970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "915:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "880:36:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6c6162656c436f756e742827622e612e2729203d3d2032",
                              "id": 21972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "918:25:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_322c001f5a4a8d6c44c28bf3df8b09b8526da1da01eebb748bc9817ac06a416e",
                                "typeString": "literal_string \"labelCount('b.a.') == 2\""
                              },
                              "value": "labelCount('b.a.') == 2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_322c001f5a4a8d6c44c28bf3df8b09b8526da1da01eebb748bc9817ac06a416e",
                                "typeString": "literal_string \"labelCount('b.a.') == 2\""
                              }
                            ],
                            "id": 21965,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "872:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "872:72:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21974,
                        "nodeType": "ExpressionStatement",
                        "src": "872:72:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "id": 21980,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "36",
                                      "id": 21978,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "999:1:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_6_by_1",
                                        "typeString": "int_const 6"
                                      },
                                      "value": "6"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 21979,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1002:1:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "999:4:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "066574686c61620378797a00",
                                    "id": 21976,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "958:29:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ba8f7981d2269eda683f7133537f3f0c298e600d797387617fe5acb65cc59ba5",
                                      "typeString": "literal_string hex\"066574686c61620378797a00\""
                                    },
                                    "value": "\u0006ethlab\u0003xyz\u0000"
                                  },
                                  "id": 21977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "988:10:108",
                                  "memberName": "labelCount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6143,
                                  "src": "958:40:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "958:46:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 21982,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1008:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "958:51:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6e616d654c656e6774682827286274686c6162292e78797a2e2729203d3d2036",
                              "id": 21984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1011:34:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9440ac3fb312b691102cb530f6ff009f02ba639f803b7ab1f192721d47b75ab1",
                                "typeString": "literal_string \"nameLength('(bthlab).xyz.') == 6\""
                              },
                              "value": "nameLength('(bthlab).xyz.') == 6"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9440ac3fb312b691102cb530f6ff009f02ba639f803b7ab1f192721d47b75ab1",
                                "typeString": "literal_string \"nameLength('(bthlab).xyz.') == 6\""
                              }
                            ],
                            "id": 21975,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "950:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "950:96:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21986,
                        "nodeType": "ExpressionStatement",
                        "src": "950:96:108"
                      }
                    ]
                  },
                  "functionSelector": "cc60617b",
                  "id": 21988,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testLabelCount",
                  "nameLocation": "702:14:108",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21943,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "716:2:108"
                  },
                  "returnParameters": {
                    "id": 21944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "731:0:108"
                  },
                  "scope": 22393,
                  "src": "693:358:108",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22124,
                    "nodeType": "Block",
                    "src": "1093:809:108",
                    "statements": [
                      {
                        "assignments": [
                          21992
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21992,
                            "mutability": "mutable",
                            "name": "rrs",
                            "nameLocation": "1176:3:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22124,
                            "src": "1163:16:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 21991,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1163:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21994,
                        "initialValue": {
                          "hexValue": "0161000001000100000e1000047400000101620161000001000100000e100004c0a80101",
                          "id": 21993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1182:77:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_7874deaf77e6515b6984466873912a5efb4e4361c374564c916b56f1d2093fef",
                            "typeString": "literal_string hex\"0161000001000100000e1000047400000101620161000001000100000e100004c0a80101\""
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1163:96:108"
                      },
                      {
                        "assignments": [
                          22000
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22000,
                            "mutability": "mutable",
                            "name": "names",
                            "nameLocation": "1281:5:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22124,
                            "src": "1265:21:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$2_memory_ptr",
                              "typeString": "bytes[2]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21998,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "1265:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              },
                              "id": 21999,
                              "length": {
                                "hexValue": "32",
                                "id": 21997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1271:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "ArrayTypeName",
                              "src": "1265:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_storage_$2_storage_ptr",
                                "typeString": "bytes[2]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22010,
                        "initialValue": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "016100",
                                  "id": 22003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "hexString",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1296:11:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4b4dbcf47e0f8a66c36d30fb349b967b5b765a08696d0ff6fa30412b0c2ca647",
                                    "typeString": "literal_string hex\"016100\""
                                  },
                                  "value": "\u0001a\u0000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4b4dbcf47e0f8a66c36d30fb349b967b5b765a08696d0ff6fa30412b0c2ca647",
                                    "typeString": "literal_string hex\"016100\""
                                  }
                                ],
                                "id": 22002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1290:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 22001,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1290:5:108",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 22004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1290:18:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "0162016100",
                                  "id": 22007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "hexString",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1316:15:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_47ab1ce31dded1ecf0172aa5c04adc5f5c61354d9260d13ba9e12903f212d924",
                                    "typeString": "literal_string hex\"0162016100\""
                                  },
                                  "value": "\u0001b\u0001a\u0000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_47ab1ce31dded1ecf0172aa5c04adc5f5c61354d9260d13ba9e12903f212d924",
                                    "typeString": "literal_string hex\"0162016100\""
                                  }
                                ],
                                "id": 22006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1310:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 22005,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1310:5:108",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 22008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1310:22:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 22009,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1289:44:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$2_memory_ptr",
                            "typeString": "bytes memory[2] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1265:68:108"
                      },
                      {
                        "assignments": [
                          22016
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22016,
                            "mutability": "mutable",
                            "name": "rdatas",
                            "nameLocation": "1355:6:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22124,
                            "src": "1339:22:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$2_memory_ptr",
                              "typeString": "bytes[2]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 22014,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "1339:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              },
                              "id": 22015,
                              "length": {
                                "hexValue": "32",
                                "id": 22013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1345:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "ArrayTypeName",
                              "src": "1339:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_storage_$2_storage_ptr",
                                "typeString": "bytes[2]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22026,
                        "initialValue": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "74000001",
                                  "id": 22019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "hexString",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1371:13:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6874b43ff713ce77622648d05cb3fc7327908c2c5500beeeed660217ad7cf179",
                                    "typeString": "literal_string hex\"74000001\""
                                  },
                                  "value": "t\u0000\u0000\u0001"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6874b43ff713ce77622648d05cb3fc7327908c2c5500beeeed660217ad7cf179",
                                    "typeString": "literal_string hex\"74000001\""
                                  }
                                ],
                                "id": 22018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1365:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 22017,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1365:5:108",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 22020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1365:20:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "c0a80101",
                                  "id": 22023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "hexString",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1393:13:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_787c1c21fdeb526214f0200c0e35da02e81b1f2c263100af3f439638d11ddad1",
                                    "typeString": "literal_string hex\"c0a80101\""
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_787c1c21fdeb526214f0200c0e35da02e81b1f2c263100af3f439638d11ddad1",
                                    "typeString": "literal_string hex\"c0a80101\""
                                  }
                                ],
                                "id": 22022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1387:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 22021,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1387:5:108",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 22024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1387:20:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 22025,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1364:44:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$2_memory_ptr",
                            "typeString": "bytes memory[2] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1339:69:108"
                      },
                      {
                        "assignments": [
                          22028
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22028,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "1419:1:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22124,
                            "src": "1414:6:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22027,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1414:4:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22030,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 22029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1423:1:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1414:10:108"
                      },
                      {
                        "body": {
                          "id": 22115,
                          "nodeType": "Block",
                          "src": "1513:342:108",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 22056,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 22052,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22035,
                                            "src": "1534:4:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 22053,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "1539:7:108",
                                          "memberName": "dnstype",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6312,
                                          "src": "1534:12:108",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        ],
                                        "id": 22051,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1529:4:108",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 22050,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1529:4:108",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 22054,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1529:18:108",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 22055,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1551:1:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "1529:23:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "54797065206d617463686573",
                                    "id": 22057,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1554:14:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d4a48182e2afdd5dbebf10b4ca47fcad283d90a13a14e49f2a7e4e956ef837c9",
                                      "typeString": "literal_string \"Type matches\""
                                    },
                                    "value": "Type matches"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_d4a48182e2afdd5dbebf10b4ca47fcad283d90a13a14e49f2a7e4e956ef837c9",
                                      "typeString": "literal_string \"Type matches\""
                                    }
                                  ],
                                  "id": 22049,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1521:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 22058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1521:48:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22059,
                              "nodeType": "ExpressionStatement",
                              "src": "1521:48:108"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 22067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 22063,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22035,
                                            "src": "1590:4:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 22064,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "1595:5:108",
                                          "memberName": "class",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6314,
                                          "src": "1590:10:108",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        ],
                                        "id": 22062,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1585:4:108",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 22061,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1585:4:108",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 22065,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1585:16:108",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 22066,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1605:1:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "1585:21:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "436c617373206d617463686573",
                                    "id": 22068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1608:15:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ecb2825ba59598cfcbfd424e795aac51679215f739f63a1d34e8db740faf2186",
                                      "typeString": "literal_string \"Class matches\""
                                    },
                                    "value": "Class matches"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_ecb2825ba59598cfcbfd424e795aac51679215f739f63a1d34e8db740faf2186",
                                      "typeString": "literal_string \"Class matches\""
                                    }
                                  ],
                                  "id": 22060,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1577:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 22069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1577:47:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22070,
                              "nodeType": "ExpressionStatement",
                              "src": "1577:47:108"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 22078,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 22074,
                                            "name": "iter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22035,
                                            "src": "1645:4:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                              "typeString": "struct RRUtils.RRIterator memory"
                                            }
                                          },
                                          "id": 22075,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "1650:3:108",
                                          "memberName": "ttl",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6316,
                                          "src": "1645:8:108",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        ],
                                        "id": 22073,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1640:4:108",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 22072,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1640:4:108",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 22076,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1640:14:108",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "33363030",
                                      "id": 22077,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1658:4:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3600_by_1",
                                        "typeString": "int_const 3600"
                                      },
                                      "value": "3600"
                                    },
                                    "src": "1640:22:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "54544c206d617463686573",
                                    "id": 22079,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1664:13:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_7f8817867a2defd51236815a8ac4965af601adee0292d0f1eb6b96ad2343c218",
                                      "typeString": "literal_string \"TTL matches\""
                                    },
                                    "value": "TTL matches"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_7f8817867a2defd51236815a8ac4965af601adee0292d0f1eb6b96ad2343c218",
                                      "typeString": "literal_string \"TTL matches\""
                                    }
                                  ],
                                  "id": 22071,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1632:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 22080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1632:46:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22081,
                              "nodeType": "ExpressionStatement",
                              "src": "1632:46:108"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "id": 22093,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "id": 22084,
                                              "name": "iter",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22035,
                                              "src": "1704:4:108",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                "typeString": "struct RRUtils.RRIterator memory"
                                              }
                                            },
                                            "id": 22085,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "1709:4:108",
                                            "memberName": "name",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6493,
                                            "src": "1704:9:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                              "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 22086,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1704:11:108",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 22083,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "1694:9:108",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 22087,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1694:22:108",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "baseExpression": {
                                            "id": 22089,
                                            "name": "names",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22000,
                                            "src": "1730:5:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$2_memory_ptr",
                                              "typeString": "bytes memory[2] memory"
                                            }
                                          },
                                          "id": 22091,
                                          "indexExpression": {
                                            "id": 22090,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22028,
                                            "src": "1736:1:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "1730:8:108",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 22088,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "1720:9:108",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 22092,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1720:19:108",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "1694:45:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e616d65206d617463686573",
                                    "id": 22094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1741:14:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2a6022100817ec1001b58899f0ecf9559725699dd3f7df6caacea6c2710ae25e",
                                      "typeString": "literal_string \"Name matches\""
                                    },
                                    "value": "Name matches"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_2a6022100817ec1001b58899f0ecf9559725699dd3f7df6caacea6c2710ae25e",
                                      "typeString": "literal_string \"Name matches\""
                                    }
                                  ],
                                  "id": 22082,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1686:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 22095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1686:70:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22096,
                              "nodeType": "ExpressionStatement",
                              "src": "1686:70:108"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "id": 22108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "id": 22099,
                                              "name": "iter",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22035,
                                              "src": "1782:4:108",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                                "typeString": "struct RRUtils.RRIterator memory"
                                              }
                                            },
                                            "id": 22100,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "1787:5:108",
                                            "memberName": "rdata",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6515,
                                            "src": "1782:10:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                              "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 22101,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1782:12:108",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 22098,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "1772:9:108",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 22102,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1772:23:108",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "baseExpression": {
                                            "id": 22104,
                                            "name": "rdatas",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22016,
                                            "src": "1809:6:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$2_memory_ptr",
                                              "typeString": "bytes memory[2] memory"
                                            }
                                          },
                                          "id": 22106,
                                          "indexExpression": {
                                            "id": 22105,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22028,
                                            "src": "1816:1:108",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "1809:9:108",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 22103,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "1799:9:108",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 22107,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1799:20:108",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "1772:47:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5264617461206d617463686573",
                                    "id": 22109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1821:15:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5f6b8b39f9114f3c4a67b837819b66c18cbf97dda4808a647f24e3f4a4e70e9",
                                      "typeString": "literal_string \"Rdata matches\""
                                    },
                                    "value": "Rdata matches"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5f6b8b39f9114f3c4a67b837819b66c18cbf97dda4808a647f24e3f4a4e70e9",
                                      "typeString": "literal_string \"Rdata matches\""
                                    }
                                  ],
                                  "id": 22097,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1764:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 22110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1764:73:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22111,
                              "nodeType": "ExpressionStatement",
                              "src": "1764:73:108"
                            },
                            {
                              "expression": {
                                "id": 22113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "1845:3:108",
                                "subExpression": {
                                  "id": 22112,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22028,
                                  "src": "1845:1:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22114,
                              "nodeType": "ExpressionStatement",
                              "src": "1845:3:108"
                            }
                          ]
                        },
                        "condition": {
                          "id": 22044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1486:12:108",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 22041,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22035,
                                "src": "1487:4:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 22042,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1492:4:108",
                              "memberName": "done",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6366,
                              "src": "1487:9:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                              }
                            },
                            "id": 22043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1487:11:108",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22116,
                        "initializationExpression": {
                          "assignments": [
                            22035
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22035,
                              "mutability": "mutable",
                              "name": "iter",
                              "nameLocation": "1460:4:108",
                              "nodeType": "VariableDeclaration",
                              "scope": 22116,
                              "src": "1434:30:108",
                              "stateVariable": false,
                              "storageLocation": "memory",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator"
                              },
                              "typeName": {
                                "id": 22034,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 22033,
                                  "name": "RRUtils.RRIterator",
                                  "nameLocations": [
                                    "1434:7:108",
                                    "1442:10:108"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 6321,
                                  "src": "1434:18:108"
                                },
                                "referencedDeclaration": 6321,
                                "src": "1434:18:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_storage_ptr",
                                  "typeString": "struct RRUtils.RRIterator"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22040,
                          "initialValue": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 22038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1482:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 22036,
                                "name": "rrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21992,
                                "src": "1467:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 22037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1471:10:108",
                              "memberName": "iterateRRs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6349,
                              "src": "1467:14:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$6321_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                              }
                            },
                            "id": 22039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1467:17:108",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1434:50:108"
                        },
                        "loopExpression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 22045,
                                "name": "iter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22035,
                                "src": "1500:4:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RRIterator_$6321_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              },
                              "id": 22046,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1505:4:108",
                              "memberName": "next",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6470,
                              "src": "1500:9:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$6321_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$6321_memory_ptr_$",
                                "typeString": "function (struct RRUtils.RRIterator memory) pure"
                              }
                            },
                            "id": 22047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1500:11:108",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 22048,
                          "nodeType": "ExpressionStatement",
                          "src": "1500:11:108"
                        },
                        "nodeType": "ForStatement",
                        "src": "1430:425:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22118,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22028,
                                "src": "1868:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 22119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1873:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1868:6:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45787065637465642032207265636f726473",
                              "id": 22121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1876:20:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_994cf01fd95fa740ff6aae9f505815f1b57b5dcff57b67047721b13b238ab515",
                                "typeString": "literal_string \"Expected 2 records\""
                              },
                              "value": "Expected 2 records"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_994cf01fd95fa740ff6aae9f505815f1b57b5dcff57b67047721b13b238ab515",
                                "typeString": "literal_string \"Expected 2 records\""
                              }
                            ],
                            "id": 22117,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1860:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1860:37:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22123,
                        "nodeType": "ExpressionStatement",
                        "src": "1860:37:108"
                      }
                    ]
                  },
                  "functionSelector": "706fc4de",
                  "id": 22125,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testIterateRRs",
                  "nameLocation": "1064:14:108",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21989,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1078:2:108"
                  },
                  "returnParameters": {
                    "id": 21990,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1093:0:108"
                  },
                  "scope": 22393,
                  "src": "1055:847:108",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22292,
                    "nodeType": "Block",
                    "src": "2018:1786:108",
                    "statements": [
                      {
                        "assignments": [
                          22129
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22129,
                            "mutability": "mutable",
                            "name": "bthLabXyz",
                            "nameLocation": "2037:9:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2024:22:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22128,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2024:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22131,
                        "initialValue": {
                          "hexValue": "066274686c61620378797a00",
                          "id": 22130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2049:29:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_d2cf73261e46c805779facbc771583b203a31975ff357cfcbd8ec01e932b15fa",
                            "typeString": "literal_string hex\"066274686c61620378797a00\""
                          },
                          "value": "\u0006bthlab\u0003xyz\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2024:54:108"
                      },
                      {
                        "assignments": [
                          22133
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22133,
                            "mutability": "mutable",
                            "name": "ethLabXyz",
                            "nameLocation": "2097:9:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2084:22:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22132,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2084:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22135,
                        "initialValue": {
                          "hexValue": "066574686c61620378797a00",
                          "id": 22134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2109:29:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_ba8f7981d2269eda683f7133537f3f0c298e600d797387617fe5acb65cc59ba5",
                            "typeString": "literal_string hex\"066574686c61620378797a00\""
                          },
                          "value": "\u0006ethlab\u0003xyz\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2084:54:108"
                      },
                      {
                        "assignments": [
                          22137
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22137,
                            "mutability": "mutable",
                            "name": "xyz",
                            "nameLocation": "2157:3:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2144:16:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22136,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2144:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22139,
                        "initialValue": {
                          "hexValue": "0378797a00",
                          "id": 22138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2163:15:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_e436cdcfcf9ad4868bf86165e1bae1072febe00b80dab5457c389d8803d1bdfb",
                            "typeString": "literal_string hex\"0378797a00\""
                          },
                          "value": "\u0003xyz\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2144:34:108"
                      },
                      {
                        "assignments": [
                          22141
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22141,
                            "mutability": "mutable",
                            "name": "a_b_c",
                            "nameLocation": "2197:5:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2184:18:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22140,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2184:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22143,
                        "initialValue": {
                          "hexValue": "01610162016300",
                          "id": 22142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2206:19:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_a1e8b03570b64317cca5d6bf5bb65b8644eefd0f4409a23a078645b07597f7da",
                            "typeString": "literal_string hex\"01610162016300\""
                          },
                          "value": "\u0001a\u0001b\u0001c\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2184:41:108"
                      },
                      {
                        "assignments": [
                          22145
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22145,
                            "mutability": "mutable",
                            "name": "b_b_c",
                            "nameLocation": "2244:5:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2231:18:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22144,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2231:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22147,
                        "initialValue": {
                          "hexValue": "01620162016300",
                          "id": 22146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2253:19:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_91e21c01ad15e615e04414d6a5bb4aa9ee6b6a330049a55c993836f46ee0e5dc",
                            "typeString": "literal_string hex\"01620162016300\""
                          },
                          "value": "\u0001b\u0001b\u0001c\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2231:41:108"
                      },
                      {
                        "assignments": [
                          22149
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22149,
                            "mutability": "mutable",
                            "name": "c",
                            "nameLocation": "2291:1:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2278:14:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22148,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2278:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22151,
                        "initialValue": {
                          "hexValue": "016300",
                          "id": 22150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2300:11:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8f0a6fd812e6360ebd41de82cce2d230c0862fdaac41e5d198ff85d5d5c05894",
                            "typeString": "literal_string hex\"016300\""
                          },
                          "value": "\u0001c\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2278:33:108"
                      },
                      {
                        "assignments": [
                          22153
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22153,
                            "mutability": "mutable",
                            "name": "d",
                            "nameLocation": "2330:1:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2317:14:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22152,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2317:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22155,
                        "initialValue": {
                          "hexValue": "016400",
                          "id": 22154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2339:11:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_821737d78da7a0d8e8fd302fca425dc515e573b2f11e50067ac0811e56f293cd",
                            "typeString": "literal_string hex\"016400\""
                          },
                          "value": "\u0001d\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2317:33:108"
                      },
                      {
                        "assignments": [
                          22157
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22157,
                            "mutability": "mutable",
                            "name": "a_d_c",
                            "nameLocation": "2369:5:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2356:18:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22156,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2356:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22159,
                        "initialValue": {
                          "hexValue": "01610164016300",
                          "id": 22158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2378:19:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_358e1af3e5c155a2e9a392eec78c832e9efabd526b0d74a65520637ac16f185c",
                            "typeString": "literal_string hex\"01610164016300\""
                          },
                          "value": "\u0001a\u0001d\u0001c\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2356:41:108"
                      },
                      {
                        "assignments": [
                          22161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22161,
                            "mutability": "mutable",
                            "name": "b_a_c",
                            "nameLocation": "2416:5:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2403:18:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22160,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2403:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22163,
                        "initialValue": {
                          "hexValue": "01620161016300",
                          "id": 22162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2425:19:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_25f03652c86380aa5d88db769d9439a4596a415f7eba6c2dfd4a9f4073c32039",
                            "typeString": "literal_string hex\"01620161016300\""
                          },
                          "value": "\u0001b\u0001a\u0001c\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2403:41:108"
                      },
                      {
                        "assignments": [
                          22165
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22165,
                            "mutability": "mutable",
                            "name": "ab_c_d",
                            "nameLocation": "2463:6:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2450:19:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22164,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2450:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22167,
                        "initialValue": {
                          "hexValue": "0261620163016400",
                          "id": 22166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2472:21:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_5633ac53b7ce79ed53c6aeb20f1aa4233aef84d10a61ea55e8da94b038f631ce",
                            "typeString": "literal_string hex\"0261620163016400\""
                          },
                          "value": "\u0002ab\u0001c\u0001d\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2450:43:108"
                      },
                      {
                        "assignments": [
                          22169
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22169,
                            "mutability": "mutable",
                            "name": "a_c_d",
                            "nameLocation": "2512:5:108",
                            "nodeType": "VariableDeclaration",
                            "scope": 22292,
                            "src": "2499:18:108",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22168,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2499:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22171,
                        "initialValue": {
                          "hexValue": "01610163016400",
                          "id": 22170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "hexString",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2521:19:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_1bf80054a7b98b59dfcee3d6055762db202321a39da227d20f5209d5434ac349",
                            "typeString": "literal_string hex\"01610163016400\""
                          },
                          "value": "\u0001a\u0001c\u0001d\u0000"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2499:41:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "0302616200",
                                    "id": 22175,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2584:15:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8af72af180be43900e423fed453c8b6ae98a1761235c475e773dc7576ee69698",
                                      "typeString": "literal_string hex\"0302616200\""
                                    },
                                    "value": "\u0003\u0002ab\u0000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_8af72af180be43900e423fed453c8b6ae98a1761235c475e773dc7576ee69698",
                                      "typeString": "literal_string hex\"0302616200\""
                                    }
                                  ],
                                  "expression": {
                                    "hexValue": "0301616100",
                                    "id": 22173,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2555:15:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a7db708374a94738933455d7ff0bbf4b2e3d2907eb45189115a8612ee7d7c03c",
                                      "typeString": "literal_string hex\"0301616100\""
                                    },
                                    "value": "\u0003\u0001aa\u0000"
                                  },
                                  "id": 22174,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2571:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "2555:28:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2555:45:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22177,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2604:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2555:50:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6c6162656c206c656e677468732061726520636f72726563746c7920636865636b6564",
                              "id": 22179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2608:37:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fe7fad5c1110ceaf41a9647c79015d04595ac3cec5b51625f02f7c886b4cbf6d",
                                "typeString": "literal_string \"label lengths are correctly checked\""
                              },
                              "value": "label lengths are correctly checked"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fe7fad5c1110ceaf41a9647c79015d04595ac3cec5b51625f02f7c886b4cbf6d",
                                "typeString": "literal_string \"label lengths are correctly checked\""
                              }
                            ],
                            "id": 22172,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2547:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2547:99:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22181,
                        "nodeType": "ExpressionStatement",
                        "src": "2547:99:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22185,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22149,
                                    "src": "2679:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22183,
                                    "name": "a_b_c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22141,
                                    "src": "2660:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22184,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2666:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "2660:18:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22186,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2660:21:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2690:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2660:31:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6f6e65206e616d6520686173206120646966666572656e6365206f66203e31206c6162656c20746f2077697468207468652073616d6520726f6f74206e616d65",
                              "id": 22189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2694:66:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6310fabe86fd651b0fedbba5b685f31123c370c789115bd12753402f4f0bdb15",
                                "typeString": "literal_string \"one name has a difference of >1 label to with the same root name\""
                              },
                              "value": "one name has a difference of >1 label to with the same root name"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6310fabe86fd651b0fedbba5b685f31123c370c789115bd12753402f4f0bdb15",
                                "typeString": "literal_string \"one name has a difference of >1 label to with the same root name\""
                              }
                            ],
                            "id": 22182,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2652:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2652:109:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22191,
                        "nodeType": "ExpressionStatement",
                        "src": "2652:109:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22195,
                                    "name": "d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22153,
                                    "src": "2794:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22193,
                                    "name": "a_b_c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22141,
                                    "src": "2775:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22194,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2781:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "2775:18:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2775:21:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2805:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2775:31:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6f6e65206e616d6520686173206120646966666572656e6365206f66203e31206c6162656c20746f207769746820646966666572656e7420726f6f74206e616d65",
                              "id": 22199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2808:67:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c6b4795d8768aca852dfb2f09d221eae654395385a5877f6e6ca2013ea9efb0",
                                "typeString": "literal_string \"one name has a difference of >1 label to with different root name\""
                              },
                              "value": "one name has a difference of >1 label to with different root name"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c6b4795d8768aca852dfb2f09d221eae654395385a5877f6e6ca2013ea9efb0",
                                "typeString": "literal_string \"one name has a difference of >1 label to with different root name\""
                              }
                            ],
                            "id": 22192,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2767:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2767:109:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22201,
                        "nodeType": "ExpressionStatement",
                        "src": "2767:109:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22205,
                                    "name": "a_d_c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22157,
                                    "src": "2909:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22203,
                                    "name": "a_b_c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22141,
                                    "src": "2890:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22204,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2896:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "2890:18:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2890:25:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2920:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2890:31:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "74776f206e616d6573207374617274207468652073616d6520627574206861766520646966666572656e63657320696e206c61746572206c6162656c73",
                              "id": 22209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2923:63:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f57de8016d3ddbdd7435695474d6d28b30e9374da76b5c87219e4eb2cd4ccb88",
                                "typeString": "literal_string \"two names start the same but have differences in later labels\""
                              },
                              "value": "two names start the same but have differences in later labels"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f57de8016d3ddbdd7435695474d6d28b30e9374da76b5c87219e4eb2cd4ccb88",
                                "typeString": "literal_string \"two names start the same but have differences in later labels\""
                              }
                            ],
                            "id": 22202,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2882:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2882:105:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22211,
                        "nodeType": "ExpressionStatement",
                        "src": "2882:105:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22215,
                                    "name": "b_a_c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22161,
                                    "src": "3020:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22213,
                                    "name": "a_b_c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22141,
                                    "src": "3001:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22214,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3007:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "3001:18:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3001:25:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3031:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3001:31:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "746865206669727374206c6162656c20736f727473206c617465722c2062757420746865206669727374206c6162656c20736f727473206561726c696572",
                              "id": 22219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3034:64:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0a6852ea68843aeaa9749c5062f4bc9138e848b7335dfa04d2f720530b4423db",
                                "typeString": "literal_string \"the first label sorts later, but the first label sorts earlier\""
                              },
                              "value": "the first label sorts later, but the first label sorts earlier"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0a6852ea68843aeaa9749c5062f4bc9138e848b7335dfa04d2f720530b4423db",
                                "typeString": "literal_string \"the first label sorts later, but the first label sorts earlier\""
                              }
                            ],
                            "id": 22212,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2993:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2993:106:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22221,
                        "nodeType": "ExpressionStatement",
                        "src": "2993:106:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22225,
                                    "name": "a_c_d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22169,
                                    "src": "3133:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22223,
                                    "name": "ab_c_d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22165,
                                    "src": "3113:6:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22224,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3120:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "3113:19:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3113:26:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3143:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3113:31:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "74776f206e616d657320776865726520746865206669727374206c6162656c206f6e206f6e65206973206120707265666978206f6620746865206669727374206c6162656c206f6e20746865206f74686572",
                              "id": 22229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3146:84:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_507931b0e55f6b548eeb72633047cd2b923e10ac55ef6f5a82ab150d098a4116",
                                "typeString": "literal_string \"two names where the first label on one is a prefix of the first label on the other\""
                              },
                              "value": "two names where the first label on one is a prefix of the first label on the other"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_507931b0e55f6b548eeb72633047cd2b923e10ac55ef6f5a82ab150d098a4116",
                                "typeString": "literal_string \"two names where the first label on one is a prefix of the first label on the other\""
                              }
                            ],
                            "id": 22222,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3105:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3105:126:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22231,
                        "nodeType": "ExpressionStatement",
                        "src": "3105:126:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22235,
                                    "name": "b_b_c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22145,
                                    "src": "3264:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22233,
                                    "name": "a_b_c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22141,
                                    "src": "3245:5:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22234,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3251:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "3245:18:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3245:25:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3275:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3245:31:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "74776f206e616d657320776865726520746865206669727374206c6162656c206f6e206f6e65206973206120707265666978206f6620746865206669727374206c6162656c206f6e20746865206f74686572",
                              "id": 22239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3278:84:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_507931b0e55f6b548eeb72633047cd2b923e10ac55ef6f5a82ab150d098a4116",
                                "typeString": "literal_string \"two names where the first label on one is a prefix of the first label on the other\""
                              },
                              "value": "two names where the first label on one is a prefix of the first label on the other"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_507931b0e55f6b548eeb72633047cd2b923e10ac55ef6f5a82ab150d098a4116",
                                "typeString": "literal_string \"two names where the first label on one is a prefix of the first label on the other\""
                              }
                            ],
                            "id": 22232,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3237:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3237:126:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22241,
                        "nodeType": "ExpressionStatement",
                        "src": "3237:126:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22245,
                                    "name": "ethLabXyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22133,
                                    "src": "3394:9:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22243,
                                    "name": "xyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22137,
                                    "src": "3377:3:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3381:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "3377:16:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3377:27:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3407:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3377:31:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "78797a20636f6d6573206265666f7265206574684c61622e78797a",
                              "id": 22249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3410:29:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d0f3078522067c01563af27cd5a908fa0f2aa80333f45b6b010c3387a2066a01",
                                "typeString": "literal_string \"xyz comes before ethLab.xyz\""
                              },
                              "value": "xyz comes before ethLab.xyz"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d0f3078522067c01563af27cd5a908fa0f2aa80333f45b6b010c3387a2066a01",
                                "typeString": "literal_string \"xyz comes before ethLab.xyz\""
                              }
                            ],
                            "id": 22242,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3369:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3369:71:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22251,
                        "nodeType": "ExpressionStatement",
                        "src": "3369:71:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22255,
                                    "name": "ethLabXyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22133,
                                    "src": "3477:9:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22253,
                                    "name": "bthLabXyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22129,
                                    "src": "3454:9:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22254,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3464:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "3454:22:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3454:33:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3490:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3454:37:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6274684c61622e78797a20636f6d6573206265666f7265206574684c61622e78797a",
                              "id": 22259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3493:36:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_607ae0b76f73b9194446ca38b3f945cf0df453eceb13a4dabb6f009318b0044a",
                                "typeString": "literal_string \"bthLab.xyz comes before ethLab.xyz\""
                              },
                              "value": "bthLab.xyz comes before ethLab.xyz"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_607ae0b76f73b9194446ca38b3f945cf0df453eceb13a4dabb6f009318b0044a",
                                "typeString": "literal_string \"bthLab.xyz comes before ethLab.xyz\""
                              }
                            ],
                            "id": 22252,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3446:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3446:84:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22261,
                        "nodeType": "ExpressionStatement",
                        "src": "3446:84:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22265,
                                    "name": "bthLabXyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22129,
                                    "src": "3567:9:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22263,
                                    "name": "bthLabXyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22129,
                                    "src": "3544:9:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3554:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "3544:22:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3544:33:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3581:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3544:38:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6274684c61622e78797a20616e64206274684c61622e78797a20617265207468652073616d65",
                              "id": 22269,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3584:40:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_41473db132ddad04171673364a7f93a8e3e7258bf35bfc05a4fb032f3f8849e6",
                                "typeString": "literal_string \"bthLab.xyz and bthLab.xyz are the same\""
                              },
                              "value": "bthLab.xyz and bthLab.xyz are the same"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_41473db132ddad04171673364a7f93a8e3e7258bf35bfc05a4fb032f3f8849e6",
                                "typeString": "literal_string \"bthLab.xyz and bthLab.xyz are the same\""
                              }
                            ],
                            "id": 22262,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3536:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3536:89:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22271,
                        "nodeType": "ExpressionStatement",
                        "src": "3536:89:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22275,
                                    "name": "bthLabXyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22129,
                                    "src": "3662:9:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22273,
                                    "name": "ethLabXyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22133,
                                    "src": "3639:9:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3649:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "3639:22:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3639:33:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3676:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3639:38:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6574684c61622e78797a20636f6d657320616674657220626574684c61622e78797a",
                              "id": 22279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3679:36:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7ea5d81e82f19b62360b8ebee88d313d11bfc64cf4dad469cc9df6c9044cdb0a",
                                "typeString": "literal_string \"ethLab.xyz comes after bethLab.xyz\""
                              },
                              "value": "ethLab.xyz comes after bethLab.xyz"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7ea5d81e82f19b62360b8ebee88d313d11bfc64cf4dad469cc9df6c9044cdb0a",
                                "typeString": "literal_string \"ethLab.xyz comes after bethLab.xyz\""
                              }
                            ],
                            "id": 22272,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3631:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3631:85:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22281,
                        "nodeType": "ExpressionStatement",
                        "src": "3631:85:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 22288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22285,
                                    "name": "xyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22137,
                                    "src": "3753:3:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22283,
                                    "name": "bthLabXyz",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22129,
                                    "src": "3730:9:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22284,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3740:12:108",
                                  "memberName": "compareNames",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6832,
                                  "src": "3730:22:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory,bytes memory) pure returns (int256)"
                                  }
                                },
                                "id": 22286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3730:27:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3767:1:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3730:38:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6274684c61622e78797a20636f6d65732061667465722078797a",
                              "id": 22289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3770:28:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2468c3110d9641c57873b7aeff5b7d826c16026822fbdd4b13dd2a51d5ea9950",
                                "typeString": "literal_string \"bthLab.xyz comes after xyz\""
                              },
                              "value": "bthLab.xyz comes after xyz"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2468c3110d9641c57873b7aeff5b7d826c16026822fbdd4b13dd2a51d5ea9950",
                                "typeString": "literal_string \"bthLab.xyz comes after xyz\""
                              }
                            ],
                            "id": 22282,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3722:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3722:77:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22291,
                        "nodeType": "ExpressionStatement",
                        "src": "3722:77:108"
                      }
                    ]
                  },
                  "functionSelector": "976e62ac",
                  "id": 22293,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testCompareNames",
                  "nameLocation": "1987:16:108",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22126,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2003:2:108"
                  },
                  "returnParameters": {
                    "id": 22127,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2018:0:108"
                  },
                  "scope": 22393,
                  "src": "1978:1826:108",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22352,
                    "nodeType": "Block",
                    "src": "3850:409:108",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "31",
                                  "id": 22299,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3888:1:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                {
                                  "hexValue": "30",
                                  "id": 22300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3891:1:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "expression": {
                                  "id": 22297,
                                  "name": "RRUtils",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7059,
                                  "src": "3864:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                    "typeString": "type(library RRUtils)"
                                  }
                                },
                                "id": 22298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3872:15:108",
                                "memberName": "serialNumberGte",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6855,
                                "src": "3864:23:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                  "typeString": "function (uint32,uint32) pure returns (bool)"
                                }
                              },
                              "id": 22301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3864:29:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "31203e3d2030",
                              "id": 22302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3895:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_634386faacaa7070cbcd56db2b7eeb086a975c771e51eee9cf08fab28e0a8da2",
                                "typeString": "literal_string \"1 >= 0\""
                              },
                              "value": "1 >= 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_634386faacaa7070cbcd56db2b7eeb086a975c771e51eee9cf08fab28e0a8da2",
                                "typeString": "literal_string \"1 >= 0\""
                              }
                            ],
                            "id": 22296,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3856:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3856:48:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22304,
                        "nodeType": "ExpressionStatement",
                        "src": "3856:48:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "3918:30:108",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 22308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3943:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 22309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3946:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22306,
                                    "name": "RRUtils",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7059,
                                    "src": "3919:7:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                      "typeString": "type(library RRUtils)"
                                    }
                                  },
                                  "id": 22307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3927:15:108",
                                  "memberName": "serialNumberGte",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6855,
                                  "src": "3919:23:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                    "typeString": "function (uint32,uint32) pure returns (bool)"
                                  }
                                },
                                "id": 22310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3919:29:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "212830203c3d203129",
                              "id": 22312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3950:11:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a2584f4f3f801b98ff1d2020b43e2f39872fe0854fe8310cbe5793972991cdd",
                                "typeString": "literal_string \"!(0 <= 1)\""
                              },
                              "value": "!(0 <= 1)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a2584f4f3f801b98ff1d2020b43e2f39872fe0854fe8310cbe5793972991cdd",
                                "typeString": "literal_string \"!(0 <= 1)\""
                              }
                            ],
                            "id": 22305,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3910:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3910:52:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22314,
                        "nodeType": "ExpressionStatement",
                        "src": "3910:52:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 22318,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4000:1:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                {
                                  "hexValue": "30784646464646464646",
                                  "id": 22319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4003:10:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4294967295_by_1",
                                    "typeString": "int_const 4294967295"
                                  },
                                  "value": "0xFFFFFFFF"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_4294967295_by_1",
                                    "typeString": "int_const 4294967295"
                                  }
                                ],
                                "expression": {
                                  "id": 22316,
                                  "name": "RRUtils",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7059,
                                  "src": "3976:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                    "typeString": "type(library RRUtils)"
                                  }
                                },
                                "id": 22317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3984:15:108",
                                "memberName": "serialNumberGte",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6855,
                                "src": "3976:23:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                  "typeString": "function (uint32,uint32) pure returns (bool)"
                                }
                              },
                              "id": 22320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3976:38:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "30203e3d2030784646464646464646",
                              "id": 22321,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4016:17:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4b20bead19811b31540df7ceac174b35e9f52395211289f5cb23451dc576cef2",
                                "typeString": "literal_string \"0 >= 0xFFFFFFFF\""
                              },
                              "value": "0 >= 0xFFFFFFFF"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4b20bead19811b31540df7ceac174b35e9f52395211289f5cb23451dc576cef2",
                                "typeString": "literal_string \"0 >= 0xFFFFFFFF\""
                              }
                            ],
                            "id": 22315,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3968:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3968:66:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22323,
                        "nodeType": "ExpressionStatement",
                        "src": "3968:66:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "4048:39:108",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30784646464646464646",
                                    "id": 22327,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4073:10:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4294967295_by_1",
                                      "typeString": "int_const 4294967295"
                                    },
                                    "value": "0xFFFFFFFF"
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 22328,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4085:1:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_4294967295_by_1",
                                      "typeString": "int_const 4294967295"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "id": 22325,
                                    "name": "RRUtils",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7059,
                                    "src": "4049:7:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                      "typeString": "type(library RRUtils)"
                                    }
                                  },
                                  "id": 22326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4057:15:108",
                                  "memberName": "serialNumberGte",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6855,
                                  "src": "4049:23:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                    "typeString": "function (uint32,uint32) pure returns (bool)"
                                  }
                                },
                                "id": 22329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4049:38:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "212830203c3d203078464646464646464629",
                              "id": 22331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4089:20:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bbd6b3cead62efb3b5b1b7b9eb780497ba6a8ffe9cb8a4d0b07acebfef1fba7c",
                                "typeString": "literal_string \"!(0 <= 0xFFFFFFFF)\""
                              },
                              "value": "!(0 <= 0xFFFFFFFF)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bbd6b3cead62efb3b5b1b7b9eb780497ba6a8ffe9cb8a4d0b07acebfef1fba7c",
                                "typeString": "literal_string \"!(0 <= 0xFFFFFFFF)\""
                              }
                            ],
                            "id": 22324,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4040:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4040:70:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22333,
                        "nodeType": "ExpressionStatement",
                        "src": "4040:70:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783131313131313131",
                                  "id": 22337,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4148:10:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_286331153_by_1",
                                    "typeString": "int_const 286331153"
                                  },
                                  "value": "0x11111111"
                                },
                                {
                                  "hexValue": "30784141414141414141",
                                  "id": 22338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4160:10:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2863311530_by_1",
                                    "typeString": "int_const 2863311530"
                                  },
                                  "value": "0xAAAAAAAA"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_286331153_by_1",
                                    "typeString": "int_const 286331153"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_2863311530_by_1",
                                    "typeString": "int_const 2863311530"
                                  }
                                ],
                                "expression": {
                                  "id": 22335,
                                  "name": "RRUtils",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7059,
                                  "src": "4124:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                    "typeString": "type(library RRUtils)"
                                  }
                                },
                                "id": 22336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4132:15:108",
                                "memberName": "serialNumberGte",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6855,
                                "src": "4124:23:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                  "typeString": "function (uint32,uint32) pure returns (bool)"
                                }
                              },
                              "id": 22339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4124:47:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "30783131313131313131203e3d2030784141414141414141",
                              "id": 22340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4173:26:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c86db32b595759ca444516bd19395fc6b568b4293c7fc0adce44b1190ea08c89",
                                "typeString": "literal_string \"0x11111111 >= 0xAAAAAAAA\""
                              },
                              "value": "0x11111111 >= 0xAAAAAAAA"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c86db32b595759ca444516bd19395fc6b568b4293c7fc0adce44b1190ea08c89",
                                "typeString": "literal_string \"0x11111111 >= 0xAAAAAAAA\""
                              }
                            ],
                            "id": 22334,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4116:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4116:84:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22342,
                        "nodeType": "ExpressionStatement",
                        "src": "4116:84:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "31",
                                  "id": 22346,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4238:1:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                {
                                  "hexValue": "31",
                                  "id": 22347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4241:1:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "id": 22344,
                                  "name": "RRUtils",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7059,
                                  "src": "4214:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_RRUtils_$7059_$",
                                    "typeString": "type(library RRUtils)"
                                  }
                                },
                                "id": 22345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4222:15:108",
                                "memberName": "serialNumberGte",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6855,
                                "src": "4214:23:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_bool_$",
                                  "typeString": "function (uint32,uint32) pure returns (bool)"
                                }
                              },
                              "id": 22348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4214:29:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "31203e3d2031",
                              "id": 22349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4245:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a9e070c6fe40e1948511d27584fcabc13f1825c5041e0c42e1300e112910abfa",
                                "typeString": "literal_string \"1 >= 1\""
                              },
                              "value": "1 >= 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a9e070c6fe40e1948511d27584fcabc13f1825c5041e0c42e1300e112910abfa",
                                "typeString": "literal_string \"1 >= 1\""
                              }
                            ],
                            "id": 22343,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4206:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4206:48:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22351,
                        "nodeType": "ExpressionStatement",
                        "src": "4206:48:108"
                      }
                    ]
                  },
                  "functionSelector": "9e4a090d",
                  "id": 22353,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testSerialNumberGt",
                  "nameLocation": "3817:18:108",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22294,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3835:2:108"
                  },
                  "returnParameters": {
                    "id": 22295,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3850:0:108"
                  },
                  "scope": 22393,
                  "src": "3808:451:108",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22391,
                    "nodeType": "Block",
                    "src": "4297:1849:108",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "id": 22361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "hexValue": "0101030803010001a80020a95566ba42e886bb804cda84e47ef56dbd7aec612615552cec906d2116d0ef207028c51554144dfeafe7c7cb8f005dd18234133ac0710a81182ce1fd14ad2283bc83435f9df2f6313251931a176df0da51e54f42e604860dfb359580250f559cc543c4ffd51cbe3de8cfd06719237f9fc47ee729da06835fa452e825e9a18ebc2ecbcf563474652c33cf56a9033bcdf5d973121797ec8089041b6e03a1b72d0a735b984e03687309332324f27c2dba85e9db15e83a0143382e974b0621c18e625ecec907577d9e7bade95241a81ebbe8a901d4d3276e40b114c0a2e6fc38d19c2e6aab02644b2813f575fc21601e0dee49cd9ee96a43103e524d62873d",
                                    "id": 22357,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4311:533:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2a6038b82ef6c49cd128e46cc9b57978d0abb0b40d390f18c821daa0e66695ce",
                                      "typeString": "literal_string hex\"0101030803010001a80020a95566ba42e886bb804cda84e47ef56dbd7aec612615552cec906d2116d0ef207028c51554144dfeafe7c7cb8f005dd18234133ac0710a81182ce1fd14ad2283bc83435f9df2f6313251931a176df0da51e54f42e604860dfb359580250f559cc543c4ffd51cbe3de8cfd06719237f9fc47ee729da06835fa452e825e9a18ebc2ecbcf563474652c33cf56a9033bcdf5d973121797ec8089041b6e03a1b72d0a735b984e03687309332324f27c2dba85e9db15e83a0143382e974b0621c18e625ecec907577d9e7bade95241a81ebbe8a901d4d3276e40b114c0a2e6fc38d19c2e6aab02644b2813f575fc21601e0dee49cd9ee96a43103e524d62873d\""
                                    }
                                  },
                                  "id": 22358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4845:13:108",
                                  "memberName": "computeKeytag",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7058,
                                  "src": "4311:547:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) pure returns (uint16)"
                                  }
                                },
                                "id": 22359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4311:549:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3139303336",
                                "id": 22360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4864:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_19036_by_1",
                                  "typeString": "int_const 19036"
                                },
                                "value": "19036"
                              },
                              "src": "4311:558:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964206b6579746167",
                              "id": 22362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4871:16:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae2cb1b8c554acf172a86403d58177e7bb53fa82a321bcfac12881669cff64fb",
                                "typeString": "literal_string \"Invalid keytag\""
                              },
                              "value": "Invalid keytag"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ae2cb1b8c554acf172a86403d58177e7bb53fa82a321bcfac12881669cff64fb",
                                "typeString": "literal_string \"Invalid keytag\""
                              }
                            ],
                            "id": 22356,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4303:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4303:585:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22364,
                        "nodeType": "ExpressionStatement",
                        "src": "4303:585:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "id": 22370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "hexValue": "010003050440000003ba2fa05a75e173bede89eb71831ab14035f2408ad09df4d8dc8f8f72e8f13506feaddf7b04cb14958b82966e3420562302c4002bc4fd088432e160519bb14dae82443850c1423e06085710b5caf070d46b7ba7e481414f6a5fe225fdca984c959091645d0cf1c9a1a313d7e7fb7ba60b967b71a65f8cef2c3768e11b081c8fcf",
                                    "id": 22366,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4902:279:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c7a0ab182ed40bafd9bc44e2ddf37a4352f56d00d9c464faefe015a51eefa4b6",
                                      "typeString": "literal_string hex\"010003050440000003ba2fa05a75e173bede89eb71831ab14035f2408ad09df4d8dc8f8f72e8f13506feaddf7b04cb14958b82966e3420562302c4002bc4fd088432e160519bb14dae82443850c1423e06085710b5caf070d46b7ba7e481414f6a5fe225fdca984c959091645d0cf1c9a1a313d7e7fb7ba60b967b71a65f8cef2c3768e11b081c8fcf\""
                                    }
                                  },
                                  "id": 22367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5182:13:108",
                                  "memberName": "computeKeytag",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7058,
                                  "src": "4902:293:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) pure returns (uint16)"
                                  }
                                },
                                "id": 22368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4902:295:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3231363933",
                                "id": 22369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5201:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_21693_by_1",
                                  "typeString": "int_const 21693"
                                },
                                "value": "21693"
                              },
                              "src": "4902:304:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964206b657974616720283229",
                              "id": 22371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5208:20:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a8982332bffef534d5d09d42dcb4be459699a5fb4a91a61229b2ab3a6246ff9",
                                "typeString": "literal_string \"Invalid keytag (2)\""
                              },
                              "value": "Invalid keytag (2)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a8982332bffef534d5d09d42dcb4be459699a5fb4a91a61229b2ab3a6246ff9",
                                "typeString": "literal_string \"Invalid keytag (2)\""
                              }
                            ],
                            "id": 22365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4894:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4894:335:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22373,
                        "nodeType": "ExpressionStatement",
                        "src": "4894:335:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "id": 22379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "hexValue": "0100030503010001bfa54c38d909fabb0f937d70d775ba0df4c0badb09707d995249406950407a621c794c68b186b15dbf8f9f9ea231e9f96414ccda4eceb50b17a9ac6c4bd4b95da04849e96ee791578b703bc9ae184fb1794bac792a0787f693a40f19f523ee6dbd3599dbaaa9a50437926ecf6438845d1d49448962524f2a1a7a36b3a0a1eca3",
                                    "id": 22375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5243:277:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9af7e7e0768f18374b9fd74711188f6f0b94bad3360e7dfca2c402fe1ab45a65",
                                      "typeString": "literal_string hex\"0100030503010001bfa54c38d909fabb0f937d70d775ba0df4c0badb09707d995249406950407a621c794c68b186b15dbf8f9f9ea231e9f96414ccda4eceb50b17a9ac6c4bd4b95da04849e96ee791578b703bc9ae184fb1794bac792a0787f693a40f19f523ee6dbd3599dbaaa9a50437926ecf6438845d1d49448962524f2a1a7a36b3a0a1eca3\""
                                    }
                                  },
                                  "id": 22376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5521:13:108",
                                  "memberName": "computeKeytag",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7058,
                                  "src": "5243:291:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) pure returns (uint16)"
                                  }
                                },
                                "id": 22377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5243:293:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3333363330",
                                "id": 22378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5540:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_33630_by_1",
                                  "typeString": "int_const 33630"
                                },
                                "value": "33630"
                              },
                              "src": "5243:302:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 22374,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5235:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 22380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5235:311:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22381,
                        "nodeType": "ExpressionStatement",
                        "src": "5235:311:108"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "id": 22387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "hexValue": "0101030803010001acffb409bcc939f831f7a1e5ec88f7a59255ec53040be432027390a4ce896d6f9086f3c5e177fbfe118163aaec7af1462c47945944c4e2c026be5e98bbcded25978272e1e3e079c5094d573f0e83c92f02b32d3513b1550b826929c80dd0f92cac966d17769fd5867b647c3f38029abdc48152eb8f207159ecc5d232c7c1537c79f4b7ac28ff11682f21681bf6d6aba555032bf6f9f036beb2aaa5b3778d6eebfba6bf9ea191be4ab0caea759e2f773a1f9029c73ecb8d5735b9321db085f1b8e2d8038fe2941992548cee0d67dd4547e11dd63af9c9fc1c5466fb684cf009d7197c2cf79e792ab501e6a8a1ca519af2cb9b5f6367e94c0d47502451357be1b5",
                                    "id": 22383,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "hexString",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5560:533:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2be826a96b15ea9dc899f081cf4dc1d8c2a818c2d43ca0f64e723cc452de14fe",
                                      "typeString": "literal_string hex\"0101030803010001acffb409bcc939f831f7a1e5ec88f7a59255ec53040be432027390a4ce896d6f9086f3c5e177fbfe118163aaec7af1462c47945944c4e2c026be5e98bbcded25978272e1e3e079c5094d573f0e83c92f02b32d3513b1550b826929c80dd0f92cac966d17769fd5867b647c3f38029abdc48152eb8f207159ecc5d232c7c1537c79f4b7ac28ff11682f21681bf6d6aba555032bf6f9f036beb2aaa5b3778d6eebfba6bf9ea191be4ab0caea759e2f773a1f9029c73ecb8d5735b9321db085f1b8e2d8038fe2941992548cee0d67dd4547e11dd63af9c9fc1c5466fb684cf009d7197c2cf79e792ab501e6a8a1ca519af2cb9b5f6367e94c0d47502451357be1b5\""
                                    }
                                  },
                                  "id": 22384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6094:13:108",
                                  "memberName": "computeKeytag",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7058,
                                  "src": "5560:547:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) pure returns (uint16)"
                                  }
                                },
                                "id": 22385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5560:549:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3230333236",
                                "id": 22386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6113:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20326_by_1",
                                  "typeString": "int_const 20326"
                                },
                                "value": "20326"
                              },
                              "src": "5560:558:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964206b657974616720283329",
                              "id": 22388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6120:20:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3edb8746773f5e9520e1e382fdf76ac3b4bb6d36394e1fa37d2ad0e85662497c",
                                "typeString": "literal_string \"Invalid keytag (3)\""
                              },
                              "value": "Invalid keytag (3)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3edb8746773f5e9520e1e382fdf76ac3b4bb6d36394e1fa37d2ad0e85662497c",
                                "typeString": "literal_string \"Invalid keytag (3)\""
                              }
                            ],
                            "id": 22382,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5552:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5552:589:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22390,
                        "nodeType": "ExpressionStatement",
                        "src": "5552:589:108"
                      }
                    ]
                  },
                  "functionSelector": "bb73daed",
                  "id": 22392,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "testKeyTag",
                  "nameLocation": "4272:10:108",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22354,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4282:2:108"
                  },
                  "returnParameters": {
                    "id": 22355,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4297:0:108"
                  },
                  "scope": 22393,
                  "src": "4263:1883:108",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 22394,
              "src": "133:6015:108",
              "usedErrors": []
            }
          ],
          "src": "0:6148:108"
        },
        "id": 108
      },
      "test/utils/mocks/DummyOffchainResolver.sol": {
        "ast": {
          "absolutePath": "test/utils/mocks/DummyOffchainResolver.sol",
          "exportedSymbols": {
            "DummyOffchainResolver": [
              22507
            ],
            "ERC165": [
              3082
            ],
            "IERC165": [
              3094
            ],
            "IExtendedResolver": [
              15044
            ],
            "OffchainLookup": [
              22410
            ]
          },
          "id": 22508,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 22395,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:109"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 22396,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22508,
              "sourceUnit": 3083,
              "src": "57:64:109",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/resolvers/profiles/IExtendedResolver.sol",
              "file": "../../../contracts/resolvers/profiles/IExtendedResolver.sol",
              "id": 22397,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22508,
              "sourceUnit": 15045,
              "src": "122:69:109",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "errorSelector": "556f1830",
              "id": 22410,
              "name": "OffchainLookup",
              "nameLocation": "199:14:109",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22409,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22399,
                    "mutability": "mutable",
                    "name": "sender",
                    "nameLocation": "227:6:109",
                    "nodeType": "VariableDeclaration",
                    "scope": 22410,
                    "src": "219:14:109",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 22398,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "219:7:109",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 22402,
                    "mutability": "mutable",
                    "name": "urls",
                    "nameLocation": "248:4:109",
                    "nodeType": "VariableDeclaration",
                    "scope": 22410,
                    "src": "239:13:109",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                      "typeString": "string[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 22400,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "239:6:109",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "id": 22401,
                      "nodeType": "ArrayTypeName",
                      "src": "239:8:109",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                        "typeString": "string[]"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 22404,
                    "mutability": "mutable",
                    "name": "callData",
                    "nameLocation": "264:8:109",
                    "nodeType": "VariableDeclaration",
                    "scope": 22410,
                    "src": "258:14:109",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 22403,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "258:5:109",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 22406,
                    "mutability": "mutable",
                    "name": "callbackFunction",
                    "nameLocation": "285:16:109",
                    "nodeType": "VariableDeclaration",
                    "scope": 22410,
                    "src": "278:23:109",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 22405,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "278:6:109",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 22408,
                    "mutability": "mutable",
                    "name": "extraData",
                    "nameLocation": "313:9:109",
                    "nodeType": "VariableDeclaration",
                    "scope": 22410,
                    "src": "307:15:109",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 22407,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "307:5:109",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "213:111:109"
              },
              "src": "193:132:109"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 22411,
                    "name": "IExtendedResolver",
                    "nameLocations": [
                      "361:17:109"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 15044,
                    "src": "361:17:109"
                  },
                  "id": 22412,
                  "nodeType": "InheritanceSpecifier",
                  "src": "361:17:109"
                },
                {
                  "baseName": {
                    "id": 22413,
                    "name": "ERC165",
                    "nameLocations": [
                      "380:6:109"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3082,
                    "src": "380:6:109"
                  },
                  "id": 22414,
                  "nodeType": "InheritanceSpecifier",
                  "src": "380:6:109"
                }
              ],
              "canonicalName": "DummyOffchainResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 22507,
              "linearizedBaseContracts": [
                22507,
                3082,
                3094,
                15044
              ],
              "name": "DummyOffchainResolver",
              "nameLocation": "336:21:109",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    3081
                  ],
                  "body": {
                    "id": 22434,
                    "nodeType": "Block",
                    "src": "528:138:109",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 22432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 22427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22422,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22416,
                              "src": "557:11:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 22424,
                                    "name": "IExtendedResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15044,
                                    "src": "577:17:109",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IExtendedResolver_$15044_$",
                                      "typeString": "type(contract IExtendedResolver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IExtendedResolver_$15044_$",
                                      "typeString": "type(contract IExtendedResolver)"
                                    }
                                  ],
                                  "id": 22423,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "572:4:109",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 22425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "572:23:109",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IExtendedResolver_$15044",
                                  "typeString": "type(contract IExtendedResolver)"
                                }
                              },
                              "id": 22426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "596:11:109",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "572:35:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "557:50:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 22430,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22416,
                                "src": "647:11:109",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 22428,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "623:5:109",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_DummyOffchainResolver_$22507_$",
                                  "typeString": "type(contract super DummyOffchainResolver)"
                                }
                              },
                              "id": 22429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "629:17:109",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3081,
                              "src": "623:23:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 22431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "623:36:109",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "557:102:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 22421,
                        "id": 22433,
                        "nodeType": "Return",
                        "src": "538:121:109"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 22435,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "402:17:109",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22418,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "492:8:109"
                  },
                  "parameters": {
                    "id": 22417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22416,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "427:11:109",
                        "nodeType": "VariableDeclaration",
                        "scope": 22435,
                        "src": "420:18:109",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 22415,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:6:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "419:20:109"
                  },
                  "returnParameters": {
                    "id": 22421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22420,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 22435,
                        "src": "518:4:109",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 22419,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "518:4:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "517:6:109"
                  },
                  "scope": 22507,
                  "src": "393:273:109",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    15043
                  ],
                  "body": {
                    "id": 22476,
                    "nodeType": "Block",
                    "src": "805:279:109",
                    "statements": [
                      {
                        "assignments": [
                          22450
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22450,
                            "mutability": "mutable",
                            "name": "urls",
                            "nameLocation": "831:4:109",
                            "nodeType": "VariableDeclaration",
                            "scope": 22476,
                            "src": "815:20:109",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                              "typeString": "string[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 22448,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "815:6:109",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 22449,
                              "nodeType": "ArrayTypeName",
                              "src": "815:8:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22456,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 22454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "851:1:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 22453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "838:12:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (string memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 22451,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "842:6:109",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 22452,
                              "nodeType": "ArrayTypeName",
                              "src": "842:8:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            }
                          },
                          "id": 22455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "838:15:109",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                            "typeString": "string memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "815:38:109"
                      },
                      {
                        "expression": {
                          "id": 22461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 22457,
                              "name": "urls",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22450,
                              "src": "863:4:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            "id": 22459,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 22458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "868:1:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "863:7:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "68747470733a2f2f6578616d706c652e636f6d2f",
                            "id": 22460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "873:22:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_00238809d48a86b3a841a3f501d566475cde08f38cb75969645733a83e43306a",
                              "typeString": "literal_string \"https://example.com/\""
                            },
                            "value": "https://example.com/"
                          },
                          "src": "863:32:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 22462,
                        "nodeType": "ExpressionStatement",
                        "src": "863:32:109"
                      },
                      {
                        "errorCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 22466,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "948:4:109",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DummyOffchainResolver_$22507",
                                    "typeString": "contract DummyOffchainResolver"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DummyOffchainResolver_$22507",
                                    "typeString": "contract DummyOffchainResolver"
                                  }
                                ],
                                "id": 22465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "940:7:109",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 22464,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "940:7:109",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 22467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "940:13:109",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22468,
                              "name": "urls",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22450,
                              "src": "967:4:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            {
                              "id": 22469,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22439,
                              "src": "985:4:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 22470,
                                  "name": "DummyOffchainResolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22507,
                                  "src": "1003:21:109",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_DummyOffchainResolver_$22507_$",
                                    "typeString": "type(contract DummyOffchainResolver)"
                                  }
                                },
                                "id": 22471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1025:15:109",
                                "memberName": "resolveCallback",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22506,
                                "src": "1003:37:109",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_declaration_view$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function DummyOffchainResolver.resolveCallback(bytes calldata,bytes calldata) view returns (bytes memory)"
                                }
                              },
                              "id": 22472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1041:8:109",
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "src": "1003:46:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "id": 22473,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22439,
                              "src": "1063:4:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 22463,
                            "name": "OffchainLookup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22410,
                            "src": "912:14:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$_t_address_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes4_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,string memory[] memory,bytes memory,bytes4,bytes memory) pure"
                            }
                          },
                          "id": 22474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "912:165:109",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22475,
                        "nodeType": "RevertStatement",
                        "src": "905:172:109"
                      }
                    ]
                  },
                  "functionSelector": "9061b923",
                  "id": 22477,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resolve",
                  "nameLocation": "681:7:109",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22440,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22437,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 22477,
                        "src": "698:14:109",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22436,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "698:5:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22439,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "748:4:109",
                        "nodeType": "VariableDeclaration",
                        "scope": 22477,
                        "src": "733:19:109",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22438,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "733:5:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "688:70:109"
                  },
                  "returnParameters": {
                    "id": 22445,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22442,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 22477,
                        "src": "782:12:109",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22441,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "782:5:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22444,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 22477,
                        "src": "796:7:109",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22443,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "796:7:109",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "781:23:109"
                  },
                  "scope": 22507,
                  "src": "672:412:109",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 22505,
                    "nodeType": "Block",
                    "src": "1231:168:109",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 22493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 22488,
                                    "name": "response",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22479,
                                    "src": "1272:8:109",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "id": 22487,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "1262:9:109",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 22489,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1262:19:109",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 22491,
                                    "name": "extraData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22481,
                                    "src": "1295:9:109",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "id": 22490,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "1285:9:109",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 22492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1285:20:109",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "1262:43:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "526573706f6e73652064617461206572726f72",
                              "id": 22494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1319:21:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3b0caf6665b5290cbc2282e9ad21c8e19c7ef4ed49064f8ac133df79eb082dfd",
                                "typeString": "literal_string \"Response data error\""
                              },
                              "value": "Response data error"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3b0caf6665b5290cbc2282e9ad21c8e19c7ef4ed49064f8ac133df79eb082dfd",
                                "typeString": "literal_string \"Response data error\""
                              }
                            ],
                            "id": 22486,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1241:7:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1241:109:109",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22496,
                        "nodeType": "ExpressionStatement",
                        "src": "1241:109:109"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 22501,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1386:4:109",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DummyOffchainResolver_$22507",
                                    "typeString": "contract DummyOffchainResolver"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DummyOffchainResolver_$22507",
                                    "typeString": "contract DummyOffchainResolver"
                                  }
                                ],
                                "id": 22500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1378:7:109",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 22499,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1378:7:109",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 22502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1378:13:109",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 22497,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1367:3:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 22498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1371:6:109",
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "1367:10:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 22503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1367:25:109",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 22485,
                        "id": 22504,
                        "nodeType": "Return",
                        "src": "1360:32:109"
                      }
                    ]
                  },
                  "functionSelector": "b4a85801",
                  "id": 22506,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resolveCallback",
                  "nameLocation": "1099:15:109",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22479,
                        "mutability": "mutable",
                        "name": "response",
                        "nameLocation": "1130:8:109",
                        "nodeType": "VariableDeclaration",
                        "scope": 22506,
                        "src": "1115:23:109",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22478,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1115:5:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22481,
                        "mutability": "mutable",
                        "name": "extraData",
                        "nameLocation": "1155:9:109",
                        "nodeType": "VariableDeclaration",
                        "scope": 22506,
                        "src": "1140:24:109",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22480,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1140:5:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1114:51:109"
                  },
                  "returnParameters": {
                    "id": 22485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22484,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 22506,
                        "src": "1213:12:109",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22483,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1213:5:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1212:14:109"
                  },
                  "scope": 22507,
                  "src": "1090:309:109",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 22508,
              "src": "327:1074:109",
              "usedErrors": [
                22410
              ]
            }
          ],
          "src": "32:1370:109"
        },
        "id": 109
      },
      "test/utils/mocks/MockERC20.sol": {
        "ast": {
          "absolutePath": "test/utils/mocks/MockERC20.sol",
          "exportedSymbols": {
            "ERC20": [
              1408
            ],
            "MockERC20": [
              22571
            ]
          },
          "id": 22572,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 22509,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".17",
                "<",
                "0.9",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:32:110"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "id": 22511,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22572,
              "sourceUnit": 1409,
              "src": "65:68:110",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 22510,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1408,
                    "src": "73:5:110",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 22512,
                    "name": "ERC20",
                    "nameLocations": [
                      "157:5:110"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1408,
                    "src": "157:5:110"
                  },
                  "id": 22513,
                  "nodeType": "InheritanceSpecifier",
                  "src": "157:5:110"
                }
              ],
              "canonicalName": "MockERC20",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 22571,
              "linearizedBaseContracts": [
                22571,
                1408,
                1511,
                1486,
                2855
              ],
              "name": "MockERC20",
              "nameLocation": "144:9:110",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 22569,
                    "nodeType": "Block",
                    "src": "301:197:110",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 22528,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "317:3:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 22529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "321:6:110",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "317:10:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "313030",
                                "id": 22530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "329:3:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "value": "100"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 22531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "335:2:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 22534,
                                        "name": "decimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 895,
                                        "src": "347:8:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                                          "typeString": "function () view returns (uint8)"
                                        }
                                      },
                                      "id": 22535,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "347:10:110",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 22533,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "339:7:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 22532,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "339:7:110",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 22536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "339:19:110",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "335:23:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "329:29:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22527,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1225,
                            "src": "311:5:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 22539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "311:48:110",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22540,
                        "nodeType": "ExpressionStatement",
                        "src": "311:48:110"
                      },
                      {
                        "body": {
                          "id": 22567,
                          "nodeType": "Block",
                          "src": "417:75:110",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 22553,
                                      "name": "addresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22520,
                                      "src": "437:9:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 22555,
                                    "indexExpression": {
                                      "id": 22554,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22542,
                                      "src": "447:1:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "437:12:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 22564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "313030",
                                      "id": 22556,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "451:3:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      },
                                      "value": "100"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 22563,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 22557,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "457:2:110",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 22560,
                                              "name": "decimals",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 895,
                                              "src": "469:8:110",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                                                "typeString": "function () view returns (uint8)"
                                              }
                                            },
                                            "id": 22561,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "469:10:110",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          ],
                                          "id": 22559,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "461:7:110",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 22558,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "461:7:110",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 22562,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "461:19:110",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "457:23:110",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "451:29:110",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22552,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1225,
                                  "src": "431:5:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 22565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "431:50:110",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22566,
                              "nodeType": "ExpressionStatement",
                              "src": "431:50:110"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22545,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22542,
                            "src": "390:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 22546,
                              "name": "addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22520,
                              "src": "394:9:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 22547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "404:6:110",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "394:16:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "390:20:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22568,
                        "initializationExpression": {
                          "assignments": [
                            22542
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22542,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "383:1:110",
                              "nodeType": "VariableDeclaration",
                              "scope": 22568,
                              "src": "375:9:110",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22541,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "375:7:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22544,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 22543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "387:1:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "375:13:110"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 22550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "412:3:110",
                            "subExpression": {
                              "id": 22549,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22542,
                              "src": "412:1:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22551,
                          "nodeType": "ExpressionStatement",
                          "src": "412:3:110"
                        },
                        "nodeType": "ForStatement",
                        "src": "370:122:110"
                      }
                    ]
                  },
                  "id": 22570,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 22523,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22515,
                          "src": "287:4:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 22524,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22517,
                          "src": "293:6:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "id": 22525,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 22522,
                        "name": "ERC20",
                        "nameLocations": [
                          "281:5:110"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1408,
                        "src": "281:5:110"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "281:19:110"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22515,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "204:4:110",
                        "nodeType": "VariableDeclaration",
                        "scope": 22570,
                        "src": "190:18:110",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 22514,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "190:6:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22517,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nameLocation": "232:6:110",
                        "nodeType": "VariableDeclaration",
                        "scope": 22570,
                        "src": "218:20:110",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 22516,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "218:6:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22520,
                        "mutability": "mutable",
                        "name": "addresses",
                        "nameLocation": "265:9:110",
                        "nodeType": "VariableDeclaration",
                        "scope": 22570,
                        "src": "248:26:110",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22518,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "248:7:110",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 22519,
                          "nodeType": "ArrayTypeName",
                          "src": "248:9:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "180:100:110"
                  },
                  "returnParameters": {
                    "id": 22526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "301:0:110"
                  },
                  "scope": 22571,
                  "src": "169:329:110",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 22572,
              "src": "135:365:110",
              "usedErrors": []
            }
          ],
          "src": "31:470:110"
        },
        "id": 110
      }
    }
  }
}
